Timer multicanale fai da te su atmega8. Timer da cucina su ATMega8

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 tutte le aree 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 effettuerà il conto alla rovescia esattamente di un secondo alla volta, anche se è possibile 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 nei registri di confronto del registro di confronto (alto e basso).

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—;

Il timer su ATmega8 è un circuito semplice e piccolo, basato su un orologio al quarzo

Descrizione del controllo.

Se restano meno di dieci ore di lavoro, lo zero iniziale viene rimosso; se rimane meno di un'ora, sull'indicatore viene visualizzato MM:SS; quando si imposta il timer, il formato dell'ora è HH:MM.
Quando rimangono meno di 20 secondi, gli impulsi con un periodo di 0,5 s vengono inviati al pin di segnale (PC4).
premendo il pulsante SW4 mentre il timer è in funzione si interrompe completamente il conteggio, pressioni successive ripristinano l'impostazione precedente o azzerano il timer

Se ponticello Jmp1è chiuso, quindi quando appare l'alimentazione, il timer continua a contare. Se è aperto, il conto alla rovescia non procede finché non c'è alimentazione (pausa). Con l'alimentazione di backup, non vi è alcuna indicazione. Il punto vicino all'unità delle ore lampeggia.
Quando si preme il pulsante RESET, il timer spegne il carico, si ferma e si azzera, premendolo nuovamente si ripristina l'impostazione precedente. Il punto lampeggia solo quando è in corso il conteggio.

punti indicatori:

Non lampeggiare: il timer si è fermato
- quello centrale lampeggia - il timer è avviato

Indicatori OA.

Autore del progetto VasilYE Potete trovare quihttp://elektron.ucoz.ru/forum/

Il timer è progettato per accendere il carico in un momento e spegnerlo in un altro, ad es. caricare l'operazione entro un determinato intervallo di tempo.

Il progetto utilizza un orologio in tempo reale PCF8583 insieme a una batteria di backup per far funzionare l'orologio in assenza di alimentazione. Il microcontrollore Atmega8 con un clock da 16 MHz viene utilizzato come cervello del dispositivo.
Il dispositivo è stato progettato per essere alimentato caricando il telefono, ecco perché nello schema non è presente uno stabilizzatore da 5 V: per l'alimentazione è presente un connettore di alimentazione da 5 V e un alimentatore da 220 V.
Il carico viene commutato da un relè - del tipo indicato nello schema fino a 10A.
Nello schema sono presenti 3 LED:
OPZIONI– si illumina quando si accede alle impostazioni dell'orologio.
TEMPO– lampeggia quando il timer è in funzione – non si illumina quando il timer è disattivato.
FUORI– mostra lo stato del relè – abilitato o disabilitato.
Pulsanti:
SW1- pulsante H.
SW2- pulsante M.
Impostazioni:
Impostazione dell'orologio.
Per impostare l'orologio è necessario tenere premuto il pulsante SW1 finché il LED non si accende OPZIONI.
Il punto si illumina e non lampeggia - con il pulsante SW1 l'orologio è impostato e il pulsante SW2 minuti.


Per uscire dalle impostazioni è inoltre necessario tenere premuto il pulsante SW1 finché il LED non si spegne OPZIONI.
Impostazione del timer.
Per impostare il timer, è necessario impostare i pulsanti nella modalità display (modalità standby - principale) SW1– tempo di commutazione del carico, SW2– orario di spegnimento del carico. Dopo aver impostato il timer, passerà automaticamente alla modalità di visualizzazione dell'ora se i pulsanti non vengono premuti entro 2-3 secondi.


Disattivazione del timer.
Per disattivare il timer è necessario tenere premuto il pulsante SW2– il dispositivo accenderà il carico e il timer non lo spegnerà.
Schema.


Il diagramma utilizza un connettore ISP non standard:
1 – VCC
2 – MOSI
3 – MISO
4 – SCK
5 – RESET
6 – Rete Display di Google.

Circuiti stampati.



