Cuprins:

Ceas digital Arduino sincronizat de linia de alimentare 60Hz: 8 pași (cu imagini)
Ceas digital Arduino sincronizat de linia de alimentare 60Hz: 8 pași (cu imagini)

Video: Ceas digital Arduino sincronizat de linia de alimentare 60Hz: 8 pași (cu imagini)

Video: Ceas digital Arduino sincronizat de linia de alimentare 60Hz: 8 pași (cu imagini)
Video: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Noiembrie
Anonim
Ceas digital Arduino sincronizat de linia de alimentare 60Hz
Ceas digital Arduino sincronizat de linia de alimentare 60Hz

Acest ceas digital bazat pe Arduino este sincronizat de linia de alimentare de 60Hz. Are un afișaj anodic comun cu 4 cifre pe 7 segmente, simplu și ieftin, care arată ore și minute. Folosește un detector încrucișat pentru a detecta când unda sinusoidală de 60Hz care trece peste punctul de tensiune zero și derivă o undă pătrată de 60 Hz.

Pe perioade scurte de timp, frecvența undei sinusoidale de intrare de la linia electrică poate varia foarte ușor din cauza încărcării, dar pe perioade lungi de timp, aceasta ajunge la o medie de 60Hz foarte precisă. Putem profita de acest lucru pentru a obține o sursă de sincronizare pentru a ne sincroniza ceasul.

Pasul 1: Diagrama circuitului

Diagrama circuitului
Diagrama circuitului

Există două versiuni ale circuitului, în funcție de faptul dacă doriți să utilizați un transformator cu o priză centrală sau unul fără, în ambele cazuri funcționarea circuitului este aproape identică. Pentru această construcție am folosit un adaptor de perete (fără robinet central) care produce 12V c.a. Voi folosi acest design (Diagrama circuitului Digital Clock1) pentru descrierea circuitului. Rețineți că este important să utilizați un adaptor de perete care să scoată 12V AC nu 12V DC, astfel încât să putem atinge unda sinusoidală AC pentru sincronizare. Ați putea folosi, de asemenea, un transformator care produce ieșiri de 9V c.a., scoateți R19 și faceți ca acesta să funcționeze, dar 12V este foarte frecvent disponibil. Acesta este modul în care funcționează circuitul:

120V AC la 60Hz este transformat în 12V AC de transformatorul TR1. Aceasta este alimentată la dioda D4 și rectificată astfel încât să se alimenteze numai tensiunea + ve și să fie netezită la aproximativ DC cu ondulație, de către condensatorul C3. Tensiunea de pe C3 este alimentată la regulatorul de tensiune 7805 (U6) prin rezistorul R19. R19 este folosit pentru a reduce tensiunea pe C3 care în cazul meu a fost măsurată la aproximativ 15VDC. Acest lucru poate fi reglementat de 7805, dar cu acest nivel de intrare, 7805 trebuie să scadă aproximativ 10VDC și, prin urmare, devine destul de fierbinte. Folosind R19 pentru a scădea tensiunea la aproximativ 10VDC, împiedicăm U6 să se încălzească prea mult. Deci, aceasta nu este o tehnică eficientă de conversie a puterii, dar funcționează în scopurile noastre. NOTĂ: utilizați cel puțin un rezistor de 1 / 2W sau mai mult aici. Circuitul atrage aproximativ 55 ma, deci disiparea puterii în R19 este de aproximativ 1 / 3W pe baza P = I ** 2 * R sau P = 55ma x 55ma x 120 ohmi = 0,363W. Următorul U6 produce 5V DC pur cu C4 și C5 la ieșire pentru a filtra orice zgomot de pe linia de alimentare de 5V. Acest DC de 5V alimentează toate CI-urile de pe placă.

De la TR1 luăm, de asemenea, un eșantion de semnal de curent alternativ nefiltrat și îl alimentăm în potențiometrul RV1, care este utilizat pentru a regla nivelul alimentat la detectorul încrucișat. R18 și R17 formează un divizor de tensiune pentru a reduce și mai mult nivelul de tensiune de curent alternativ. alimentat de 5VDC. R15 și R16 asigură limitarea curentului în timp ce D1 și D2 sunt destinate pentru a preveni supraîncărcarea op-amp U5. În configurația prezentată, ieșirea U5 pe pinul 1 va alterna între + 5V și 0V de fiecare dată când unda sinusoidală de intrare se schimbă de la pozitiv la negativ. Aceasta generează o undă pătrată de 60 Hz care este alimentată către microcontrolerul U4. Programul încărcat pe U4 folosește apoi această undă pătrată de 60Hz pentru a crește ceasul în fiecare minut și oră. Modul în care se face acest lucru va fi discutat în secțiunea despre programul software și în comentariile despre software.

