Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Programe
  • Temporizator cu mai multe programe pe microcontrolerul pic16f628a. Temporizator de bucătărie simplu pe PIC16F628A

Temporizator cu mai multe programe pe microcontrolerul pic16f628a. Temporizator de bucătărie simplu pe PIC16F628A

Microcontrolerele au un lucru util - un cronometru. Cronometrul poate fi folosit ca contor sau folosit pentru a genera impulsuri de o anumită lungime (PWM). Folosind un cronometru, puteți, de exemplu, să construiți un ceas sau un generator.

Familia de microcontrolere 16 are 3 temporizatoare: TRM0, TRM1 și TRM2. Fiecare dintre ele este mai potrivit pentru un anumit tip de muncă. Să aruncăm o privire mai atentă la aceste cronometre:

  • Temporizator pe 8 biți (numărează de la 0 la 255)
  • tactat de la frecvența sistemului sau de la o sursă externă
  • contează pe marginea ascendentă sau descendentă a semnalului
  • Prescaler pe 8 biți
  • întreruperea este generată la depășire (când treceți de la 255 la 0)
  • temporizatorul rulează constant

Acest cronometru poate fi folosit pentru a genera impulsuri de o anumită lungime sau pentru a număra impulsurile primite.

OPTION_REG (OPȚIUNEîntr-un program).

  • Temporizator pe 16 biți (0..65535)
  • poate fi tactat atat de la o sursa de semnal externa cat si de la
  • cuarț de ceas suplimentar
  • prescaler maxim - 1:8
  • Cronometrul numără doar marginile de creștere ale semnalului
  • temporizatorul poate fi utilizat de modulul CCP
  • temporizatorul poate fi dezactivat

Aplicații similare cu TMR0.

Cronometrul este controlat de un registru T1CON.

  • Temporizator pe 8 biți
  • tactat numai de la frecvența sistemului
  • prescaler 1:1, 1:4, 1:16
  • temporizatorul poate fi dezactivat

Acest cronometru are un principiu de funcționare diferit. Cronometrul numără impulsurile de la zero la o valoare dată PR2. Odată ce TRM2 și PR2 se potrivesc, semnalul ajunge la postdivizorul de 4 biți și este generată o întrerupere. Acest sistem vă permite să generați frecvențe cu un pas minim. Cronometrul poate trimite semnale către CCP ca bază de sincronizare PWM.

Cronometrul este controlat de un registru T2CON.

Exemplu

Să trecem la codul de firmware. Exemplul folosește două contoare TRM0 pentru contorul de impulsuri de intrare și TRM1 pentru clipirea a 2 LED-uri.

Să pornim cronometrele TRM0 pentru contor și TRM1 pentru clipirea a 2 LED-uri.

INTCON=0b11100000; // Configurarea întreruperilor OPTION=0b00101000; // Configurarea TMR0 T1CON =0b00110001; // Configurarea TMR1 TMR1IE=1;

Codul principal al programului afișează doar valoarea contorului pe afișaj.

