นาฬิกาขนาดใหญ่ที่ต้องทำด้วยตัวเองบนไมโครคอนโทรลเลอร์ avr นาฬิกาดิจิตอลมัลติฟังก์ชั่นบนไมโครคอนโทรลเลอร์ Attmega8 แผนภาพและคำอธิบาย การตั้งเวลาปัจจุบัน การปลุก และเสียงเตือนรายชั่วโมง

นาฬิกาปลุกนี้ใช้ชิปนาฬิกาแบบเรียลไทม์ซึ่งช่วยให้สามารถทำงานได้ แหล่งสำรองข้อมูลอาหารในกรณีที่ไม่มีอาหารพื้นฐาน ตั้งเวลานาฬิกาปลุกและโหมดการทำงานจะถูกเก็บไว้ในหน่วยความจำแบบไม่ลบเลือนของไมโครคอนโทรลเลอร์ โหมดการแสดงผล - 24 ชั่วโมง มีการเลียนแบบ "ฟ้อง" เวลาและโหมดการทำงานจะแสดงโดยใช้ไฟ LED

หลักการทำงาน

พื้นฐานของนาฬิกานี้คือไมโครวงจร DS1307 ซึ่งเป็นนาฬิกาแบบเรียลไทม์ที่แลกเปลี่ยนข้อมูลกับตัวควบคุมควบคุมผ่านอินเทอร์เฟซ I2C การแสดงเวลาดำเนินการผ่านตัวระบุ 7 ส่วน 4 ตัวที่ทำงานในโหมดไดนามิก การป้อนและปรับเวลาทำได้โดยใช้ปุ่ม 5 ปุ่ม: "+ นาที", "+ ชั่วโมง", "ตั้งค่า", "ปลุก" และ "รีเซ็ต" สัญญาณเสียงนาฬิกาปลุกจะส่งออกผ่านตัวส่งสัญญาณเพียโซมาตรฐานและเป็นสัญญาณที่มีความถี่ 1 kHz โดยมีการหยุดชั่วคราวครั้งที่สอง

Atmega48 ได้รับเลือกให้เป็นไมโครคอนโทรลเลอร์ควบคุมเนื่องจากความพร้อมใช้งานและการมีอยู่ของอุปกรณ์ต่อพ่วงที่จำเป็นบนบอร์ด (แม้จะเกินมาก็ตาม) นาฬิกาแบบเรียลไทม์ DS1307 เชื่อมต่อกับเอาต์พุตฮาร์ดแวร์ I2C ของไมโครคอนโทรลเลอร์ควบคุม หากต้องการใช้งาน DS1307 ในโหมดสแตนด์อโลน (ในกรณีที่ไฟฟ้าดับของตัวควบคุมหลัก) ให้ใช้ แบตเตอรี่ลิเธียมแหล่งจ่ายไฟสำรอง 3V ซึ่งจะคงอยู่นานหลายปีเนื่องจาก การใช้พลังงานต่ำไมโครวงจร

มาดูโปรแกรมควบคุมกันดีกว่า:

โปรแกรมทำงานบนหลักการของเครื่องจับเวลาธง: สถานะและเหตุการณ์ทั้งหมดจะแสดงในรูปแบบของธงที่สอดคล้องกันซึ่งดำเนินการในการขัดจังหวะของตัวจับเวลาที่สอดคล้องกัน 1s, 1ms และ 263.17ms โปรแกรมใช้ตัวจับเวลาฮาร์ดแวร์ 2 ตัว

ชิปนาฬิกาถูกสำรวจและกดปุ่มที่ช่วงเวลา 263.17ms ใช้ช่วงเวลา 1ms ในการสร้าง สัญญาณเสียงโทรและ 1s - สำหรับการมอดูเลต ช่วงที่สองยังควบคุมการกะพริบของจุดในหลักที่ 2 ของตัวบ่งชี้ โดยแยกชั่วโมงและนาทีและยังทำหน้าที่เป็นการก่อตัวของ "ขีด"
ลองพิจารณาดู แผนผังชั่วโมง.

การกำหนดและนิกาย:
S4 - นาฬิกาเพิ่มขึ้น
S3 - เพิ่มนาที
S2 - การติดตั้ง
S1 - เปิดนาฬิกาปลุก
S5 - รีเซ็ต

R6-R10 - 10,000
R1-R5 - 510โอห์ม

แรงดันไฟฟ้า - 5 โวลต์

การตั้งค่าและการใช้งาน

นาฬิกาที่ประกอบอย่างถูกต้อง การตั้งค่าเพิ่มเติมไม่ต้องการมัน คุณเพียงแค่ต้องติดตั้ง เวลาปัจจุบันและนาฬิกาปลุก
การตั้งเวลาปัจจุบันมีดังนี้:
1) ใช้ปุ่ม S1 และ S2 เพื่อตั้งเวลาปัจจุบัน (จุดระหว่างตัวเลขไม่กระพริบ)
2) เริ่มนาฬิกาด้วยปุ่ม S3
การตั้งปลุก:
1) กด S3 และตรวจสอบให้แน่ใจว่าจุดในหลักที่ 1 สว่างขึ้น
2) ตั้งเวลาโทรโดยใช้ปุ่ม S1 และ S2
3) เปิดการโทรโดยใช้ปุ่ม S4
คุณสมบัติเพิ่มเติม:
เปิดการติ๊ก - กด S4 ค้างไว้แล้วกด S2 จนกระทั่งเสียงลักษณะเฉพาะปรากฏขึ้น มันก็ดับไปเหมือนกัน
แสดงนาทีและวินาที - กด S4 ค้างไว้แล้วกด S1 หากคุณกด S3 หลังจากนั้นวินาทีจะถูกรีเซ็ตเป็น 00 Return - ชุดค่าผสมเดียวกัน

