Cronometru de bucătărie bazat pe microcontrolerul ATtiny13. Temporizator - pur și simplu nu devine mai mic. Temporizator ciclic de făcut-o singur pe un microcontroler

Uneori trebuie doar să setați un interval de timp, fără prea multă precizie microscopică. De exemplu, pentru gătit, unde eroarea este de câteva secunde pe jumătate de oră, ora nu joacă un rol important. Pe baza acestor considerații, a fost selectat un oscilator RC intern ca generator de ceas. A cărui stabilitate depinde de temperatură și de modificările tensiunii de alimentare, deoarece microcontrolerul rămâne operațional la o tensiune de 1,8-5,5 V. Am folosit o baterie de 3 volți (sau 2 celule de 1,5 V fiecare) ca sursă de alimentare.

Scopul a fost de a simplifica cât mai mult proiectarea cu un minim de părți externe și elemente de control și afișare (cât mai simplu). Programul este scris în assembler în AVR Studio.

Există o pereche de butoane pentru a controla modurile temporizatorului. Primul „SET” este pentru setarea intervalului de timp, al doilea „RESET” este pentru resetarea în orice moment dacă trebuie să „reluați” situația și să setați un interval de timp diferit. Și, de asemenea, un buzzer sonor, ca indicație sonoră a stării cronometrului la diferite perioade de funcționare.

Cronometrul este realizat cu un interval discret de minim 5 minute; puteți forma câte astfel de intervale doriți (până la 255) dacă țineți apăsat butonul.

Schema schematică a unui cronometru de bucătărie:

După eliberarea butonului, cronometrul pornește și numără invers. Cronometrul are o indicație sonoră (ochii și mâinile nu participă la control, doar auzul), atunci când este instalat, emite „bipuri” de câte ori este nevoie pentru a forma 5 minute. intervale. De exemplu: aveți nevoie de un interval de 30 de minute, ceea ce înseamnă că trebuie să apăsați butonul „SET” și să-l țineți apăsat, să formați „beeps” de 6 ori și să eliberați butonul. Din momentul în care butonul „SET” este eliberat, indicatorul LED se aprinde, indicând că temporizatorul a pornit și se stinge abia la sfârșitul întregului ciclu, de asemenea, din momentul în care începe, începe numărătoarea inversă, soneria " bip-uri" după următorul interval discret de 5 minute de atâtea ori câte dintre ele au rămas înainte de încheierea ciclului complet al cronometrului. Și când întregul ciclu este finalizat, la sfârșitul ciclului se aude un semnal lung de „bip” timp de aproximativ 10 secunde, semnalând sfârșitul.

După aceasta, cronometrul intră în modul de așteptare prin trecerea la comanda de repaus în modul Power down, cu economie de energie, unde consumul de curent este mai mic decât un microamperi.Programul folosește un generator RC intern a cărui frecvență de ceas este selectată la 128 / 8 kHz .

O diagramă simplă a unui cronometru bun pe atmega8 MK, navigare ușoară în meniu, afișaj LCD cu cristale lichide, ceas în timp real, număr minim de piese.

Un lucru foarte util, de exemplu, pentru o seră, puteți organiza udarea sau circulația în hidroponie, puteți amenaja hrănitori și boluri de băut pentru animale, păsări și multe altele.


Inima acestui cronometru este microcontrolerul Atmega8 foarte popular și nu mai scump.

Desigur, pentru firmware vom avea nevoie de un programator, dar dacă nu avem unul, ne putem descurca cu doar 4 fire conectate la portul LPT conform acestei scheme.

Ce ne trebuie:

Circuitul cronometrului

După cum puteți vedea, nu există un circuit de alimentare și un actuator pe el, acest lucru se datorează faptului că puteți decide să utilizați o sursă de alimentare externă stabilizată și, de asemenea, nu știți ce sarcină intenționați să conectați, așa că fiecare trebuie să aleagă singur actuatorul pentru a se potrivi cerințelor lor tehnice.

Ca o opțiune pentru un actuator care utilizează triac, tiristoare și triac, acestea sunt prezentate mai jos.



Opțiune din programul Sprint Layout.

O atenție deosebită trebuie acordată la instalarea cipului de ceas și a elementului de cuarț. Lungimea pistelor dintre ele ar trebui să fie minimă, dar este mai bine să folosiți micro quartz de la un ceas de mână și să-l lipiți direct pe picioarele MC ale ceasului. Umplem tot spațiul liber de lângă ceas cu cupru pentru carcasă. Bateria este necesară pentru a menține ceasul în funcțiune când este deconectat. Dacă dintr-un motiv oarecare nu ați instalat această baterie, atunci conectați firul pozitiv la carcasă, altfel ceasul pur și simplu nu va funcționa.

