Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows Phone
  • Ceasul de făcut singur pe un microcontroler. Un ceas simplu pe microcontrolerul Attiny2313

Ceasul de făcut singur pe un microcontroler. Un ceas simplu pe microcontrolerul Attiny2313

Acest ceas cu alarmă se bazează pe un cip de ceas în timp real, care îi permite să funcționeze de la o sursă de alimentare de rezervă atunci când sursa principală de alimentare nu este disponibilă. Ora de alarmă setată și modul de funcționare sunt stocate în memoria nevolatilă a microcontrolerului. Mod de afișare - 24 de ore. Acestea conțin imitație de „bifare” Indicarea timpului și a modurilor de funcționare se realizează prin intermediul indicatoarelor LED.

Principiul de funcționare

Datele de ceas se bazează pe microcircuitul DS1307 - un ceas în timp real care comunică cu controlerul de control prin interfața I2C. Indicarea timpului se realizează prin intermediul a 4 indicatoare cu 7 segmente care funcționează în modul dinamic. Introducerea și reglarea orei se realizează prin 5 butoane: „+ minute”, „+ ore”, „setare”, „alarma” și „resetare”. Semnalul sonor al ceasului cu alarmă este transmis printr-un emițător piezo standard și este un semnal cu o frecvență de 1 kHz cu pauze secunde.

Atmega48 a fost ales ca microcontroller de control datorită disponibilității și prezenței perifericelor necesare la bord (chiar și cu un exces). Ceasul în timp real DS1307 este conectat la ieșirile hardware I2C ale microcontrolerului de control. Pentru a opera DS1307 în modul de sine stătător (în cazul unei căderi de curent a controlerului principal), este utilizată o baterie de rezervă cu litiu de 3V, a cărei resursă va dura câțiva ani datorită consumului redus de energie al microcircuitului.

Să aruncăm o privire mai atentă asupra programului de control:

Programul funcționează pe principiul unei mașini cu cronometru: toate stările și evenimentele sunt prezentate sub forma unor steaguri corespunzătoare care sunt executate în întreruperi ale temporizatorului corespunzător 1s, 1ms și 263.17ms. Programul folosește 2 cronometre hardware.

Sondajul microcircuitului ceasului și apăsarea butoanelor se efectuează cu un interval de 263,17 ms. Intervalul de 1 ms este folosit pentru a genera un semnal sonor de apel, iar 1s - pentru a-l modula. Al doilea interval controlează, de asemenea, clipirea unui punct în a doua cifră a indicatorului, care separă orele și minutele și servește și ca formarea unei „căpușe”.
Să luăm în considerare o diagramă schematică a unui ceas.

Denumiri și evaluări:
S4 - Creșteți orele
S3 - Creșterea minutelor
S2 - Instalare
S1 - Porniți alarma
S5 - Resetare

R6-R10 - 10k
R1-R5 - 510ohm

Tensiunea de alimentare este de 5 volți.

Personalizare și utilizare

Un ceas asamblat corespunzător nu necesită ajustare suplimentară. Trebuie doar să setați ora curentă și alarma.
Setarea orei curente se face după cum urmează:
1) Folosiți butoanele S1 și S2 pentru a seta ora curentă (punctul dintre cifre nu clipește)
2) Porniți ceasul cu butonul S3
Setarea alarmei:
1) Apăsați S3 și asigurați-vă că punctul este aprins în prima cifră
2) Setați ora apelului cu butoanele S1 și S2
3) Porniți soneria cu butonul S4
Caracteristici suplimentare:
Activați bifarea - în timp ce țineți apăsat S4, apăsați S2 până când apar sunete caracteristice. Dezactivat în același mod.
Afișarea minutelor și secundelor - în timp ce țineți apăsat S4 apăsați S1. Dacă după aceea apăsați S3, secundele vor fi resetate la 00. Return - aceeași combinație.

Ceasuri foto și video

Ceasul este asamblat într-o carcasă de sub „electronică” nefuncțională.


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 sale 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. Ca urmare, a apărut un dispozitiv cu următoarele funcții:

1. Ceas - calendar:

    Numărătoare inversă și afișare pe indicatorul de ore, minute, secunde, zi a săptămânii, zi, lună, an.

    Disponibilitatea corectă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 după dată (pentru secolul curent)

    Trecere automată la ora de vară și de iarnă (comutabilă)

  • Sunt luați în considerare anii bisecți