U7 se utilizează registrul de schimbare 74HC595 deoarece avem un număr limitat de pini digitali pe microprocesor, deci este folosit pentru a extinde numărul de ieșiri. Folosim 4 pini digitali pe microprocesor, dar putem controla 7 segmente de pe afișaj prin intermediul 74HC595. Acest lucru se realizează prin deplasarea modelelor predeterminate de biți, stocate în microcontroler și care reprezintă fiecare cifră care trebuie afișată, în registrul de deplasare.

Afișajul utilizat aici este un anod obișnuit, deci trebuie să inversăm nivelurile de semnal care ies din 74HC595 pentru a activa un segment. Când un segment ar trebui să fie pornit, semnalul care iese din pinul de ieșire 74HC595 va fi la + 5V, dar avem nevoie ca pinul pe care îl alimentează pe afișaj să fie la 0V pentru a porni acel segment de afișare. Deci, pentru a face acest lucru, avem nevoie de invertoare hexagonale U2 și U3. Din păcate, un invertor IC poate gestiona doar 6 inversiuni, deci avem nevoie de două, chiar dacă la a doua folosim doar una dintre cele 6 porți. Din păcate, risipitor. S-ar putea să vă întrebați de ce să nu folosiți un afișaj comun de tip catod aici și să eliminați U2 și U3? Ei bine, răspunsul este că poți, mi se întâmplă să am un tip de anod comun în furnizarea de piese. Dacă aveți sau doriți să utilizați un afișaj de tip catod comun, eliminați U2 și U3 și reconectați Q1 - Q4, astfel încât colectorii tranzistorilor să fie conectați la pinii afișajului și emițătorii tranzistorului să fie conectați la masă. Q1 - Q4 controlează care dintre cele patru afișaje cu 7 segmente este activ. Aceasta este controlată de microcontroler, prin intermediul pinilor conectați la baza tranzistoarelor Q1 - Q4.

Butoanele de creștere și setare vor fi utilizate pentru a seta manual ora corectă a ceasului atunci când vine vorba de utilizarea efectivă a ceasului. Când butonul Set este apăsat o dată butonul Increment poate fi folosit pentru a parcurge orele afișate pe afișaj. Când butonul Set este apăsat din nou, butonul de incrementare poate fi folosit pentru a parcurge minutele afișate pe afișaj. Când butonul Set este apăsat pentru a treia oară, ora este setată. R13 și R14 trageți pinii microcontrolerului asociați cu aceste butoane jos când nu sunt folosiți.

Rețineți că aici am luat U4 (Atmega328p) de pe placa prototip tipică Arduino UNO și l-am pus pe placa prototip cu restul circuitului nostru. Pentru a face acest lucru, trebuie să oferim cel puțin cristalul X1 și condensatoarele C1 și C2 pentru a furniza o sursă de ceas pentru microcontroler, pinul de legare 1, pinul de resetare, mare și furnizarea puterii de 5VDC.

Pasul 2: Breadboard-ul dvs. Circuitul

Breadboard Circuitul tău
Breadboard Circuitul tău
Breadboard Circuitul tău
Breadboard Circuitul tău

Indiferent dacă construiți circuitul exact așa cum se arată în schema de circuite sau poate folosiți un transformator, un tip de afișaj sau alte componente ușor diferite, ar trebui să analizați circuitul mai întâi pentru a vă asigura că funcționează și că înțelegeți cum funcționează.

În imagini puteți vedea că, pentru a face panou, totul a necesitat câteva plăci, precum și o placă Arduino Uno. Deci, pentru a programa microcontrolerul sau a experimenta sau a face modificări software-ului, inițial veți avea nevoie de IC-ul microcontrolerului pe o placă UNO, astfel încât să puteți conecta un cablu USB la acesta și computerul dvs. pentru a încărca programul sau a face modificări de software.

Odată ce ceasul funcționează pe panou și aveți programat microcontrolerul, îl puteți deconecta și conecta la priză la ceasul permanent de construcție final de pe placa prototip. Asigurați-vă că urmați precauțiile anti-statice atunci când faceți acest lucru. Utilizați o curea antistatică pentru încheietura mâinii în timp ce manipulați microprocesorul.

Pasul 3: Construcția circuitului pe Protoboard