ภาพถ่ายและวิดีโอของนาฬิกา

นาฬิกาประกอบอยู่ในตัวเรือนที่ทำจาก "อุปกรณ์อิเล็กทรอนิกส์" ที่ไม่ทำงาน


ฉันเสนอให้ทำซ้ำวงจรนาฬิกาอิเล็กทรอนิกส์บนไมโครคอนโทรลเลอร์ ATmega 8 โดยมีข้อมูลที่แสดงโดยไฟ LED ขนาดใหญ่ นาฬิกาทำงาน ผ่านการทดสอบแล้ว เฟิร์มแวร์สำหรับ ในขณะนี้อยู่ระหว่างการสรุปผล กำลังสร้างกระดานที่ใหญ่ขึ้นซึ่งจะอยู่ห่างจากบล็อกหลัก 5 เมตร นอกจากนี้ยังมีข้อบ่งชี้บนบล็อกหลัก - เพื่อทำซ้ำกระดานขนาดใหญ่ แผนผัง นาฬิกานำแสดงในรูป - คลิกเพื่อดูภาพขยาย

คำอธิบายของอุปกรณ์

1. ฟังก์ชั่น
1.1 นาฬิกา รูปแบบการแสดงเวลาเป็นแบบ 24 ชั่วโมง การแก้ไขความแม่นยำของจังหวะแบบดิจิตอล


1.2 เทอร์โมมิเตอร์ วัดอุณหภูมิจากเซนเซอร์ 2 ตัว ในช่วง -55.0 oC - 125.0 oC


1.3 การแสดงข้อมูลสำรองบนตัวบ่งชี้
1.4 การควบคุมแหล่งพลังงานหลัก
1.5 การใช้หน่วยความจำแบบไม่ลบเลือนของไมโครคอนโทรลเลอร์เพื่อบันทึกการตั้งค่าและการตั้งค่าเมื่อปิดเครื่อง
1.6 ปุ่มสามปุ่มสำหรับการติดตั้งและการกำหนดค่า: พลัส, ลบ, ชุด.

การทำงานของอุปกรณ์

เมื่อคุณเปิดใช้งานเป็นครั้งแรก สกรีนเซฟเวอร์โฆษณาจะปรากฏบนจอแสดงผลเป็นเวลา 1 วินาที จากนั้นจึงแสดงเวลา
คลิกที่ SET_TIMEย้ายตัวบ่งชี้เป็นวงกลมจากโหมดนาฬิกาหลัก (แสดงเวลาปัจจุบัน):
– โหมดแสดงนาทีและวินาที หากอยู่ในโหมดนี้คุณกดปุ่มพร้อมกัน พลัสและ ลบจากนั้นวินาทีจะถูกรีเซ็ตเป็นศูนย์
– การตั้งนาทีของเวลาปัจจุบัน
– การตั้งนาฬิกาเวลาปัจจุบัน
– จำนวนการแก้ไขความแม่นยำของนาฬิการายวัน สัญลักษณ์ c และค่าแก้ไข ตั้งค่าจำกัด -25?25 วินาที ค่าที่เลือกจะถูกบวก/ลบจากเวลาปัจจุบันทุกวันที่ 0 ชั่วโมง 0 นาที 30 วินาที
- เครื่องหมาย ที- กำหนดระยะเวลาการแสดงนาฬิกา
- เครื่องหมาย ฉัน- เวลาแสดงสัญลักษณ์แสดงอุณหภูมิภายใน ( ภายใน).
- เครื่องหมาย - ตั้งเวลาแสดงอุณหภูมิจากเซ็นเซอร์ภายใน
- เครื่องหมาย โอ- เวลาแสดงสัญลักษณ์แสดงอุณหภูมิภายนอก ( ออก).
- เครื่องหมาย คุณ- ตั้งเวลาแสดงอุณหภูมิจาก เซ็นเซอร์ภายนอก.
- เครื่องหมาย - ตั้งเวลาการแสดงผลของสกรีนเซฟเวอร์โฆษณา
ตั้งเวลาแสดงผลได้ 0-60 วินาที หากตั้งค่าเป็น 0 พารามิเตอร์นี้จะไม่ปรากฏบนตัวบ่งชี้ หากตั้งค่าพารามิเตอร์ทั้งหมดเป็น 0 ตัวบ่งชี้จะแสดงนาฬิกา

การตั้งนาฬิกา

3.1 ในทุกโหมด ให้กดปุ่มค้างไว้ พลัส/ลบทำการติดตั้งอย่างรวดเร็ว
3.2 หากมีการเปลี่ยนแปลงการตั้งค่าหลังจากผ่านไป 10 วินาที การเปลี่ยนแปลงครั้งล่าสุดค่าใหม่จะถูกเขียนลงในหน่วยความจำแบบไม่ลบเลือน (EEPROM) และจะถูกอ่านจากที่นั่นเมื่อใด รีสตาร์ทโภชนาการ ตัวบ่งชี้จะเปลี่ยนไปที่โหมดเวลาหลัก
3.3 การตั้งค่าใหม่จะมีผลระหว่างการติดตั้ง

การควบคุมพลังงาน

ไมโครคอนโทรลเลอร์จะตรวจสอบการมีอยู่ของพลังงานหลัก เมื่อปิดเครื่อง อุปกรณ์จะใช้พลังงานจาก แหล่งที่มาภายใน- เพื่อลดการใช้กระแสไฟ ไฟแสดง เซ็นเซอร์ และปุ่มต่างๆ จะถูกปิด นาฬิกายังคงนับเวลาถอยหลังต่อไป เมื่อจ่ายไฟจากแหล่งหลัก ฟังก์ชั่นทั้งหมดจะถูกกู้คืน