Il circuito stampato utilizza un indicatore con anodo comune E40361, ma è possibile un altro con pinout e dimensioni simili.

Pochi modelli 3D.




Condividere a:

Oggi non sorprenderai nessuno con il design del timer, perché... Ci sono tanti dispositivi simili in vendita e su Internet quanti ne vuoi. E tutti i timer sembrano simili tra loro. E quando inizi a considerare le funzioni del circuito in modo più dettagliato, trovi qualche inconveniente per te stesso.

Per questi motivi ho realizzato un programma timer che rispetti i seguenti parametri:
– design compatto e circuitazione semplice;
– comando operativo tramite pulsantiera;
– quando si controllano i pulsanti, duplicazione delle azioni sul display LCD;
– impostazione dell'ora precisa al secondo;
– range di conteggio da 1 secondo a 24 ore;
– funzione di avvio, pausa;
– funzione di azzeramento del conto alla rovescia e dei valori temporali impostati;
– al raggiungimento del valore 00.00.00 l'attuatore viene acceso;

Tutti i compiti assegnati sono stati implementati in questo progetto.

Descrizione delle modalità di funzionamento del timer

Dopo aver acceso il timer, puoi impostare il tempo di cui abbiamo bisogno. Lo scopo dei pulsanti può essere visto nel diagramma. Dopo l'installazione, premere il pulsante START e inizia il conto alla rovescia. L'orario massimo impostabile è 23.59.59.

La correzione del tempo di conteggio può essere effettuata in qualsiasi momento durante il funzionamento del timer, dopo aver collegato l'alimentazione al circuito.

Non appena l'ora raggiunge le 00.00.00, il LED si accende (al momento questa è un'imitazione dell'accensione dell'attuatore, oppure puoi semplicemente utilizzare un segnale acustico con un generatore).

Se si preme il pulsante AVVIO-PAUSA mentre il timer è in funzione, il timer interromperà il conteggio; premendo due volte il pulsante AVVIO-PAUSA si riprenderà il conteggio interrotto.

Per spegnere il carico dopo averlo acceso, è necessario premere RESET, i dati del timer verranno impostati su 00.00.01 - il carico si spegnerà. Oppure imposta un nuovo periodo di conto alla rovescia e fai doppio clic sul pulsante START-pausa.

Visualizzazione dei simboli sul display LCD< ! >significa che il carico è scollegato (PD3) e premendo una volta il pulsante START inizierà il conteggio del tempo impostato.

Quarzo esterno 8 MHz, per precisione di conteggio.

Per il programmatore in PonyProg e CodeVisionAVR, è necessario deselezionare tutte le caselle di controllo dalle impostazioni del generatore di clock.

Dopo aver fatto lampeggiare i fusibili da un quarzo esterno con il programmatore, il controller verrà letto dal programmatore solo con il quarzo.

Attenzione! Per quanto riguarda i bit FUSE. Questa è la principale fonte di errori che portano al blocco del controller.
- CKSEL3...0 deve essere NON programmato.

In PonyProg e CodeVisionAVR appare così:

Il display LCD deve essere basato sul controller HD44780

16x1, per il quale nell'archivio è presente il firmware V-1

o 8x2, firmware V-2 nell'archivio.
Firmware V-3, per indicatore 8x2. Aggiunto; è coinvolta un'altra porta (uscita MK n. 27 (PC4)) sulla quale verrà creato un registro. mentre è in corso il conteggio, l’attuatore si accende dopo aver premuto il pulsante “avvio-pausa” e si spegne al termine del conto alla rovescia del tempo specificato.

Il funzionamento del circuito può essere testato in proteus.

Se, durante la simulazione di un progetto in proteus, i caratteri cirillici vengono visualizzati in modo errato sul display LCD, per visualizzare correttamente l'alfabeto cirillico sul display LCD, decomprimere la libreria LCDrus.zip (allegata all'archivio del progetto) nella cartella dei modelli proteus.
ARCHIVIO:Scarica dalla sezione server.