Microcontrolerul este flash cu un programator sau folosind simple 5 fire.

Autorul firmware-ului (descărcare - multitimer) a făcut tot posibilul și nu a schimbat siguranțele, ceea ce face foarte ușor, fără probleme, instalarea firmware-ului pentru un radioamator începător. Dacă MK nu a fost încă folosit, este nou din magazin, atunci doar încărcați firmware-ul și gata, dar dacă există deja modificări ale siguranțelor, atunci trebuie să le setați ca CKSEL=0001. Orice altceva este simplu și nu are nevoie de explicații.

Este foarte convenabil să folosiți cutii de joncțiune din plastic pentru carcasă; acestea vin în diferite dimensiuni și forme.

Folosind lipici fierbinte de la un pistol, fixăm ecranul LCD în capacul tăiat cu un cuțit, tăiem găuri pentru butoanele de control și butonul de pornire.

Asezam toate componentele in interiorul carcasei, verificand in mod constant modul in care se inchide capacul si, daca este necesar, mutam sau indoim pe cele care stau in cale.

Alimentam circuitul asamblat, ar trebui să apară următoarea imagine.

Controlul se realizează prin patru butoane. Meniul este format din trei elemente, CLOSK - setarea ceasului, RESET - resetarea tuturor temporizatoarelor instalate, TIMER - setarea temporizatoarelor.