2. Două alarme independente (se aude o melodie când este declanșată)
3. Temporizator cu o discretie de 1 sec. (Timp maxim de numărătoare inversă 99h 59m 59s)
4. Un cronometru cu două canale cu o rată de numărare de 0,01 sec. (timp maxim de numărare 99h 59m 59s)
5. Cronometru cu rată de numărare de 1 secundă. (timp maxim de numărare 99 de zile)
6. Termometru în intervalul -5 ° С. până la 55 ° С (limitat de intervalul de temperatură al funcționării normale a dispozitivului) în trepte de 0,1 ° С.
7. Cititor și emulator de chei electronice - tablete de tip DS1990 folosind protocolul Dallas 1-Wire (memorie pentru 50 de bucăți, în care există deja mai multe „chei universale”) cu posibilitatea de a vizualiza octetul codului cheii .
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 (comutabil)
12. Confirmare sonoră a apăsării butoanelor (comutabil)
13. Monitorizarea tensiunii bateriei cu functie de calibrare
14. Reglarea digitală a luminozității indicatorului

Poate că această funcționalitate este redundantă, dar îmi plac lucrurile universale, ei bine, plus satisfacția morală că acest ceas va fi făcut manual.

Schema schematică a ceasului

Dispozitivul se bazează pe microcontrolerul ATmega168PA-AU. Ceasul bifează în funcție de cronometrul T2, care funcționează în modul asincron de la ceasul 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 această secundă la ora curentă și adormi din nou. În modul activ, MC este tactat de la oscilatorul RC intern la 8 MHz, dar prescalerul intern îl împarte la 2, ca urmare, nucleul este tactat de 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 primului ceas cu alarmă inclus
D4- Semnul celui de-al doilea ceas cu alarmă inclus
D5- Semn de semnalizare sonoră la începutul fiecărei ore
D6- Semnul unui cronometru care rulează (clipește)
D7- Semn 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 controlul tensiunii bateriei. Deoarece tensiunea de alimentare a ceasului este de 3V, iar LED-ul alb D9 are nevoie de aproximativ 3,4-3,8V la consumul de curent nominal, nu luminează la putere maximă (dar este suficient să nu se împiedice în întuneric) și, prin urmare, este conectat fără un rezistor limitator de curent. Elementele R14, Q1, R10 sunt proiectate pentru a controla LED-ul infrarosu D8 (implementarea telecomenzii pentru camerele digitale). R19, ​​​​R20, R21 sunt utilizate pentru interfața 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 condiționat: MOD (mod), SUS (sus), JOS (jos). Primul dintre ele este, de asemenea, conceput pentru a trezi MC-ul printr-o întrerupere externă (în timp ce indicația se aprinde), deci este conectat separat la intrarea PD3. Apăsarea celorlalte butoane este determinată folosind ADC și rezistențele R16, R18. Dacă butoanele nu sunt apăsate în 16 secunde, atunci MK adoarme ș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ă, de 1 minut. De asemenea, MK poate fi oprit manual folosind butoanele de control. Când cronometrul funcționează cu o rată 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, în formă rotundă, pentru a se potrivi cu diametrul interior al carcasei unui ceas de mână. Dar la fabricație am folosit două plăci cu o singură față cu o grosime de 0,35 mm. Această grosime a fost din nou obținută prin decojirea acesteia dintr-o fibră de sticlă cu două fețe cu o grosime de 1,5 mm. Apoi a lipit scândurile. Toate acestea au fost făcute pentru că nu aveam o fibră de sticlă subțire cu două fețe și fiecare milimetru de grosime economisit în spațiul interior limitat al carcasei ceasului este foarte valoros și nu a fost nevoie să-l combin în fabricarea conductorilor imprimați folosind metoda LUT. Desenul PCB și locația pieselor sunt în fișierele atașate. Pe o parte sunt indicatoare și rezistențe de limitare a curentului R1-R8. Pe spate - 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, elastica, cu o grosime de 0,2 ... 0,3 mm. si conservat. Mai jos sunt fotografii ale panoului de pe ambele părți:

Construcție, 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 culoare roșu super strălucitor cu o înălțime de 5,08 mm. Poate fi furnizat din aceeași serie KPSA02-xxx sau KCSA02-xxx. (doar nu verde - vor străluci slab) Nu cunosc alți analogi de dimensiuni similare cu luminozitate decentă. În HG1, HG3, conexiunea catodică a segmentelor diferă de HG2, HG4, deoarece mi-a fost mai convenabil să așez placa de circuit imprimat. În acest sens, un alt tabel generator de caractere este folosit pentru ei în program. Rezistori si condensatori SMD folosite pentru montaj la suprafata de dimensiuni standard 0805 si 1206, LED-uri D1-D7 de dimensiune standard 0805. LED-uri albe si infrarosu cu diametrul de 3mm. Placa are 13 găuri de trecere unde trebuie să instalați jumperi. Un DS18B20 cu o interfață cu 1 fir a fost folosit ca senzor de temperatură. LS1 este o sondă piezoelectrică convențională care se potrivește în capac. Cu un contact se conecteaza la placa cu ajutorul unui arc instalat pe ea, cu celalalt se conecteaza la carcasa 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 pini de contact rotunzi (J1), deoarece un conector complet nu se potrivește în înălțime. Le-am conectat la programator folosind un dispozitiv de contact alcătuit dintr-un ștecher PLD2x3 pini și le-am lipit cu arcuri, apăsându-le cu o mână pe pete. 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. Cu un firmware unic, este mai ușor să lipiți firele subțiri conectate la programator la patch-uri și apoi să dezlipiți din nou. Este mai convenabil să flashezi MK fără baterie, dar astfel încât puterea să provină fie de la o sursă externă + 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 oscilatorul intern RC 8 MHz;
SUT1 ... 0 = 10 - Timp de pornire: 6 CK + 64 ms;
CKDIV8 = 1 - divizorul de frecvență cu 8 este dezactivat;
CKOUT = 1 - Ceasul de ieșire pe CKOUT este dezactivat;
BODLEVEL2… 0 = 111 - controlul tensiunii de alimentare este dezactivat;
EESAVE = 0 - ștergerea EEPROM-ului în timpul programării cipului este interzisă;
WDTON = 1 - Fără activare constantă a Timer-ului Watchdog;
Este mai bine să nu atingeți restul biților FUSE. SIGURANȚĂ – bitul este programat dacă este setat la „0”.

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

Primele celule 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

Programare

Parametru

Notă

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

260 (104 USD) (2,6 V)

coeficient de corectare a valorii tensiunii măsurate a bateriei

interval de timp pentru trecerea la 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

Aici sunt stocate numerele tastelor IButton.

Mici explicații pentru puncte:

1 punct. Aici este indicată valoarea tensiunii de pe baterie, la care LED-ul se va aprinde, semnalâ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 introdus în celulă la 0000 USD, iar octetul mare, respectiv, în 0001 USD.

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, în această celulă EEPROM este scris un factor de 1024 (400 USD), trebuie să puneți dispozitivul în modul activ și să vă uitați la tensiunea de pe indicator și să măsurați imediat valoarea reală. tensiunea bateriei 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 un voltmetru, Ui este tensiunea măsurată de dispozitivul însuși. După calcularea factorului „K”, acesta este introdus în dispozitiv (așa cum este descris în instrucțiunile de utilizare). După calibrare, eroarea mea nu a depășit 3%.

3 sâmburi Aici puteți seta timpul după care dispozitivul intră în modul de repaus dacă nu este apăsat niciun buton. Mă costă 16 secunde. Dacă trebuie să adormi după 30 de secunde, atunci trebuie să notezi 30 (26 USD).

Cele 4 și 5 puncte sunt aceleași.

6 sâmburi Adresa $ 0030 stochează codul familiei zero cheie (dallas 1-Wire), apoi numărul său de 48 de biți și CRC. Și așa 50 de chei în serie.

Setare, funcții de lucru

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 ceasului în 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 sleep, și 5 ... 20 mA în modul activ, în funcție de luminozitatea indicatorului. Cu o utilizare zilnică de cinci minute a modului activ, bateria ar trebui să fie suficientă pentru aproximativ 2 ... .8 luni, în funcție de luminozitate. Carcasa ceasului este conectată la minusul bateriei.

Citirea cheii a fost verificată pe DS1990. Emularea este testată pe interfoanele METAKOM. Numerele de serie de la 46 la 49 (ultimele 4) sunt cusute (toate cheile sunt stocate în EEPROM, pot fi schimbate înainte de a clipi) chei universale pentru interfoane. Cheia inregistrata la numarul 49 a deschis toate interfoanele METAKOM peste care am dat, restul cheilor universale nu au putut fi testate, le-am luat codurile din retea.

