Oddiy ikkilik soat. Radiogik soat Mikrokontroller pallasida ikkilik qo'l soati




Hammasi men AVR mikrokontrollerida to'liq tayyor qurilma yasashni xohlaganimdan boshlandi.

Tanlov ikkilik soatga tushdi, chunki. ular qilish oson va juda ta'sirli ko'rinadi. Bundan tashqari, menga har doim KDE dan ikkilik soat plazmasi yoqqanligi sababli, u quyidagicha ko'rinadi:

Ikkilik soat nima?

Ikkilik soat nima ekanligini va undan vaqtni qanday aniqlashni bilmaganlar uchun men kichik bir chekinish qilaman. Ikkilik soat oddiygina soat bo'lib, biz o'rganib qolgan o'nlik sanoq o'rniga ikkilik (yoki ikkilik) sanoq tizimidagi vaqtni ko'rsatadi.

Ikkilik soatlar har xil (odatda oddiy soatlar kabi) - ko'rsatkichlarning turli soni va joylashuvi bilan, soniyali yoki soniyasiz, 24 soatlik yoki 12 soatlik vaqt formati va boshqalar. Men yuqorida aytib o'tilgan KDE plazmoidiga imkon qadar yaqin variantni tanlashga qaror qildim:


Soat oltita vertikal ustundan iborat - soatlar uchun ikkita ustun, daqiqalar uchun ikkitasi va soniyalar uchun ikkita ustun (chapdan o'ngga). Har bir ustun asosan bitta raqamdan iborat (ya'ni soatlar, daqiqalar va soniyalar uchun ikkita raqam).