ขณะนี้อยู่ระหว่างการพัฒนาแผงวงจรพิมพ์ กำลังแก้ไขวงจร และสามารถทำได้ร่วมกัน หากคุณมีแนวคิดและข้อเสนอแนะในการปรับปรุงนาฬิกา โปรดเขียนในฟอรัม ผู้เขียนการออกแบบ: Aleksandrovich & SOIR (Soir&C.E.A)

ตามชื่อหมายถึงจุดประสงค์หลัก ของอุปกรณ์นี้- ค้นหาเวลาและวันที่ปัจจุบัน แต่ก็มีอีกมากมาย ฟังก์ชั่นที่มีประโยชน์- แนวคิดในการสร้างมันเกิดขึ้นหลังจากที่ฉันเจอนาฬิกาที่พังครึ่งหนึ่งซึ่งมีขนาดค่อนข้างใหญ่ (สำหรับข้อมือ) ตัวโลหะ- ฉันคิดว่าฉันสามารถใส่มันเข้าไปในนั้นได้ นาฬิกาทำเองความเป็นไปได้ที่ถูกจำกัดด้วยจินตนาการและทักษะของคุณเองเท่านั้น ผลลัพธ์ที่ได้คืออุปกรณ์ที่มีฟังก์ชั่นดังต่อไปนี้:

1. นาฬิกา - ปฏิทิน:

    การนับและแสดงชั่วโมง นาที วินาที วันในสัปดาห์ วัน เดือน ปี

    ความพร้อมของการปรับเวลาปัจจุบันโดยอัตโนมัติซึ่งดำเนินการทุกชั่วโมง ( ค่าสูงสุด+/-9999 ยูนิต 1 ยูนิต = 3.90625 มิลลิวินาที)

    การคำนวณวันในสัปดาห์จากวันที่ (สำหรับศตวรรษปัจจุบัน)

    การเปลี่ยนแปลงอัตโนมัติสำหรับช่วงฤดูร้อนและฤดูหนาว (สามารถปิดได้)

  • ปีอธิกสุรทินจะถูกนำมาพิจารณาด้วย

2. นาฬิกาปลุกแยกอิสระ 2 ตัว (มีเสียงเพลงดังขึ้นเมื่อเปิดใช้งาน)
3. จับเวลาโดยเพิ่มทีละ 1 วินาที (เวลานับสูงสุด 99 ชม. 59 น. 59 วินาที)
4. นาฬิกาจับเวลาแบบ 2 ช่อง ความละเอียดในการนับ 0.01 วินาที - เวลาสูงสุดนับ 99h 59m 59s)
5. นาฬิกาจับเวลาความละเอียดการนับ 1 วินาที (นับเวลาสูงสุด 99 วัน)
6. เทอร์โมมิเตอร์ในช่วง -5°C สูงถึง 55°C (จำกัดด้วยช่วงอุณหภูมิ การทำงานปกติอุปกรณ์) เพิ่มขึ้น 0.1°C
7. เครื่องอ่านและโปรแกรมจำลอง กุญแจอิเล็กทรอนิกส์- แท็บเล็ตประเภท DS1990 โดยใช้โปรโตคอล Dallas 1-Wire (หน่วยความจำ 50 ชิ้นซึ่งมี "คีย์ทุกพื้นที่" สากลหลายตัวอยู่แล้ว) พร้อมความสามารถในการดูรหัสคีย์แบบไบต์ต่อไบต์
8. การควบคุมระยะไกลควบคุมรังสีอินฟราเรด (ใช้เฉพาะคำสั่ง "ถ่ายรูป" เท่านั้น) กล้องดิจิตอล"เพนแท็กซ์", "นิคอน", "แคนนอน"
9. ไฟฉาย LED
10. 7 ท่วงทำนอง
11. สัญญาณเสียงต้นชั่วโมงทุกชั่วโมง (สามารถปิดได้)
12. เสียงยืนยันการกดปุ่ม (สามารถปิดได้)
13. การตรวจสอบแรงดันแบตเตอรี่ด้วยฟังก์ชันการสอบเทียบ
14. การปรับความสว่างของตัวบ่งชี้ดิจิตอล

บางทีฟังก์ชั่นดังกล่าวอาจซ้ำซ้อน แต่ฉันชอบสิ่งที่เป็นสากลและบวกกับความพึงพอใจทางศีลธรรมที่นาฬิกาเรือนนี้จะทำด้วยมือของฉันเอง

แผนผังของนาฬิกา