Telecomanda pentru camere testate pe Pentax optio L20, Nikon D3000. Canon nu a putut să-l verifice.

Manualul de utilizare are 13 pagini, așa că nu l-am inclus în articol, ci l-am pus în atașament în format PDF.

Arhiva contine:
Scheme în și GIF;
Desenul plăcii de circuit imprimat și aranjarea elementelor în format;
Firmware și surse în asamblare;

Lista radioelementelor

Desemnare Un fel Denumirea Cantitate NotăScorCaietul meu
DD1 MK AVR pe 8 biți

ATmega168PA

1 PA-AU În blocnotes
U2 senzor de temperatura

DS18B20

1 În blocnotes
Î1 tranzistor MOSFET

2N7002

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

100 ohmi

9 În blocnotes
R9 Rezistor

10 kΩ

1 În blocnotes
R10 Rezistor

8,2 ohmi

1 În blocnotes
R11 Rezistor

300 ohmi

1 În blocnotes
R12 Rezistor

2 MOhm

1 În blocnotes
R13 Rezistor

220 kΩ

1 În blocnotes
R14 Rezistor

30 kΩ

1 În blocnotes
R15, R19 Rezistor

4,7 k ohmi

2 În blocnotes
R16 Rezistor

20 kΩ

1
Vă sugerez să repetați circuitul unui ceas electronic pe un microcontroler ATmega 8, cu afișarea informațiilor cu LED-uri mari. Program de lucru, verificat. Firmware-ul este în prezent în curs de finalizare. Se face un afișaj mai mare, care va fi la o distanță de unitatea principală, metri 5. Pe unitatea principală va exista și o indicație - pentru a duplica un afișaj mare. Schema schematică a ceasului LED este prezentată în figură - faceți clic pentru a mări.

Descrierea dispozitivului

1. Funcții.
1.1 Ceasul. Formatul de afișare a orei este de 24 de ore. Corecție digitală a preciziei călătoriei.


1.2 Termometru. Măsurarea temperaturii de la doi senzori în intervalul -55,0 ° C - 125,0 ° C.


1.3 Afișarea secvențială a informațiilor despre indicator.
1.4 Controlul sursei principale de alimentare.
1.5 Utilizarea memoriei nevolatile a microcontrolerului pentru a salva setările și setările atunci când alimentarea este oprită.
1.6 Trei butoane pentru instalare și configurare: PLUS, MINUS, A STABILIT.

Funcționarea dispozitivului

Când îl porniți pentru prima dată, pe afișaj apare o stropire publicitară timp de 1 secundă. Apoi afișarea timpului.
Dând clic pe POTRIVESTE ORA mută indicatorul într-un cerc din modul ceas principal (afișând ora curentă):
- modul de afișare a minutelor și secundelor. Dacă în acest mod apăsați simultan butonul PLUSși MINUS, apoi secundele vor fi resetate.
- setarea minutelor orei curente.
- setarea ceasului curent.
- valoarea corecției zilnice a preciziei frecvenței ceasului. Simbolul c și valoarea de corecție. Limite de instalare -25? 25 sec. Valoarea selectată va fi zilnică la 0 ore 0 minute și 30 de secunde adăugate/scăzute din ora curentă.
- simbol t... Setarea duratei de afișare a ceasului.
- simbol i... Ora de afișare a simbolurilor de afișare a temperaturii interne ( int).
- simbol d... setarea orei de afișare a temperaturii de la senzorul intern.
- simbol o... Afișează ora simbolurilor de afișare a temperaturii exterioare ( afară).
- simbol u... setarea timpului pentru afișarea temperaturii de la un senzor extern.
- simbol P... setarea timpului de afișare a ecranului de reclamă publicitar.
Setarea limitelor pentru timpul de afișare 0-60 sec. Dacă este setat 0, acest parametru nu este afișat pe indicator. Dacă toți parametrii sunt setați la 0, indicatorul va afișa ore.

Setarea ceasului

3.1 În toate modurile, ținând apăsat butoanele PLUS/MINUS se efectuează o instalare accelerată.
3.2 Dacă s-au făcut modificări ale setărilor, la 10 secunde după ultima modificare, noile valori vor fi scrise în memoria nevolatilă (EEPROM) și vor fi citite de acolo la repornirea alimentării. Indicatorul va comuta în modul de timp principal.
3.3 Noile setări intră în vigoare în timpul instalării.

Controlul puterii

