Ceas electronic LED. Ceas pe microcontroler AVR cu DS1307

Propun spre repetare circuitul unui ceas electronic simplu cu ceas deşteptător, realizat pe tip PIC16F628A. Un mare avantaj al acestui ceas este indicatorul LED de tip ALS pentru afisarea orei. Personal, m-am săturat de tot felul de LCD-uri și vreau să pot vedea ora de oriunde în cameră, inclusiv în întuneric, și nu doar direct cu o iluminare bună. Circuitul conține un minim de piese și are o repetabilitate excelentă. Ceasul a fost testat timp de o lună, ceea ce și-a arătat fiabilitatea și performanța. Mă gândesc la toate schemele de pe Internet, aceasta este cea mai ușor de asamblat și de rulat.

Schema schematică a unui ceas electronic cu un ceas cu alarmă pe un microcontroler:


După cum se poate vedea din diagrama ceasului, este singurul microcircuit folosit în acest dispozitiv. Un rezonator de cuarț de 4 MHz este folosit pentru a seta frecvența ceasului. Pentru a afișa ora, se folosesc indicatoare roșii cu un anod comun; fiecare indicator este format din două cifre cu puncte zecimale. În cazul utilizării unui emițător piezo, condensatorul C1 - 100 μF poate fi omis.

Puteți utiliza orice indicator cu un anod comun, atâta timp cât fiecare cifră are propriul anod. Pentru a vă asigura că ceasul electronic este clar vizibil în întuneric și de la mare distanță, încercați să alegeți un ALS mai mare.


Afișajul ceasului este dinamic. La un moment dat, este afișată doar o cifră, ceea ce vă permite să reduceți semnificativ consumul de curent. Anozii fiecărei cifre sunt controlați de un microcontroler PIC16F628A. Segmentele tuturor celor patru cifre sunt conectate împreună și, prin intermediul rezistențelor limitatoare de curent R1 ... R8, conectate la bornele portului MK. Deoarece indicatorul se aprinde foarte repede, pâlpâirea numerelor devine inobservabilă.


Butoanele de moment sunt folosite pentru a seta minutele, orele și ceasul cu alarmă. Pinul 10 este folosit ca ieșire pentru semnalul de alarmă, iar o cascadă de tranzistori VT1,2 este folosită ca amplificator. Emițătorul de sunet este un element piezoelectric de tip ZP. Pentru a îmbunătăți volumul, îl puteți înlocui cu un difuzor mic.


Ceasul este alimentat de la o sursă stabilizată de 5V. Poate fi alimentat și cu baterii. Ceasul are 9 moduri de afișare. Comutarea între moduri se realizează folosind butoanele „+” și „-”. Înainte ca citirile în sine să fie afișate, pe indicatori este afișat un scurt indiciu despre numele modului. Durata afișajului indicii este de o secundă.


Folosind butonul „Corectare”, ceasul cu alarmă este comutat în modul setări. În acest caz, este afișat un prompt pe termen scurt timp de o jumătate de secundă, după care valoarea ajustată începe să clipească. Corectarea citirilor se realizează folosind butoanele „+” și „-”. Când apăsați butonul pentru o perioadă lungă de timp, modul de repetare automată este activat la frecvența specificată. Toate valorile, cu excepția orelor, minutelor și secundelor, sunt scrise în EEPROM și restaurate după ciclul de pornire.


Dacă nu este apăsat niciun buton în câteva secunde, ceasul electronic trece în modul de afișare a timpului. Prin apăsarea butonului „Pornit/Oprit” ceasul cu alarmă se pornește sau se oprește, această acțiune este confirmată de un sunet scurt. Când ceasul cu alarmă este pornit, punctul din cifra de ordin inferioară a indicatorului se aprinde. Ma gandeam unde sa pun ceasul in bucatarie si am decis sa il montez direct in aragaz :) Materialul a fost trimis de in_sane.


Discutați articolul CEAS DESTEPTOR ELECTRONIC

Cu afișaj dinamic. Nu există plângeri cu privire la funcționarea ceasului: mișcare precisă, setări convenabile. Dar un mare dezavantaj este că indicatoarele LED sunt greu de văzut în timpul zilei. Pentru a rezolva problema, am trecut la afișaj static și LED-uri mai strălucitoare. Ca întotdeauna în cazul software-ului, multumiri lui Soir. În general, vă aduc în atenție un ceas mare de exterior cu afișaj static; funcțiile de setări rămân aceleași ca la ceasurile anterioare.

Au doua display-uri - cel principal (afara pe strada) si cel auxiliar pe indicatoare - in interior, pe corpul aparatului. Luminozitatea ridicată este obținută prin utilizarea de LED-uri ultra-luminoase, cu un curent de funcționare de 50mA, și cipuri de driver.

Schema de circuit a unui ceas electronic de exterior cu LED-uri strălucitoare

Pentru a flashiza firmware-ul controlerului cu fișiere și utilizați următoarele setări de siguranțe:

Plăci cu circuite imprimate ale ceasului, unitate de control și modul extern, în format LAY, .


Caracteristicile acestui circuit de ceas:

- Format de afișare a timpului de 24 de ore.
- Corecția digitală a preciziei cursei.
- Control încorporat al sursei principale de alimentare.
- Memorie nevolatilă pentru microcontroler.
- Există un termometru care măsoară temperatura în intervalul -55 - 125 de grade.
- Este posibilă afișarea alternativă a informațiilor despre timp și temperatură pe indicator.


Apăsarea butonului SET_TIME mută indicatorul într-un cerc din modul principal de ceas (afișând ora curentă). În toate modurile, ținând apăsat butoanele PLUS/MINUS, se realizează o instalare accelerată. Modificările setărilor la 10 secunde după ultima modificare a valorii vor fi scrise în memoria nevolatilă (EEPROM) și vor fi citite de acolo când alimentarea este repornită.


Un alt mare plus al optiunii propuse este ca luminozitatea s-a schimbat, acum pe vreme insorita luminozitatea este excelenta. Numărul de fire a scăzut de la 14 la 5. Lungimea firului până la afișajul principal (exterior) este de 20 de metri. Sunt mulțumit de performanța ceasului electronic; s-a dovedit a fi un ceas complet funcțional – atât ziua cât și noaptea. Cu stimă, Soir-Alexandrovich.

După cum sugerează și numele, scopul principal al acestui dispozitiv este acela de a afla ora și data curente. Dar are multe alte caracteristici utile. Ideea creării lui a apărut după ce am dat peste un ceas pe jumătate spart cu o carcasă metalică relativ mare (pentru încheietura mâinii). M-am gândit că aș putea introduce acolo un ceas de casă, ale cărui posibilități sunt limitate doar de propria mea imaginație și pricepere. Rezultatul a fost un dispozitiv cu următoarele funcții:

1. Ceas - calendar:

    Numărarea și afișarea orelor, minutelor, secundelor, zilei săptămânii, zilei, lunii, anului.

    Disponibilitatea ajustării automate a orei curente, care se efectuează în fiecare oră (valori maxime +/-9999 unități, 1 unitate = 3,90625 ms.)

    Calcularea zilei săptămânii de la o dată (pentru secolul curent)

    Tranziție automată între ora de vară și cea de iarnă (poate fi dezactivată)

  • Se iau în considerare anii bisecti

2. Două ceasuri cu alarmă independente (se aude o melodie când este declanșată)
3. Temporizator cu trepte de 1 secundă. (Timp maxim de numărare 99h 59m 59s)
4. Cronometru cu două canale cu rezoluție de numărare de 0,01 sec. (timp maxim de numărare 99h 59m 59s)
5. Cronometru cu rezoluție de numărare de 1 secundă. (timp maxim de numărare 99 de zile)
6. Termometru în intervalul de la -5°C. până la 55°C (limitat de intervalul de temperatură de funcționare normală a dispozitivului) în trepte de 0,1°C.
7. Cititor și emulator de chei electronice - tablete de tip DS1990 care utilizează protocolul Dallas 1-Wire (memorie pentru 50 de bucăți, care conține deja mai multe „chei universale”) cu posibilitatea de a vizualiza codul cheii octet cu octet .
8. Telecomandă IR (este implementată doar comanda „Fă o poză”) pentru camerele digitale „Pentax”, „Nikon”, „Canon”
9. Lanterna LED
10. 7 melodii
11. Semnal sonor la începutul fiecărei ore (poate fi oprit)
12. Confirmare sonoră a apăsărilor butoanelor (poate fi dezactivată)
13. Monitorizarea tensiunii bateriei cu functie de calibrare
14. Reglarea luminozității indicatorului digital

Poate o astfel de funcționalitate este redundantă, dar îmi plac lucrurile universale, și plus satisfacția morală că acest ceas va fi făcut cu mâinile mele.

Schema schematică a ceasului

Dispozitivul este construit pe microcontrolerul ATmega168PA-AU. Ceasul bifează în funcție de cronometrul T2, funcționând în modul asincron de la un ceas cuarț la 32768 Hz. Microcontrolerul este aproape tot timpul în modul de repaus (indicatorul este stins), trezindu-se o dată pe secundă pentru a adăuga chiar această secundă la ora curentă și adoarme din nou. În modul activ, MK este tactat de la oscilatorul RC intern la 8 MHz, dar prescalerul intern îl împarte la 2, ca urmare, nucleul este tactat la 4 MHz. Pentru indicare, sunt utilizate patru indicatoare digitale LED cu o singură cifră, cu șapte segmente, cu un anod comun și un punct zecimal. Există, de asemenea, 7 LED-uri de stare, al căror scop este următorul:
D1- Semnul valorii negative (minus)
D2- Semnul unui cronometru care rulează (intermitent)
D3- Semnul primei alarme care este activată
D4- Semnul pornirii celei de-a doua alarme
D5- Semn de semnal sonor la începutul fiecărei ore
D6- Semnul unui cronometru care rulează (intermitent)
D7- Indicator de tensiune scăzută a bateriei

R1-R8 - rezistențe limitatoare de curent ale segmentelor indicatoarelor digitale HG1-HG4 și LED-uri D1-D7. R12,R13 – divizor pentru monitorizarea tensiunii bateriei. Deoarece tensiunea de alimentare a ceasului este de 3V, iar LED-ul alb D9 necesită aproximativ 3,4-3,8V la consumul de curent nominal, acesta nu strălucește la putere maximă (dar este suficient pentru a evita poticnirea în întuneric) și, prin urmare, este conectat fără curent -rezistor limitator. Elementele R14, Q1, R10 sunt concepute pentru a controla LED-ul infraroșu D8 (implementarea telecomenzii pentru camere digitale). R19, ​​​​R20, R21 sunt utilizate pentru împerechere atunci când comunicați cu dispozitive care au o interfață cu 1 fir. Controlul se realizează prin trei butoane, pe care le-am numit convențional: MOD (mod), SUS (sus), JOS (jos). Primul dintre ele este, de asemenea, conceput pentru a trezi MK printr-o întrerupere externă (în acest caz, indicația se aprinde), deci este conectat separat la intrarea PD3. Apăsarea butoanelor rămase este determinată folosind un ADC și rezistențe R16, R18. Dacă butoanele nu sunt apăsate în 16 secunde, MK intră în stare de repaus și indicatorul se stinge. Când este în modul „Comandă de la distanță pentru camere” acest interval este de 32 de secunde, iar cu lanterna aprinsă - 1 minut. De asemenea, MK poate fi oprit manual folosind butoanele de control. Când cronometrul funcționează cu o rezoluție de numărare de 0,01 sec. Dispozitivul nu intră în modul de repaus.

Placă de circuit imprimat

Dispozitivul este asamblat pe o placă de circuit imprimat cu două fețe, de formă circulară, la dimensiunea diametrului interior al carcasei ceasului de mână. Dar în producție am folosit două plăci cu o singură față cu o grosime de 0,35 mm. Această grosime a fost obținută din nou prin decojirea acesteia din laminatul din fibră de sticlă cu două fețe cu o grosime de 1,5 mm. Plăcile au fost apoi lipite împreună. Toate acestea au fost făcute pentru că nu aveam fibră de sticlă subțire cu două fețe și fiecare milimetru de grosime salvat în spațiul interior limitat al carcasei ceasului este foarte valoros și nu a fost nevoie de aliniere la fabricarea conductorilor imprimați folosind LUT. metodă. Desenul plăcii de circuit imprimat și locația pieselor sunt în fișierele atașate. Pe o parte există indicatoare și rezistențe de limitare a curentului R1-R8. Pe spate sunt toate celelalte detalii. Există două găuri de trecere pentru LED-urile albe și infraroșii.

Contactele butoanelor si suportul bateriei sunt realizate din tabla de otel flexibila cu arc, cu o grosime de 0,2...0,3 mm. si conservat. Mai jos sunt fotografii ale panoului de pe ambele părți:

Design, piese și posibila înlocuire a acestora

Microcontrolerul ATmega168PA-AU poate fi înlocuit cu ATmega168P-AU, ATmega168V-10AU ATmega168-20AU. Indicatoare digitale - 4 bucăți KPSA02-105 strălucire roșu super strălucitor cu o înălțime a cifrelor de 5,08 mm. Poate fi furnizat din aceeași serie KPSA02-xxx sau KCSA02-xxx. (doar nu cele verzi - vor străluci slab) Nu cunosc alți analogi de dimensiuni similare cu luminozitate decentă. În HG1, HG3, conexiunea segmentelor catodice este diferită de HG2, HG4, deoarece mi-a fost mai convenabil pentru cablarea plăcii de circuit imprimat. În acest sens, un alt tabel generator de caractere este folosit pentru ei în program. Rezistoare și condensatoare SMD folosite pentru montaj la suprafață de dimensiuni standard 0805 și 1206, LED-uri D1-D7 de dimensiune standard 0805. LED-uri albe și infraroșii cu diametrul de 3 mm. Placa are 13 găuri de trecere în care trebuie instalate jumperi. Un DS18B20 cu o interfață cu 1 fir este utilizat ca senzor de temperatură. LS1 este un tweeter piezoelectric obișnuit, introdus în capac. Cu un contact este conectat la placa folosind un arc instalat pe ea, cu celălalt este conectat la corpul ceasului prin capacul propriu-zis. Rezonator de cuarț de la un ceas de mână.

Programare, firmware, sigurante

Pentru programarea în circuit, placa are doar 6 puncte de contact rotunde (J1), deoarece un conector complet nu se potrivește la înălțime. Le-am conectat la programator folosind un dispozitiv de contact realizat dintr-un ștecher PLD2x3 și arcuri lipite pe ele, apăsându-le cu o mână pe puncte. Mai jos este o fotografie a dispozitivului.