อุปกรณ์นี้สร้างขึ้นบนไมโครคอนโทรลเลอร์ ATmega168PA-AU นาฬิกาจะเดินตามตัวจับเวลา T2 ซึ่งทำงานในโหมดอะซิงโครนัสจากนาฬิกาควอทซ์ที่ 32768 Hz ไมโครคอนโทรลเลอร์อยู่ในโหมดสลีปเกือบตลอดเวลา (ไฟแสดงสถานะดับ) ตื่นขึ้นมาวินาทีละครั้งเพื่อเพิ่มวินาทีนี้จากเวลาปัจจุบันและหลับไปอีกครั้ง ในโหมดแอคทีฟ MK จะถูกโอเวอร์คล็อกจาก RC oscillator ภายในที่ 8 MHz แต่พรีสเกลเลอร์ภายในจะหารด้วย 2 ส่งผลให้คอร์โอเวอร์คล็อกที่ 4 MHz สำหรับการบ่งชี้จะใช้ตัวบ่งชี้เจ็ดส่วนดิจิตอล LED หลักเดียวสี่ตัวพร้อมขั้วบวกร่วมและจุดทศนิยม นอกจากนี้ยังมีไฟ LED แสดงสถานะ 7 ดวงซึ่งมีจุดประสงค์ดังต่อไปนี้:
D1- เครื่องหมายค่าลบ (ลบ)
D2- สัญญาณนาฬิกาจับเวลาที่กำลังวิ่ง (กะพริบ)
D3- สัญญาณของนาฬิกาปลุกตัวแรกที่เปิดอยู่
D4- สัญญาณของการเตือนครั้งที่สองที่กำลังเปิดอยู่
D5- สัญญาณของสัญญาณเสียงทุกต้นชั่วโมง
D6- สัญญาณตัวจับเวลากำลังทำงาน (กะพริบ)
D7- ลงชื่อ แรงดันไฟฟ้าต่ำพลังงานแบตเตอรี่

R1-R8 - ตัวต้านทานจำกัดกระแสของส่วนของตัวบ่งชี้ดิจิตอล HG1-HG4 และ LEDs D1-D7 R12,R13 – ตัวแบ่งสำหรับตรวจสอบแรงดันแบตเตอรี่ เนื่องจากแรงดันไฟฟ้าของนาฬิกาคือ 3V และ ไฟ LED สีขาว D9 ต้องการประมาณ 3.4-3.8V เมื่อใช้กระแสไฟที่กำหนด จากนั้นจะไม่เรืองแสงเต็มกำลัง (แต่ก็เพียงพอแล้วเพื่อไม่ให้สะดุดในความมืด) และเชื่อมต่อโดยไม่มีตัวต้านทานจำกัดกระแส องค์ประกอบ R14, Q1, R10 ได้รับการออกแบบมาเพื่อควบคุม LED อินฟราเรด D8 (การใช้งาน การควบคุมระยะไกลสำหรับกล้องดิจิตอล) R19, ​​​​R20, R21 ใช้สำหรับจับคู่เมื่อสื่อสารกับอุปกรณ์ที่มีอินเทอร์เฟซ 1-Wire การควบคุมทำได้โดยใช้ปุ่มสามปุ่มซึ่งฉันเรียกตามอัตภาพ: MODE (โหมด), ขึ้น (ขึ้น), ลง (ลง) อันแรกได้รับการออกแบบให้ปลุก MK โดยการขัดจังหวะภายนอก (ในกรณีนี้ตัวบ่งชี้จะเปิดขึ้น) ดังนั้นจึงเชื่อมต่อแยกต่างหากกับอินพุต PD3 การกดปุ่มที่เหลือถูกกำหนดโดยใช้ ADC และตัวต้านทาน R16, R18 หากไม่กดปุ่มภายใน 16 วินาที MK จะเข้าสู่โหมดสลีปและไฟแสดงสถานะจะดับลง เมื่ออยู่ในโหมด “การควบคุมระยะไกลสำหรับกล้อง”ช่วงเวลานี้คือ 32 วินาทีและเมื่อเปิดไฟฉาย - 1 นาที MK สามารถเข้าสู่โหมดสลีปได้ด้วยตนเองโดยใช้ปุ่มควบคุม เมื่อนาฬิกาจับเวลาทำงานด้วยความละเอียดการนับ 0.01 วินาที อุปกรณ์ไม่เข้าสู่โหมดสลีป

พีซีบี

อุปกรณ์ประกอบบนแผงวงจรพิมพ์สองด้านที่เป็นรูปทรงกลมตามขนาดของเส้นผ่านศูนย์กลางภายในของเคส นาฬิกาข้อมือ- แต่ในการผลิตฉันใช้บอร์ดด้านเดียวสองอันที่มีความหนา 0.35 มม. ความหนานี้ได้มาอีกครั้งโดยการลอกออกจากลามิเนตไฟเบอร์กลาสสองด้านที่มีความหนา 1.5 มม. จากนั้นจึงนำกระดานมาติดกาวเข้าด้วยกัน ทั้งหมดนี้เกิดขึ้นเพราะฉันไม่มีไฟเบอร์กลาสสองหน้าบางๆ และความหนาทุกๆ มิลลิเมตรที่ประหยัดในพื้นที่ภายในที่จำกัดของตัวเรือนนาฬิกานั้นมีค่ามาก และไม่จำเป็นต้องจัดตำแหน่งในการผลิตตัวนำพิมพ์โดยใช้ LUT วิธี. การวาดภาพ แผงวงจรพิมพ์และตำแหน่งของชิ้นส่วนอยู่ในไฟล์แนบ ด้านหนึ่งมีตัวบ่งชี้และตัวต้านทานจำกัดกระแส R1-R8 ด้านหลังมีรายละเอียดอื่นๆ ทั้งหมด มีรูทะลุสองรูสำหรับไฟ LED สีขาวและอินฟราเรด

หน้าสัมผัสปุ่มและที่ใส่แบตเตอรี่ทำจากเหล็กแผ่นสปริงยืดหยุ่นที่มีความหนา 0.2...0.3 มม. และกระป๋อง ด้านล่างนี้เป็นรูปถ่ายของกระดานจากทั้งสองด้าน:

การออกแบบ ชิ้นส่วน และการเปลี่ยนที่เป็นไปได้