Microcontrolerul monitorizează prezența sursei principale de alimentare. Când este oprit, dispozitivul este alimentat de la o sursă internă. Pentru a reduce consumul de curent, indicatorul, senzorii și butoanele sunt oprite. Ceasul continuă numărătoarea inversă. Când alimentarea este furnizată de la sursa principală, toate funcțiile sunt restabilite.


Momentan se dezvoltă plăci cu circuite imprimate, se corectează circuitul, este posibil colectiv. Dacă aveți idei și sugestii pentru îmbunătățirea ceasului - scrieți pe forum. Autorii designului: Aleksandrovich & SOIR (Soir & C.E.A)

Propun pentru auto-asamblare doua circuite foarte simple si anume un ceas pe un microcontroler PIC si AVR. Baza unui circuit este microcontrolerul AVR Attiny2313, iar celălalt PIC16F628A

Aceste circuite de ceas pe un microcontroler îi vor ajuta foarte mult pe radioamatorii începători să se ocupe de problemele de funcționare și programare a microcontrolerelor.

Să aruncăm o privire mai atentă la această schemă simplă: puterea poate fi furnizată atât de la trei baterii AA, cât și de la


Microcontrolerul Attiny2313 este tactat cu un cristal de cuarț de 16 MHz. Ca contor de timp, în circuitul microcontrolerului intern este utilizat un temporizator de 16 biți cu un divizor cu 256. De îndată ce contorul intern numără până la 625, se declanșează o întrerupere. Prin urmare, vom avea întreruperi de 100 de ori pe secundă.

Intervalul de timp este luat în considerare în variabilele globale, iar fiecare întrerupere necesită o creștere a valorii milisecundelor cu una. De îndată ce numărul de milisecunde ajunge la 100, atunci trebuie să măriți valoarea secundelor cu una și zero milisecunde. Și așa mai departe, în conformitate cu același algoritm, până la zeci de ore, care se resetează doar la atingerea valorii de 24 și deja fără a crește următoarea cifră.

În conformitate cu acest principiu, creăm valoarea timpului curent înregistrat în variabile globale. Acum trebuie să afișăm vizual aceste date. Deoarece microcontrolerul are un număr limitat de porturi, vom folosi o astfel de caracteristică precum inerția indicatorului de segment digital sa15-11gwa. Catozii indicatorilor săi sunt conectați în paralel, iar anozii au control separat, ceea ce face posibilă afișarea unei cifre pe oricare dintre cei patru indicatori în orice moment.

Prin comutarea rapidă a portului microcontrolerului la care sunt conectați toți catozii și comutarea rapidă a anozilor, se creează iluzia de a afișa toate cele patru cifre în afișajul segmentului, deși de fapt doar unul dintre segmente funcționează. Daca ora curenta este 11:57, atunci mai intai afisam numarul unu pe indicatorul din prima ora, dupa 1 ms afisam numarul 1 pe al doilea indicator, dupa inca 1 ms afisam indicatorul 5 cu 3, dupa 1 ms vom afișați 7 pe indicatorul 4 și așa mai departe în mod ciclic, actualizând fiecare indicator după 1 ms.

Starea butoanelor de control al ceasului este interogata la sfârșitul fiecărui ciclu de afișare de aproximativ 40 de ori pe secundă.

Desenul plăcii de circuit imprimat realizat în program și firmware-ul pentru microcontroler sunt descărcate din linkul de mai sus. și direct despre complexitățile firmware-ului, citiți aici.

Acest design, deși pe un alt tip de microcontroler, nu este mai puțin complicat decât circuitul anterior.


Algoritmul firmware-ului este, de asemenea, simplu în arhivă există comentarii foarte detaliate despre codul programului. Două comutatoare kn1 și kn2 sunt proiectate pentru a corecta timpul - ore și minute. Precizia ceasului depinde de frecvența cuarțului utilizat.

Structural, ceasul este realizat pe două plăci de circuite imprimate situate una lângă alta la un unghi de 90 de grade. Indicatorul este situat pe prima placă, iar restul componentelor electronice pe a doua. Putere de rezervă în rolul căreia se folosesc trei baterii plasate într-un suport de la o veche brichetă chinezească cu LED. Pentru alimentarea cu curent alternativ, orice curent de 5V și 150mA este potrivit.


Arhiva pe care o puteți descărca de pe linkul verde conține aspectul ambelor plăci de circuite imprimate în programul Sprint Layout și firmware-ul pentru microcontrolerul PIC cu codul sursă al programului sub MP_LAB IDE, cu comentarii detaliate.