L-am folosit pentru că în timpul procesului de depanare a trebuit să reflashez MK-ul de multe ori. Când se afișează un firmware unic, este mai ușor să lipiți firele subțiri conectate la programator la patch-uri și apoi să le dezlipiți din nou. Este mai convenabil să flash-ul MK fără baterie, dar astfel încât puterea să provină fie de la o sursă externă de +3V, fie de la un programator cu aceeași tensiune de alimentare. Programul este scris în asamblator în mediul VMLAB 3.15. Coduri sursă, firmware pentru FLASH și EEPROM în aplicație.

Biții FUSE ai microcontrolerului DD1 trebuie programați după cum urmează:
CKSEL3...0 = 0010 - tactarea de la oscilator RC intern 8 MHz;
SUT1...0 =10 - Timp de pornire: 6 CK + 64 ms;
CKDIV8 = 1 - divizorul de frecvență cu 8 este dezactivat;
CKOUT = 1 - Ceas de ieșire pe CKOUT dezactivat;
BODLEVEL2…0 = 111 - controlul tensiunii de alimentare este dezactivat;
EESAVE = 0 - stergerea EEPROM la programarea cristalului este interzisa;
WDTON = 1 - Timer-ul Watchdog nu este întotdeauna pornit;
Biții FUSE rămași sunt cel mai bine lăsați neatinse. Bitul FUSE este programat dacă este setat la „0”.

Este necesară intermiterea EEPROM-ului cu dump-ul inclus în arhivă.

Primele celule ale EEPROM conțin parametrii inițiali ai dispozitivului. Tabelul de mai jos descrie scopul unora dintre ele, care pot fi modificate în limite rezonabile.

Adresa celulei

Scop

Parametru

Notă

Cantitatea de tensiune a bateriei la care apare un semnal de nivel scăzut

260 (104 USD) (2,6 V)

coeficient de corectare a valorii tensiunii măsurate a bateriei

interval de timp pentru trecerea în modul de repaus

1 unitate = 1 sec

interval de timp pentru trecerea în modul de repaus când lanterna este aprinsă

1 unitate = 1 sec

interval de timp pentru trecerea în modul de repaus în modul telecomandă pentru camere

1 unitate = 1 sec

Numerele tastelor Ibutton sunt stocate aici

Mici explicații asupra punctelor:

1 punct. Aceasta indică nivelul de tensiune de pe baterie la care LED-ul se va aprinde, indicând valoarea sa scăzută. L-am setat la 2,6V (parametru - 260). Dacă aveți nevoie de altceva, de exemplu 2,4V, atunci trebuie să scrieți 240 ($00F0). Octetul mic este stocat în celulă la adresa $0000, iar octetul mare este stocat în $0001.

2 puncte. Deoarece nu am instalat o rezistență variabilă pe placă pentru a regla acuratețea măsurării tensiunii bateriei din cauza lipsei de spațiu, am introdus calibrarea software. Procedura de calibrare pentru măsurarea precisă este următoarea: inițial, coeficientul 1024 (400 USD) este scris în această celulă EEPROM, trebuie să comutați dispozitivul în modul activ și să vă uitați la tensiunea de pe indicator, apoi să măsurați tensiunea reală pe bateria cu un voltmetru. Factorul de corecție (K), care trebuie setat, se calculează prin formula: K=Uр/Ui*1024 unde Uр este tensiunea reală măsurată de voltmetru, Ui este tensiunea care a fost măsurată de dispozitivul însuși. După calcularea coeficientului „K”, acesta este introdus în dispozitiv (așa cum este menționat în instrucțiunile de utilizare). După calibrare, eroarea mea nu a depășit 3%.

3 puncte. Aici puteți seta timpul după care dispozitivul va intra în modul de repaus dacă nu este apăsat niciun buton. Al meu costă 16 secunde. Dacă, de exemplu, trebuie să adormi în 30 de secunde, atunci trebuie să notezi 30 (26 USD).

La punctele 4 și 5 la fel.

6 puncte. La adresa $0030 este stocat codul familiei de chei zero (Dallas 1-Wire), apoi numărul său de 48 de biți și CRC. Și așa 50 de taste în secvență.

Configurare, caracteristici de operare

Configurarea dispozitivului se reduce la calibrarea măsurării tensiunii bateriei, așa cum este descris mai sus. De asemenea, este necesar să detectați abaterea frecvenței ceasului timp de 1 oră, să calculați și să introduceți valoarea de corecție corespunzătoare (procedura este descrisă în instrucțiunile de utilizare).

Dispozitivul este alimentat de o baterie cu litiu CR2032 (3V) și consumă aproximativ 4 µA în modul repaus și 5...20 mA în modul activ, în funcție de luminozitatea indicatorului. Cu utilizarea zilnică de cinci minute a modului activ, bateria ar trebui să dureze aproximativ 2...8 luni, în funcție de luminozitate. Carcasa ceasului este conectată la negativul bateriei.