Construcția circuitului pe Protoboard
Construcția circuitului pe Protoboard
Construcția circuitului pe Protoboard
Construcția circuitului pe Protoboard

Circuitul este construit pe o bucată de placă prototip și cablat punct la punct folosind sârmă de înfășurare de sârmă # 30 AWG. Oferă un rezultat dur și fiabil. Deoarece transformatorul pe care îl am are o mufă de 5 mm tată la capătul cablului, am montat conectorul feminin corespunzător pe partea din spate a plăcii tăind, îndoind și găurind o bucată de bandă de aluminiu lată de 1/2 pentru a face o personalizare suport și apoi fixați-l la bord cu mici 4-40 de piulițe și șuruburi. Puteți doar să tăiați conectorul și să lipiți cablurile de alimentare rămase pe placa și să vă economisiți aproximativ 20 de minute de lucru, dar nu am vrut ca transformatorul să fie atașat permanent la bord.

Pasul 4: Crearea unui soclu pentru afișaj și oferirea de picioare

Crearea unui soclu pentru afișare și oferirea de picioare
Crearea unui soclu pentru afișare și oferirea de picioare
Crearea unui soclu pentru afișare și oferirea de picioare
Crearea unui soclu pentru afișare și oferirea de picioare
Crearea unui soclu pentru afișare și oferirea de picioare
Crearea unui soclu pentru afișare și oferirea de picioare

Deoarece afișajul are 16 pini, câte 8 una pe fiecare parte, cu o distanță de pin care este mai largă decât o priză IC standard cu 16 pini, trebuie să ajustăm dimensiunea prizei pentru a se potrivi cu afișajul. Puteți face acest lucru folosind pur și simplu o pereche de freze de sârmă pentru a tăia plasticul care leagă cele două părți ale soclului, separați-le și lipiți-le separat pe tablă, cu o distanță care se potrivește cu distanța pinilor de pe afișaj. Este avantajos să faceți acest lucru, astfel încât să nu trebuie să lipiți direct pe pinii afișajului și să expuneți afișajul la căldură excesivă. Puteți vedea soclul pe care l-am făcut în partea de sus a tabloului din imaginea de mai sus.

Pentru a face afișajul să se ridice în dreapta, am înșurubat două șuruburi de 1 la cele două găuri de colț de jos ale plăcii prototip, așa cum se arată în fotografii, pentru a crea un suport simplu. vrei să pui ceva greu pe spatele șuruburilor pentru a-l stabiliza.

Pasul 5: Verificarea cablajului plăcii de circuit și pregătirea calibrării

Verificarea cablajului plăcii de circuit și pregătirea calibrării
Verificarea cablajului plăcii de circuit și pregătirea calibrării

Odată ce placa de circuit este conectată, dar înainte de a conecta IC-urile sau afișajul sau de a o alimenta, este o idee bună să verificați conexiunile plăcii cu un DVM. Puteți seta majoritatea DVM-urilor astfel încât să emită un semnal sonor atunci când există continuitate. Setați DVM-ul în acest mod și apoi urmând schema de circuit, verificați cât mai multe conexiuni de circuit posibil. Verificați dacă există un circuit deschis sau aproape de acesta, între + 5V și punctele de masă. Verificați vizual dacă toate componentele sunt conectate la pinii corecți.

Apoi conectați transformatorul la circuit și porniți-l. Verificați dacă aveți exact 5V DC pe șina de alimentare de 5V cu un obiectiv sau DVM înainte de a conecta orice IC sau afișajul.

Următorul conectați DOAR Op-Amp U5 IC în pregătirea pentru pasul următor. Aici vom verifica dacă circuitul nostru încrucișat generează o undă pătrată și reglăm potențiometrul RV1 pentru un semnal curat de 60 Hz.

Pasul 6: Calibrarea circuitului

Calibrarea circuitului
Calibrarea circuitului
Calibrarea circuitului
Calibrarea circuitului

Singura calibrare care trebuie făcută este să reglați potențiometrul RV1 pentru nivelul corect de semnal care alimentează detectorul încrucișat. Există două moduri de a face acest lucru:

1. Puneți o sondă de lunetă pe pinul 1 al U5 și asigurați-vă că conectați firul de masă al sondei de lunetă la masa circuitului. Apoi reglați RV1 până când aveți o undă pătrată curată, așa cum se arată în imaginea de mai sus. Dacă reglați RV1 prea mult într-un sens sau altul, fie nu veți avea undă pătrată, fie o undă pătrată distorsionată. Asigurați-vă că frecvența undei pătrate este de 60 Hz. Dacă aveți un domeniu modern, vă va spune probabil frecvența. Dacă aveți un scop străvechi ca mine, asigurați-vă că perioada de undă pătrată este de aproximativ 16,66 ms sau 1/60 secunde.