ไมโครคอนโทรลเลอร์ ATmega168PA-AU สามารถเปลี่ยนได้ด้วย ATmega168P-AU, ATmega168V-10AU ATmega168-20AU ตัวชี้วัดดิจิตอล- KPSA02-105 สีแดงสว่างพิเศษ 4 ชิ้น ความสูงตัวเลข 5.08 มม. สามารถจ่ายได้จากซีรีส์เดียวกัน KPSA02-xxx หรือ KCSA02-xxx (ไม่ใช่สีเขียว - พวกมันจะเรืองแสงจาง ๆ ) ฉันไม่รู้จักอะนาล็อกอื่นที่มีขนาดใกล้เคียงกันและมีความสว่างที่เหมาะสม ใน HG1, HG3 การเชื่อมต่อของส่วนแคโทดจะแตกต่างจาก HG2, HG4 เนื่องจากสะดวกกว่าสำหรับฉันในการเดินสายแผงวงจรพิมพ์ ในเรื่องนี้มีการใช้ตารางตัวสร้างอักขระที่แตกต่างกันในโปรแกรม ตัวต้านทานและตัวเก็บประจุ SMD ใช้สำหรับการติดตั้งบนพื้นผิวขนาดมาตรฐาน 0805 และ 1206, LEDs D1-D7 ขนาดมาตรฐาน 0805 ไฟ LED สีขาวและอินฟราเรดที่มีเส้นผ่านศูนย์กลาง 3 มม. บอร์ดมีรูทะลุ 13 รูที่ต้องติดตั้งจัมเปอร์ เช่น เซ็นเซอร์อุณหภูมิใช้ DS18B20 พร้อมอินเทอร์เฟซ 1-Wire LS1 เป็นทวีตเตอร์แบบเพียโซอิเล็กทริกทั่วไปที่เสียบอยู่ในฝา ด้วยหน้าสัมผัสอันหนึ่งจะเชื่อมต่อกับบอร์ดโดยใช้สปริงที่ติดตั้งอยู่ ส่วนอีกอันจะเชื่อมต่อกับตัวเรือนนาฬิกาโดยใช้ฝาครอบ เครื่องสะท้อนเสียงควอตซ์จากนาฬิกาข้อมือ

การเขียนโปรแกรม เฟิร์มแวร์ ฟิวส์

สำหรับการโปรแกรมในวงจร บอร์ดมีจุดสัมผัสแบบกลมเพียง 6 จุด (J1) เนื่องจากขั้วต่อแบบเต็มมีความสูงไม่พอดี ฉันเชื่อมต่อพวกมันเข้ากับโปรแกรมเมอร์โดยใช้อุปกรณ์หน้าสัมผัสที่ทำจากปลั๊กพิน PLD2x3 และสปริงที่บัดกรีเข้ากับพวกมัน แล้วใช้มือข้างหนึ่งกดพวกมันไปที่จุดนั้น ด้านล่างเป็นรูปถ่ายของอุปกรณ์

ฉันใช้มันเพราะว่าในระหว่างกระบวนการแก้ไขข้อบกพร่องฉันต้อง reflash MK หลายครั้ง ด้วยเฟิร์มแวร์แบบครั้งเดียวจะทำให้ง่ายต่อการบัดกรีสายไฟบาง ๆ ที่เชื่อมต่อกับโปรแกรมเมอร์เข้ากับแพตช์แล้วจึงทำการบัดกรีอีกครั้ง จะสะดวกกว่าในการแฟลช MK โดยไม่ต้องใช้แบตเตอรี่ แต่เพื่อให้ได้พลังงานมาด้วย แหล่งภายนอก+3V หรือจากโปรแกรมเมอร์ที่มีแรงดันไฟฟ้าเท่ากัน โปรแกรมนี้เขียนด้วยแอสเซมเบลอร์ในสภาพแวดล้อม VMLAB 3.15 ซอร์สโค้ด, เฟิร์มแวร์สำหรับ FLASH และ EEPROM ในแอปพลิเคชัน

บิต FUSE ของไมโครคอนโทรลเลอร์ DD1 จะต้องถูกตั้งโปรแกรมดังนี้:
CKSEL3...0 = 0010 - การตอกบัตรจาก RC oscillator ภายใน 8 MHz;
SUT1...0 =10 - เวลาเริ่มต้น: 6 CK + 64 ms;
CKDIV8 = 1 - ปิดใช้งานตัวแบ่งความถี่ด้วย 8
CKOUT = 1 - นาฬิกาเอาท์พุตเมื่อ CKOUT ปิดใช้งาน;
BODLEVEL2…0 = 111 - การควบคุมแรงดันไฟฟ้าของแหล่งจ่ายถูกปิดใช้งาน
EESAVE = 0 - การลบ EEPROM เมื่อห้ามตั้งโปรแกรมคริสตัล
WDTON = 1 - หมายเลข เปิดอยู่เสมอตัวจับเวลาสุนัขเฝ้าบ้าน;
บิต FUSE ที่เหลือควรปล่อยให้ไม่ถูกแตะต้อง บิต FUSE จะถูกตั้งโปรแกรมไว้หากตั้งค่าเป็น "0"

จำเป็นต้องทำการแฟลช EEPROM โดยมีดัมพ์รวมอยู่ในไฟล์เก็บถาวร

เซลล์ EEPROM แรกประกอบด้วย พารามิเตอร์เริ่มต้นอุปกรณ์ ตารางด้านล่างอธิบายวัตถุประสงค์บางประการ ซึ่งสามารถเปลี่ยนแปลงได้ภายในขอบเขตที่สมเหตุสมผล

ที่อยู่เซลล์

วัตถุประสงค์

พารามิเตอร์

บันทึก

ปริมาณแรงดันไฟฟ้าของแบตเตอรี่ที่เกิดสัญญาณระดับต่ำ