Mai întâi, accesați (*) la meniul ceas și setați (>)(<)(#) точное время.


Un indiciu despre butoanele de control se află în linia de jos a afișajului; fiecare meniu este diferit, deci nu este nevoie să descrieți butoanele.

Acum totul este gata pentru a seta corect pozițiile temporare ale cronometrului; după apăsarea lire sterline, programul este scris în memoria permanentă a MK.

Am vrut să o fac pentru toate ocaziile, diferite intervale de timp la discreția utilizatorului. Aceasta este opțiunea. Există doar două butoane de control și un comutator jumper (jumper), două LED-uri care afișează modurile de instalare și funcționare ale temporizatorului, precum și controlul sunetului este efectuat de un emițător piezoceramic (dacă nu este necesar, nu îl puteți conecta, controlând procesul prin clipirea LED-ului D2).

Un buton (conform schemei S1) este „SET” pentru setarea tuturor modurilor (vom face totul cu un singur buton, de ce avem nevoie de o grămadă de butoane și comutatoare diferite?), iar al doilea buton (conform schemei S2) este „RESET”, care vă va permite să opriți temporizatorul în orice moment, aducându-l la starea inițială și oprind releul.

Algoritm de lucru

Intervalul de timp al cronometrului se formează prin înmulțirea a două numere: primul număr (multiplicand) este intervalul format în minute de la 1 la 255, iar al doilea număr (multiplicator), care, înmulțit cu primul număr pe care l-ai format, va forma ora specificată a temporizatorului.

EXEMPLU

Să presupunem că trebuie să formem 1 oră = 60 de minute, având în vedere că intervalul minim de timp discret al cronometrului = 1 minut, putem forma acest interval în mai multe moduri, de exemplu, primul număr = intervale de 10 minute, formăm primul număr în timp ce țineți butonul apăsat astfel încât (LED-ul clipește de 10 ori sau soneria emițătorului piezo „bip”). După ce ați format numărul dorit, eliberați butonul, după care cronometrul va repeta numărul pe care l-ați format (prin aprinderea intermitentă a LED-ului și „clipind” emițătorului piezo) numărul de ori format, când D2 se stinge, după care al doilea LED D1 începe să clipească intermitent. Aceasta înseamnă că setul primului număr a fost acceptat, dar instalarea nu a fost încă finalizată, trebuie să continuăm instalarea (în acest moment, când D1 clipește, puteți închide contactele jumperului S3 și le lăsați în poziție închisă, cu această acțiune vom scrie setările noastre în memoria nevolatilă a microcontrolerului EEPROM, care va fi stocată acolo până când se înregistrează un alt interval de timp în locul celui anterior.Acest lucru este convenabil dacă aveți nevoie de un interval de timp pe care îl aveți În timp ce jumperul (jumperul S3) este închis, temporizatorul va scoate doar acest interval de timp pe care l-ați înregistrat (pentru a nu forma din nou de fiecare dată) și va fi salvat în memorie când dispozitivul este complet dezactivat.

Al doilea număr pe care trebuie să-l alegeți este multiplicatorul (introdus după primul). Pentru a forma o oră, aceasta trebuie apoi să fie egală cu 6 (10 minute x 6 = 60 = 1 oră).

Procedura de formare este aceeași ca la setarea primului număr, ținând apăsat butonul și numărând șase clipiri în timp cu LED-ul D2 care clipește. După care, eliberați butonul, imediat după ce pentru a confirma că numărul a fost acceptat, indicația D2 va clipi și va bip din nou de 6 ori, apoi LED-ul D1 va începe din nou să clipească intermitent. Aceasta înseamnă că al doilea număr a fost acceptat și cronometrul este gata să pornească.

START

Pentru a porni cronometrul, trebuie să apăsați butonul „SET” a treia oară, ținând apăsat aproximativ o secundă, D2 va clipi imediat (voce) pentru ultima dată pentru a vă aminti numărul de intervale pe care le-ați format, și apoi releul se va porni și modul de indicare D1 va trece de la o stare intermitent la o stare aprinsă constant până la sfârșitul ciclului, D2, după următorul interval format, va clipi și va emite un semnal sonor.

De câte ori mai sunt până la sfârșitul intervalului de timp total pe care l-ați colectat? După fiecare (scris în exemplu) 10 minute care au trecut, LED-ul va clipi de câte ori au rămas intervale de 10 minute din 6 în ordine descrescătoare (de 5 ori apoi 4 apoi 3..2..1 și terminați) . La sfârșitul întregului ciclu de o oră, releul va opri sarcina. LED-ul D1 se va stinge, iar D2 și soneria vor rămâne în continuare aprinse timp de aproximativ 8 secunde, indicând că ciclul este încheiat.

Există o mulțime de opțiuni pentru setarea unui interval orar în cronometru. De exemplu, formați, primul număr este minut = 1, iar al doilea = 60. Apoi, în fiecare minut, LED-ul va clipi de atâtea ori câte minute au mai rămas până la sfârșit, sau puteți face ca primul număr = 6 minute și al doilea = 10, restul prin analogie cu exemplele de mai sus.

Aceasta este o opțiune atât de universală pentru diferite gusturi, de aceea se numește „UNIVERSAL”. De fapt, cronometrul îl programezi singur la discreția ta, cu opțiunea și frecvența de afișare dorite.

Dacă, folosind un temporizator, trebuie să formați intervale diferite de fiecare dată, atunci nu trebuie să închideți jumperul S3. Și dacă aveți nevoie de un cronometru pentru un interval de timp constant, atunci este indicat să introduceți acești parametri o dată, scriindu-i în memoria EEPROM a microcontrolerului, pe care îl veți programa singur procedând astfel.

Este necesar să setați (închideți jumperul S3) NUMAI în perioada de după formarea primului sau a celui de-al doilea număr, când D1 clipește (nici mai devreme, nici mai târziu), iar după aceea lăsându-l închis în mod constant, în timpul funcționării ulterioare, după aceea, de fiecare dată când pornește temporizatorul, apăsarea butonului „SET” va porni imediat releul, iar soneria și D2 vă vor reaminti cu o indicație despre câte perioade de timp mai aveți până la sfârșitul când releul se oprește.

Detalii

Am încercat simplitate maximă, un minim de detalii și setări, rezultatul a fost: o pereche de LED-uri, un emițător buzzer-piezo, un releu de control al tranzistorului, un releu de 12 volți care va porni sarcina, un cip stabilizator 7805, un Procesor ATtiny 13 (cu orice literă din această serie), da și asta e tot, poate.

Circuitul va fi alimentat de la o sursă de 12 V. Îl rulez pe o placă, totul funcționează perfect până acum. Dacă doriți să faceți soneria să sune mai tare, ar trebui să adăugați o etapă de amplificare pe un tranzistor, similar cu circuitul din articolul anterior „cronometru de bucătărie”.

Programarea microcontrolerelor

ATENŢIE!!!
Un punct foarte important, am folosit cea mai mică frecvență de ceas a oscilatorului intern din microcontroler, aceasta este 128 kHz / 8 = 16 kHz. Aceasta este stabilită de siguranțe în timpul programării (atașez o fotografie, unde trebuie să verificați ce casete) .

De ce ai ales aceasta frecventa? Da, am vrut))) și rescriu programul pentru o altă frecvență de ceas, atunci a fost un eșec. Și nu există niciun motiv, totul funcționează. Mi se potriveste. Depinde de dvs. să decideți dacă să repetați singur acest design sau nu.

Deci, atunci când utilizați un programator cu modul ISP (cum ar fi STK 200 etc.), care sunt cel mai adesea folosite pentru programarea microcontrolerelor AVR.

