01.11.2023

Caricare il circuito del timer di spegnimento su un microcontrollore. Termostato a tre canali, termostato, timer su ATmega8. Descrizione del funzionamento del timer sul microcontrollore


Nell'articolo precedente, ho scritto che questo è l'ultimo sviluppo di un dispositivo del genere che utilizza indicatori LED a sette segmenti, ma si è scoperto che avevo fretta. Il fatto è che questo design utilizza solo il 40% della memoria del microcontrollore e c'è ancora un pin inutilizzato della porta del microcontrollore (ad eccezione del pin RESET). Pertanto, si è deciso di correggere questa ingiustizia rispetto al MK e di aggiungere un altro canale di controllo del carico. Al termine del lavoro, la memoria MK viene utilizzata al 99% e tutti i pin MK vengono utilizzati. Nome completo del progetto modificato:
"Un termometro a due canali, un termostato a due canali (termostato) con la possibilità di funzionare in tempo, un timer in tempo reale a canale singolo su un microcontrollore ATmega8 e sensori di temperatura DS18B20"

Descrizione e caratteristiche di un termometro a due canali, termostato (termostato), timer in tempo reale a canale singolo
su ATmega8 e DS18B20

Poiché questo design è "emergente" dal precedente - ed è descritto in dettaglio (tutte le caratteristiche di termometri e termostati, modalità operative, risposta agli errori - sono rimaste invariate), mi concentrerò solo sull'innovazione: il timer in tempo reale.

Temporizzatore in tempo reale

Introdotto nel design timer in tempo reale, che ti permette di gestire il tuo terzo carico in tempo reale per 24 ore e ti permette di impostare due intervalli orari per il controllo dei carichi durante la giornata. Il timer consente inoltre di impostare un intervallo di tempo per il controllo del carico durante il giorno per ciascun canale di controllo della temperatura (controllo termico).
Cosa intendo per timer in tempo reale. Si tratta essenzialmente di un orologio interno con una risoluzione di 10 minuti. Durante la configurazione iniziale del dispositivo, l'ora corrente reale viene impostata con una precisione di 10 minuti, quindi il timer conta intervalli di 24 ore con incrementi di 10 minuti come un normale orologio.

La discrezione del conteggio degli intervalli di tempo di 10 minuti è stata adottata per due ragioni:
— comodità di visualizzare le informazioni su un indicatore a tre cifre, ad esempio 22 ore e 40 minuti — 22.4
- il controllo del carico con una precisione di 10 minuti è abbastanza sufficiente per la maggior parte delle attività (in realtà la precisione è di 5 minuti - se è necessario accendere il carico a 7 ore e 35 minuti, è possibile impostare 7,4 o 7,3)