260 ($104) (2.6V)

ค่าสัมประสิทธิ์สำหรับการแก้ไขค่าแรงดันไฟฟ้าของแบตเตอรี่ที่วัดได้

ช่วงเวลาในการสลับไปยังโหมดสลีป

1 ยูนิต = 1 วินาที

ช่วงเวลาในการสลับไปยังโหมดสลีปเมื่อเปิดไฟฉาย

1 ยูนิต = 1 วินาที

ช่วงเวลาในการสลับไปยังโหมดสลีปเมื่ออยู่ในโหมดรีโมทคอนโทรลสำหรับกล้อง

1 ยูนิต = 1 วินาที

หมายเลขคีย์ IButton จะถูกเก็บไว้ที่นี่

คำอธิบายเล็กๆ น้อยๆ เกี่ยวกับประเด็นต่างๆ:

1 คะแนน ซึ่งระบุระดับแรงดันไฟฟ้าของแบตเตอรี่ที่ LED จะสว่างขึ้น โดยระบุค่าต่ำ ฉันตั้งค่าเป็น 2.6V (พารามิเตอร์ - 260) หากคุณต้องการอย่างอื่น เช่น 2.4V คุณต้องเขียน 240 ($00F0) ไบต์ต่ำจะถูกเก็บไว้ในเซลล์ตามที่อยู่ $0000 และไบต์สูงจะถูกเก็บไว้ใน $0001

2 จุด เนื่องจากฉันไม่ได้ติดตั้งตัวต้านทานแบบแปรผันบนบอร์ดเพื่อปรับความแม่นยำของการวัดแรงดันไฟฟ้าของแบตเตอรี่เนื่องจากไม่มีพื้นที่ ฉันจึงแนะนำการปรับเทียบซอฟต์แวร์ ขั้นตอนการสอบเทียบสำหรับ การวัดที่แม่นยำถัดไป: เริ่มแรกเขียนค่าสัมประสิทธิ์ 1,024 ($400) ในเซลล์ EEPROM นี้คุณต้องเปลี่ยนอุปกรณ์เป็นโหมดแอคทีฟและดูแรงดันไฟฟ้าบนตัวบ่งชี้จากนั้นวัดแรงดันไฟฟ้าจริงของแบตเตอรี่ด้วยโวลต์มิเตอร์ ปัจจัยการแก้ไข (K) ที่ต้องตั้งค่าคำนวณโดยสูตร: K=Uр/Ui*1024 โดยที่ Uр คือแรงดันไฟฟ้าจริงที่วัดโดยโวลต์มิเตอร์ Ui คือแรงดันไฟฟ้าที่วัดโดยตัวอุปกรณ์เอง หลังจากคำนวณค่าสัมประสิทธิ์ "K" แล้วให้ป้อนลงในอุปกรณ์ (ตามที่ระบุไว้ในคู่มือการใช้งาน) หลังจากการสอบเทียบ ข้อผิดพลาดของฉันไม่เกิน 3%

3 จุด ที่นี่คุณสามารถตั้งเวลาที่อุปกรณ์จะเข้าสู่โหมดสลีปหากไม่มีการกดปุ่มใด ๆ เหมืองมีค่าใช้จ่าย 16 วินาที ตัวอย่างเช่น หากคุณต้องการนอนหลับภายใน 30 วินาที คุณต้องเขียนลงไปว่า 30 ($26)

ในจุดที่ 4 และ 5 เหมือนกัน

6 คะแนน ที่ที่อยู่ $0030 รหัสตระกูลคีย์ศูนย์ (Dallas 1-Wire) จะถูกจัดเก็บ จากนั้นจึงเป็นหมายเลข 48 บิตและ CRC และอีก 50 คีย์ตามลำดับ

การตั้งค่าคุณสมบัติการทำงาน

การตั้งค่าอุปกรณ์จะลดลงเพื่อปรับเทียบการวัดแรงดันไฟฟ้าของแบตเตอรี่ตามที่อธิบายไว้ข้างต้น นอกจากนี้ยังจำเป็นต้องตรวจจับความเบี่ยงเบนของอัตรานาฬิกาเป็นเวลา 1 ชั่วโมงคำนวณและป้อนค่าแก้ไขที่เหมาะสม (ขั้นตอนอธิบายไว้ในคู่มือการใช้งาน)

อุปกรณ์ขับเคลื่อนโดย แบตเตอรี่ลิเธียม CR2032 (3V) และสิ้นเปลืองประมาณ 4 µA ในโหมดสลีป และ 5...20 mA ในโหมดแอคทีฟ ขึ้นอยู่กับความสว่างของตัวบ่งชี้ ด้วยการใช้งานห้านาทีทุกวัน โหมดแอคทีฟแบตเตอรี่น่าจะมีอายุการใช้งานประมาณ 2...8 เดือน ขึ้นอยู่กับความสว่าง ตัวเรือนนาฬิกาเชื่อมต่อกับขั้วลบของแบตเตอรี่

การอ่านคีย์ได้รับการทดสอบบน DS1990 การจำลองได้รับการทดสอบบนอินเตอร์คอมของ METAKOM ภายใต้ หมายเลขซีเรียลกะพริบจาก 46 ถึง 49 (4 สุดท้าย) (ปุ่มทั้งหมดจะถูกเก็บไว้ใน EEPROM ซึ่งสามารถเปลี่ยนได้ก่อนกระพริบ) ปุ่มสากลสำหรับอินเตอร์คอม รหัสที่ลงทะเบียนภายใต้หมายเลข 49 ได้เปิดอินเตอร์คอมของ METAKOM ทั้งหมดที่ฉันเจอ ฉันไม่มีโอกาสทดสอบคีย์สากลที่เหลือ ฉันรับรหัสจากเครือข่าย