Microcontrolerul dumneavoastră va fi programat cu firmware-ul meu O dată!!! Se va putea reprograma din nou doar folosind programarea paralelă de înaltă tensiune sau prin revenirea, suprascrierea, a setărilor din fabrică (te avertizez din timp!).

Puteți reveni la setările din fabrică folosind un programator cu capacitatea modului H/V. (programare de înaltă tensiune). Folosesc un programator cu acest mod în STK 500. Dar dacă sunteți sigur că veți face acest cronometru, atunci prima dată firmware-ul va fi „încărcat” de la orice programator și nu vor fi probleme.

În viitor, plănuiesc să postez un articol cu ​​o diagramă a dispozitivului „reanimator” ATtiny13, doar pentru astfel de cazuri. Ceea ce va rezolva această problemă prin rescrierea setărilor originale din fabrică în microcontrolerul „blocat” din nou, fără a implica programatori cu modul paralel de programare de înaltă tensiune.

FIRMWARE

Postez 2 firmware-uri. Ambele funcționează, dar în scopuri diferite. Unul pentru completarea Proteus, (TIMER_PROTEUS.hex). Un alt (TIMER_UNIVERSAL.hex) pentru programarea unui microcontroler real cu un programator. Diferența dintre ele este mică, pur și simplu va exista o eroare în acuratețea temporizatorului dacă încărcați firmware-ul greșit.

Postez modelul în Proteus și firmware-ul pentru încărcare în proiect. Unde în timp real dispozitivul emite funcționarea unui cronometru în același mod în care ar arăta într-un dispozitiv real. În Proteus puteți vedea clar cum prima celulă cu adresa 0x00 pentru primul număr și adresa 0x01 pentru numărul multiplicator va fi programată în EEPROM.

Poate că, înainte de a începe asamblarea dispozitivului, merită să „jucați” cu un model virtual al acestui „Cronometru universal” în Proteus pentru a înțelege cum funcționează acest cronometru (se emite și sunetul de la sonerie, îl puteți asculta din sunet). card prin difuzoare).

Acesta este un circuit de cronometru pe un microcontroler PIC16F628A, împrumutat de la un bun site portughez de electronice radio. Microcontrolerul este tactat de la un oscilator intern, care poate fi considerat destul de precis pentru acest moment, deoarece pinii 15 și 16 rămân liberi, puteți folosi un rezonator extern de cuarț pentru o precizie și mai mare în funcționare.


Cronometrul are trei butoane pentru a controla dispozitivul: „START/STOP”, „MIN” și „SEC”

"START STOP"- pentru a porni și întrerupe cronometrul.
„MIN”- pentru a seta intervalul de timp în minute. Poate fi setat de la 0 la 99.
SEC- la fel, dar pentru a seta secunde. Al doilea poate fi, de asemenea, setat de la 0 la 59.
Apăsarea simultană a butoanelor „MIN” și „SEC” va reseta circuitul temporizatorului în timpul funcționării.

Când timpul setat pe cronometru este epuizat, se va auzi un bip și LED-ul se va aprinde. Un sonerie de tip electromagnetic este folosit ca emițător de sunet. După aceasta, când apăsați butonul, temporizatorul va fi resetat și LED-ul se va stinge.

În timp ce temporizatorul efectuează numărătoarea inversă, pinul 13 este ridicat, iar când temporizatorul își finalizează numărătoarea inversă, nivelul logic va fi scăzut. Această ieșire poate fi utilizată pentru a controla orice actuator. Circuitul este alimentat printr-o sursă de curent stabilizată.


Jumperul J1 este folosit pentru a calibra cronometrul. Când este închis, intră în modul de programare. Folosind butoanele „MIN” și „SEC” puteți modifica valoarea parametrului intern care încetinește sau accelerează cronometrul. Această valoare este stocată în EEPROM-ul microcontrolerului. Dacă apăsați butonul „START/STOP” în modul de programare, acest parametru va fi resetat la setările implicite.

Temporizator simplu pe pic16f630

Cronometrul poate fi setat la un interval de timp de la un minut la 21 de ore în pași discreti pe minut. Designul are 12 comutatoare de control, fiecare dintre ele având propriul timp de menținere. Deoarece microcontrolerul funcționează de la propriul generator, eroarea de numărare a timpului este destul de mică, nu mai mult de 30 de secunde pe oră.

Când se afișează firmware-ul MK, Jp1 trebuie să fie dezactivat. Dacă nu intenționați să schimbați des setările de timp, puteți utiliza jumperi în loc de comutatoare. Firmware-ul, sursa și proiectul din Proteus pot fi descărcate din linkul de mai sus

Temporizatorul este proiectat pentru pornirea unică sau periodică a unei sarcini DC cu o tensiune de 8 până la 12V, un curent de cel mult 1A. Cronometrul este alimentat de la aceeași sursă de alimentare ca și sarcina. Timpul este stabilit prin setarea jumperului și poate fi de 5 minute, 10 minute, 20 de minute sau 40 de minute.

Puteți selecta, prin instalarea unui alt jumper, unul dintre moduri - activare unică sau activare periodică. În primul caz, sarcina este pornită după un timp specificat. Și rămâne aprins atâta timp cât există putere. În cel de-al doilea mod, încărcarea este pornită și oprită periodic - se pornește după un timp specificat, apoi se oprește după aceeași oră. Și asta se repetă ciclic.

Cronometrul este pornit folosind un buton. Numărătoarea inversă începe din momentul în care acest buton este eliberat. Sursa impulsurilor de ceas este un LED intermitent. Frecvența clipirii sale determină intervalele de timp. LED-ul autorului a clipit la o frecvență de aproximativ 1,7 Hz.

În același timp, sunt indicate intervale de timp de aproximativ 40, 20, 10 și 5 minute; de ​​fapt, acestea sunt cu câteva secunde mai scurte. Prin urmare, nu are sens să folosiți acest cronometru acolo unde este necesară respectarea strictă și precisă a intervalelor de timp. Este potrivit doar acolo unde nu este necesară o precizie prea mare, de exemplu, în diferite jocuri sportive militare.

Diagramă schematică

Circuitul se bazează pe microcircuitul CD4040 (analog cu K561IE20), un numărător binar de 12 biți. Sursa impulsurilor de ceas este LED-ul HL1 care clipește. Jumper L este folosit pentru a selecta un interval de timp (afișat în poziția „40 de minute” din diagramă). Jumperul J2 este utilizat pentru a selecta modul (prezentat în diagramă în poziția de comutare unică a sarcinii).

Orez. 1. Schema schematică a unui temporizator (releu de timp) pentru controlul unei sarcini de joasă tensiune cu un curent de până la 1A.

După ce contorul D1 este resetat, toate ieșirile sale sunt zerouri logice. Și tensiunea zero prin jumperul L este furnizată la poarta tranzistorului cu efect de câmp VT1, care comută sarcina. Prin urmare, este închis și nu trece curent la sarcină.

În poziția indicată în diagramă, curentul este furnizat prin jumperul J2 și rezistența R2 către LED-ul intermitent de la ieșirea microcircuitului D1. LED-ul HL1 clipește, creând impulsuri de curent și tensiune de-a lungul circuitului său de alimentare. Impulsurile de tensiune prin lanțul R3-C1 sunt furnizate la intrarea contorului. După eliberarea butonului S1, contorul începe să numere aceste impulsuri.

După un anumit timp, apare unul logic la ieșirea contor la care este conectat jumperul L. În același timp, se aplică tensiune pe poarta tranzistorului cu efect de câmp VT1 și se deschide. Și prin J2, tensiunea de nivel logic ridicat este furnizată LED-ului HL1 care clipește, iar curentul prin acesta se oprește - nu mai clipește și nu mai generează impulsuri.

Circuitul se oprește aici. Dar, dacă jumperul J2 este în poziția inferioară, conform diagramei, atunci rezistența R2 va fi conectată nu la ieșirea contorului, ci la minusul comun al sursei de alimentare. Prin urmare, contorul va continua să funcționeze. Și după același timp, va apărea un zero logic la ieșirea contor conectată la jumperul J1. Și tranzistorul VT1 se va închide, oprind sarcina. Și acest lucru se va repeta ciclic.

Piese și PCB

În loc de LED-ul indicat în diagramă, puteți utiliza orice LED intermitent într-o singură culoare, dar trebuie să țineți cont de faptul că frecvența lui de clipire poate fi diferită și, în consecință, intervalele de timp vor fi și ele diferite. Ca bază pentru jumperii este folosită o priză pentru un microcircuit cu 14 pini. Două contacte au fost eliminate din acesta.

Orez. 2. Placă cu circuite imprimate pentru circuitul temporizatorului.

Patru pini funcționează pentru jumperul J2 și opt pini funcționează pentru jumperul J1. Instalarea se realizează pe o placă de circuit imprimat, prezentată schematic în figură. Alimentarea poate fi de la 5 la 15V.

Gordeev I. RK-2017-05.

Acțiune