L'introduzione di un timer ha leggermente modificato l'algoritmo per lavorare con il dispositivo (parlerò dell'algoritmo di funzionamento di seguito). Ora premendo il pulsante “Seleziona” è possibile accedere a due menu:
— menu per l'impostazione dei limiti di temperatura dei termostati e degli intervalli di tempo per il funzionamento del termostato, intervalli di tempo per il controllo del carico tramite timer
— menu per la correzione della frequenza dell'orologio e l'impostazione dell'ora corrente.
Poiché l'MK funziona con un oscillatore RC interno (8 MHz), che non è stabile e dipende sia dalla temperatura dell'MK che dalla tensione di alimentazione, la funzione di correzione della frequenza di clock consente di regolare la precisione della frequenza di clock per condizioni specifiche. E la funzione di impostazione dell'ora corrente consente di impostare l'ora reale corrente durante la configurazione iniziale o di chiarirla se differisce notevolmente dal tempo reale.
Le indicazioni del timer non vengono visualizzate quando il dispositivo è in funzione; puoi scoprire “che ore sono” solo quando entri nella modalità di impostazione dell'ora corrente.

Il controllo timer dei carichi non viene effettuato (disabilitato) se i tempi di accensione e spegnimento sono impostati a zero. In linea di principio, i carichi non sono controllati da un timer se i tempi di accensione e spegnimento sono uguali.

Quando si accede al menu di correzione dell'orologio e si imposta l'ora corrente, il timer si ferma. Pertanto, quando si corregge la frequenza dell'orologio, è necessario impostare l'ora corrente prima di uscire dal menu.

Schema di un termometro a tre canali, termostato, timer su ATmega8

Il circuito del dispositivo è stato creato nel programma e, in linea di principio, non differisce dal circuito di un termostato a due canali (è stato aggiunto un terzo canale di controllo del carico e, per varietà, i circuiti di controllo del carico sono stati modificati):


Poiché il circuito utilizza parti di “uscita”, per comodità di collocare la struttura in un apposito alloggiamento, il circuito è diviso in due parti:
— Blocco display: indicatori e pulsanti
— Unità di controllo — tutto il resto
Sarebbe necessario inserire nel blocco display dei led che segnalino l'accensione dei canali, ma questo può essere fatto indipendentemente in fase di disposizione della scheda (aggiungere tre coppie di contatti per i led e collegarli alla centralina filare).

Progettazione del dispositivo

Base del dispositivo- Microcontrollore ATmega8 con una frequenza di clock di 8 MHz da un oscillatore integrato con un circuito RC interno.
Per regolare la frequenza dell'oscillatore interno, durante la programmazione del MK, è necessario scrivere nella memoria EEPROM all'indirizzo zero il valore della cella di calibrazione per una frequenza di clock di 8 MHz. Il file HEX predefinito della memoria EEPROM riportato di seguito contiene il numero $В1 (В1) - il valore medio delle celle di calibrazione di 5 microcontrollori testati.
Inoltre, per il corretto funzionamento del timer in tempo reale, e funziona tramite interruzioni dal timer/contatore T1 quando il registro di conteggio e il registro di confronto OCR1A sono uguali, quando si programma la memoria EEPROM, seguendo il valore della cella di calibrazione , viene scritto il numero 33050 (1A81), che è programmato nel registro di confronto OCR1A. Quando l'avanzamento del timer viene corretto, cambia anche il valore di questo numero.

Indicazione le temperature e i valori attuali nella modalità di installazione vengono visualizzati su due indicatori a sette segmenti a tre cifre con un circuito di commutazione a "catodo comune".

Sensori DS18B20 sono collegati all'apparecchio tramite connettori femmina a 3 poli DS1 e DS2, la cui numerazione dei pin corrisponde alla numerazione dei pin del sensore.

Gestione dei bit realizzato da transistor bipolari di tipo NPN a bassa potenza.

Accesso al menu, impostazione dei valori, l'avvio delle singole modalità di riscaldamento (raffreddamento) viene effettuato tramite tre pulsanti tattili di tipo DTS:
— S1 — “Selezione”
— S2 — » + »
— S3 — » — »


— per i canali di controllo della temperatura — tramite optosimistori MOS3063 e triac VT139-800E secondo il circuito di commutazione standard, che consente di controllare carichi con una potenza fino a 3,5 kW (se la potenza del carico è superiore a 300-400 W, i triac devono essere installato sui radiatori)
- per il canale dal timer - attraverso un relè meccanico miniaturizzato con una tensione di alimentazione della bobina di 5 Volt, che consente, a seconda del relè utilizzato, di controllare un carico fino a 2 - 2,5 kW

Attiro la vostra attenzione sul collegamento della tensione di rete di 220 volt al dispositivo e sull'accensione del carico: deve essere collegato come nello schema, tenendo conto della “fase” e dello “zero” della tensione di rete.

Potenza del dispositivo effettuato da qualsiasi fonte di corrente continua con una tensione di 7-25 Volt. Il circuito può anche essere alimentato da un caricabatterie non necessario di un telefono cellulare con una tensione di uscita di 5 +-0,5 Volt. In questo caso è possibile escludere dal circuito lo stabilizzatore 7805 e i condensatori C4, C5. Il consumo medio di corrente del dispositivo è di 40 milliampere.

Se è necessario organizzare l'alimentazione di riserva (per il funzionamento ininterrotto del timer), è possibile utilizzare, ad esempio, il seguente schema:

Dettagli utilizzati nel design:

Controllo di un termometro a tre canali, termostato, termostato, timer

1. Entra nel menù

Il dispositivo dispone di due menu.
Quando si preme “brevemente” il pulsante “Seleziona”, sugli indicatori viene visualizzata la scritta “ON—-OFF”, si entra nel menu:
— impostazione dei limiti di temperatura per il funzionamento del termostato e degli intervalli di tempo per il funzionamento del termostato, intervalli di tempo per il controllo del carico utilizzando un timer
Premendo “a lungo” il pulsante “Seleziona”, la scritta “ON—-OFF” viene sostituita dalla scritta “Cor—-USt” è necessario rilasciare il pulsante ed entrare nel menu:
— correzione della frequenza dell'orologio e impostazione dell'ora corrente

Si noti che quando si accede al menu (pressione lunga o breve del pulsante “Seleziona”), tutti i canali di controllo del carico sono disabilitati.

2. Menu “Correzioni dell'avanzamento e impostazione dell'ora corrente” (pressione prolungata del pulsante “Seleziona”)

Dopo essere entrati nel menu, ci troviamo subito nella modalità di correzione dell'orologio:
"Cor—-00"
Premendo nuovamente il pulsante “Seleziona”, passiamo alla modalità di impostazione dell'ora corrente:
"USt—-00.0"
Nella modalità di impostazione dell'ora corrente, guardiamo il nostro orologio più preciso e utilizziamo i pulsanti “+” e “-” per impostare l'ora più vicina con una precisione di 10 minuti.
Ad esempio, l'ora corrente è 20 ore e 37 minuti, impostiamo l'indicatore su “20.4” (20 ore e 40 minuti) ed esattamente alle 20.40, premendo il pulsante “Seleziona” usciamo dal menu. Questo è tutto, l'ora reale è impostata, l'orologio è avviato.
È possibile regolare la frequenza del clock da +50 unità a -50 unità. Il valore iniziale è “00” (“00” appare sempre quando si accede a questa modalità)
Quando si modifica l'impostazione di uno, la frequenza dell'orologio aumenta (+1) o diminuisce (-1) di circa 4 secondi ogni 24 ore.
La precisione dell'orologio può essere verificata sul canale di controllo del carico utilizzando un timer senza carico collegato accendendo il LED.
Ad esempio, alle 21.00 impostiamo l'ora corrente, impostiamo l'accensione del carico alle 8.50 e lo spegnimento alle 9.00. Al mattino abbiamo misurato l'orario di spegnimento del carico. Supponiamo che il carico si sia spento alle 8 ore 59 minuti e 20 secondi. Ciò significa che il timer è indietro di 40 secondi in 12 ore. In 24 ore il ritardo sarà di 80 secondi. Dividere 80 secondi per 4 = 20. Nella modalità di correzione, impostare la lettura su 20, quindi passare alla modalità di impostazione dell'ora corrente, impostare l'ora corrente più vicina, ad esempio 9.1, e su 9 ore e 10 minuti, premendo il pulsante "Seleziona". ", usciamo dalla modalità operativa.

Si tenga presente che in assenza di una fonte di alimentazione di riserva, in caso di “mancanza” della tensione di rete, l'orologio viene azzerato ed è necessario impostare nuovamente l'ora corrente.

3. Menu per l'impostazione della temperatura e degli intervalli di tempo per i termostati

Permettetemi di ricordarvi le modalità di funzionamento dei canali di termostatazione (controllo termico):
— modalità di termostatazione — mantenimento di una certa temperatura
— modalità di controllo termico — mantenimento della temperatura entro determinati limiti
— modalità di riscaldamento (raffreddamento) singola
Tutte queste modalità sono descritte in dettaglio nell'articolo, che fornisce anche istruzioni dettagliate e funzionalità di ciascuna modalità.
Con l'introduzione di un timer in tempo reale nel progetto, è diventato possibile per ciascun canale impostare un intervallo di tempo affinché il canale possa funzionare durante il giorno. Per fare ciò, al menu sono state aggiunte ulteriori righe per l'attivazione e la disattivazione dei canali.
Ad esempio, abbiamo bisogno che il 1° canale di controllo della temperatura funzioni solo di notte dalle 23:00 alle 6:30. Per fare ciò, nel 1° menu (premere brevemente il pulsante “Seleziona”):
— dopo aver impostato i limiti di temperatura superiore e inferiore, appariranno altre due righe: “t.On——00.0” e “t.OF——00.0” (lo stesso avverrà per il secondo canale)
— utilizzare i pulsanti “+” e “-” per impostare: “t.On——23.0” e “t.OF——06.3”
Ora alle 23.00 il 1o canale inizierà a funzionare nella modalità specificata, alle 6.30 il canale verrà spento, e così via ogni giorno.
Modalità singola di riscaldamento/raffreddamento. Se l'intervallo di tempo non è selezionato (l'orario di accensione/spegnimento è impostato su "0"), queste modalità vengono avviate manualmente premendo il pulsante corrispondente. Questa modalità può funzionare anche nel tempo.
Diciamo che dobbiamo riscaldare l'acqua nel serbatoio a 45 gradi sul 2° canale di controllo della temperatura al mattino, entro le 7.00, tenendo conto che l'acqua nel serbatoio si riscalda a questa temperatura in 25 minuti:
— impostare “2.On——00” e “2.OF——45”
— impostare “t.On——06.3” e “t.OF” lasciare il valore predefinito “t.OF——00.0”
Ora il canale 2 si avvierà automaticamente alle 6,30 minuti e quando la temperatura dell'acqua raggiunge i 45 gradi si spegnerà.
Quando si utilizza la modalità di riscaldamento/raffreddamento singola insieme a un timer, è comunque possibile avviare manualmente la modalità, ma è necessario tenere presente che durante il periodo di tempo “t.OF—-t.On” (per l'esempio precedente - dalle 24.00 alle 6.30) non è possibile la modalità manuale. Pertanto, per poter avviare manualmente la modalità in qualsiasi momento, è necessario impostare “t.OF” 10 minuti in meno rispetto a “t.On”.

4. Menu per l'impostazione degli intervalli di tempo per il timer

Temporizzatore in tempo reale permette di impostare due intervalli orari durante la giornata per controllare il carico tramite timer.
Per fare ciò sono state aggiunte al menu quattro ulteriori righe:
— t1.1 — orario di commutazione per il primo intervallo di tempo
— t1.0 — ora di spegnimento per il primo intervallo di tempo
— t2.1 — orario di commutazione per il secondo intervallo di tempo
— t2.0 — ora di spegnimento per il secondo intervallo di tempo
Gli intervalli di tempo non devono sovrapporsi.
Diciamo che dobbiamo accendere l'illuminazione del cortile due volte al giorno: dalle 21.00 alle 0.30 e dalle 5.30 alle 7.00
Installare:
— t1.1 — 21.0
— t1.0 — 00.3
— t2.1 — 05.3
— t2.0 — 07.0
Ora il carico del timer verrà attivato alle 21:00 e alle 5:30 e spento alle 0:30 e alle 7:00

Seconda opzione PCB:

Opzione per impostare i bit FUSE:

(22,2 KiB, 2.016 visite)

Propongo di ripetere un semplice schema di un timer domestico (da cucina) per 99 minuti di mia progettazione. L'idea era di renderlo facile da usare, in modo che letteralmente qualsiasi (stupida) casalinga potesse usarlo senza problemi. Basta comporre 2 cifre per i minuti e premere il pulsante "Start". Se necessario è possibile impostare i secondi. C'è anche un "menu di servizio" nascosto, in cui diverse funzionalità sono "nascoste": visualizzazione del conto alla rovescia del tempo in avanti/all'indietro quando il timer è in funzione e diverse opzioni per effetti luminosi e sonori alla fine del conto alla rovescia. Un'altra caratteristica del timer (anche se solo a livello di programmazione del controller) è la possibilità di selezionare un'opzione per controllare la gamba RC5: la comparsa di "1" su di essa durante il conteggio del tempo o dopo la fine del conteggio. Questa gamba può essere utilizzata, ad esempio, per controllare il carico o in qualsiasi modo a vostra discrezione. Nella mia versione, ho acceso un amplificatore audio aggiuntivo alla fine del conteggio.

All'inizio ho sviluppato il “design” del tabellone. Il timer utilizza un indicatore a 2 cifre con i due punti a sinistra e attorno ad esso si trovano 6 LED. Durante il conto alla rovescia, mostrano decine di secondi e al termine del conteggio raffigurano un fuoco in corsa. I due punti servono anche come controllo della modalità visiva. Quando si imposta l'ora in modalità minuti, è disattivata, mentre in modalità secondi è attiva. Quando il timer viene avviato, inizia il conto alla rovescia. Se il tempo è inferiore a un minuto, l'indicatore mostra i secondi e i due punti sono costantemente accesi. Quando è trascorso più di un minuto, i minuti vengono visualizzati sull'indicatore e i due punti iniziano a lampeggiare. Decine di secondi, come ho scritto sopra, vengono visualizzate dai LED. Ora, leggendo questo testo, sembra che tutto sia troppo complicato, ma in realtà è tutto molto semplice e logico.

Poiché intendevo incassare questo timer direttamente nel muro, l'ho alimentato dalla rete con un vero interruttore. Nessuna modalità di sospensione o standby! Non mi piacciono. Solo spegnimento completo! L'alimentatore è quello switching più semplice, simile ad un caricabatterie cinese. Non ho cercato una precisione particolare, poiché per preparare tutti i tipi di prodotti culinari, la precisione anche di più/meno un paio di minuti non è così critica. E non avevo nemmeno un cronometro standard. A occhio, impostando l'intervallo massimo a 99 minuti, non si è riscontrata praticamente alcuna differenza rispetto all'orologio “di riferimento”. Beh, forse c'era solo mezzo secondo lì, ma è difficile seguirlo con l'occhio. Quindi, se sei soddisfatto di tutto, puoi iniziare a replicare il dispositivo. Ecco il suo diagramma:

Durante l'aggiornamento del firmware MK i ponticelli JP1 e JP2 vengono rimossi. Per risparmiare spazio, i tasti VT5, VT6, VT9 e VT10 non sono mostrati nello schema. L'indicatore è stato preso da un vecchio case di computer. Utilizza l'1 sinistro come due punti. Solo durante l'assemblaggio finale questi segmenti devono essere leggermente verniciati per creare 2 punti (ho semplicemente coperto le aree non necessarie con nastro isolante nero). Un'altra caratteristica di questo indicatore è che i segmenti di questa unità sinistra sono collegati in serie all'interno dell'indicatore e vengono visualizzati come un segmento H (virgola) dalla seconda cifra. Si noti pertanto che il valore di R22 è inferiore a quello dei resistori degli altri segmenti. In generale, puoi semplicemente utilizzare un normale indicatore a 2 cifre e 2 LED collegati in serie per i due punti. Ho preso questo indicatore semplicemente perché lo avevo già. Per ogni evenienza ti darò la piedinatura.

L'impostazione dell'ora è la seguente. Per impostazione predefinita (quando attivato), il timer è in modalità di immissione dei minuti e i due punti sono disabilitati. Utilizzare i pulsanti numerici per comporre i minuti desiderati e premere il pulsante “Start” (S12 secondo lo schema). I numeri immessi si spostano a sinistra mentre si preme, i numeri sull'indicatore si accendono: il numero di minuti attualmente impostato. Ad esempio, se l'indicatore si illumina 23 (sono impostati 23 minuti), ma è necessario impostare 6 minuti, premere semplicemente “0” e “6”. Se è necessario impostare i secondi, premere il pulsante “Sec” (S10 secondo lo schema) e i due punti si illuminano. Impostiamo il numero di secondi necessari allo stesso modo dei minuti. Se il numero composto dura più di 59 secondi, la cifra più alta inizia a lampeggiare, a simboleggiare un errore, e viene reimpostata su 0. Il timer può essere avviato dalla modalità minuti o secondi. Dopo aver avviato il timer, è possibile interromperlo prima del previsto premendo nuovamente il pulsante "Avvia".

Nello schema elettrico a sinistra potete vedere il connettore X3 con la scritta "Out". Questo è lo stesso output per controllare qualcosa di cui ho scritto all'inizio. Nello stato iniziale c'è "0". Nella fase di programmazione dell'MK, è possibile impostare quando apparirà il livello “1” - durante il conto alla rovescia o alla fine del conto alla rovescia e prima che il timer ritorni alla sua posizione originale. Questo viene impostato nella memoria dati EEPROM, nella cella all'indirizzo 0x2105 (quadrato 1 in figura). Scrivendo lì il valore 0x01, l'uscita sarà "1" logico mentre il timer è in funzione. Scrivendo 0x00 - dopo la fine del conto alla rovescia. Ecco uno screenshot del programma durante la programmazione del MK.

All'indirizzo 0x2107 (quadrato 2) si trova il valore del numero di correzione durante il conteggio del tempo (lag - diminuzione, fretta - aumento). Si consiglia di modificare il numero entro piccoli limiti ed è meglio non toccarlo se non assolutamente necessario. Non inserire numeri uguali a 0 e 0FFh. All'indirizzo 0x2109 (quadrato 3) è presente un numero che determina per quanti minuti verrà emesso il segnale acustico alla fine del conto alla rovescia, se il timer non viene ripristinato allo stato originale premendo il pulsante.

Come ho scritto sopra, puoi, ad esempio, collegare una centralina di controllo carichi all'uscita “Out” secondo questo schema.

Se il carico non è molto potente (diverse decine di watt), non è nemmeno necessario posizionare il tiristore sul radiatore. Durante gli esperimenti ho collegato una lampada a incandescenza da 25 W e tutte le parti erano fredde come un cadavere.

Dato che non avevo bisogno di controllare nulla e il timer aveva lo scopo di contare il tempo durante la cottura, ho collegato un ulteriore "amplificatore" con un altoparlante piezoelettrico dal telefono a questa uscita per aumentare il volume del segnale quando il timer veniva attivato . Si è rivelato piuttosto rumoroso e il segnale può essere ascoltato in qualsiasi angolo dell'appartamento.

Quelli. l'uscita "Out" accendeva l'alimentazione dell'"amplificatore" e il segnale audio stesso veniva prelevato dall'uscita PIC per il piccolo altoparlante. Si è scoperto che quando si premono i pulsanti per impostare l'ora, solo il piccolo altoparlante emette un segnale acustico e quando il timer si spegne, entrambi gli altoparlanti emettono un segnale acustico contemporaneamente. Questo amplificatore aggiuntivo è assemblato su una scheda separata.

Il timer stesso è assemblato su un circuito stampato a doppia faccia disegnato in . L'archivio è allegato alla fine dell'articolo. La scheda è cablata per PIC in un pacchetto TSSOP con un passo di 0,65 mm.

Foto della scheda in fase di assemblaggio/debug.

Per alimentare il timer, ho utilizzato un semplice alimentatore switching, assemblato secondo questo circuito (ho preso il circuito stesso già pronto da qualche parte su Internet). Non ha senso scriverne in dettaglio qui, perché questo è un argomento per un articolo separato sugli alimentatori a commutazione. Fornirò solo dati sull'avvolgimento del trasformatore. Il telaio stesso di dimensioni adeguate è prelevato da una lampada a risparmio energetico o da un alimentatore cinese bruciato. Può anche essere estratto dal circuito di servizio dell'alimentatore di un computer o da un monitor, ma sarà di dimensioni leggermente più grandi. Per smontare facilmente il telaio e il nucleo dei trasformatori, li immergo in acqua bollente per 3-4 minuti e poi con attenzione, senza troppi sforzi, li smonto. Successivamente, rimuoviamo tutti i vecchi avvolgimenti e ne avvolgiamo di nuovi. Avvolgimenti: 1-2 - 600 giri con diametro 0,08 - 0,1 mm; 3-4 - 23 spire con diametro 0,3 - 0,55 mm; 5-6 - 10 giri con un diametro di 0,08 - 0,1 mm. Avvolgimento 1-2 ferita alla rinfusa, il resto gira per girare. Tutti gli avvolgimenti devono essere ben isolati l'uno dall'altro. Durante l'avvolgimento, osservare la direzione e l'inizio dell'avvolgimento in punti. Le due metà dei nuclei a forma di W sono unite tramite una guarnizione isolante (traferro ~ 0,1 mm).

Ma puoi farlo più facilmente prendendo qualsiasi alimentatore cinese già pronto con una tensione di uscita di 8-9 volt.

Alcune foto della cassa in realizzazione (piccolo laboratorio). Particolare attenzione è stata posta al design del display.

Bene, il dispositivo finito è assemblato.

E infine riguardo al “menu di servizio”, di cui si parlava all'inizio del testo. Se si immette “1”, “1”, “1”, “1”, “1” e “Avvio” dalla modalità di impostazione dei secondi, utilizzando i pulsanti “1” e “2” è possibile selezionare la marcia avanti o indietro. conto alla rovescia. L'indicatore mostrerà " Cu" (Conteggio crescente) o " CD" (Conto alla rovescia). Uscire dal menu e salvare le impostazioni nella EEPROM con il pulsante "Avvio".

Se si digita la sequenza “2”, “2”, “2”, “2”, “2” (anche dalla modalità impostazione secondi) e “Start” - utilizzando i pulsanti “1” - “4” è possibile selezionare una delle quattro opzioni di segnale acustico quando il timer si attiva. L'indicatore visualizzerà " A1" -"A4" (Allarme). Uscire salvando le impostazioni in EEPROM utilizzando il pulsante "Start".

Digitando “3”, “3”, “3”, “3”, “3” e “Start” utilizzando i pulsanti “1” - “4”, è possibile selezionare una delle quattro opzioni per la “luce di marcia” di LED circolari quando il timer viene attivato. L'indicatore mostrerà " E1" -"E4".

Digitando “4”, “4”, “4”, “4”, “4” e “Start” utilizzando i pulsanti “1” - “4”, è possibile selezionare una delle quattro opzioni per far lampeggiare gli indicatori a sette segmenti quando il timer viene attivato. L'indicatore visualizzerà " L1" -"L4".

L'archivio contiene schede timer e alimentatori (se qualcuno ne ha bisogno) e firmware del controller. I fusibili sono già specificati nel firmware, non è necessario modificare nulla. Sulla scheda timer sono presenti alcuni condensatori ceramici da 0,1 µF per l'alimentazione, non rappresentati nello schema elettrico. Ci sono anche un paio di parti designate FB (perline di ferrite): si tratta semplicemente delle cosiddette perline di ferrite usate come ponticelli.

Elenco dei radioelementi

Designazione Tipo Denominazione Quantità NotaNegozioIl mio blocco note
IC1 MK PIC a 8 bit

PIC16F636

1 Al blocco note
IC2 Codificatore, decodificatore

SN74LS155A

1 Al blocco note
IC3 Registro a scorrimentoK561IR21 Al blocco note
IC4 Regolatore lineare

L78L05

1 Al blocco note
VT1-VT3, VT13 Transistor bipolare

KT3107BM

4 Al blocco note
VT4-VT12 Transistor bipolare

KT3102BM

29 Al blocco note
D1-D4 Diodo raddrizzatore

1N4148

4 Al blocco note
Q1 Risonatore al quarzo20 MHz1 Al blocco note
C1, C2, C4 220 µF3 Al blocco note
C3, C5, C8 Condensatore elettrolitico100 µF3 Al blocco note
C6, C7 Condensatore22 pF2 Al blocco note
C9 Condensatore0,1 µF1 Al blocco note
R1-R3 Resistore

1 kOhm

3 Al blocco note
R4-R6 Resistore

680 Ohm

3

I. KOTOV, Krasnoarmeysk, regione di Donetsk, Ucraina
Il dispositivo proposto può svolgere le funzioni di timer, termometro e termostato. La regolazione operativa consente di configurarlo per eseguire le funzioni specificate sia congiuntamente che separatamente. Tutte le informazioni necessarie vengono visualizzate su un indicatore LED a tre cifre. Durante lo sviluppo del dispositivo, gli obiettivi erano ridurre al minimo il circuito elettrico, semplificare il processo di controllo ed espandere la funzionalità. Sono stati risolti utilizzando un microcontrollore e un sensore di temperatura specializzato.

Caratteristiche tecniche in modalità termostato
Intervallo regolabile
temperatura, °C... da -55 a +125 Risoluzione di misura e controllo, °C:
nell'intervallo di temperatura -9,9...-99,9 °C...........0,1
nell'intervallo di temperatura -55...-10 °C e +100...
+125 °С......1
Errore di misura, °C, non superiore a:
nell'intervallo di temperatura -10...+85 °C...±1
nell'intervallo di temperatura -55...-10 °C e +85...
+125 °С................±2
Intervallo di impostazione dell'isteresi, °C................± 0...50
Limite superiore di impostazione dell'intervallo di controllo, °C................-55...+125
Limite inferiore per l'impostazione dell'intervallo di controllo, °C................-55...+125
Intervallo di regolazione
letture del termometro, °C......±2
Il termostato funziona sia in modalità riscaldamento che raffreddamento. Inoltre, è possibile impostare la durata del mantenimento della temperatura nell'intervallo da 1 a 999 minuti o arrestare il termostato per lo stesso periodo di tempo. Durante il funzionamento viene calcolata la durata totale di connessione del carico alla rete. Il dispositivo è progettato per funzionare insieme al sensore di temperatura DS18B20 e rileva automaticamente il suo codice ID.
Specifiche della modalità timer
Intervalli di impostazione dell'ora
secondi....1...999
minuti....1...999
ore..................1...999
Direzioni del conteggio del tempo..................diretto
o vice versa
Il timer fornisce un ritardo sia per l'accensione che per lo spegnimento del carico.
Lo schema del dispositivo è mostrato in Fig. 1.


Tutte le funzioni principali sono assegnate al microcontrollore DD1, il controllo della modalità e l'immissione dei dati vengono eseguiti utilizzando i pulsanti SB1-SB3 e le informazioni vengono visualizzate sull'indicatore LED a tre cifre HG1. L'alimentazione viene fornita dalla rete, che è collegata ai terminali 1 e 2 del blocco XT1. L'alimentatore è assemblato sul trasformatore T1, sul ponte a diodi VD1, sullo stabilizzatore DA1 e sui condensatori di livellamento C2 e C4. Il resistore R1 aumenta l'affidabilità del dispositivo all'aumento della tensione di rete. Ma se lo si desidera, è possibile eliminarlo installando invece un ponticello sulla scheda.
L'accensione o lo spegnimento dell'alimentazione al carico viene effettuata utilizzando il relè K1, i cui contatti K1.1 sono normalmente aperti e collegati ai terminali 3 e 4 del blocco XT1. Il sensore di temperatura DS18B20 è collegato ai terminali 5 e 6. Viene utilizzato uno schema di collegamento del sensore a due fili: il pin 2 è collegato al terminale 6, i pin 1 e 3 sono collegati al terminale 5. Per visualizzare le informazioni sull'indicatore HG1, un dinamico viene utilizzata l'indicazione con un periodo di aggiornamento del simbolo di circa 20 ms.
Il controllo del funzionamento e l'impostazione dei parametri viene effettuato utilizzando tre pulsanti SB1 "<" (уменьшение), SB2 ">" (aumento) e SB3 "˾" (invio). A seconda della preimpostazione, il dispositivo può svolgere le funzioni di termostato universale o fungere da timer. Per selezionare uno scopo funzionale, è necessario premere il pulsante SB3 e, tenendo premuto esso, applicare la tensione di alimentazione L'indicatore mostra HG1 e apparirà il numero dell'impostazione corrente (Fig. 2).

Utilizzare i pulsanti SB1 e SB2 per impostare la modalità di funzionamento: 1 - termostato universale (impostato di default), 2 - timer. Per confermare premere il pulsante SB3. Le modifiche avranno effetto alla successiva accensione.
Quando il dispositivo funziona come termostato, il sensore di temperatura è posizionato nel luogo in cui è necessario mantenere la temperatura impostata. Dopo aver collegato il dispositivo alla rete, la scritta di prova CIAO “corre” sull'indicatore: il termostato è pronto per il funzionamento. In modalità operativa, l'indicatore HG1 visualizza costantemente il valore della temperatura attuale. Il fatto che il carico sia attualmente acceso è indicato da un punto lampeggiante nella cifra meno significativa.
La temperatura si imposta tramite i pulsanti SB1 e SB2; di default è 30 °C. Nel momento in cui si preme uno qualsiasi di questi pulsanti, sull'indicatore HG1 appare un valore lampeggiante della temperatura impostata e dopo 5 secondi dall'ultima pressione, il termostato ritorna alla modalità operativa. Tutti i dati inseriti vengono archiviati nella memoria non volatile del microcontrollore. Tenendo premuti i pulsanti SB1 e SB2, il parametro selezionato cambia più velocemente. A seconda della durata della pressatura, tre velocità di cambio vengono commutate in sequenza.


Per configurare altre impostazioni del termostato, è necessario accedere al menu. Per fare ciò, premere il pulsante SB3. Le impostazioni vengono modificate in conformità con la Fig. 3. 5 secondi dopo l'ultima pressione di un pulsante qualsiasi, il dispositivo entra in modalità operativa e tutte le impostazioni vengono salvate nella memoria non volatile. Di seguito è riportata una descrizione delle opzioni disponibili.

GGR - isteresi. Parametro in cui viene impostata la differenza di temperatura tra l'accensione e lo spegnimento del carico. Il numero impostato viene aggiunto all'impostazione della temperatura impostata per l'accensione e sottratto per lo spegnimento. Se, ad esempio, la temperatura è impostata su 30,0 °C e il GGR è 4,5, in modalità riscaldamento il carico verrà spento ad una temperatura di 30,0 + 4,5 = 34,5 °C e acceso a 30,0 - 4,5 = 25,5°C. Se il termostato funziona in modalità raffreddamento, si spegnerà a una temperatura di 25,5 °C e si accenderà a 34,5 °C. Se si imposta GGR uguale a 0, verrà visualizzato l'indicatore
la scritta GR e il dispositivo funzioneranno come un normale termometro, la temperatura attuale verrà visualizzata sull'indicatore e il carico sarà sempre spento. Il valore GGR predefinito è 3,0.
VPR - limite di temperatura superiore. Questo parametro determina il valore massimo possibile della temperatura impostata. Se questo limite viene superato, indipendentemente dalle altre impostazioni, il carico verrà spento. Per impostazione predefinita, CERCA.VERT è impostato su 80.0.
LPR - limite di temperatura inferiore. Questo parametro determina il valore minimo possibile della temperatura impostata. Se la temperatura scende al di sotto dell'NPR, indipendentemente dalle altre impostazioni, anche il carico verrà spento. Il valore dell'NPR è sempre inferiore o uguale al VPR. Il valore predefinito in NPR è 10.0.
VRV - durata del tempo di commutazione (in minuti). Questo parametro specifica l'intervallo di tempo durante il quale viene mantenuta la temperatura impostata. Al termine, il carico verrà spento. Cartello
scadenza dell'intervallo di tempo impostato: un punto costantemente luminoso nella cifra di ordine inferiore dell'indicatore. Il timer viene riavviato premendo il pulsante SB3. Se RTW è impostato su 0, l'indicatore visualizza l'immagine “---” e il timer non partecipa al funzionamento del termostato. Per impostazione predefinita, il timer è disabilitato. VPO - durata del tempo di spegnimento. Il parametro specifica l'intervallo di tempo (in minuti) durante il quale il dispositivo è nello stato spento, destinato all'uso insieme al parametro RTW. Al termine dell'intervallo di tempo impostato il dispositivo ritorna alla funzione di mantenimento della temperatura. Se, ad esempio, si imposta il valore di VRV 90 e VRO 60, il termostato manterrà ciclicamente la temperatura per 90 minuti, quindi si spegnerà per 60 minuti e si riaccenderà per 90 minuti, ecc. Se VRO è 0, l'indicatore visualizza l'immagine " ---" e il timer non partecipa al funzionamento del termostato. Per impostazione predefinita, VPO ha un valore zero (il timer è disabilitato).
PAR - parametri di funzionamento. Il valore PAR determina la modalità di funzionamento del termostato: riscaldamento o raffreddamento. Quando si lavora insieme a un riscaldatore nel generatore di vapore, è necessario installare NA, quando si lavora insieme a un dispositivo di raffreddamento - OS. Per impostazione predefinita, PAR è impostato su ON (funzionamento con un riscaldatore).
POP - correzione delle letture. Questo parametro consente di regolare le letture del termometro e, se necessario, di ottenere (utilizzando un termometro di riferimento) un errore di misurazione inferiore a 0,1 °C. Il valore POP viene aggiunto alla lettura della temperatura corrente. Di solito non è necessario regolare le letture, poiché il sensore di temperatura DS18B20 è calibrato in fabbrica e ha una precisione di misurazione molto elevata. Il POP predefinito è 0.0 (nessuna regolazione).
RAB - tempo di funzionamento del riscaldatore (o del frigorifero). In questa modalità viene visualizzato il tempo (in ore) durante il quale il carico è stato acceso. Ciò consente di stimare il consumo energetico. Ad esempio, se le letture RAB mensili sono 250 e la potenza dell'elemento riscaldante è 0,5 kW, il consumo di elettricità sarà di 125 kWh.
NOG - numero di identificazione (codice ID) del sensore di temperatura. Il numero ID a 64 bit del sensore DS18B20 viene visualizzato in formato esadecimale. Ad esempio, 28A2S86801000017. (l'ultima cifra è contrassegnata da un punto decimale). Il numero viene visualizzato premendo i pulsanti SB1, SB2 e potrebbe essere necessario per determinare quale sensore è collegato. Se la comunicazione con il sensore viene interrotta o per qualche motivo non è possibile leggere il codice, l'indicatore visualizzerà il messaggio Err (errore).
Il dispositivo rileva automaticamente la presenza e la funzionalità di un sensore di temperatura. Se il circuito è rotto o non è presente alcun sensore, l'indicatore visualizzerà HI e se è presente un cortocircuito o una connessione errata, verrà visualizzato Lo. In caso di malfunzionamento, il carico viene automaticamente spento. Il cavo che collega il sensore al dispositivo deve avere una sezione trasversale di almeno 0,5 mm2 e una lunghezza non superiore a 10 m Le informazioni vengono lette dal sensore di temperatura con un periodo di 1 s e confrontate con il valore precedente. Se la velocità di aumento della temperatura supera i 30 °C/s o la velocità di diminuzione della temperatura supera i 20 °C/s, la situazione viene interpretata come emergenza e il carico viene spento.
Per visualizzare e modificare le impostazioni quando si lavora in modalità timer, è necessario accedere al menu. Per fare ciò, premere il pulsante SB3. L'installazione viene eseguita in conformità alla Fig. 4

5 secondi dopo l'ultima pressione di un pulsante qualsiasi, il dispositivo entra in modalità operativa e tutte le impostazioni vengono salvate nella memoria non volatile. Dopo essere entrati nel menu, viene visualizzata l'impostazione corrente del timer (l'indicatore lampeggia). Utilizzare i pulsanti SB1 e SB2 per impostare l'intervallo di tempo nell'intervallo 000...999 (il valore predefinito è 100). Se si imposta 000, il timer viene bloccato e in modalità operativa l'indicatore mostrerà il messaggio “---”.
Dopo aver impostato il valore digitale, premere il pulsante SB3, quindi è possibile
impostare le unità di tempo. Può trattarsi di secondi SEC (impostazione predefinita), minuti Ml o ore HOU.
Successivamente, impostare la modalità operativa del timer. Quando si seleziona ON, trascorso l'intervallo di tempo impostato, il carico verrà collegato;
Disabilitato. La scelta della direzione per il conteggio del timer è inversa quando si seleziona OBS (impostata per impostazione predefinita) e avanti quando si seleziona PRS. Mentre il timer è in funzione, l'indicatore visualizza l'ora. Il timer viene avviato premendo il pulsante SB2. Se viene specificato il conteggio diretto, le letture cambiano da zero al valore massimo, ad esempio 0, 1, 2... ecc., e se inverso, dal valore massimo a zero, ad esempio 100, 99, 98. .. e così via.
Il timer viene fermato utilizzando il pulsante SB1. Facendo nuovamente clic su di esso, tornerà al suo stato originale. Se è selezionata l'impostazione di commutazione, al termine dell'intervallo impostato il carico sarà collegato e sull'indicatore apparirà la scritta ON, mentre se l'impostazione di commutazione è OFF il carico sarà disconnesso. Lo stato attuale del carico può essere giudicato dal punto decimale nella cifra meno significativa dell'indicatore. Si accende: il carico è acceso, spento: è spento. Quando si impostano i minuti o le ore, il punto lampeggia brevemente ogni secondo se il carico è spento e si spegne brevemente se è acceso.
Per aumentare l'affidabilità del funzionamento, il dispositivo utilizza una serie di tecniche software. Innanzitutto si tratta di lavorare con la EEPROM del microcontrollore. Ogni parametro nella memoria non volatile è duplicato in quattro celle. La lettura e la scrittura vengono eseguite blocco per blocco. Dopo ogni lettura, il contenuto delle quattro celle viene confrontato tra loro. Se in uno o due di essi differisce dal resto, viene ripristinato il valore unico di tutte le celle del blocco da quelle in cui è identico.
La maggior parte delle parti sono montate su due circuiti stampati in fibra di vetro, i cui disegni sono mostrati in Fig. 5 e fig. 6.


Sono stati utilizzati resistori fissi per montaggio superficiale RN1-12, il resto - MLT, S2-23. Condensatori all'ossido - K50-35 o importati, il resto - K10-17. Relè - JZC-22F3SC20DDC12V, pulsanti - DTST-6. Il trasformatore deve fornire una tensione di 12 V all'uscita del raddrizzatore con una corrente fino a 150 mA XT1 - morsettiera a fila singola della serie 305 Il file modul_v2.hex viene utilizzato per programmare il microcontrollore.
Le schede sono installate in una custodia di plastica (Fig. 7).

L'aspetto del dispositivo assemblato è mostrato in Fig. 8.

Il resistore R2 doveva proteggere il microcontrollore durante lo sviluppo del progetto, ma dopo la produzione di diverse copie dei dispositivi è stato escluso e sulla scheda è stato invece installato un ponticello a filo.
Per semplificare è possibile escludere i resistori limitatori di corrente R4-R11 nei circuiti di controllo dei segmenti indicatori HG1. In questo caso, vengono sostituiti con pezzi di filo; il file modul_v1.hex deve essere caricato nel microcontrollore. Per evitare sovracorrente dell'indicatore e del microcontrollore, viene applicata tensione a ciascuna cifra dell'indicatore per 0,3 ms, in modo che funzionino a. la corrente media nominale. La luminosità degli indicatori con un numero diverso di elementi accesi varia leggermente a causa della distribuzione non uniforme della corrente e delle diverse cadute di tensione sui transistor di uscita delle porte del microcontrollore. Un indicatore con catodo comune può essere sostituito con uno simile, ma con anodo comune. Per fare ciò, all'inizio del programma modul_v1 .asm (modul_v2.asm) dovresti eliminare la riga
#define _COMMON_CATODE_ e ricompila il programma.
Programmi per microcontrollore scaricamento
In fase di programmazione impostare la seguente configurazione del microcontrollore: BODLEVEL=1; BODEN = 0; SUT1 = 1; SUTO = 1; CKSEL3 = 1; CKSEL2 = 1; CKSEL1 = 1; CKSELO = 1; RSTDISBL = 1; WTON = 1; SPIEN = 0; SCORTA = 0; EESAVE = 0; STIVALIZ1 = 1; BOOTSZO = 1;
BOOTRST = 1.
Dall'editore. Il testo e i codici dei programmi del microcontrollore si trovano sul nostro server FTP all'indirizzo .
Radio n. 3 2012

Un semplice diagramma di un buon timer sull'atmega8 MK, facile navigazione nel menu, display LCD a cristalli liquidi, orologio in tempo reale, numero minimo di parti.

Una cosa molto utile, ad esempio, per una serra, puoi organizzare l'irrigazione o la circolazione in coltura idroponica, puoi allestire mangiatoie e abbeveratoi per animali, uccelli e molto altro.


Il cuore di questo timer è il microcontrollore Atmega8 molto popolare e non più costoso.

Naturalmente per il firmware avremo bisogno di un programmatore, ma se non ne abbiamo uno possiamo cavarcela con soli 4 fili collegati alla porta LPT secondo questo schema.

Ciò che ci serve:

Circuito temporizzatore

Come puoi vedere, non è presente alcun circuito di alimentazione e attuatore, questo perché potresti decidere di utilizzare un alimentatore stabilizzato esterno, e inoltre non sai quale carico intendi collegare, quindi ognuno deve scegliere l'attuatore da solo per soddisfare le loro esigenze tecniche.

Come opzione per un attuatore che utilizza triac, tiristori e triac, sono mostrati di seguito.



Opzione dal programma Sprint Layout.

Particolare attenzione dovrebbe essere prestata durante l'installazione del chip dell'orologio e dell'elemento al quarzo. La lunghezza delle tracce tra loro dovrebbe essere minima, ma è meglio utilizzare il micro quarzo di un orologio da polso e saldarlo direttamente alle gambe MC dell'orologio. Riempiamo tutto lo spazio libero accanto all'orologio con rame per la custodia. La batteria è necessaria per mantenere l'orologio in funzione quando è scollegato. Se per qualche motivo non hai installato questa batteria, collega il cavo positivo alla custodia, altrimenti l'orologio semplicemente non funzionerà.

Il microcontrollore viene flashato con un programmatore o utilizzando semplici 5 fili.

L'autore del firmware (download - multitimer) ha provato e non ha cambiato i fusibili, il che rende molto semplice, senza problemi, l'installazione del firmware per un radioamatore alle prime armi. Se l'MK non è stato ancora utilizzato, è nuovo dallo store, quindi basta caricare il firmware e il gioco è fatto, ma se ci sono già modifiche nei fusibili, è necessario impostarli su CKSEL=0001. Tutto il resto è semplice e non ha bisogno di spiegazioni.

È molto comodo utilizzare scatole di giunzione in plastica per la custodia, disponibili in diverse dimensioni e forme.

Usando la colla a caldo di una pistola, fissiamo lo schermo LCD nella copertura tagliata con un coltello, tagliamo i fori per i pulsanti di controllo e il pulsante di accensione.

Mettiamo tutti i componenti all'interno della custodia, controllando costantemente come si chiude il coperchio e, se necessario, spostiamo o pieghiamo quelli che sono d'intralcio.

Forniamo alimentazione al circuito assemblato, dovrebbe apparire la seguente immagine.

Il controllo viene effettuato da quattro pulsanti. Il menu è composto da tre voci, CHIUDI - impostazione dell'orologio, RESET - ripristino di tutti i timer installati, TIMER - impostazione dei timer.

Innanzitutto, vai (*) al menu dell'orologio e imposta (>)(<)(#) точное время.


Un suggerimento sui pulsanti di controllo si trova nella riga inferiore del display; ogni menu è diverso, quindi non è necessario descrivere i pulsanti.

Ora tutto è pronto per impostare correttamente le posizioni temporanee del timer; dopo aver premuto cancelletto, il programma viene scritto nella memoria permanente del MK.

Diamo un'occhiata a come creare un timer con le tue mani sul microcontrollore ATmega8, sebbene il codice sia abbastanza facile da adattare per AVR MK di altre serie. Un timer elettronico è un dispositivo necessario in tutti i settori in cui è necessario eseguire determinate azioni dopo un determinato periodo di tempo.

Il controllo del timer è composto da soli quattro pulsanti:

— aumentare il valore del numero;

— diminuendo il valore del numero;

— avvio del timer;

— ripristino del timer.

Un generatore di frequenze audio con un altoparlante viene utilizzato come indicatore del funzionamento del timer. Il generatore verrà avviato utilizzando l'interruttore a transistor Q5, che a sua volta viene aperto da un potenziale positivo proveniente dalla porta PC2 del microcontrollore.

Semplificato, il timer funziona come segue. Utilizzare i pulsanti “+” e “-” per impostare il numero di secondi richiesto; Il pulsante “start” avvia il timer. Quando il timer conta alla rovescia fino a zero, sul pin PC2 del microcontrollore ATmega8 apparirà un potenziale elevato, che aprirà Q5. Successivamente, l'interruttore a transistor avvierà il generatore e si sentirà un suono nell'altoparlante. Il timer viene resettato premendo il pulsante “reset”. Il generatore di audiofrequenze è assemblato su due transistor Q6 e Q7 di diverse strutture di semiconduttori. Il principio di funzionamento e la descrizione del circuito di tali generatori si possono trovare cliccando su.

Algoritmo di funzionamento del timer su un microcontrollore

Il nostro timer conterà esattamente un secondo alla volta, anche se puoi impostare qualsiasi altro tempo, ad esempio minuti, ore, centesimi di secondo, ecc.

Per formare un intervallo di tempo di un secondo, utilizzeremo il primo timer-contatore del microcontrollore ATmega8. Definiremo tutte le sue impostazioni nella funzione inizio. Innanzitutto, dividiamo la frequenza operativa del microcontrollore 1000000 Hz per 64 e otteniamo una nuova frequenza di 15625 Hz. A ciò provvedono i bit CS10, CS11 e CS12 del registro TCCR1B. Successivamente, abilitiamo l'interruzione di coincidenza e scriviamo un numero binario uguale al decimale 15625 nel registro di confronto (alto e basso). Quindi resettiamo il registro di conteggio TCNT1 e impostiamo il bit WGM12 del registro TCCR1B su uno, che provoca il conteggio. registro da resettare se il suo valore corrente coincide con il numero scritto nei registri di confronto.

inizio nullo (nullo)

TCCR1B &= ~(1<

TCCR1B |= (1<

TIMSK |= (1<

OCR1AH ​​= 0b00111101;

OCR1AL = 0b000001001; // registro di confronto 15625

TCNT1 = 0;

TCCR1B |= (1<

Quando il timer esegue il conto alla rovescia esattamente di un secondo, verrà chiamato un interrupt. Nel corpo della funzione di interruzione diminuiremo di uno il valore della variabile. Quando viene raggiunto lo zero, sulla seconda uscita della porta C del microcontrollore apparirà un potenziale elevato, che aprirà l'interruttore a transistor e avvierà il generatore, a seguito del quale sentiremo il suono nell'altoparlante.

ISR (TIMER1_COMPA_vect)

Z—;