Soatning to'rtta gorizontal chizig'i bor, chunki biz noldan to'qqizgacha raqamlarni ko'rsatishimiz kerak (hech bo'lmaganda eng muhim raqam uchun) va to'qqizning ikkilik ko'rinishi 1001 , to'rtta raqamni (bitni) o'z ichiga oladi. Pastki tartib quyida joylashgan.

Soat qancha vaqt ko'rsatayotganini tushunishning eng oson yo'li "terish" ni chapdan o'ngga, pastdan yuqoriga tahlil qilishdir. Yuqoridagi rasmda ko'rsatilgan soatning eng chap ustuni bilan ifodalangan ikkilik sonning qiymatini yozamiz (agar yonayotgan ko'rsatkich bittani, o'chirilgan esa nolni bildiradi): 0010 ikkilik tizimda bu 2 - kasrda. Xuddi shunday, biz ikkinchi ustunning qiymatini yozamiz: 0001 ikkilik (o'nlik kabi) yoki faqat bitta. Ya'ni soat bo'yicha 21 soat. Xuddi shu tarzda, siz soat nimani ko'rsatayotganini o'qishingiz mumkin 35 daqiqa va 28 soniya. Bir oz mashq qilsangiz, siz ikkilik soatdan vaqtni odatdagidek tez o'qiy olasiz.

Amalga oshirish

Shunday qilib, g'oya aniq bo'lsa, keling, amalga oshirishga o'tamiz.

Keling, indikatordan ("terish") boshlaylik - bu LEDlar panjarasi.

Soat 4 ta gorizontal va 6 ta vertikal qatorga ega bo'lganligi sababli, zarur bo'lgan LEDlarning umumiy soni 6 * 4 = 24 ni tashkil qiladi. barcha raqamlar ishlatilmaydi - masalan, soatning eng yuqori raqami (eng chap ustun) ikkitadan ko'p bo'lmagan raqamni ko'rsatishi mumkin (yigirma soatlik vaqt formati bilan), ya'ni siz ikkita LEDni saqlashingiz mumkin. Lekin men buni qilmadim va barcha 24 LEDni qo'ymadim, chunki. (kelajakda) oddiy matnli xabarlarni ko'rsatish uchun ushbu soatdan foydalanishni xohladi.

Vaqtni belgilash uchun tugmalar kerak. Ulardan uchtasi bor: birinchi tugma soatni vaqtni sozlash rejimiga o'tkazadi va aksincha. Ikkinchi tugma, raqam tanlash, hozirda vaqt o'rnatilayotgan ustunni almashtiradi. Va nihoyat, uchinchisi tanlangan ustundagi vaqtni bir marta oshiradi.

ATMega32 mikrokontroller sifatida ishlatiladi. Albatta, bunday oddiy vazifa uchun bunday kuchli mikrokontrollerdan foydalanish shart emas, lekin menda allaqachon bor edi, shuning uchun men undan foydalandim.

Sxematik va PCB

Sxema juda standart: mikrokontroller, quvvat manbai, reset, dasturchini ulash uchun ulagich. Kvars soati TOSC1 va TOSC2 ga ulangan bo'lib, ular orasidan soat belgilanadi. Vaqtni sozlash tugmalari kuchlanish kuchlanishiga tortiladi. O'nta LED chiqishi (6 ustun + 4 qator). LED orqali oqimni cheklash uchun har bir gorizontal qatorga qarshilik ulangan.

Bosilgan elektron plata bir tomonlama bo'lib chiqdi, lekin baribir boshqa tomonida ikkita o'tish moslamasi (qizil rang bilan belgilangan), ularni yupqa mis simdan yasash juda oddiy.

Ramka

Bu, ehtimol, eng qiziq bo'lmagan qismdir. Ammo, shu bilan birga, u ko'p vaqtni olgan.

Tananing o'zi mix va elim bilan mahkamlangan yog'och taxtalardan yasalgan. Yig'ishdan so'ng, taxtalar ehtiyotkorlik bilan silliqlashdi, dog 'va bir necha qatlamli mebel laklari bilan ochildi.

LEDlar jigsa yordamida yog'och o'lchagichlardan yasalgan qismlarga ega bo'lgan panjaraga o'rnatiladi. Oddiy iz qog'ozining bir qismi (chizmalar yoki naqshlar uchun ishlatiladi) yorug'likni tarqatish uchun LED bilan har bir katakchaga kiritiladi.

Ikki tomonlama muzli shisha soatning old tomoniga yopishtirilgan. Orqa qismi vintlardagi qopqoq bilan yopilgan, undan vaqtni sozlash tugmalari chiqib turadi.

Dasturiy ta'minot qismi

Men dasturni assemblerda yozishga qaror qildim. Bu eng qulay rivojlanish tili bo'lgani uchun emas, balki faqat ta'lim maqsadlarida. Manba kodlarini quyida "Fayllar" bo'limida topishingiz mumkin.

Men butun kodni tasvirlamayman, chunki yetarlicha batafsil izohlangan. Men faqat asosiy fikrlarni tasvirlab beraman.

Supurish ustunlar tomonidan amalga oshiriladi, ya'ni dastlab faqat birinchi ustunning LEDlari bir muddat yonadi, keyin ikkinchisi va hokazo. Bu juda tez sodir bo'ladi va ko'z buni sezishga ulgurmaydi, shuning uchun barcha yoqilgan LEDlar bir vaqtning o'zida yoqilganga o'xshaydi. DISPLAY_COLUMN makrosi ustundagi vaqt qiymatini ko'rsatish uchun ishlatiladi. Ustunlarni almashtirish Timer0 taymeriga muvofiq amalga oshiriladi.

Vaqt o'zgarishi soniyada bir marta taymer/Counter2 taymerining to'lib ketishi uzilishi bilan sodir bo'ladi. Kristal chastotasi 32768 Gts bo'lganligi va taymerni oldindan o'lchash moslamasi 128 ga o'rnatilganligi sababli, bir baytli taymer soniyada bir marta toshib ketadi ( 32768 / (128 * 256) = 1 ), bu juda qulay.

Tugmachalarni bosish jarayoni soatni sozlash rejimiga va orqaga o'tkazish uchun tugmani bosish tugmasi_to'xtatish, vaqtni o'rnatish uchun tugmani_set_bosish va ustunni almashtirish tugmasi uchun tugmani_switch_bosish protseduralarida sodir bo'ladi. E'tibor bering, button_stop_pressed protsedurasida joriy vaqt EEPROMda saqlanadi. Bu, agar kerak bo'lsa, vaqt qayta tiklanmasligi uchun amalga oshiriladi, masalan, soatni boshqa rozetkaga o'tkazish (soat yoqilganda, vaqt EEPROMdan o'qiladi).

Tugmalarning holatini so'roq qilish, faol tozalash ustunini almashtirish va vaqtni ko'rsatish kabi barcha asosiy "ishlar" asosiy rejimda amalga oshiriladi. . Initializatsiya ichida amalga oshiriladi qayta o'rnatish .

Natija

Natijada nima sodir bo'lganini quyidagi videoda ko'rish mumkin. U erda ishlab chiqarish jarayonining ba'zi bosqichlari ham tasvirlangan.

Fayllar

Mikrodastur manba kodlari, sxemalar va simli plata ushbu GitLab omborida.

Xulosa sifatida

Umuman olganda, birinchi qurilma uchun, menimcha, bu juda yaxshi chiqdi.

Agar siz ushbu maqolada biron bir noaniqlik topsangiz yoki biror narsani batafsilroq tasvirlash kerak deb hisoblasangiz - izohlarda yozing.

Xayrli kun. Bugungi maqolada biz Arduino asosidagi noodatiy ikkilik soatni yaratamiz. ularning qo'llar. Bunday yaratish jarayoni bilan shug'ullangan hunarmandchilik, kelajakda siz har qanday dizaynning ikkilik soatini takrorlashingiz mumkin bo'ladi.

1-qadam: Ikkilik soat nima?

Boshlash uchun, keling, ikkilik (ikkilik) raqam nima ekanligini eslaylik - bu ikkilik hisoblash tizimida faqat ikkita belgidan foydalanadigan raqamli qiymatlar bilan ifodalangan raqam: 0 (nol) va 1 (bir).

Ikkilik soat - bu vaqtni ikkilik formatda ko'rsatadigan soat. Loyiha nol va birlarni ko'rsatish uchun LEDlarning 6 ta ustunidan foydalanadi. Har bir ustun bitta raqam/raqamni ko'rsatadi, bu format BCD deb nomlanadi. Har bir chiziq 2 ^ 0 (yoki 1) dan 2 ^ 3 (yoki 8) gacha bo'lgan ikkita kuchni ifodalaydi. Shuning uchun, soatdan ma'lumotni o'qishda bajarilishi kerak bo'lgan narsa, LEDlar yoqilgan ustunlar qiymatlarini yig'ishdir. Masalan, birinchi ustunda 4 va 1 LEDlar yoniq. Biz 8 ni 1 ga qo'shamiz va 9 ni olamiz (soniyalar soni 9). Keyingi ustun o'ninchi soniya, faqat 3-chi LED yonadi, shuning uchun umumiy qiymat 49 soniya bo'ladi, daqiqalar va soatlar bilan bir xil. E'tibor bering, soat vaqtni 24 soatlik formatda ko'rsatadi.

2-qadam: Komponentlar

  • Arduino Pro Mini 328 5 V bunday taxtadan foydalangan, lekin aslida siz boshqa har qanday foydalanishingiz mumkin. Agar siz hech qachon Pro Mini-dan foydalanmagan bo'lsangiz, sizga kerak bo'ladi CP2102 (dasturchi) platani kompyuterga ulash uchun;

  • D.S.1302 - real vaqtda soat moduli;

  • 20 x 10 mm diffuzli issiq LEDlar(Men sizga marj bilan olishni maslahat beraman);

  • 10Ō qarshilik darajasiga ega 20 ta qarshilik;

  • 2 tact tugmasi;

  • Qarshilik qiymati 10kŌ bo'lgan 2 ta qarshilik (yuk rezistorlari sifatida ishlatiladi).

3-qadam: Prototip yaratish

Kelajakning prototipini yaratishni boshlaylik hunarmandchilik. Aslida, bu shart emas, lekin siz LED matritsasi, Arduino va soat moduli qanday ishlashini ko'rib chiqishingiz kerak. Prototip yaratishda men Arduino Mega va oddiy qizil LEDlardan foydalanardim. Kutilganidek, hamma narsa yaxshi ishlaydi.

4-qadam: Tana

Ramka uy qurilishi(ikki yarmidan iborat ) yog'ochdan yasalgan bo'ladi. Bu ikkilik soat fonida kontrastli ko'rinadi va beradi hunarmandchilik retro uslubi.

5-qadam: sxematik

Arduino pinlari sonini kamaytirish uchun LEDlar matritsada guruhlangan. Bizning holatlarimizda matritsa uchun 9 ta pin ajratilgan. LED matritsasi ishlab chiqarilgandan so'ng, biz simlarni arduinoga, so'ngra soat moduliga, vaqtni sozlash tugmachalariga va nihoyat quvvat manbaiga lehimlaymiz.

6-qadam: Kod

Kod DS1302 soat moduli uchun Arduino Playgroud postidagi misolga asoslangan. Shundan so'ng, LED matritsasida vaqtni ko'rsatish uchun o'zgarishlar kiritildi.

Ikkilik soatni yig'ishni istab, men tarmoqda hech qachon qabul qilinadigan tayyor dizaynni topmadim. Aksariyat soatlarda jiddiy kamchilik bor edi - quvvat o'chirilganda vaqt sozlamalari noto'g'ri ketdi. Yaxshiyamki, bundan biroz oldin men C tilini va AVR mikrokontrollerlarini o'rganishni boshladim. Shunday qilib, olingan bilimlarni amaliy tajriba bilan mustahkamlash va shu bilan birga g'ildirakni qayta ixtiro qilishga qaror qilindi. Men ham yashil miltillovchi LEDlarni yaxshi ko'raman.



Sxema



RTC

Joriy sozlamalarni saqlash muammosi real vaqt soati (RTC) tomonidan mukammal hal qilinadi. Mening tanlovim DS1307 chipiga to'g'ri keldi.

Ishlab chiqaruvchining so'zlariga ko'ra, elektr quvvati o'chirilganda, u bitta CR2032 lityum batareyasi energiyasini iste'mol qilib, vaqt va sanani 10 yil davomida ushlab turishi mumkin. Ya'ni, qabul qilinadigan aniqlikni saqlagan holda, soat taqillatishda davom etadi. Vaqt noto'g'ri ketmaydi, soatni qayta yoqish orqali biz uni o'chirish vaqtini emas, balki terishdagi haqiqiy vaqtni olamiz. Mikrosxema mikrokontroller bilan "kvadrat shinasi" I 2 C orqali aloqa qiladi, aniq vaqtni xabar qiladi va uning yangi qiymatlarini qabul qiladi.

Qurilmaning yuragi

Mega32a mikrokontrollerini tanlash quyidagi omillar bilan bog'liq:
Dinamik ko'rsatkichdan foydalanmaslik uchun portlar etarli, bu menga yoqmaydi, bu birinchi navbatda ko'zni bezovta qilganligi sababli (baribir yuqori chastotada miltillash g'ayritabiiy). Men u bilan Proton PICBasic tilida PIC mikrokontrollerlari bilan o'ynab tanishdim va agar dinamik indikatsiyadan foydalanmaslikning iloji bo'lsa, buni qilishni afzal ko'raman.
Nisbatan past narx 130 rubl (masalan, Mega16a bir xil narxda) va chegirma bilan odatda 104 rubl.
QPF-44 paketini tozalang, qulay pinout bilan


"A" porti soniyalarni, "B" porti - daqiqalarni va "C" porti - soatlarni ko'rsatadi. DS1307 dan olingan vaqt qiymatlarini portlarga hech qanday o'zgarishsiz belgilashingiz juda qulay. Tugmalar "D" portiga ulangan (pinlar 3 - 7), 0 va 1 pinlar mos ravishda soat chizig'i (SCL) va ketma-ket ma'lumotlar liniyasi (SDA) sifatida ishlaydi. RTC chipi ettinchi oyog'ida 1 gerts chastotada impulslar chiqaradigan tarzda o'rnatiladi. Ushbu oyoq "D" portining 3-piniga ulangan. Ushbu portning o'zi kirish sifatida sozlangan va har qanday holatda, tashqi tomondan SMD rezistorlari tomonidan ko'paytiriladigan quvvat plyusiga ichki pull-uplar kiritilgan. Bunday harakatlar har qanday kutilmagan hodisalardan to'liq himoya qiladi.

LEDlar


Men yorug'ligi past bo'lgan matli korpusda LEDlarni tanladim. Dastlab, shaffof korpusdagi yorqin diodlar sinovdan o'tkazildi, ammo 3 mA oqimda ham ular juda yorqin va notekis porlashdi, bu esa yana noqulaylik tug'dirdi. Diyotdagi kuchlanishning pasayishi 2 volt, besleme zo'riqishida 5 volt va qarshilik 1 kŌ bo'lsa, dioddan o'tadigan oqimning qiymati (5 - 2) / 1000 = 3 mA bo'ladi. Bu qiymat empirik tarzda tanlangan va yorug'likning yorqinligi zaif yoritilgan xona uchun juda yaxshi. Agar siz soatni to'g'ridan-to'g'ri quyosh nuriga o'rnatishni rejalashtirmoqchi bo'lsangiz, yorqinroq porlash uchun qarshilik qiymatini 200 ohmgacha kamaytirish kerak (rahmat qopqog'i).

Tugmalar

Tugmalari bo'lgan alohida taxtada boshqa Bt6 tugmasi ko'rinishida "sug'urta" mavjud (u bizni tasodifiy zarbadan himoya qiladi). Vaqtni avval ushlab turish orqali tahrirlash mumkin.

Yumshoq

Kod CodeVisionAvr muhitida yozilgan.
Dastur biz mikrokontrollerning tashqi qurilmalarini sozlashimiz bilan boshlanadi.
Portlarni sozlash (A, B, C - chiqish, D - kirish)
Har holda, DS1307 "ongiga kelish" uchun vaqt topishi uchun 300 ms pauza beriladi.
"Kvadrat avtobus" ni ishga tushirish
Biz RTC chipini shunday sozlaymizki, u har soniyada SQW / OUT pinida to'rtburchak puls hosil qiladi.
CLR tugmasi bosilganligini tekshiring. Ha bo'lsa, barcha qiymatlarni 0 ga tiklang
Global uzilishlarni yoqing
Ha, ular haqida bir necha so'z. Biz kuzda PD2 da INT0 tashqi uzilishlardan foydalanamiz, ya'ni. Har soniyada dastur uzilish ishlovchisiga o'tadi, unda biz DS1307 dan vaqt qiymatlarini o'qiymiz va ularni LED ko'rsatkichlarida ko'rsatamiz.
Biz cheksiz pastadirga kiramiz, u erda biz tugmachalarni so'raymiz
Agar tugma bosilsa, bir soat (daqiqa) qo'shing (ayirish) va I2C orqali yangi qiymatni yuboring
Yo'l davomida biz yangi vaqt qiymatlari 24 soat va 60 daqiqa oralig'iga mos kelishini tekshiramiz.

Bosilgan elektron plata

Doska Buyuk kosmik lazer-temir texnologiyasi bo'yicha bir tomonlama tekstolitda ishlab chiqarilgan. Yuqori taxtani ishlab chiqarishda oddiy qog'oz ishlatilgan (muvaffaqiyatsiz tajriba).


Ushbu texnologiyaning ko'plab variantlari mavjud. Menimcha, bu eng yaxshisi:
1. Biz to'g'ri o'lchamdagi tekstolitning bir qismini kesib tashladik.
2. Biz uchlarini teriga aylantiramiz, zararli burmalardan xalos bo'lamiz.
3. Kelajakdagi taxtani tozalash kukuni yoki tish pastasi bilan yog'lang va shimgichning qattiq tomoni bilan porlashi uchun tozalang.
4. Biz parchamizni bir necha o'n soniya davomida bir xil, mot, bordo-jigarrang sirt paydo bo'lguncha iliq temir xloridning zaif eritmasiga botiramiz. Eritmadan tortib olinganda, suyuqlik sirtni to'liq namlashi kerak.
5. Kakuni yuving, muloyimlik bilan quriting, barmoqlaringiz bilan sirtga yoki boshqa yog'li narsalarga tegmasdan. Chang yoki sochlardan qochish uchun darhol mis bilan toza qog'ozga soling.
6. Biz ko'zgu tasvirini yupqa (!) Yaltiroq qog'ozga bosib chiqaramiz, masalan, jurnaldan kesib tashlashingiz mumkin. Biz qo'llarimiz bilan chizilgan rasmga tegmaymiz. Ehtiyotkorlik bilan kesib oling, naqsh soling.
7. Tayyorlangan tekstolit bo'lagiga qo'llang, 1-2 qatlam toza qog'oz orqali dazmollang, dazmolni maksimal haroratga qo'ying. 10 soniya etarli bo'lishi kerak, chunki agar siz haddan tashqari oshirsangiz, treklar tekislanadi va bir-biriga oqadi. Toner misga to'liq yopishishi kerak.
8. Iliq suv ostida namlang, uni 10 daqiqa davomida suvda qoldirishingiz mumkin. Sekin-asta yirtib tashlang, qog'ozni qirib tashlang. Bunda menga eski tish cho'tkasi yordam beradi. Qolgan qog'oz parchalarini igna bilan olib tashlang. Toner tekstolitda qoladi.
9. Temir xloridning kuchli eritmasini suv hammomida qizdiramiz, taxtamizni u erga tashlaymiz va bir necha daqiqa chayqatamiz (van't-Xoff qoidasiga ko'ra, harorat 10 darajaga ko'tarilganda, reaktsiya tezligi 2 barobar ortadi. Mis bizning ko'z o'ngimizda yo'qoladi, siz qizdirishingiz mumkin va qizdirmaysiz, lekin kutish uchun ko'proq vaqt kerak bo'ladi.
10. Barcha keraksiz mis yo'qolishi bilanoq, gazni o'chiring, taxtani tortib oling (masalan, cımbızla), pechka va barmoqlarni temir xloriddan yuvishga harakat qiling. Uni taxtadan oqadigan suv bilan yuvib tashlang.
11. Aseton (tirnoq bo'yog'ini tozalash vositasi) oling va tonerni artib oling. Siz uni zımpara yoki shimgich bilan qirib tashlashga harakat qilishingiz mumkin.
12. Biz teshik ochamiz.
13. Ludim. Men LTI ni oqim sifatida ishlataman va sizga maslahat beraman, ammo qalaylash va lehimlashdan keyin bu oqimni yuvish kerak (xuddi shu aseton bilan va yaxshisi 1: 1 alkogol-benzin aralashmasi bilan), chunki LTIshka biroz o'tkazuvchanlikka ega.
Barcha ishlar ventilyatsiya qilingan joyda, jarayonda amalga oshirilishi kerak
juda ko'p zararli bug'lar chiqariladi.


Plitalar PBS va PLD konnektorlari bilan o'zaro bog'langan. Birinchisi, yupqa o'rnatish simi yordamida yuqori taxtaga ulanadi, uni, masalan, eski LPT kabelidan yoki adapterdan tanlash mumkin.


Ikkinchisi pastki taxtaga lehimlanadi va klaviaturaga olib boradigan pinlar egiladi (rasmga qarang).

SprintLayout5.0 formatidagi PCBlar kiritilgan. Suratlarda bir nechta xatoliklar bor, lekin ular allaqachon biriktirilgan fayllarda tuzatilgan.

mikrokontroller proshivkasi

Buning uchun USBasp dasturchisi yig'ildi, uni yuqoridagi fotosuratda ko'rish mumkin. Juda yoqimli narsa, ishlatish oson va siz uni har doim o'zingiz bilan cho'ntagingizda olib yurishingiz mumkin (Umid qilamanki, buni hech kim qilmaydi). Mega32 proshivka uchun siz "Slow SCK" jumperini o'rnatishingiz kerak bo'ladi.
Sigortalar:
Kam sug'urta = 0xC4
Yuqori sug'urta = 0xD9
Bizning mikrokontrollerimiz 8 MGts chastotali ichki RC osilatoridan ishlaydi. PortC da JTAG interfeysini o'chirib qo'yishim kerak edi, aks holda ba'zi LEDlar yonmaydi.
Kengashda tez miltillash/disk raskadrovka uchun ISP10 ulagichi mavjud.

old panel

40 mm kengligi va qalinligi 1,5 mm bo'lgan alyuminiy plastinkadan tayyorlangan. Uning diametri 5 mm bo'lgan 18 ta teshiklari va tokchalarni biriktirish uchun diametri 3 mm bo'lgan 4 ta teshiklari bor.


Birinchidan, shablon chop etildi va plastinka ustiga yopishtirildi. Keyinchalik, 1,5 mm matkap bilan uchuvchi teshiklar ochildi, shundan so'ng asosiy teshiklar kerakli diametrli matkaplar bilan burg'ulashdi.


Oxirida plastinka egilib, nozik zımpara bilan silliqlangan va GOI pastasi bilan silliqlangan.
Shablon biriktirilgan fayllarga fayl maketi sifatida biriktirilgan5.0

Yuqori chap burchakda qizil LED

DS1307 tomonidan yaratilgan impulslarni 7-oyoqda takrorlaydi, ya'ni. har soniyada miltillaydi. Kichik p-kanalli MOSFET tranzistori kalit rejimda ishlaydi, impulslar bilan o'z vaqtida ochiladi va yopiladi. Avvaliga men orqa yorug'lik qilishni xohladim (masalan, Ambilight), buning uchun CMOS inverteri qo'shimcha tranzistorlar juftligida qilingan (ishonch hosil qilish uchun). Lekin bu menga yoqmadi. Bitta LED uchun bitta tranzistor kifoya qiladi, siz hatto pnp turi bc857 dan foydalanishingiz mumkin. Men irlml6402 yoki irlml6302 paketlanmagan mosfetdan foydalanganman.

Fayllar

Manbalar, olti burchakli fayl, bosilgan elektron platalar, sxemalar, proteus sxemalari va sigortalar arxiv sifatida ushbu rasmga kiritilgan. Men fayl omborlariga ishonmayman, menda hali o'z serverim yo'q, shuning uchun mening havaskor fikrimcha, Habr saqlash uchun eng ishonchli joy bo'ladi. Windows foydalanuvchilari saqlangan tasvirni WinRar yordamida ochish orqali fayllarga kirishlari mumkin.
Ha, bu rasm.

Video

Xulosa

70 mA oqimda 5 voltni etkazib berishga qodir bo'lgan har qanday quvvat manbasidan foydalanishingiz mumkin. Buning uchun USB porti mos keladi. Asosiysi, quvvat "toza" va 5 voltdan oshmaydi. Shovqin darajasi ~ 50 mV bo'lgan mc34063 chipidan DC-DC konvertoridan soatni quvvatlantirish, vaqtni belgilashda nosozliklarni payqadim. Endi qurilma yaqin atrofda osilgan kalit orqali quvvatlanadi. U aniq 5 voltni chiqaradi. Yaxshi eslatmada, siz hali ham 3,3 - 5 volt uchun noaniq diod va qandaydir chiziqli stabilizator qilishingiz kerak.
Soatda budilnik va sanani ko'rsatish funktsiyalarining yo'qligi juda asosli: ikkalasi ham telefonda mavjud, demak, hech kim ularni ikkilik soatda ishlatmaydi (ushbu xulosa uchun Okxem amakiga rahmat).

E'tiboringizga elektron mikrokontroller soati. Soat sxemasi juda oddiy, minimal tafsilotlarni o'z ichiga oladi, yangi boshlanuvchi radio havaskorlari tomonidan takrorlanishi mumkin.

Dizayn mikrokontroller va DS1307 real vaqt soatida yig'ilgan. Joriy vaqtning ko'rsatkichi sifatida to'rt xonali etti segmentli LED indikator ishlatiladi (qorong'ida yaxshi ko'rinadigan o'ta yorqin, ko'k porlash va shu bilan birga soat tungi chiroq rolini o'ynaydi) . Soat ikkita tugma bilan boshqariladi. DS1307 real vaqtda soat chipidan foydalanish tufayli dastur algoritmi juda oddiy bo'lib chiqdi. Mikrokontroller real vaqt rejimidagi soat bilan I2C shinasi orqali bog'lanadi va dasturiy ta'minot bilan tartibga solinadi.

Soat tartibi:

Afsuski, diagrammada xatolik bor:
- MK xulosalari tranzistorlar asoslariga ulanishi kerak:
PB0 - T4, PB1 - T3, PB2 - T2, PB3 - T1
yoki tranzistor kollektorlarining indikator bitlariga ulanishini o'zgartiring:
T1 dan DP1 ga ….. T4 dan DP4 gacha

Soat pallasida ishlatiladigan tafsilotlar:

♦ ATTiny26 mikrokontrolleri:

♦ real vaqt soati DS1307:

♦ 4-raqamli 7-segmentli LED indikator - FYQ-5641UB -21 umumiy katod (o'ta yorqin ko'k):

♦ kvarts 32,768 kHz, kirish sig'imi 12,5 pF (kompyuterning anakartidan olinishi mumkin), soatning aniqligi ushbu kvartsga bog'liq:

♦ barcha tranzistorlar NPN tuzilmalari bo'lib, siz har qanday (KT3102, KT315 va ularning xorijiy hamkasblari) foydalanishingiz mumkin, men BC547C dan foydalandim
♦ mikrochip kuchlanish regulyatori turi 7805
♦ barcha 0,125 vattli rezistorlar
♦ ta'minot kuchlanishidan past bo'lmagan ish kuchlanishi uchun polar kondansatörler
♦ zaxira quvvati DS1307 - 3 voltli lityum hujayra CR2032

Soatni quvvatlantirish uchun har qanday keraksiz uyali telefon zaryadlovchidan foydalanish mumkin (bu holda, agar zaryadlovchining chiqishidagi kuchlanish 5 volt ± 0,5 volt ichida bo'lsa, kontaktlarning zanglashiga olib keladigan qismi - 7805 chipidagi voltaj regulyatori chiqarib tashlanishi mumkin)
Qurilmaning joriy iste'moli - 30 mA.
DS1307 soatining zaxira batareyasini o'tkazib yuborish mumkin, ammo keyin, agar tarmoq kuchlanishi ishlamay qolsa, joriy vaqtni qayta o'rnatish kerak bo'ladi.
Qurilmaning bosilgan elektron platasi ko'rsatilmagan, dizayn noto'g'ri mexanik soatdan qutiga yig'ilgan. LED (1 Hz miltillovchi chastota bilan, SQW DS1307 chiqishidan) indikatorda soat va daqiqalarni ajratish uchun xizmat qiladi.

Mikrokontrollerning zavod sozlamalari: soat chastotasi - 1 MGts, FUSE-bitlariga teginish kerak emas.

Soat algoritmi(Algoritm quruvchisida):

1. Stack ko'rsatkichini o'rnatish
2. T0 taymerini sozlash:
— chastota SK/8
- ortiqcha uzilishlar (bunday oldindan belgilangan chastota bilan uzilish har 2 millisekundda chaqiriladi)
3. Portlarni ishga tushirish (PA0-6 va PB0-3 pinlari chiqish uchun, PA7 va PB6 kirish uchun sozlangan)
4. I2C avtobusini ishga tushirish (PB4 va PB5 pinlari)
5. DS1307 nol registrining 7-bitini (CH) tekshirish
6. Global uzilishni yoqish
7. Tugmani bosish testi bilan tsiklga kirish

DS307 birinchi marta yoqilganda yoki zaxira quvvati bo'lmasa qayta yoqilsa, u joriy vaqtning dastlabki sozlamalariga o'tadi. Bunday holda: S1 tugmasi - vaqtni belgilash, S2 tugmasi - keyingi toifaga o'tish. Belgilangan vaqt - soat va daqiqalar DS1307 ga yoziladi (soniyalar nolga o'rnatiladi) va SQW / OUT pin (7-pin) 1 Gts chastotada to'rtburchaklar impulslarni yaratish uchun sozlangan.
S2 tugmachasini (S4 - dasturda) bosganingizda, uzilishlar global miqyosda o'chiriladi, dastur vaqtni to'g'rilash pastki dasturiga o'tadi. Shu bilan birga, S1 va S2 tugmalari bilan o'nliklar va daqiqa birliklari o'rnatiladi, so'ngra 0 soniyadan boshlab S2 tugmachasini bosish orqali DS1307 da belgilangan vaqt yoziladi, global uzilish yoqiladi va qaytadi. asosiy dastur bajariladi.

Soat yaxshi aniqlikni ko'rsatdi, bir oy davomida vaqt o'zgarishi 3 soniya.
Kursning aniqligini oshirish uchun ma'lumotlar varag'ida ko'rsatilganidek, kvartsni DS1307 ga ulash tavsiya etiladi:

Dastur Algorithm Builder muhitida yozilgan.
Misol sifatida soat dasturidan foydalanib, mikrokontrollerni I2C avtobusi orqali boshqa qurilmalar bilan bog'lash algoritmi bilan tanishishingiz mumkin (har bir qator algoritmda batafsil izohlangan).

Sayt o'quvchisi Anatoliy Pilgukdan yig'ilgan qurilma va .lay formatidagi bosilgan elektron plataning fotosurati, buning uchun unga katta rahmat!

Qurilma quyidagilarni ishlatadi: Transistorlar - SMD VS847 va CHIP rezistorlar

Maqolaga qo'shimchalar:

(42,9 Kb, 3198 marta ko‘rilgan)

(6,3 Kb, 4161 marta ko'rilgan)

(3,1 Kb, 2640 marta ko'rilgan)

(312,1 Kb, 5913 marta ko'rilgan)


ABdagi soat dasturining ikkinchi versiyasi (yuqorisini yuklab olmaganlar uchun)

(11,4 Kb, 1928 xitlar)

Do'stingizning tug'ilgan kuni arafasida sovg'ani tanlash haqida savol tug'ildi. Do'st turli xil noodatiy elektron asboblarni, qo'l san'atlarini yaxshi ko'radi. Savdo maydonchasi natija bermadi: gadjetlar oddiyligi yoki qimmatligi bilan hayratlanarli darajada edi. Allaqachon biror narsa topmoqchi bo'lib, u Sony ikkilik soat vidjetiga qaradi. Va keyin men o'zimni o'ylab qoldim: "Siz tajribali elektronika muhandisisiz va sizning qo'llaringiz o'sha joydan o'sib bormoqda!" DIY ikkilik soati, eng yaxshi sovg'a bo'ladi! Quyida tasvirlangan qurilmani yaratish g'oyasi ana shunday tug'ilgan.

Ikkilik soatlar vaqtni ikkilik kasr formatida ko'rsatish uchun mo'ljallangan, ya'ni soatlar, daqiqalar va soniyalar o'nlik kasrlarga bo'linadi va ikkilik tizimda ifodalanadi (quyidagi rasmga qarang).

Yaratilish bosqichida darhol kelajakdagi soatga quyidagi talablar qo'yildi:

  • kengashning ham, umuman qurilmaning ham nisbatan kichik o'lchamlari;
  • maksimal mavjud komponentlardan foydalanish;
  • taqdim etiladigan tana.

Natijada quyidagi sxema yaratildi:

Ehtimol, biroz eskirgan, ammo mashhur bo'lmagan ATmega8A-AU MK sifatida ishlatiladi. Haqiqiy vaqtda soat chipi sifatida DS1307 mavjud. Shuningdek, MK yaqinidagi elektr uzatish liniyalariga parallel ravishda va quvvat kirishida 100 nF polar bo'lmagan kondansatkichlar va 47 mikrofaradli polar (tantal) kondansatör o'rnatilgan. Barcha rezistorlar va kondansatörler 0805 o'lchamdagi SMD paketlarida. Chiqish komponentlaridan faqat LEDlar, batareya bloki va sozlash tugmalari mavjud. Tugmalar - har qanday mahkamlashsiz; ish versiyasi uchun uzun "sivilceli" tugmalar mos keladi, masalan:

R1..R6, R14..R18 rezistorlari juda keng diapazonda o'zgarishi mumkin. LEDlarning o'lchamlari muhim emas, ammo korpus va taxta 5 mm dumaloq LEDlar uchun mo'ljallangan. "Zaxiralangan port" - doskadagi chiqish, u soatning funksionalligini potentsial kengaytirish uchun, masalan, dinamik qo'shish uchun taqdim etiladi.

Quyida qurilmaning bosilgan elektron platasi keltirilgan:

LEDlar va MC o'rtasidagi turli xil ulanishlar soni juda katta va ko'p sonli "osilgan" o'tish moslamalarini yasash istagi yo'qligi sababli, qurilma ikki tomonlama PCBda amalga oshirildi. Fiberglasning qalinligi 1,5 mm, taxtaning umumiy o'lchamlari 80 x 50 mm. Boshqaruv elementlari bo'lgan taxta (beshta tugma) alohida ishlab chiqariladi va quyida taqdim etiladi. Doskada qo'shimcha ravishda (diagrammada ko'rsatilmagan): quvvat manbai uchun ulagich + dasturchi; elektr simini ulash uchun qo'shimcha teshiklar; qayta o'rnatish pallasida qarshilik; soat kvarts pallasida kondensatorlar uchun yamoqlar (ular quyida muhokama qilinadi).

Taxta CNC frezalash mashinasida ishlab chiqariladi, bu deyarli zavod sifatini olish imkonini berdi. Yig'ilgan taxtaning fotosurati quyida keltirilgan:

Shaffof svetodiodlar juda yorqin bo'lgani uchun, ularga mat qoplama berish uchun ularni qo'pol skotch-brit mato bilan ishlov berish kerak edi, natijada yorug'lik xira va tarqoq bo'ladi.

Kengash etti simli pastadir (2 - quvvat, 5 - tugma) yordamida asosiy bilan boshqaruv elementlariga ulangan; hajmi - 68 x 22 mm.

Doskani yig'ib, MK-ni miltillagandan so'ng, oxirgi bosqichni bajarish - qurilma uchun chiroyli korpus yaratish qoladi. CNC frezalash mashinasi mavjudligi sababli devorlarni qalinligi 1,5 mm bo'lgan shisha tolali shishadan kesib tashlash va ularni lehimlash orqali ulashga qaror qilindi; old panel qalinligi taxminan 1 mm bo'lgan alyuminiydan qilingan. Tananing umumiy uzunligi - 104 mm, balandligi (oyoqlari va tugmalari bilan) - 77 mm, qalinligi - 25 mm. Barcha teshiklari bo'lgan ishning tartibi bosilgan elektron plata bilan bitta faylda. Yon, yuqori va pastki devorlar M3 vint uchun guruch tokchalar yordamida bir-biriga ulanadi:

Tabiiyki, vint qismi ilgari raflardan chiqarilgan. Yig'ish natijasining turli bosqichlari quyida keltirilgan (oxirgi fotosurat yakuniy yig'ilishdan keyin olingan, shuning uchun bo'yoq izlari aniq ko'rinadi):

Tugmalari bo'lgan taxta yuqori panelga ikkita tokchada (bunday raftning bir tomonida - silliq sirt, ikkinchisida - M3 vint) yong'oqlar yordamida biriktirilgan, buning uchun taxtada teshiklar mavjud. Raflarning balandligi tugmachalarning balandligini qoplaydi, shuning uchun ikkinchisi korpusdan biroz yuqoriga ko'tariladi:

Old panelning old tomoni nozik taneli zımpara bilan, keyin GOI pastasi bilan ishlangan. Orqa tomoni, aksincha, epoksi qatroni yordamida 5 mm yog'och bloklar orqali yon devorlarga mahkamlash uchun qo'pol zımpara bilan ishlov beriladi. Orqa devorda quvvat manbai uchun mikro-USB ulagichi, shuningdek, potentsial dinamik uchun teshik mavjud; Qopqoq yuqorida aytib o'tilgan guruch olti burchakli to'rtta M3 x 15 mm vintlar bilan biriktirilgan.

Oxirgi va orqa devor avtomobil buzadigan amallar bo'yog'i bilan bo'yalgan.

Pastki panelda oyoqlarni ulash uchun teshiklar mavjud, ammo keyin superglue bilan mahkamlangan kauchuk oyoqlardan foydalanishga qaror qilindi.

Yig'ilgan korpus juda kuchli bo'lib chiqdi, takroriy tasodifiy tushishlar strukturaning yaxlitligini buzmadi. Asosiy taxta qalay va guruch ustunlari yordamida korpus devorlariga biriktirilgan. Ushbu qaror batareya va dasturlash ulagichiga orqa qopqoqni olib tashlash orqali kirish mumkinligi sababli qabul qilindi; ya'ni to'lovni olib qo'yish mantiqiy emas.

Ishlayotgan qurilmaning fotosurati quyida ko'rsatilgan:

To'g'ri yig'ilgan qurilma sozlashni talab qilmaydi va darhol ishlay boshlaydi. Vaqtni belgilash quyidagicha amalga oshiriladi:

  • taxminan 2,5 soniya davomida siz "0" SEC / SET tugmasini (soniyalar ustida joylashgan) bosib turishingiz kerak. Shundan so'ng, soniya hisoblagichi nolga qaytadi, soat ishlashni to'xtatadi;
  • keyin vaqtni sozlash tugmalaridan foydalanib, kerakli vaqtni belgilashingiz kerak;
  • keyin 2,5 soniya davomida "0" SEC tugmasini bosing; soat yangilangan vaqt bilan qayta boshlanadi.

Yig'ilgan qurilma do'stiga muvaffaqiyatli topshirildi va bir yildan ortiq vaqt davomida xizmat qilmoqda, ish yoki nosozliklar haqida hech qanday izohlar aniqlanmagan.

Xulosa qilib, men quyidagi muammoni tasvirlab bermoqchiman (tajribali radio havaskorlar uchun). Kvarsni tomosha qilish har doim ham sifatli emas. Sizning kvartsingizning chastotasi e'lon qilinganidan bir necha gertsga farq qilishi mumkin. Bunday og'ishning natijasi yomon aniqlikdir: masalan, "mos yozuvlar" chastotasidan 2 gertsga og'ish kuniga 5,27 soniya yoki oyiga ikki yarim daqiqa kechikishga olib keladi.
Soat kvartsining chastotasi bir nechta pikofaradli kondansatkichni ketma-ket yoki kvarts bilan parallel joylashtirish orqali sozlanishi mumkin. Shunday qilib, muallif chastotalar farqini 0,1 Gts gacha kamaytirishga muvaffaq bo'ldi, bu esa ancha kichikroq xatoga olib keladi - oyiga 7 soniya.

Savollar, tanqidlar, istaklar va takliflar sharhlarda eshitishdan xursand bo'ladi.

P.S. Mikrodastur va manba kodi, FUSE-bit konfiguratsiyasi va loyihaga ega fayllar arxivda.

Radio elementlari ro'yxati

Belgilanish Turi Denominatsiya Miqdori EslatmaDo'konMening bloknotim
U1 MK AVR 8-bit

ATmega8A-AU

1 TQFP-32 Bloknot uchun
U2 Haqiqiy vaqt soati (RTC)

DS1307

1 SO-8 Bloknot uchun
1-Q6 bipolyar tranzistor

BC817

6 Bloknot uchun
D1-D20 LED 20 Bloknot uchun
R1-R6, R11-R13 Rezistor

4,7 kOm

6 Bloknot uchun
R7-R10 Rezistor

150 ohm

4