Void main() ( low_init(); // inițializați MK InitLCD(); // inițializați afișajul TMR0=0; // resetați temporizatorul TMR0 LED=0; // resetați variabila responsabilă pentru LED-uri while(1= =1) ( IntToLCD (0,0,TMR0); // afișează conținutul întârzierii temporizatorului (1000); // întârziere ) )

Acțiunea principală are loc în manipulatorul de întreruperi.

Void întrerupere isr(void) ( if(T0IF) // când TMR0 depășește ( T0IF=0; // resetați steag-ul despre overflow ) if(TMR1IF) // când TMR1 depășește ( LED++; // LED control if(LED>) 3 ) ( LED=0; ) PORTA=LED=0 // resetează steagul ) )

În handlerul primului cronometru TRM0: când acesta depășește, nu se întâmplă nimic util, doar steag-ul de overflow este resetat. Când al doilea timer TRM1 depășește: LED-urile se aprind într-un mod nou (un contor binar este afișat pe ele), iar al doilea indicator de depășire a temporizatorului este resetat.

Mai jos este o fotografie și un videoclip cu exemplele de cronometre care funcționează.

Acum un an și jumătate pe site-ul despre care am vorbit. Au venit comentarii în care au cerut înlocuirea indicatorilor cu catod comun cu indicatori cu anod comun. După dorințele mele, am rescris programul cronometrului. Dar nu au fost aduse modificări semnificative la circuitul electric al dispozitivului.

Pentru simplificarea programului, s-a decis schimbarea diagramei de conectare pentru LED-ul care indică pornirea temporizatorului. Ieșirea către LED a fost mutată de la pinul 13 al DD1, acesta este al șaptelea bit al portului B, la al cincisprezecelea pin - al șaselea bit al portului A. În caz contrar, circuitul a rămas același. Apropo, cred că nu este recomandabil să folosiți un tranzistor compozit de trei amperi KT973A în acest design și nu este întotdeauna la îndemână la momentul potrivit. Un tranzistor de putere redusă KT361G poate fi, de asemenea, potrivit pentru un amplificator de impulsuri de frecvență audio.


Puterea colectorului său este de 150 miliwați. Să ne uităm la masă. Dar poate fi crescut semnificativ dacă tranzistorul este completat cu un radiator, care poate fi realizat dintr-o bandă de cupru. Lățimea benzii este egală cu lățimea corpului tranzistorului, lungimea este arbitrară. Banda este îndoită conform fotografiei.


O clemă este făcută dintr-o bandă mai subțire, dar poate fi făcută și din aceeași bandă ca și radiatorul în sine. Radiatorul de căldură este plasat pe corpul tranzistorului prin pastă termoconductoare. Un radiator de înaltă calitate „se așează” pe corpul tranzistorului destul de ferm, iar puterea colectorului de tranzistori poate ajunge la 500... 700 de miliwați.


Și volumul sunetului cu o astfel de putere a tranzistorului este destul de suficient chiar și pentru încăperi mari. Mai mult, tranzistorul din acest circuit funcționează în modul impuls, iar eficiența este foarte mare. Dacă faceți o gaură într-una dintre părțile îndoite ale benzii, atunci un astfel de radiator poate fi atașat la placă folosind un șurub cu un diametru de 2... 3 mm. Îmi ia cinci minute să fac totul. Desenul plăcii de circuit imprimat poate fi descărcat din articolul anterior „

Acesta este simplu temporizator pe PIC16F628A poate fi folosit în bucătărie, și nu numai în bucătărie, ci oriunde este necesar să se numere o perioadă de timp de la 1 la 99 de minute. Baza este microcontrolerul PIC16F628A - destul de popular și nu scump. În articolele anterioare, au fost discutate, de exemplu, diferite modele ale acestui microcontroler.

Comenzile temporizatorului sunt un buton și un codificator rotativ. La sfârșitul numărătorii inverse, se aude un semnal acustic intermitent.

Descrierea funcționării unui temporizator simplu pe PIC16F628A

După ce circuitul temporizatorului este alimentat, timpul setat este afișat pe indicatoarele LED, LED-ul nu se aprinde. Prin rotirea butonului, este posibil să schimbați setarea timpului de la 1 la 99 de minute.

Circuit cronometru - indicatori catodici comuni

Circuit cronometru - indicatoare cu un anod comun

După setarea intervalului de timp necesar, trebuie să apăsați butonul, după care se va auzi un semnal acustic de scurtă durată, iar cronometrul va activa numărătoarea inversă a timpului, LED-ul va clipi, iar timpul de pe afișaj va scădea în fiecare minut.

După expirarea timpului, cronometrul va produce semnale acustice intermitente, LED-ul va fi aprins continuu. Prin apăsarea butonului, semnalul acustic este oprit și cronometrul revine la starea inițială, așteptând o nouă introducere a timpului. Aceasta a fost o descriere a modului în care a funcționat temporizatorul cu prima versiune de firmware.

A doua versiune funcționează în același mod ca prima, dar are câteva completări minore. În starea de selecție a timpului, dacă codificatorul nu este rotit timp de 2-3 secunde, pe indicator va apărea un screensaver de animație. Rotirea codificatorului sau apăsarea butonului dezactivează economizorul de ecran și modul de selecție a timpului este activat din nou.

Distribuie la:
Acesta este un alt meșteșug făcut din gunoi - un cronometru pentru bucătărie, deși nu neapărat pentru bucătărie. Am folosit piese care erau inactiv, în special indicatoare vechi ALS, rezistențe lipite de plăci vechi etc. Baza dispozitivului este microcontrolerul PIC16F628A, unul dintre cele mai comune și mai ieftine. Cronometrul este controlat folosind un valcoder și un buton. Intervalul de întârziere de la 1 la 99 de minute. La sfârșitul ciclului de sincronizare, este dat un semnal sonor intermitent. Există două firmware-uri în arhivă, primul este doar un cronometru, iar al doilea cu niște clopote și fluiere, mai multe despre asta mai jos. Există, de asemenea, o opțiune pentru indicatoare cu un anod comun. Vă rugăm să rețineți că firmware-ul pentru fiecare dintre scheme este diferit. Toate diferențele sunt evidențiate cu roșu pe diagramă.
După pornirea alimentării, timpul setat este afișat pe indicatoare, LED-ul nu se aprinde. Prin rotirea selectorului rotativ, puteți modifica setarea timpului de la 1 la 99 de minute. Când ora este setată, apăsați butonul - se aude un bip scurt și cronometrul începe numărătoarea inversă, LED-ul clipește, iar timpul de pe indicator scade în fiecare minut. Când timpul a ajuns la zero, temporizatorul emite semnale sonore intermitente și LED-ul se aprinde continuu. Acum, prin apăsarea butonului, semnalul sonor este eliminat și dispozitivul revine la starea inițială - modul de setare a timpului. Așa funcționează prima versiune a firmware-ului. A doua versiune a firmware-ului funcționează la fel ca prima, dar are mai multe completări. În modul de setare a orei, dacă nu atingeți codificatorul timp de câteva secunde, pe afișaj începe să ruleze un screensaver animat. Apăsarea butonului sau rotirea codificatorului va opri animația și va reveni la modul de setare a timpului. În timpul numărătorii inverse, dacă rămâne un minut, afișajul arată secunde de la 60 la 00. Când semnalul sonor este declanșat, acesta nu va suna la infinit, ci timp de aproximativ 20 de secunde. Apoi, afișajul începe să afișeze un screensaver animat (diferit de cel din modul de instalare). Și, de asemenea, după fiecare minut vă va reaminti cu un scurt semnal sonor. Prin apăsarea butonului, la fel ca în primul firmware, cronometrul este resetat în modul de setare a timpului. Când au mai rămas 3 secunde înainte ca temporizatorul să se stingă, temporizatorul emite un bip scurt pentru fiecare secundă, de exemplu. 3...2...1 și mai departe funcționează ca de obicei. Ambele firmware sunt disponibile și se află în arhivă împreună cu un desen al plăcii de circuit imprimat.
Semnalul sonor este implementat folosind PWM hardware încorporat în microcontroler. Capul dinamic ar trebui să aibă o rezistență de aproximativ 50 ohmi. Puteți utiliza și capete dinamice cu impedanță scăzută (4 sau 8 ohmi), dar în acest caz este mai bine să instalați un transformator de ieșire de dimensiuni mici, deoarece un curent mare va curge prin capul de 4 ohmi, care poate supraîncărca sursa de alimentare și poate declanșa o resetare a microcontrolerului. Placă de circuit imprimat, versiunea lui Alexey Antonov
Autor: Mamed ARHIVA:Secțiunea Descărcare:

Acesta este un alt meșteșug făcut din gunoi - un cronometru pentru bucătărie, deși nu neapărat pentru bucătărie. Am folosit piese care erau inactiv, în special indicatoare vechi ALS, rezistențe lipite de plăci vechi etc. Baza dispozitivului este un microcontroler PIC16F628A, una dintre cele mai comune și mai ieftine. Cronometrul este controlat folosind un valcoder și un buton. Intervalul de întârziere de la 1 la 99 de minute. La sfârșitul ciclului de sincronizare, este dat un semnal sonor intermitent. Există două firmware-uri în arhivă, primul este doar un cronometru, iar al doilea cu niște clopote și fluiere, mai multe despre asta mai jos.

Există, de asemenea, o opțiune pentru indicatoare cu un anod comun. Vă rugăm să rețineți că firmware-ul pentru fiecare dintre scheme este diferit. Toate diferențele sunt evidențiate cu roșu pe diagramă.

După pornirea alimentării, timpul setat este afișat pe indicatoare, LED-ul nu se aprinde. Prin rotirea selectorului rotativ, puteți modifica setarea timpului de la 1 la 99 de minute. Când ora este setată, apăsați butonul - se aude un bip scurt și cronometrul începe numărătoarea inversă, LED-ul clipește, iar timpul de pe indicator scade în fiecare minut. Când timpul a ajuns la zero, temporizatorul emite semnale sonore intermitente și LED-ul se aprinde continuu. Acum, prin apăsarea butonului, semnalul sonor este eliminat și dispozitivul revine la starea inițială - modul de setare a timpului. Așa funcționează prima versiune a firmware-ului.

A doua versiune a firmware-ului funcționează la fel ca prima, dar are mai multe completări. În modul de setare a orei, dacă nu atingeți codificatorul timp de câteva secunde, pe afișaj începe să ruleze un screensaver animat. Apăsarea butonului sau rotirea codificatorului va opri animația și va reveni la modul de setare a timpului. În timpul numărătorii inverse, dacă rămâne un minut, afișajul arată secunde de la 60 la 00. Când semnalul sonor este declanșat, acesta nu va suna la infinit, ci timp de aproximativ 20 de secunde. Apoi, afișajul începe să afișeze un screensaver animat (diferit de cel din modul de instalare). Și, de asemenea, după fiecare minut vă va reaminti cu un scurt semnal sonor. Prin apăsarea butonului, la fel ca în primul firmware, cronometrul este resetat în modul de setare a timpului. Când au mai rămas 3 secunde înainte ca temporizatorul să se stingă, temporizatorul emite un bip scurt pentru fiecare secundă, de exemplu. 3...2...1 și mai departe funcționează ca de obicei. Ambele firmware sunt disponibile și se află în arhivă împreună cu un desen al plăcii de circuit imprimat.

Semnalul sonor este implementat folosind PWM hardware încorporat în microcontroler. Capul dinamic ar trebui să aibă o rezistență de aproximativ 50 ohmi. De asemenea, puteți utiliza capete dinamice cu impedanță scăzută (4 sau 8 ohmi), dar în acest caz este mai bine să instalați un transformator de ieșire de dimensiuni mici, deoarece un curent mare va curge prin capul de 4 ohmi, care poate supraîncărca sursa de alimentare și poate declanșa o resetare a microcontrolerului.

Placă de circuit imprimat, versiunea lui Alexey Antonov

Comentarii

1 2

0 #21 kaktuss 14.06.2015 16:08

Citez AntonChip:

Puteți vedea o captură de ecran cu setarea biților de configurare în timpul programării


L-am întrebat pe autor ce configurație este necesară pentru firmware, el mi-a răspuns că totul era deja în firmware. Prin urmare, nu am instalat nimic, doar am încărcat firmware-ul.
Aș posta capturi de ecran, dar nu știu cum. Pot să ți-l trimit prin e-mail?

Cele mai bune articole pe această temă