Și programul în sine, îl găsiți și aici

În acest design, are o corecție digitală a preciziei cursei, precum și un termometru încorporat, care afișează alternativ cu ora exactă citirile de temperatură pe afișajul LED. Designul ceasului folosește memoria nevolatilă a microcontrolerului, care păstrează setările și setările chiar dacă alimentarea externă este pierdută.


Pentru a controla anozii indicatoarelor LED, comutatoarele cu tranzistori sunt utilizate conform schemei standard de comutare.

Când este pornit pentru prima dată, pe ecran apare o stropire publicitară timp de o secundă. Apoi este afișată ora. Apăsarea butonului SET_TIME comută indicatorul într-un cerc din modul principal de ceas:

Absolut, în toate celulele ținând apăsat butoanele PLUS / MINUS, se realizează o instalare accelerată. Dacă setările au fost modificate de utilizator, atunci după 10 secunde noile valori sunt salvate în memoria nevolatilă a microcontrolerului și vor fi citite. când clipim MK, îl setăm după cum urmează:


Puteți evalua performanța externă a dispozitivului din fotografiile de mai jos, firmware-ul și fișierele suplimentare pentru design pot fi descărcate din linkul de mai sus.


Firmware-ul ceasului cu alarmă implementează programe de schimb: 4/5 (patru la a cincea) - 4 zile în 1 schimb, 1 zi liberă, 4 zile în 2 schimburi, 1 zi liberă, 4 zile noaptea, 1 zi liberă; - zi, noapte, 2 zile libere; În zilele lucrătoare - luni-vineri - zile lucrătoare, sâmbătă-duminică - zi liberă; (Sărbătorile nu sunt luate în calcul); Zilnic.

Utilizatorul însuși alege tipul ceasului cu alarmă și setează oricând pentru activare. În opțiunile 4/5 și zi, noapte, 2 zile libere - trebuie să selectați suplimentar tura curentă.

În plus, în firmware-ul MK sunt implementate următoarele funcții: Trecere la perioada vară-iarnă; Corectarea timpului; Ceas deşteptător cu accelerare; Afișarea zero în cifra orelor și în cifra datei

Circuitul de ceas se bazează pe microcircuitul de ceas DS1307 și microcontrolerul MEGA8. Circuitul (arhivat cu firmware MK și desene cu circuite imprimate) este proiectat pentru utilizarea indicatoarelor digitale cu șapte segmente cu un anod comun pentru o tensiune de 5V. (ATENȚIE! În diagramă, pentru simplitate, rezistențele de balast nu sunt desenate. Acestea trebuie instalate pe fiecare segment al indicatoarelor. În total 112 buc. Evaluarea este calculată conform documentației. În am folosit indicatoare de segment ale fys15011 și tipurile fyd-5622. sunt indispensabile comutatoare suplimentare cu tranzistori.

Desenul plăcii de circuit imprimat a fost dezvoltat pentru o cutie deja existentă dintr-un ceas vechi stricat. La conectorul de alarmă poate fi conectată o sarcină de putere redusă, de exemplu, o cartelă muzicală, iar prin jumperul JP1 deconectam beeper-ul intern. Microcontrolerul poate fi flashat direct pe placă, ceea ce facilitează foarte mult configurarea în cazul unei modificări a designului.

Setarea ceasului
Pentru a face acest lucru, intrați în modul de setare a parametrilor:
Parametru-Valoare- Stocare în memorie
P.01 - CEAS [-]
P.02 - MINUTE [-]
P.03 - ZIUA [-]
P.04 - LUNA [-]
P.05 - AN [-]
R.06 - Ceas deşteptător tip [+] (1-4 / 5; 2-5 / 8; 3-program feroviar; 4-zi)
P.07 - MODIFICARE [+]
P.08 - Bud.1.HH [+]
P.09 - Bud.1.MM [+]
P.10 - Bud.2.HH [+]
P.11 - Bud.2.MM [+]
P.12 - Bud.3.HH [+]
P.13 - Bud.3.MM [+]
P.14 - Corecție (D.Ch) [+]
P.15 - Perioada de vară / iarnă [+]
P.16 - Beeper de accelerare [+]
P.17 - Afișează zero nesemnificativ în cifra orelor [+]
P.18 - Afișează zero nesemnificativ în cifra datei [+]

Setarea alarmei: Cu butonul Pornit/Pornit Bud. - On / On se efectuează, în acest caz: Cu tipul ceasului cu alarmă 1: Bud.1 - 1 schimb; Bud.2 - schimb; Mug 3 - schimbul 3;
Program ture: 1,2,3,4 - primul schimb; 5 - zile libere; 6,7,8,9 - al doilea schimb; 10 - zile libere; 11,12,13,14 - 3 schimburi; 15.16 - zi liberă; Apoi zilele se repetă.
Pentru primul tip de ceas cu alarmă 2: Alarmă 1 - setează ora alarmei; Bud.2, Bud.3 - nu funcționează; Programul schimburilor: în zilele lucrătoare.
Cu al treilea tip de alarmă: Bud.1 - ora este setată la zi; Bud.2 - stabilește ora de noapte; Bud.3 - nu funcționează;
Program ture: - zi, noapte, 2 zile libere; Când tipul ceasului cu alarmă este 4 Bud.1, Bud.2, Bud.3 - ora este setată; Dacă intenționați să utilizați un singur ceas cu alarmă, setați ora de trei să fie aceeași.
Cu programul turelor: Zilnic. Dacă apăsați butoanele Off. în modul de setare a parametrilor, setările vor fi ieșite fără salvare.
Ajustare: La corectare se aplică următoarea metodă: +/- BH, unde: H este numărul de secunde de corectat pe oră (max 9). D - secunde ajustate pe zi. ATENŢIE! Nu se face nicio ajustare când alimentarea este oprită. La pornire - verificați ora corectă.

Acest ceas a fost deja revizuit de mai multe ori, dar sper că recenzia mea va fi interesantă și pentru tine. S-au adăugat descrierea postului și instrucțiuni.

Designerul a fost cumpărat de pe ebay.com pentru 1,38 lire sterline (0,99 + 0,39 de transport), ceea ce este echivalent cu 2,16 dolari. În momentul achiziției, acesta este cel mai mic preț oferit.

Livrarea a durat aproximativ 3 săptămâni, setul a venit într-o pungă obișnuită de plastic, care, la rândul său, a fost ambalată într-o pungă mică „bubble”. Pe bornele indicatorului era o bucată mică de spumă, restul pieselor erau fără nicio protecție.

Din documentație, doar o mică bucată de format A5 cu o listă de componente radio pe o parte și o diagramă schematică pe cealaltă.

1. Schema circuitului, piese utilizate și principiu de funcționare



Baza sau „inima” ceasului este un microcontroler CMOS de 8 biți AT89C2051-24PU echipat cu ROM Flash programabil și șters de 2KB.
Ansamblu generator de ceas asamblat conform schemei (Fig. 1) și este format dintr-un rezonator cu cuarț Y1 din doi condensatori C2 și C3, care formează împreună un circuit oscilator paralel.


Prin modificarea capacității condensatoarelor, este posibilă modificarea frecvenței generatorului de ceas în limite mici și, în consecință, a preciziei ceasului. Figura 2 prezintă o variantă a circuitului generator de ceas cu capacitatea de a regla eroarea ceasului.

Nodul de resetare inițial servește la setarea registrelor interne ale microcontrolerului la starea inițială. Acesta servește la furnizarea, după conectarea alimentării la 1 ieșire a MC, a unui singur impuls cu o durată de cel puțin 1 μs (12 perioade de ceas).
Constă dintr-un circuit RC format dintr-un rezistor R1 și un condensator C1.

Schema de intrare constă din butoanele S1 și S2. Este realizată programatic astfel încât atunci când apăsați pe oricare dintre butoane, în difuzor se aude un singur semnal, iar când țineți apăsat, un semnal dublu.

Modul de afișare asamblat pe un afișaj cu patru cifre și șapte segmente cu un catod comun DS1 și un ansamblu rezistiv PR1.
Un ansamblu de rezistență este un set de rezistențe într-un singur pachet:


Partea audio circuitul este un circuit asamblat pe un rezistor R2 10kOhm, un tranzistor pnp Q1 SS8550 (acționând ca un amplificator) ​​și un element piezoelectric LS1.

Nutriție alimentat prin conectorul J1 cu condensatorul de netezire C4 conectat în paralel. Gama de tensiune de alimentare de la 3 la 6V.

2. Asamblarea constructorului

Asamblarea nu a creat dificultăți, a fost semnat pe placă unde să lipiți ce piese.

Multe imagini - ansamblul constructorului este ascuns sub spoiler

Am început cu panoul, deoarece este singurul care nu este o componentă radio:

Următorul pas este să lipiți rezistențele. Este imposibil să le confundați, ambele sunt la 10kΩ:


După aceea, am instalat un condensator electrolitic, un ansamblu de rezistență (atenție și la prima ieșire) și elemente generatoare de ceas pe placă, respectând polaritatea - 2 condensatoare și un rezonator cu cuarț

Următorul pas este să lipiți butoanele și condensatorul filtrului de putere:

După aceea, este rândul pentru elementul piezoelectric sonor și tranzistorul. În tranzistor, principalul lucru este să îl setați pe partea dreaptă și să nu încurcați concluziile:

În sfârșit, lipim indicatorul și conectorul de alimentare:

Il conectez la o sursa de 5V. Totul merge!!!


3. Setarea orei curente, a alarmelor și a semnalului orar.

După pornirea alimentării, afișajul este în modul ("ORE: MINUTE") și afișează ora implicită 12:59. Soneria orară este activată. Ambele alarme sunt pornite. Primul este setat la 13:01, iar al doilea la 13:02.


La fiecare apăsare scurtă pe S2, afișajul va comuta între (ORE: MINUTE) și (MINUTE: SECONDE).
Apăsarea îndelungată a butonului S1 intră în meniul de setări, care constă din 9 submeniuri marcate cu literele A, B, C, D, E, F, G, H, I. Submeniurile se comută cu butonul S1, valorile sunt modificate cu butonul S2. Submeniul I este urmat de ieșirea din meniul de setări.

R: Setarea ceasului curent
Apăsarea butonului S2 schimbă valoarea orei de la 0 la 23. După setarea orelor, apăsați S1 pentru a merge la submeniul B.

B: Setarea minutelor orei curente


C: Porniți soneria orară
Valoarea implicită este ON - la fiecare oră de la 8:00 la 20:00 se aude un bip. Apăsarea S2 schimbă valoarea între ON și OFF. După setarea valorii, apăsați S1 pentru a merge la submeniul D.

D: Porniți/dezactivați prima alarmă
În mod implicit, alarma este ON. Apăsarea S2 schimbă valoarea între ON și OFF. După setarea valorii, apăsați S1 pentru a merge la următorul submeniu. Dacă alarma este oprită, submeniurile E și F sunt sărite.

E: Setați ceasul pentru prima alarmă
Apăsarea butonului S2 schimbă valoarea orei de la 0 la 23. După setarea orelor, apăsați S1 pentru a merge la submeniul F.

F: Setați minutele primei alarme
Apăsarea butonului S2 schimbă minutele de la 0 la 59. După setarea minutelor, apăsați S1 pentru a merge la submeniul C.

G: Porniți/dezactivați a doua alarmă
În mod implicit, alarma este ON. Apăsarea S2 schimbă valoarea între ON și OFF. După setarea valorii, apăsați S1 pentru a merge la următorul submeniu. Dacă alarma este oprită, se omite submeniurile H și I și se iese din meniul de setări.

H: Setați al doilea ceas cu alarmă
Apăsarea butonului S2 schimbă valoarea orei de la 0 la 23. După setarea orelor, apăsați S1 pentru a merge la submeniul I.

I: Setarea minutelor celei de-a doua alarme
Apăsarea butonului S2 schimbă minutele de la 0 la 59. După setarea minutelor, apăsați S1 pentru a ieși din meniul de setări.

Corectarea secundelor
În modul ("MINUTE: SECONDE"), trebuie să țineți apăsat butonul S2 pentru a reseta secundele. Apoi, apăsând scurt butonul S2, începeți numărătoarea inversă a secundelor.

4. Impresii generale ale ceasului.

Pro:
+ Preț mic
+ Asamblare ușoară, mai puține piese
+ Plăcerea de a se auto-asambla
+ Eroare destul de mică (eram în urmă cu câteva secunde pe zi)

Minusuri:
- După oprire, alimentarea nu ține timp
- Lipsa oricărei documentații, cu excepția schemei (acest articol a rezolvat parțial acest minus)
- Firmware-ul din microcontroler este protejat de citire

5. În plus:

1) Pe întinderile nesfârșite ale internetului, am găsit instrucțiuni pentru acest ceas în engleză și l-am tradus în rusă. Îl poți descărca

Top articole similare