2. Folosind un contor de frecvență sau DVM în modul Frecvență măsurați frecvența la Pinul 1 al U5 și reglați RV1 pentru exact 60 Hz.

Odată ce această calibrare este terminată, opriți circuitul și conectați toate IC-urile și afișajul pentru a finaliza construcția circuitului.

Pasul 7: Programul Arduino

Programul este complet comentat, astfel încât să puteți afla detaliile fiecărui pas. Datorită complexității programului, este dificil de descris fiecare pas, dar la un nivel foarte ridicat, așa funcționează:

Microprocesorul primește unda pătrată de 60 Hz și numără 60 de cicluri și mărește numărul de secunde după fiecare 60 de cicluri. Odată ce numărul de secunde atinge 60 de secunde sau 3600 de cicluri, numărul de minute este incrementat, iar numărul de secunde este resetat la zero. Odată ce numărul de minute ajunge la 60 de minute, numărul de ore este incrementat, iar numărul de minute este resetat la zero. numărul de ore este resetat la 1 după 13 ore, deci acesta este un ceas de 12 ore. Dacă doriți un ceas de 24 de ore, schimbați programul pentru a reseta orele la zero după 24 de ore.

Acesta este un proiect experimental, așa că am încercat să folosesc o buclă Do-While pentru a suprima sărutul comutatorului de pe butoanele Set și Increment. Funcționează destul de bine. Când butonul Set este apăsat o dată, butonul Increment poate fi folosit pentru a parcurge orele afișate pe afișaj. Când butonul Set este apăsat din nou, butonul de incrementare poate fi folosit pentru a parcurge minutele afișate pe afișaj. Când butonul Set este apăsat pentru a treia oară, ora este setată și ceasul începe să ruleze.

Modelele de 0 și 1 care sunt utilizate pentru a afișa fiecare număr pe afișajele cu 7 segmente sunt stocate în matricea numită Seven_Seg. În funcție de ora curentă a ceasului, aceste modele sunt alimentate către IC-ul 74HC595 și trimise pe afișaj. Care dintre cele 4 cifre ale afișajului este pornită în orice moment pentru a primi aceste date este controlată de microprocesor prin intermediul afișajului Dig 1, 2, 3, 4 pini. Când circuitul este pornit, programul execută mai întâi o rutină de testare numită Test_Clock care trimite cifrele corecte pentru a aprinde fiecare afișaj cu un număr de la 0 la 9. Deci, dacă vedeți acest lucru la pornire, știți că ați construit totul corect.

Pasul 8: Lista pieselor

1 - Transformator 120VAC până la 12VAC aproximativ 100ma sau mai mult 1 - Placă prototip aproximativ 3,5 "x 3,5" 1 - 4 cifre Afișaj pe 7 segmente YSD-439K2B-35 sau echivalent (Sparkfun) 2 - Butoane mici montate pe PCB NU (oricare) 4 - 2N3904 Tranzistori NPN 8 - 330 ohmi rezistențe 2 - 74LS04 Invertoare hexagonale 1 - 74HC595 serial la paralel 8 biți registru 1 - LM358 OP-AMP (Comparator) 1 - ATMEGA328P Microcontroler (Creatron) 4 - 4.7K rezistențe 7 - 10K rezistențe 1 - 1N4007 sau 1N44148 diodă2 diode1 - 120 ohm, rezistor 1 / 2W sau 1W1 - Potențiometru 10K montat pe PCB1 - 470uF 25V condensator1 - 7805 TO220 pachet regulator de tensiune1 - 10uF 10V condensator2 - 0,1 uF 10V condensatori1 - 16MHz cristal (Sparkfun) 2 - 22pF condensatori1 - Mufă de alimentare feminină (Opțional pentru a se potrivi mufă tată, dacă există pe transformatorul dvs. de perete) prize cu 2 - 16 pini IC 2 - prize cu 14 pini IC1 - prize cu 8 pini IC 1 - prize cu 28 pini IC2 - 1 "lungime aproximativ # 4 sau # 6 șuruburi și piulițe potrivite 2 - 1 / 4 "șuruburi lungi de 4" 40 și piulițe potrivite1 - bucată de bandă de aluminiu lată de 1/2 "lată tăiată la comandă și forat la dimensiune

# 30 AWG sârmă de înfășurat sârmă # 22 AWG sârmă Solder

Recomandat: