Mündəricat:
- Addım 1: Dövrə Diaqramı
- Addım 2: Dövrənizi Breadboard
- Addım 3: Protoboardda Dövrə Tikintisi
- Addım 4: Ekran üçün bir yuva yaratmaq və ayaqları vermək
- Addım 5: Dövrə lövhəsinin naqillərini yoxlayın və kalibr etməyə hazırlaşın
- Addım 6: Dövrə Kalibrlənməsi
- Addım 7: Arduino Proqramı
- Addım 8: Parça siyahısı
Video: Arduino Rəqəmsal Saat 60 Hz Elektrik Xətti ilə Sinxronlaşdırılır: 8 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu Arduino əsaslı rəqəmsal saat 60Hz elektrik xətti ilə sinxronlaşdırılır. Saatı və dəqiqələri göstərən 4 rəqəmli 7 seqmentli sadə və ucuz bir ümumi anod var. Daxil olan 60Hz sinus dalğasının sıfır gərginlik nöqtəsini keçdiyini və 60 Hz kvadrat dalğa əldə etdiyini təyin etmək üçün çarpaz detektordan istifadə edir.
Qısa müddət ərzində elektrik xəttindən gələn sinus dalğasının tezliyi yükə görə çox az dəyişə bilər, lakin uzun müddət ərzində çox dəqiq olaraq 60 Hz -ə çatır. Saatımızın sinxronizasiyası üçün vaxt mənbəyi əldə etmək üçün bundan istifadə edə bilərik.
Addım 1: Dövrə Diaqramı
Transformatoru mərkəzi kranlı və ya olmadan istifadə etmək istəməyinizə bağlı olaraq dövrənin iki versiyası var, hər iki halda da dövrə əməliyyatı demək olar ki, eynidir. Bu quruluş üçün 12V AC çıxarılan bir divar adapterindən istifadə etdim (mərkəzi tap yoxdur). Dövr təsviri üçün bu dizaynı (Digital Clock1 Circuit Diagram) istifadə edəcəyəm. Vaxt təyin etmək üçün AC sinüs dalğasına daxil ola biləcəyimiz üçün 12V AC deyil, 12V DC çıxarılan bir divar adapterindən istifadə etmək vacibdir. Çox güman ki, 9V AC çıxarılan, R19 -ı çıxarıb işə sala bilən bir transformatordan da istifadə edə bilərsiniz, amma 12V çox yayılmışdır. Dövrə belə işləyir:
60Hz -də 120V AC, TR1 transformatoru ilə 12V AC -ə çevrilir. Bu, D4 dioduna verilir və düzəldilir ki, yalnız +ve gərginliyi C3 kondansatörü ilə dalğalanma ilə təxminən DC -yə verilir və düzəldilir. C3 üzərindəki gərginlik R19 rezistoru vasitəsilə 7805 gərginlik tənzimləyicisinə (U6) verilir. R19, mənim vəziyyətimdə təxminən 15VDC -də ölçülmüş C3 -dəki gərginliyi azaltmaq üçün istifadə olunur. Bu 7805 ilə tənzimlənə bilər, lakin bu giriş səviyyəsi ilə 7805 təxminən 10VDC düşməlidir və nəticədə olduqca istiləşir. Gərginliyi təxminən 10VDC -ə endirmək üçün R19 istifadə edərək, U6 -nın çox istiləşməsinin qarşısını alırıq. Beləliklə, bu səmərəli bir güc çevirmə texnikası deyil, ancaq məqsədlərimiz üçün işləyir. QEYD: burada ən azı 1/2W və ya daha çox müqavimət istifadə edin. Dövrə təxminən 55 ma çəkir, buna görə R19 -da güc itkisi P = I ** 2*R və ya P = 55ma x 55ma x 120 ohms = 0.363W əsasında təxminən 1/3 W təşkil edir. Sonrakı U6, 5V elektrik xəttindəki hər hansı bir səs -küyü silmək üçün C4 və C5 ilə təmiz 5V DC çıxarır. Bu 5V DC lövhədəki bütün IC -lərə güc verir.
TR1 -dən süzgəcdən keçirilməyən AC siqnalının nümunəsini götürürük və detektor üzərindən keçmə səviyyəsini tənzimləmək üçün istifadə olunan potensialiometr RV1 -ə ötürürük. R18 və R17, daxil olan AC gərginliyinin səviyyəsini daha da azaltmaq üçün bir gərginlik bölücü təşkil edir. Bunun 12V AC -də gəldiyini unutmayın və 5 V -dan aşağı endirməliyik ki, bu, yalnız keçid detektorumuzla işləyəcək. 5VDC ilə təchiz edilmişdir. R15 və R16 cari məhdudiyyət təmin edir, D1 və D2 isə op-amp U5-in həddindən artıq yüklənməsinin qarşısını almaq məqsədi daşıyır. Göstərilən konfiqurasiyada U5 -in 1 -ci pindəki çıxışı, gələn sinus dalğası hər dəfə pozitivdən neqativə dəyişəndə +5V ilə 0V arasında dəyişəcək. Bu, U4 mikrokontrolörünə verilən 60 Hz kvadrat dalğası yaradır. U4 -də yüklənmiş proqram daha sonra saatı hər dəqiqə və saatda artırmaq üçün bu 60Hz kvadrat dalğasını istifadə edir. Bunun necə edildiyi proqram proqramı bölməsində və proqram şərhlərində müzakirə olunacaq.
U7 74HC595 keçid reyestrindən istifadə olunur, çünki mikroprosessorda məhdud sayda rəqəmsal pin var, buna görə də çıxış sayını genişləndirmək üçün istifadə olunur. Mikroprosessorda 4 rəqəmsal pin istifadə edirik, lakin 74HC595 vasitəsilə ekrandakı 7 seqmenti idarə edə bilərik. Bu, mikrokontrolördə saxlanılan və göstəriləcək hər bir rəqəmi təmsil edən əvvəlcədən təyin edilmiş bit nümunələrini keçid reyestrinə köçürməklə həyata keçirilir.
Burada istifadə edilən ekran ümumi bir anoddur, buna görə bir seqmenti açmaq üçün 74HC595 -dən gələn siqnal səviyyələrini ters çevirməliyik. Bir seqment açıldıqda 74HC595 çıxış pinindən gələn siqnal +5V -də olacaq, ancaq bu ekran seqmentini açmaq üçün ekranda bəslədiyi pin 0V -də olmalıdır. Bunu etmək üçün U2 və U3 hex çeviricilərinə ehtiyacımız var. Təəssüf ki, bir inverter IC yalnız 6 inversiyanı idarə edə bilər, buna görə ikincisində yalnız 6 qapıdan birini istifadə etsək də, ikisinə ehtiyacımız var. Təəssüf ki, israfçılıq. Niyə burada ümumi bir katot tipli ekrandan istifadə etməyinizi və U2 və U3 -ü ləğv etməyinizi soruşa bilərsiniz? Yaxşı cavab verə bilərsən, hissələrimdə ümumi bir anod tipim var. Ümumi bir katod tipli bir ekrana sahibsinizsə və ya istifadə etmək istəyirsinizsə, U2 və U3 -ü aradan qaldırın və Q1 - Q4 -ü yenidən bağlayın ki, tranzistor kollektorları ekran sancaqlarına, tranzistor yayıcıları isə yerə qoşulsun. Q1 - Q4 dörd 7 seqmentli ekranın hansının aktiv olduğunu idarə edir. Bu, Q1 - Q4 tranzistorlarının bazasına bağlı pinlər vasitəsilə mikrokontrolör tərəfindən idarə olunur.
Artırma və təyin düymələri, əslində saatı istifadə edərkən, doğru saat vaxtını əl ilə təyin etmək üçün istifadə ediləcək. Ayarla düyməsinə bir dəfə basıldıqda Artırma düyməsi ekranda göstərilən saatları keçmək üçün istifadə edilə bilər. Set düyməsinə yenidən basıldıqda, artım düyməsi ekranda göstərilən dəqiqələri keçmək üçün istifadə edilə bilər. Set düyməsinə üçüncü dəfə basıldıqda, vaxt təyin olunur. R13 və R14 istifadə edilmədikdə bu düymələrlə əlaqəli mikrokontrolör pinlərini aşağı çəkir.
Diqqət yetirin ki, burada U4 (Atmega328p) tipik Arduino UNO prototip lövhəsindən çıxarıb dövrəmizin qalan hissəsi ilə birlikdə prototip lövhəsinə qoyduq. Bunu etmək üçün minimum olaraq kristal X1 və C1 və C2 kondansatörlərini mikrokontrolör üçün bir saat mənbəyi, bağlama pimi 1, sıfırlama pinini yüksək və 5VDC gücü ilə təmin etməliyik.
Addım 2: Dövrənizi Breadboard
Dövrü tam olaraq sxem diaqramında göstərildiyi kimi qurmağınızdan və ya bir az fərqli bir transformator, ekran növü və ya digər komponentlərdən istifadə etməyinizdən asılı olmayaraq, işlədiyini və necə işlədiyini anladığınızdan əmin olmaq üçün əvvəlcə dövrə taxmalısınız.
Şəkillərdə çörək taxmaq üçün bir neçə lövhə və Arduino Uno lövhəsi lazım olduğunu görə bilərsiniz. Mikro nəzarətçini proqramlaşdırmaq və ya sınaqdan keçirmək və ya proqramda dəyişiklik etmək üçün əvvəlcə UNO lövhəsində mikrokontrolör IC -yə ehtiyacınız olacaq, beləliklə proqramı yükləmək və ya proqram dəyişiklikləri etmək üçün USB kabelini kompüterinizə bağlaya bilərsiniz.
Saatı çörək taxtasında işlədikdən və mikrokontrolörünüzü proqramlaşdırdıqdan sonra onu çıxarıb prototip lövhəsindəki son tikiş daimi saatınızdakı yuvaya qoşa bilərsiniz. Bunu edərkən antistatik tədbirlərə əməl etməyinizə əmin olun. Mikroprosessorla işləyərkən antistatik bilək kəmərindən istifadə edin.
Addım 3: Protoboardda Dövrə Tikintisi
Dövrə, #30 AWG tel sarma teli istifadə edərək bir prototip lövhəsi üzərində qurulmuşdur. Çətin və etibarlı nəticə verir. Sahib olduğum transformatorun kabelin ucunda 5 mm -lik kişi fişi olduğu üçün, xüsusi etmək üçün 1/2 düymlük düz alüminium şeridi kəsib, əyərək və qazaraq müvafiq qadın qabını lövhənin arxasına quraşdırdım. kiçik 4-40 qoz-fındıq və bolt ilə lövhəyə bərkidin. Sadəcə bağlayıcını kəsib qalan elektrik naqillərini lövhəyə lehimləyib özünüzü təxminən 20 dəqiqəlik işdən xilas edə bilərsiniz, amma transformatorun daimi olaraq bağlanmasını istəmədim. lövhəyə.
Addım 4: Ekran üçün bir yuva yaratmaq və ayaqları vermək
Ekranın hər tərəfində 8 ədəd 16 pin olduğu üçün standart bir 16 pinli IC yuvasından daha geniş bir pin aralığına sahibik, yuvanın ölçüsünü ekrana uyğunlaşdırmalıyıq. Bunu etmək üçün, rozetkanın hər iki tərəfini birləşdirən plastiği kəsmək, ayırmaq və ekrandakı sancaqlar aralığına uyğun bir boşluq ilə lövhəyə ayrıca lehimləmək üçün bir cüt tel kəsici istifadə edə bilərsiniz. Bunu etmək üçün ekranın pinlərinə birbaşa lehimləməyiniz və ekranı həddindən artıq istiyə məruz qoymamağınız faydalıdır. Bunu etdiyim yuvanı lövhənin yuxarı hissəsində yuxarıdakı şəkildə görə bilərsiniz.
Ekranın ayağa qalxması üçün fotoşəkillərdə göstərildiyi kimi prototip lövhəsinin alt iki künc çuxuruna iki ədəd 1 bolt bağladım. Bu olduqca çılğın idi, buna görə də belə etsəniz sabitləmək üçün boltların arxasına ağır bir şey qoymaq istəyirlər.
Addım 5: Dövrə lövhəsinin naqillərini yoxlayın və kalibr etməyə hazırlaşın
Elektrik lövhəsi bağlandıqdan sonra, IC -ləri bağlamadan və ya ekranı açmadan və ya işə salmadan əvvəl, lövhə əlaqələrini DVM ilə yoxlamaq yaxşı bir fikirdir. DVM -lərin çoxunu elə qura bilərsiniz ki, davamlılıq olduqda səs siqnalı versinlər. DVM -inizi bu rejimə qoyun və sonra sxem sxeminizə uyğun olaraq mümkün qədər çox dövrə bağlantısını yoxlayın. +5V və Topraklama nöqtələri arasında açıq bir dövrə və ya ona yaxın bir yer yoxlayın. Vizual olaraq bütün komponentlərin düzgün pinlərə qoşulduğunu yoxlayın.
Sonra transformatorunuzu dövrə bağlayın və onu yandırın. Hər hansı bir IC və ya ekranı bağlamadan əvvəl ya əhatə dairəsi və ya DVM ilə 5V elektrik rayında tam 5V DC olduğundan əmin olun.
Növbəti addıma hazırlaşmaq üçün YALNIZ Op-Amp U5 IC-ni qoşun. Burada kəsişməmizin bir kvadrat dalğa yaratdığını yoxlayacağıq və potensialiometr RV1 -i təmiz 60 Hz siqnalına uyğunlaşdıracağıq.
Addım 6: Dövrə Kalibrlənməsi
Ediləcək yeganə kalibrləmə, potensialiometr RV1 -ni, detektor üzərindən keçən siqnalın düzgün səviyyəsi üçün tənzimləməkdir. Bunun iki yolu var:
1. U5 -in 1 -ci pininə bir ölçmə zondu qoyun və əhatə zondunun telini dövrə torpağına bağladığınızdan əmin olun. Sonra yuxarıdakı şəkildə göstərildiyi kimi təmiz bir kvadrat dalğasına sahib olana qədər RV1 -i tənzimləyin. RV1 -ni bu və ya digər şəkildə çox uzaqlaşdırsanız ya kvadrat dalğanız olmayacaq, ya da təhrif edilmiş bir kvadrat dalğanız olmayacaq. Kvadrat dalğa tezliyinin 60 Hz olduğundan əmin olun. Müasir bir əhatəniz varsa, ehtimal ki, tezliyi sizə xəbər verəcəkdir. Mənim kimi qədim bir sahəniz varsa, kvadrat dalğa dövrünün təxminən 16.66ms və ya 1/60 saniyə olmasını təmin edin.
2. Frekans rejimində bir tezlik sayğacından və ya DVM -dən istifadə edərək U5 -in 1 -ci pinindəki tezliyi ölçün və RV1 -i tam olaraq 60 Hz -ə uyğunlaşdırın.
Bu kalibrləmə edildikdən sonra, dövrə quruluşunu tamamlamaq üçün dövrəni söndürün və bütün IC -ləri və ekranı qoşun.
Addım 7: Arduino Proqramı
Proqram, hər addımın detallarını anlaya bilmək üçün tam şərh edilmişdir. Proqramın mürəkkəbliyi səbəbindən hər addımı təsvir etmək çətindir, amma çox yüksək səviyyədə belə işləyir:
Mikroprosessor daxil olan 60 Hz kvadrat dalğasını alır və 60 dövrəni sayır və hər 60 dövrədən sonra saniyələri artırır. Saniyələrin sayı 60 saniyəyə və ya 3600 dövrə çatdıqda, dəqiqələrin sayı artırılır və saniyələrin sayı sıfırlanır. Dəqiqə sayı 60 dəqiqəyə çatdıqda, saat sayı artırılır və dəqiqə sayı sıfırlanır. saat sayı 13 saatdan sonra 1 -ə qaytarılır, buna görə də bu 12 saatlıq bir saatdır. 24 saatlıq bir saat istəsəniz, proqramı 24 saatdan sonra sıfıra sıfırlayın.
Bu eksperimental bir layihədir, buna görə də Set və Artır düymələrində keçid sıçrayışını basdırmaq üçün Do-while döngəsindən istifadə etməyə çalışdım. Olduqca yaxşı işləyir. Ayarla düyməsinə bir dəfə basıldıqda, Artırma düyməsi ekranda göstərilən saatları keçmək üçün istifadə edilə bilər. Set düyməsinə yenidən basıldıqda, artım düyməsi ekranda göstərilən dəqiqələri keçmək üçün istifadə edilə bilər. Set düyməsinə üçüncü dəfə basıldıqda, vaxt təyin olunur və saat işləməyə başlayır.
7 seqmentli displeylərdə hər bir rəqəmi göstərmək üçün istifadə olunan 0 və 1 nümunələri Seven_Seg adlı massivdə saxlanılır. Mövcud saat vaxtından asılı olaraq, bu nümunələr 74HC595 IC -ə verilir və ekrana göndərilir. Bu məlumatları almaq üçün ekranın 4 rəqəmindən hər hansı biri bir anda açılırsa, Dig 1, 2, 3, 4 sancaqlar vasitəsilə mikroprosessor tərəfindən idarə olunur. Dövrə işə salındıqda, proqram əvvəlcə Test_Clock adlı bir test prosedurunu yerinə yetirir və 0 -dan 9 -a qədər hər ekranı işıqlandırmaq üçün doğru rəqəmləri göndərir..
Addım 8: Parça siyahısı
1 - Transformator 120VAC -dan 12VAC -a qədər təxminən 100ma və ya daha çox 1 - Prototip lövhəsi təxminən 3,5 "x 3,5" 1 - 4 rəqəmli 7 seqmentli ekran YSD -439K2B -35 və ya ona bərabər (Sparkfun) 2 - Kiçik PCB montaj düymələri NO (hər hansı) 4 - 2N3904 NPN transistorları8 - 330 ohm rezistorlar2 - 74LS04 Hex çeviricilər1 - 74HC595 paralel 8 bitlik keçid reyestrinə 1 - LM358 OP -AMP (Müqayisəçi) 1 - ATMEGA328P Mikrokontrolör (Creatron) 4 - 4.7K rezistorlar 7 - 10K rezistorlar1 - 1N4007 və ya 1N4001 və ya 1N4001 diodlar1 - 120 ohm, 1/2 W və ya 1W müqavimət1 - PCB montajı 10K potensiometr1 - 470uF 25V kondansatör1 - 7805 TO220 paket gərginlik tənzimləyicisi1 - 10uF 10V kondansatör2 - 0.1 uF 10V kondansatörler1 - 16MHz kristal (Sparkfun) 2 - 22pF kondansatörler1 - Qadın güc yuvası (Divar transformatorunuzda varsa kişi fişinə uyğun olaraq seçilə bilər) 2 - 16 pinli IC prizləri2 - 14 pinli IC prizləri1 - 8 pinli IC prizləri1 - 28 pinli IC prizləri2 - 1 "uzunluğunda təxminən #4 və ya #6 boltlar və uyğun qozlar2 - 1/ 4 "uzun #4-40 bolt və uyğun qoz -fındıq1 - 1/2 hissəli geniş alüminium zolaqdan hazırlanmış xüsusi kəsilmiş parça və ölçüdə qazılmışdır
#30 AWG tel sarma teli#22 AWG telLehri
Tövsiyə:
Arduino istifadə edərək Led Strip ilə Analog Saat və Rəqəmsal Saat Necə Hazırlanır: 3 Addım
Arduino istifadə edərək Led Strip ilə Analog Saat və Rəqəmsal Saat Necə Hazırlanır: Bu gün biz Analog Clock & Led Strip və Arduino ilə MAX7219 Dot modulu olan rəqəmsal saat yerli vaxt qurşağı ilə saatı düzəldəcək. Analog saat daha uzun bir LED şeridi istifadə edə bilər, buna görə də sənətkar olmaq üçün divara asıla bilər
Rəqəmsal İdarə Edilən Xətti Güc Təchizatı: 6 Addım (Şəkillərlə birlikdə)
Rəqəmsal İdarə Edilən Xətti Güc Təchizatı: Mənim təxminən on iki il əvvəl ikili xətti enerji təchizatı yaratdım. Şematik diaqramı Hollandiyada 'Elektor' adlanan bir jurnaldan aldım. Bu enerji təchizatı gərginlik tənzimlənməsi üçün bir potansiyometrdən istifadə edirdi
4 vuruşlu rəqəmsal saat: 4 addım (şəkillərlə birlikdə)
4 vuruşlu rəqəmsal saat: " 4 vuruşlu rəqəmsal saat " Arduino tərəfindən idarə olunan rəqəmsal saatda daxili yanma mühərrikinin əyləncəli bir emulyatorudur. Saat və dəqiqə rəqəmləri hərəkət edən pistonları və dəqiq bir RPM idarəetməsini (100 ilə 800 arasında) təmsil edir. RPM iki ilə göstərilir
Morphing Rəqəmsal Saat: 14 Addım (Şəkillərlə birlikdə)
Morphing Digital Clock: Bu layihə haqqında qısa bir video. Arduino və ESP8266 icmasının işi sayəsində bu saat qurmaq çox çətindir! Yalnız iki əsas komponent: Ekran (açıq şəkildə) və WiFi
MechWatch - Xüsusi Rəqəmsal Saat: 9 Addım (Şəkillərlə birlikdə)
MechWatch - Xüsusi Rəqəmsal Saat: MechWatch, Arduinonun rahatlıq baxımından üstünlüklərinə sahib olmaq üçün hazırladığım bir saatdır, amma bacardığım qədər peşəkar şəkildə hazırlanmasını və hiss olunmasını istəyirdim. Bunun üçün bu təlimatlandırıcı kifayət qədər inkişaf etmiş bir səthə montaj elektronikasından istifadə edir (sərgilər yoxdur