รีโมทคอนโทรลสำหรับกล้องได้รับการทดสอบในรุ่น Pentax optio L20 และ Nikon D3000 ไม่สามารถรับ Canon เพื่อตรวจสอบได้

คู่มือผู้ใช้มีความยาว 13 หน้า ดังนั้นฉันจึงไม่ได้รวมไว้ในบทความ แต่รวมไว้ในภาคผนวกในรูปแบบ PDF

ไฟล์เก็บถาวรประกอบด้วย:
โครงการในและ GIF;
การเขียนแบบของแผงวงจรพิมพ์และการจัดเรียงองค์ประกอบในรูปแบบ
เฟิร์มแวร์และซอร์สโค้ดในแอสเซมเบลอร์

รายชื่อธาตุกัมมันตภาพรังสี

การกำหนด พิมพ์ นิกาย ปริมาณ บันทึกร้านค้าสมุดบันทึกของฉัน
ดีดี1 MK AVR 8 บิต

ATmega168PA

1 PA-AU ไปยังสมุดบันทึก
ยู2 เซ็นเซอร์อุณหภูมิ

DS18B20

1 ไปยังสมุดบันทึก
ไตรมาสที่ 1 ทรานซิสเตอร์มอสเฟต

2N7002

1 ไปยังสมุดบันทึก
ซี1, ซี2 ตัวเก็บประจุ30 พิโคเอฟ2 ไปยังสมุดบันทึก
ซี3,ซี4 ตัวเก็บประจุ0.1 µF2 ไปยังสมุดบันทึก
C5 ตัวเก็บประจุด้วยไฟฟ้า47 ไมโครฟ1 ไปยังสมุดบันทึก
R1-R8, R17 ตัวต้านทาน

100 โอห์ม

9 ไปยังสมุดบันทึก
R9 ตัวต้านทาน

10 kโอห์ม

1 ไปยังสมุดบันทึก
R10 ตัวต้านทาน

8.2 โอห์ม

1 ไปยังสมุดบันทึก
ร11 ตัวต้านทาน

300 โอห์ม

1 ไปยังสมุดบันทึก
ร12 ตัวต้านทาน

2 โมห์ม

1 ไปยังสมุดบันทึก
ร13 ตัวต้านทาน

220 โอห์ม

1 ไปยังสมุดบันทึก
ร14 ตัวต้านทาน

30 kโอห์ม

1 ไปยังสมุดบันทึก
R15, R19 ตัวต้านทาน

4.7 โอห์ม

2 ไปยังสมุดบันทึก
ร16 ตัวต้านทาน

20 โอห์ม

1

แผนภาพวงจรไฟฟ้า

อุปกรณ์หนึ่งเครื่องรวมสองฟังก์ชันเข้าด้วยกัน: การวัดอุณหภูมิและเวลาจริง (นาฬิกา) การแสดงผลจะสลับกัน โดยเปลี่ยนทุกๆ สิบวินาที ในการตั้งนาฬิกาจะใช้สองปุ่มคล้ายกับปุ่มภาษาจีนธรรมดา นาฬิกาอิเล็กทรอนิกส์: คนหนึ่งรับผิดชอบในการเลือกพารามิเตอร์ ส่วนที่สองคือการเปลี่ยนแปลง อุปกรณ์นี้ใช้พลังงานจากเครือข่ายโดยใช้แหล่งจ่ายกระแสไฟฟ้าที่มีความเสถียรคงที่โดยมีแรงดันไฟฟ้า 5 โวลต์ (บอร์ดจาก ที่ชาร์จโทรศัพท์).

เซ็นเซอร์อุณหภูมิเป็นชิป DS18B20 เนื่องจากอุปกรณ์ Clock-Thermometer ไม่มีแบตเตอรี่ในตัว หากไฟดับ ค่าที่อ่านได้ก็จะสูญหายไปตามธรรมชาติ และเพื่อไม่ให้บุคคลมาสายสำหรับเรื่องสำคัญจึงมี "เคล็ดลับ" ที่น่าสนใจ - เมื่อเปิดเครื่อง ขีดจะปรากฏบนจอแสดงผลแทนเวลาจนกว่าคุณจะกดปุ่มตั้งค่าปุ่มใดปุ่มหนึ่งจากสองปุ่ม

ตัวเครื่องวัดอุณหภูมิแบบโฮมเมดเป็นกล่องกระดุมข้อมือที่เหมาะสม มีแผงนาฬิกา-เทอร์โมมิเตอร์และแผงที่นำออกจากที่ชาร์จโทรศัพท์วางไว้ในนั้น เซ็นเซอร์ DS18B20 ทำมาจากระยะไกลและเชื่อมต่อผ่านขั้วต่อ

รายการชิ้นส่วนที่จำเป็น

  • ไมโครคอนโทรลเลอร์ Atmega8 - 1 ชิ้น
  • ควอตซ์ 32768 Hz - 1 ชิ้น
  • เซ็นเซอร์อุณหภูมิ DS18B20 - 1 ชิ้น
  • ตัวบ่งชี้เจ็ดส่วน (4 หลัก) - 1 ชิ้น
  • ตัวต้านทาน SMD ขนาด 0805:
  • 620 โอห์ม - 8 ชิ้น
  • 0 โอห์ม (จัมเปอร์) - 1 ชิ้น
  • 4.7 kOhm - 1 ชิ้น
  • ปุ่มชั้นเชิง - 2 ชิ้น

วิดีโอของอุปกรณ์ในช่อง YouTube

นาฬิกาปลุกนี้ใช้ชิปนาฬิกาแบบเรียลไทม์ซึ่งช่วยให้สามารถทำงานจากแหล่งพลังงานสำรองในกรณีที่ไม่มีชิปหลัก เวลาปลุกและโหมดการทำงานที่ตั้งไว้จะถูกจัดเก็บไว้ในหน่วยความจำแบบไม่ลบเลือนของไมโครคอนโทรลเลอร์ โหมดการแสดงผล - 24 ชั่วโมง มีการเลียนแบบ "ฟ้อง" เวลาและโหมดการทำงานจะแสดงโดยใช้ไฟ LED

หลักการทำงาน

พื้นฐานของนาฬิกานี้คือไมโครวงจร DS1307 ซึ่งเป็นนาฬิกาแบบเรียลไทม์ที่แลกเปลี่ยนข้อมูลกับตัวควบคุมควบคุมผ่านอินเทอร์เฟซ I2C การแสดงเวลาดำเนินการผ่านตัวระบุ 7 ส่วน 4 ตัวที่ทำงานในโหมดไดนามิก การป้อนและปรับเวลาทำได้โดยใช้ปุ่ม 5 ปุ่ม: "+ นาที", "+ ชั่วโมง", "ตั้งค่า", "ปลุก" และ "รีเซ็ต" สัญญาณเสียงนาฬิกาปลุกจะส่งออกผ่านตัวส่งสัญญาณเพียโซมาตรฐานและเป็นสัญญาณที่มีความถี่ 1 kHz โดยมีการหยุดชั่วคราวครั้งที่สอง

Atmega48 ได้รับเลือกให้เป็นไมโครคอนโทรลเลอร์ควบคุมเนื่องจากความพร้อมใช้งานและการมีอยู่ของอุปกรณ์ต่อพ่วงที่จำเป็นบนบอร์ด (แม้จะเกินมาก็ตาม) นาฬิกาแบบเรียลไทม์ DS1307 เชื่อมต่อกับเอาต์พุตฮาร์ดแวร์ I2C ของไมโครคอนโทรลเลอร์ควบคุม ในการใช้งาน DS1307 ในโหมดสแตนด์อโลน (ในกรณีที่ไฟฟ้าดับไปยังตัวควบคุมหลัก) จะใช้แบตเตอรี่ลิเธียม 3V เป็นพลังงานสำรอง ซึ่งจะคงอยู่นานหลายปีเนื่องจากชิปใช้พลังงานต่ำ

มาดูโปรแกรมควบคุมกันดีกว่า:

โปรแกรมทำงานบนหลักการของเครื่องจับเวลาธง: สถานะและเหตุการณ์ทั้งหมดจะแสดงในรูปแบบของธงที่สอดคล้องกันซึ่งดำเนินการในการขัดจังหวะของตัวจับเวลาที่สอดคล้องกัน 1s, 1ms และ 263.17ms โปรแกรมใช้ตัวจับเวลาฮาร์ดแวร์ 2 ตัว

ชิปนาฬิกาถูกสำรวจและกดปุ่มที่ช่วงเวลา 263.17ms ช่วงเวลา 1 มิลลิวินาทีถูกใช้เพื่อสร้างสัญญาณเสียงระฆัง และใช้ 1 วินาทีเพื่อมอดูเลต ช่วงที่สองยังควบคุมการกะพริบของจุดในหลักที่ 2 ของตัวบ่งชี้ โดยแยกชั่วโมงและนาทีและยังทำหน้าที่เป็นการก่อตัวของ "ขีด"
ลองดูแผนผังของนาฬิกา

การกำหนดและนิกาย:
S4 - นาฬิกาเพิ่มขึ้น
S3 - เพิ่มนาที
S2 - การติดตั้ง
S1 - เปิดนาฬิกาปลุก
S5 - รีเซ็ต

R6-R10 - 10,000
R1-R5 - 510โอห์ม

แรงดันไฟฟ้า - 5 โวลต์

การตั้งค่าและการใช้งาน

นาฬิกาที่ประกอบอย่างถูกต้องไม่จำเป็นต้องมีการปรับแต่งเพิ่มเติม คุณเพียงแค่ต้องตั้งเวลาและการเตือนปัจจุบัน
การตั้งเวลาปัจจุบันมีดังนี้:
1) ใช้ปุ่ม S1 และ S2 เพื่อตั้งเวลาปัจจุบัน (จุดระหว่างตัวเลขไม่กระพริบ)
2) เริ่มนาฬิกาด้วยปุ่ม S3
การตั้งปลุก:
1) กด S3 และตรวจสอบให้แน่ใจว่าจุดในหลักที่ 1 สว่างขึ้น
2) ตั้งเวลาโทรโดยใช้ปุ่ม S1 และ S2
3) เปิดการโทรโดยใช้ปุ่ม S4
คุณสมบัติเพิ่มเติม:
เปิดการติ๊ก - กด S4 ค้างไว้แล้วกด S2 จนกระทั่งเสียงลักษณะเฉพาะปรากฏขึ้น มันก็ดับไปเหมือนกัน
แสดงนาทีและวินาที - กด S4 ค้างไว้แล้วกด S1 หากคุณกด S3 หลังจากนั้นวินาทีจะถูกรีเซ็ตเป็น 00 Return - ชุดค่าผสมเดียวกัน

ภาพถ่ายและวิดีโอของนาฬิกา

นาฬิกาประกอบอยู่ในตัวเรือนที่ทำจาก "อุปกรณ์อิเล็กทรอนิกส์" ที่ไม่ทำงาน