Citirea cheii a fost testată pe DS1990. Emularea a fost testată pe interfoanele METAKOM. Sub numerele de serie de la 46 la 49 (ultimele 4) sunt intermitente cheile universale pentru interfoane (toate cheile sunt stocate în EEPROM, pot fi schimbate înainte de a clipi). Cheia inregistrata sub numarul 49 a deschis toate interfoanele METAKOM pe care le-am intalnit, nu am avut sansa sa testez restul cheilor universale, le-am luat codurile din retea.

Telecomanda pentru camere a fost testată pe modelele Pentax optio L20 și Nikon D3000. Canon nu a putut fi obținut pentru revizuire.

Manualul de utilizare ocupă 13 pagini, așa că nu l-am inclus în articol, ci l-am inclus într-o anexă în format PDF.

Arhiva contine:
Scheme in și GIF;
Desenul plăcii de circuit imprimat și dispunerea elementelor în format;
Firmware și cod sursă în asamblator;

Lista radioelementelor

Desemnare Tip Denumire Cantitate NotăMagazinBlocnotesul meu
DD1 MK AVR pe 8 biți

ATmega168PA

1 PA-AU La blocnotes
U2 senzor de temperatura

DS18B20

1 La blocnotes
Î1 tranzistor MOSFET

2N7002

1 La blocnotes
C1, C2 Condensator30 pF2 La blocnotes
C3, C4 Condensator0,1 uF2 La blocnotes
C5 Condensator electrolitic47 uF1 La blocnotes
R1-R8, R17 Rezistor

100 ohmi

9 La blocnotes
R9 Rezistor

10 kOhm

1 La blocnotes
R10 Rezistor

8,2 ohmi

1 La blocnotes
R11 Rezistor

300 ohmi

1 La blocnotes
R12 Rezistor

2 MOhm

1 La blocnotes
R13 Rezistor

220 kOhm

1 La blocnotes
R14 Rezistor

30 kOhm

1 La blocnotes
R15, R19 Rezistor

4,7 kOhmi

2 La blocnotes
R16 Rezistor

20 kOhm

1

Ceas cu iluminare de fundal LED și minute pulsate pe un microcontroler Arduino
Acest ceas unic cu iluminare de fundal LED și minute pulsate a fost realizat folosind cipul de controler TLC5940 PWM. Sarcina sa principală este de a extinde numărul de contacte de modulație PWM. O altă caracteristică a acestui ceas este că a convertit un voltmetru analogic într-un dispozitiv care măsoară minutele. Pentru a face acest lucru, o nouă scară a fost tipărită pe o imprimantă standard și lipită peste cea veche. Ca atare, al 5-lea minut nu este numărat, doar că în timpul celui de-al cincilea minut contorul de timp arată săgeata care indică sfârșitul scalei (în afara scalei). Controlul principal este implementat pe microcontrolerul Arduino Uno.

Pentru a se asigura că lumina de fundal a ceasului nu strălucea prea puternic într-o cameră întunecată, a fost implementat un circuit pentru a regla automat luminozitatea în funcție de iluminare (a fost folosit un fotorezistor).

Pasul 1: Componentele necesare



Iată ce veți avea nevoie:

  • Modul voltmetru analogic 5V DC;
  • microcontroler Arduino UNO sau alt Arduino adecvat;
  • Placa de circuite Arduino (placa proto);
  • Modul DS1307 Real Time Clock (RTC);
  • Modul cu controler PWM TLC5940;
  • Ilumini de fundal LED petal – 12 buc.;
  • Componente pentru asamblarea unui circuit de control automat al luminozității (LDR).

De asemenea, pentru producția altor componente ale proiectului, este de dorit să aveți acces la o imprimantă 3D și o mașină de tăiat cu laser. Se presupune că aveți acest acces, așa că instrucțiunile vor include desene de fabricație în etapele corespunzătoare.

Pasul 2: Apelați




Cadranul este format din trei părți (straturi) tăiate pe o mașină de tăiat cu laser din tablă MDF de 3 mm, care sunt fixate împreună cu șuruburi. O placă fără fante (dreapta jos în imagine) este plasată sub o altă placă pentru a poziționa LED-urile (stânga jos). Apoi, LED-urile individuale sunt plasate în sloturile corespunzătoare, iar panoul frontal este pus deasupra (sus în figură). Patru găuri sunt găurite de-a lungul marginii cadranului, prin care toate cele trei părți sunt prinse împreună.

  • Pentru a testa performanța LED-urilor în această etapă, a fost folosită o baterie tip monedă CR2032;
  • Pentru fixarea LED-urilor au fost folosite mici benzi de bandă adezivă, care au fost lipite de spatele LED-urilor;
  • Toate picioarele LED au fost pre-îndoite în consecință;
  • Au fost reforate găurile de-a lungul marginilor, prin care s-a efectuat șurubul. S-a dovedit că acest lucru era mult mai convenabil.

Desenul tehnic al pieselor cadranului este disponibil la:

Pasul 3: Proiectați circuitul



În această etapă a fost dezvoltat circuitul electric. În acest scop au fost folosite diverse manuale și ghiduri. Nu vom aprofunda acest proces; cele două fișiere de mai jos arată circuitul electric finit care a fost utilizat în acest proiect.

Pasul 4: Conectarea plăcii de circuite Arduino





  1. Primul pas este să dezlipiți toate contactele ac de pe plăcile de circuite și plăcile de secțiune;
  2. În plus, datorită faptului că puterea de 5V și GND sunt folosite de atât de multe plăci și dispozitive periferice, pentru fiabilitate, două fire pentru 5V și GND au fost lipite pe placa de circuite;
  3. Apoi, un controler TLC5940 PWM a fost instalat lângă contactele folosite;
  4. Apoi controlerul TLC5940 este conectat conform schemei de conectare;
  5. Pentru a putea folosi bateria, pe marginea plăcii de circuite a fost instalat un modul RTC. Dacă îl lipiți în mijlocul plăcii, marcajele pinului nu vor fi vizibile;
  6. Modulul RTC a fost conectat conform schemei de conectare;
  7. Un circuit de control automat al luminozității (LDR) a fost asamblat, îl puteți vizualiza la link
  8. Firele pentru voltmetru sunt conectate prin conectarea firelor la pinul 6 și GND.
  9. La sfârșit, au fost lipite 13 fire pentru LED-uri (În practică, s-a dovedit că este mai bine să faceți acest lucru înainte de a trece la pasul 3).

Pasul 5: Cod

Codul de mai jos a fost compilat din diferite componente ale ceasului găsite pe Internet. A fost complet depanat și acum este complet funcțional și au fost adăugate câteva comentarii destul de detaliate. Dar înainte de a încărca în microcontroler, luați în considerare următoarele puncte:

  • Înainte de a flashiza firmware-ul Arduino, trebuie să decomentați linia care setează ora:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    După ce ați afișat intermitent controlerul cu această linie (ora este setată), trebuie să îl comentați din nou și să afișați din nou controlerul. Acest lucru permite modulului RTC să folosească bateria pentru a-și aminti ora în cazul în care se pierde alimentarea principală.
  • De fiecare dată când utilizați „Tlc.set()”, trebuie să utilizați „Tlc.update”

Pasul 6: Inelul exterior

Inelul exterior al ceasului a fost imprimat 3D folosind o imprimantă Replicator Z18. Se atașează la ceas folosind șuruburi pe fața ceasului. Mai jos este un fișier cu un model 3D al inelului pentru imprimare pe o imprimantă 3D.

Pasul 7: Asamblarea ceasului


Microcontrolerul Arduino cu toate celelalte componente electronice a fost fixat pe spatele ceasului folosind șuruburi și piulițe ca distanțiere. Apoi am conectat toate LED-urile, voltmetrul analogic și LDR la firele care au fost lipite anterior la placa de circuit. Toate LED-urile sunt interconectate printr-un picior și conectate la pinul VCC de pe controlerul TLC5940 (o bucată de sârmă este pur și simplu lipită într-un cerc).

Până acum, toate acestea nu sunt foarte bine izolate de scurtcircuite, dar lucrările la acest lucru vor continua și în versiunile viitoare.

Îmi amintesc... În urmă cu treizeci de ani, șase indicatori erau o mică comoară. Oricine putea face apoi un ceas folosind logica TTL cu astfel de indicatori era considerat un expert sofisticat în domeniul său.

Strălucirea indicatoarelor de descărcare de gaz părea mai caldă. După câteva minute mă întrebam dacă aceste lămpi vechi vor funcționa și am vrut să fac ceva cu ele. Acum este foarte ușor să faci un astfel de ceas. Tot ce ai nevoie este un microcontroler...

Deoarece în același timp eram interesat de programarea microcontrolerelor în limbaje de nivel înalt, am decis să mă joc puțin. Am încercat să construiesc un ceas simplu folosind indicatori digitali de descărcare a gazelor.

Scopul proiectării

Am decis ca ceasul să aibă șase cifre, iar ora să fie setată cu un număr minim de butoane. În plus, am vrut să încerc să folosesc câteva dintre cele mai comune familii de microcontrolere de la diferiți producători. Am intenționat să scriu programul în C.

Indicatorii de descărcare de gaz necesită tensiune înaltă pentru a funcționa. Dar nu am vrut să mă ocup de tensiunea de rețea periculoasă. Ceasul trebuia să fie alimentat de o tensiune inofensivă de 12 V.

Deoarece scopul meu principal a fost jocul, nu veți găsi aici nicio descriere a designului mecanic sau a desenelor corpului. Dacă doriți, puteți schimba singur ceasul în funcție de gusturile și experiența dvs.

Iată ce am primit:

  • Afișare timp: HH MM SS
  • Indicație de alarmă: HH MM --
  • Mod de afișare a timpului: 24 de ore
  • Precizie ± 1 secundă pe zi (în funcție de cristalul de cuarț)
  • Tensiune de alimentare: 12 V
  • Consum de curent: 100 mA

Diagrama ceasului

Pentru un dispozitiv cu un afișaj digital din șase cifre, modul multiplex a fost o soluție naturală.

Scopul majorității elementelor diagramei bloc (Figura 1) este clar fără comentarii. Într-o anumită măsură, sarcina non-standard a fost de a crea un convertor de niveluri TTL în semnale de control ale indicatorului de înaltă tensiune. Driverele anodului sunt realizate folosind tranzistoare NPN și PNP de înaltă tensiune. Diagrama este împrumutată de la Stefan Kneller (http://www.stefankneller.de).

Cipul 74141 TTL conține un decodor BCD și un driver de înaltă tensiune pentru fiecare cifră. Poate fi dificil să comandați un cip. (Deși nu știu dacă le mai face cineva). Dar dacă găsiți indicatoare de descărcare de gaze, 74141 poate fi undeva în apropiere :-). La momentul logicii TTL, practic nu exista nicio alternativă la cipul 74141. Așa că încearcă să găsești unul undeva.

Indicatorii necesită o tensiune de aproximativ 170 V. Nu are sens să dezvolte un circuit special pentru un convertor de tensiune, deoarece există un număr mare de cipuri de convertizor boost. Am ales IC34063 ieftin și disponibil pe scară largă. Circuitul convertor este aproape complet copiat din fișa de date MC34063. Tocmai i s-a adăugat un comutator de alimentare T13. Comutatorul intern nu este potrivit pentru o tensiune atât de mare. Am folosit un șoc ca inductanță pentru convertor. Este prezentat în Figura 2; diametrul său este de 8 mm și lungimea de 10 mm.

Eficiența convertorului este destul de bună, iar tensiunea de ieșire este relativ sigură. Cu un curent de sarcină de 5 mA, tensiunea de ieșire scade la 60 V. R32 acționează ca un rezistor de detectare a curentului.

Pentru alimentarea logicii, se folosește regulatorul liniar U4. Există spațiu pe circuit și pe placă pentru o baterie de rezervă. (3,6 V - NiMH sau NiCd). D7 și D8 sunt diode Schottky, iar rezistența R37 este concepută pentru a limita curentul de încărcare în funcție de caracteristicile bateriei. Dacă construiți ceasuri doar pentru distracție, nu veți avea nevoie de baterie, D7, D8 și R37.

Circuitul final este prezentat în Figura 3.

Figura 3.

Butoanele de setare a orei sunt conectate prin diode. Starea butoanelor este verificată prin setarea unui „1” logic la ieșirea corespunzătoare. Ca o caracteristică bonus, un emițător piezo este conectat la ieșirea microcontrolerului. Ca să taci scârțâitul acela urât, folosește un mic întrerupător. Un ciocan ar fi destul de potrivit pentru asta, dar aceasta este o ultimă soluție :-).

O listă a componentelor circuitului, un desen PCB și o diagramă de aspect pot fi găsite în secțiunea „Descărcări”.

CPU

Aproape orice microcontroler cu un număr suficient de pini, al cărui număr minim necesar este indicat în Tabelul 1, poate controla acest dispozitiv simplu.

Tabelul 1.
Funcţie concluzii
Nutriție 2
Rezonator cu cuarț 2
Managementul anodului 6
Driver 74141 4
Buton de intrare 1
Emițător piezo 1
Total 16

Fiecare producător își dezvoltă propriile familii și tipuri de microcontrolere. Locația știfturilor este individuală pentru fiecare tip. Am încercat să proiectez o placă universală pentru mai multe tipuri de microcontrolere. Placa are o priză cu 20 de pini. Cu câteva fire jumper îl puteți adapta la diferite microcontrolere.

Microcontrolerele testate în acest circuit sunt enumerate mai jos. Puteți experimenta cu alte tipuri. Avantajul schemei este capacitatea de a utiliza diferite procesoare. Radioamatorii, de regulă, folosesc o singură familie de microcontrolere și au programatorul și instrumentele software corespunzătoare. Pot fi probleme cu microcontrolerele de la alți producători, așa că ți-am dat ocazia să alegi un procesor din familia ta preferată.

Toate particularitățile pornirii diferitelor microcontrolere sunt reflectate în tabelele 2...5 și figurile 4...7.

Masa 2.
Freescale
Tip MC68HC908QY1
Rezonator cu cuarț 12 MHz
Condensatoare C1, C2 22 pF
Program freescale.zip
(vezi secțiunea „Descărcări”)
Setări

Notă: Un rezistor de 10 MΩ este conectat în paralel cu rezonatorul de cuarț.

Tabelul 3.
Microcip
Tip PIC16F628A
Rezonator cu cuarț 32,768 kHz
Condensatoare C1, C2 22 pF
Program pic628.zip
(vezi secțiunea „Descărcări”)
Setări Int. Generator de 4 MHz - I/O RA6,
MCLR OFF, WDT OFF, LVP OFF,
BROUT OFF, CP OFF, PWRUP OFF

Notă: Microcircuitul trebuie rotit cu 180° în priză.

Tabelul 4.
Atmel
Tip ATtiny2313
Rezonator cu cuarț 12 MHz
Condensatoare C1, C2 15 pF
Program attiny.zip
(vezi secțiunea „Descărcări”)
Setări mp. Oscilator 8 MHz, RESET PORNIT

Notă: Adăugați componentele SMD R și C la pinul RESET (10 kΩ și 100 nF).

Tabelul 5.
Atmel
Tip AT89C2051
Rezonator cu cuarț 12 MHz
Condensatoare C1, C2 22 pF
Program la2051.zip
(vezi secțiunea „Descărcări”)
Setări --

Notă: Adăugați componentele SMD R și C la pinul RESET (10 kΩ și 100 nF); conectați pinii marcați cu asteriscuri la magistrala de alimentare +Ub prin rezistențe SMD de 3,3 kOhm.

Când comparați codurile pentru diferite microcontrolere, veți vedea că acestea sunt foarte asemănătoare. Există diferențe în accesul la porturi și definirea funcțiilor de întrerupere, precum și în ceea ce depinde de componentele hardware.

Codul sursă este format din două secțiuni. Funcţie principal() configurează porturile și pornește un temporizator care generează semnale de întrerupere. După aceasta, programul scanează butoanele apăsate și setează ora și valorile de alarmă corespunzătoare. Acolo, în bucla principală, ora actuală este comparată cu ceasul cu alarmă și emițătorul piezo este pornit.

A doua parte este o subrutină pentru gestionarea întreruperilor temporizatorului. O subrutină care este apelată la fiecare milisecundă (în funcție de capacitățile cronometrului) incrementează variabilele de timp și controlează cifrele afișate. În plus, se verifică starea butoanelor.

Rularea circuitului

Când instalați componente și configurați, începeți cu sursa de alimentare. Lipiți regulatorul U4 și componentele din jur. Verificați tensiunea de 5 V pentru U2 și 4,6 V pentru U1. Următorul pas este asamblarea convertorului de înaltă tensiune. Utilizați rezistența de reglare R36 pentru a seta tensiunea la 170 V. Dacă domeniul de reglare nu este suficient, modificați ușor rezistența rezistenței R33. Acum instalați cipul U2, tranzistoarele și rezistențele anodului și circuitului de driver digital. Conectați intrările U2 la magistrala GND și conectați unul dintre rezistențele R25 - R30 în serie la magistrala de alimentare +Ub. Numerele indicatoare ar trebui să se aprindă în pozițiile corespunzătoare. În ultima etapă a verificării circuitului, conectați pinul 19 al microcircuitului U1 la masă - emițătorul piezo ar trebui să sune.

Veți găsi codurile sursă și programele compilate în fișierul ZIP corespunzător din secțiunea „Descărcări”. După ce ați introdus programul în microcontroler, verificați cu atenție fiecare pin în poziția U1 și instalați cablurile și jumperii de lipit necesare. Consultați imaginile microcontrolerului de mai sus. Dacă microcontrolerul este programat și conectat corect, generatorul său ar trebui să înceapă să funcționeze. Puteți seta ora și alarma. Atenţie! Există spațiu pe placă pentru încă un buton - acesta este un buton de rezervă pentru extinderi viitoare :-).

Verificați acuratețea frecvenței generatorului. Dacă nu este în intervalul așteptat, modificați ușor valorile condensatoarelor C1 și C2. (Lipiți condensatoarele mici în paralel sau înlocuiți-le cu altele). Precizia ceasului ar trebui să se îmbunătățească.

Concluzie

Procesoarele mici pe 8 biți sunt destul de potrivite pentru limbaje de nivel înalt. C nu a fost conceput inițial pentru microcontrolere mici, dar pentru aplicații simple îl puteți folosi foarte bine. Limbajul de asamblare este mai potrivit pentru sarcini complexe care necesită timpi critici sau încărcare maximă a CPU. Pentru majoritatea radioamatorilor, sunt potrivite atât versiunile gratuite, cât și versiunile limitate shareware ale compilatorului C.

Programarea C este aceeași pentru toate microcontrolerele. Trebuie să cunoașteți funcțiile hardware (registre și periferice) ale tipului de microcontroler selectat. Fiți atenți la operațiunile cu biți - limbajul C nu este potrivit pentru manipularea biților individuali, așa cum se poate vedea în exemplul originalului când pentru ATtiny.

Ai terminat? Apoi acordați-vă pentru a contempla tuburile cu vid și urmăriți...

...vechile s-au întors... :-)

Nota editorului

Un analog complet al SN74141 este microcircuitul K155ID1, produs de software-ul Minsk Integral.
Microcircuitul poate fi găsit cu ușurință pe Internet.