Timer Multiuso a Microcontrollore MCU

www.narcisivalter.it
Progetti Elettronici


TIMER MULTIUSO a MICROCONTROLLORE

Digital Timer with PIC16F886 Microcontroller


Timer Programmabile MCU

INTRODUZIONE    [ TORNA ALL'INDICE ]

Ho "doverosamente" dovuto costruire questo Temporizzatore Digitale Multiuso dopo le insistenti richieste di mia moglie che aveva bisogno di un timer preciso e con allarme udibile anche a distanza.

Timer Multiuso a microcontrollore

Nel progettarlo, ho tenuto conto delle seguenti caratteristiche:

  • Possibilità di alimentazione a batteria (quindi un Timer portatile)
  • Precisione (specialmente nei tempi corti)
  • Visualizzazione, oltre ai Minuti e alle Ore, anche dei Secondi (per quanto detto al punto precedente)
  • Segnale acustico forte e chiaro a fine conteggio
  • Facilità d'uso

Detto questo, con l'aiuto del microcontrollore PIC16F886 della Microchip, ho realizzato il Timer descritto in questa pagina, in grado di lavorare con ritardi da un secondo fino a 100 ore con visualizzazione su sei display (lettura in formato HH:MM:SS).

LO SCHEMA ELETTRICO COMPLETO    [ TORNA ALL'INDICE ]

Quello che segue è lo schema elettrico completo del Timer (cliccare sull'immagine per ingrandirla).

Schema elettrico completo del Timer con PIC-micro

Per facilitarne la comprensione e la realizzazione del progetto, lo schema elettrico è stato diviso in due parti ben distinte ognuna con un PCB dedicato cosicché chiunque può utilizzare un diverso tipo di display nel caso non si avessero a disposizione gli SA03-11 oppure i MAN71A (display ad Anodo Comune).

Gli SA03-11 hanno due puntini decimali (uno a destra e uno a sinistra, come anche gli LTS312) mentre i MAN71A hanno i classici due puntini a destra (uno alto e uno basso): tutto questo è ininfluente perché in questo progetto i punti dei display non sono utilizzati.

CIRCUITO DI CONTROLLO e BASE DEI TEMPI    [ TORNA ALL'INDICE ]

Di seguito lo schema della Sezione Controllo e Base dei Tempi (cliccare sull'immagine per ingrandirla).

Schema elettrico Controllo e Base dei Tempi

Per ottenere una base dei tempi molto stabile e precisa, ho realizzato una configurazione che mi permette di inviare al micro i segnali per generare DUE INTERRUPT al secondo e grazie a questi segnali, il micro gestisce il tempo in maniera molto precisa.

Per l’oscillatore vero e proprio (vedi il circuito racchiuso dentro il tratteggio rosso) ho utilizzato un PCB già pubblicato sul mio sito (qui i dettagli) il cui connettore M1 va innestato direttamente sul connettore M5 (FREQ. IN.) della Main board in modo tale che il piccolo PCB risulti posizionato verticalmente, come visibile nella seguente foro.

Foto del Timer PIC - Sez. Controllo con Base dei Tempi

Nello schema seguente (il circuito tratteggiato in rosso è relativo alla schedina esterna posizionata verticalmente), il 74HC4060, unitamente al Quarzo, genera una frequenza di 4194304 Hz e la divide per 8192 volte grazie al ponticello sul pin 2 (Uscita Q13 del 4060) ottenendo sul Pin 1 del connettore M1 una frequenza molto stabile pari a 512 Hz.

Base dei Tempi del Timer con PIC

Questo segnale finisce sul piedino 10 del CD4020 (vedi U2) utilizzato come ulteriore divisore dal quale esce ancora diviso per 256 volte (grazie al ponticello J6 presente sul pin 13).

I segnali a 2 Hz, molto stabili e precisi, vengono poi applicati al piedino RB0/INT del microcontrollore (vedi pin 21 di U3), piedino programmato per ricevere segnali di INTERRUPT esterni.

Il PICmicro, dunque, genera DUE richieste di INTERRUPT ogni secondo: con la prima si spengono i quattro LED lampeggiati (quelli che separano le Ore dai Minuti e i Minuti dai Secondi) mentre con la seconda si aggiornano le variabili per il conteggio del tempo (e contemporaneamente si accendono i LED lampeggianti).

Utilizzando una Base dei Tempi esterna, ho potuto "recuperare" una porta I/O che ho utilizzato per la gestione BATTERIA/RETE ovvero per segnalare al micro quale delle due alimentazioni è in funzione cosicché è possibile una gestione "al risparmio" della corrente assorbita nel caso il circuito sia alimentato solo dalla Batteria in Tampone da 9 Volt.

Naturalmente, è sempre possibile utilizzare una diversa base dei tempi da collegare al pin 2 del connettore M5 e settare opportunamente i ponticelli da J1 a J12 per ottenere la frequenza di 2 Hz (inserite sempre e solo UN PONTICELLO per volta perché in caso contrario, il chip CD4020 andrebbe fuori uso !).

Nel mio prototipo ho utilizzato il chip CD74HC4060 della Texas (è la versione C/MOS Low Power High Speed) e il chip HEF4040BP della Philips: a proposito di quest'ultimo, in questo progetto è possibile utilizzare sia il 4040 che il 4020 senza nessun problema.

Il D2 è del tipo Schottky (1N5819) ed è stato usato per diminuire il più possibile la Vfm quando il Timer funziona solo con la batteria da 9V.

Nelle figure successive sono visibili il disegno del PCB Layout (Disposizione dei componenti, con i ponticelli in rosso da inserire all'inizio) e quello del MASTER (per scaricare le immagini, cliccarci sopra per ingrandirle poi con il tasto destro del mouse scegliere 'Salva immagine con nome...').

Multipurpose Digital Timer   Multipurpose Digital Timer

CIRCUITO DISPLAY    [ TORNA ALL'INDICE ]

Come già accennato, per dare l'opportunità a tutti di utilizzare un diverso tipo di display (ma sempre ad Anodo Comune) ho preferito realizzare a parte la scheda Display il cui schema è visibile nella successiva immagine (cliccare sull'immagine per ingrandirla).

Schema elettrico sez. Display del Timer PICmicro

Il circuito, come detto in precedenza, utilizza display del tipo SA03-11 oppure MAN71A o anche LTS312, tutti nella versione in colore ROSSO. Se optate per un colore diverso, vanno bene anche i MAN3410A (verde), i MAN3610A (arancione) e i MAN3810A (giallo).

L'amico Giorgio di Pescara mi ha scritto dicendomi che è possibile utilizzare anche i seguenti display: NTE3052 oppure, se il colore non è un problema, anche gli NTE3053 (arancione), gli NTE3054 (verde) e gli NTE3055 (giallo).

Foto del PCB Display Timer PICmicro

Nella Scheda Display c'è anche la coppia di LED separatori. A tal proposito, se volete "ridurre" i punti luminosi di questi ultimi, createvi una mascherina nera con due piccoli fori (anche del nastro isolante va benissimo) e posizionatela sopra le coppie dei LED in modo tale che appaiano due puntini luminosi.

Il chip ULN2004 è stato inserito per poter spingere al massimo la luminosità dei Display (che comunque rimangono accesi solo per pochi millisecondi) e poter salvaguardare l'integrità del PICmicro, senza farlo... "sudare eccessivamente".

Nelle figure successive, il disegno del PCB Layout (Disposizione dei componenti, con i ponticelli in rosso da inserire all'inizio) e quello del MASTER (per scaricare le immagini, cliccarci sopra per ingrandirle poi con il tasto destro del mouse scegliere 'Salva immagine con nome...').

Multipurpose Digital Timer     Multipurpose Digital Timer

ALIMENTAZIONE E COLLEGAMENTI    [ TORNA ALL'INDICE ]

L'intero circuito richiede un'alimentazione di 12 Vcc (da collegare al connettore M1). L'assorbimento medio si aggira intorno ai 70-80 mA.

Quando il display è spento (situazione che si verifica dopo 10 secondi di inattività e con l'uso della sola batteria), l'assorbimento si riduce a 6-8 mA con conseguente aumento dell'autonomia della batteria.

E' stato inserito il diodo D3 (1N4148) per cortocircuitare verso il positivo qualsiasi tensione superiore ai 5 volt che dovesse presentarsi sul piedino 2 del microcontrollore (vedi RA0).

Per rendere il Timer "portatile" ho previsto il collegamento con una batteria in tampone da 8.4V al Ni-Cd o Ni-MH: tuttavia è CONSIGLIABILE utilizzare delle normali pile alcaline da 9 V non ricaricabili, e in questo caso è tassativo eliminare la resistenza R3 da 1000 ohm.

Per quanto riguarda le batterie ricaricabili (che notoriamente sono da 8.4V e non da 9V), va detto che queste necessitano di una corrente di carica ben precisa per evitare di danneggiarle per cui se proprio si vuole usare questo tipo di batteria, consiglio di inserirla nel circuito solo dopo averla ricaricata con il suo apposito caricatore: la piccola corrente che scorrea attraverso la resistenza R3 dovrebbe essere in grado di mantenerne la carica per cui la batteria sarà sempre pronta per entrare in azione in mancanza di altre fonti di alimentazione.

In ogni caso, essendo un timer a display, la batteria non può garantire una sufficiente autonomia specie se si usa il timer con tempi molto lunghi. Il mio consiglio è di lasciare il timer SEMPRE COLLEGATO all'alimentatore e usarlo con la batteria solo in casi eccezionali (ovvero quando non esiste nelle vicinanze una presa elettrica cui collegare l'alimentatore oppure durante un black out).

NOTA - Quando si usa il Timer SOLO con la batteria, durante il conteggio le cifre sul display vengono mostrate per un secondo ogni cinque così da "allungare" l'autonomia della pila: nel video presente all'inizio di questa pagina è chiaramente visibile questo comportamento.

Collegamenti del Timer a microcontrollore

IL BUZZER    [ TORNA ALL'INDICE ]

Per il Buzzer, ho utilizzato il tipo autoscillante per non complicare troppo la scrittura del firmware: questo buzzer è comunque molto potente e per fare in modo che il suono emesso sia forte e chiaro, è possibile collegarlo direttamente vicino al pannello frontale (dopo aver praticato sullo stesso un piccolo foro da 2-3 millimetri). Tuttavia, anche lasciato sul circuito stampato, il suono emesso risulta udibile anche a qualche metro di distanza.

Timer PIC - Foto del PCB Controllo e Base dei Tempi

Il buzzer segnala numerose situazioni: la scansione audio delle cifre (il classico toc ad ogni secondo, peraltro escludibile), i tre beep finali di fine conteggio, il segnale all'accensione o del reset e i brevissimi beep alla pressione di ogni pulsante.
NOTA - Con il nuovo firmware 4.0 la scansione audio dei secondi è automaticamente disabilitata quando il Timer funziona SOLO con la batteria.

Quando il Timer giunge a FINE CONTEGGIO, le cifre vengono spente ed il buzzer emette 3 segnali acustici al termine dei quali sul display appare nuovamente il valore programmato dall'utente.

IL PIEDINO RC7 (Uso Futuro)    [ TORNA ALL'INDICE ]

Noterete, vedendo lo schema elettrico, che il pin 18 del microcontrollore (vedi RC7) risulta ancora non collegato: ma lo sarà presto visto che è allo studio un'ulteriore funzione per poterlo sfruttare in futuro (non vi rimane altro che tornare su questa pagina per verificare l'esistenza di eventuali aggiornamenti !). Se comunque volete sfruttare subito questo pin, sappiate che su di esso è presente un livello alto (+5 Volt) durante la fase di conteggio ed un livello basso (0 V) durante una pausa oppure dopo lo STOP.

COMANDI E USO    [ TORNA ALL'INDICE ]

In totale, i comandi manuali di questo temporizzatore digitale sono 6 per i quali ho utilizzato semplici connettori di connessione per dar modo a tutti di realizzare il Timer a proprio gusto e con propri pulsanti.
Tutti i comandi del temporizzatore sono riconducibili ai sei pulsanti siglati da S1 a S6.

Da notare che, rispetto ai precedenti due firmware, nella versione 3.0 il funzionamento è leggermente diverso, soprattutto per quanto riguarda il pulsante START.

Timer PICmicro - Foto del Pannello Frontale

 S1 - Programmazione ORE  Funziona solo a conteggio fermo (oppure in pausa): serve per programmare il numero delle ORE (da 0 a 99). Se premuto insieme al pulsante S4 (FUNCTION) la programmazione delle ORE avviene all'indietro. Quando la cifra delle decine di ORE è uguale a zero, essa si spegne automaticamente.

 S2 - Programmazione MINUTI  Funziona solo a conteggio fermo (oppure in pausa): serve per programmare il numero dei MINUTI (da 0 a 59). Se premuto insieme al pulsante S4 (FUNCTION) la programmazione dei MINUTI avviene all'indietro.

 S3 - Programmazione SECONDI  Funziona solo a conteggio fermo (oppure in pausa): serve per programmare il numero dei SECONDI (da 0 a 59). Se premuto insieme al pulsante S4 (FUNCTION) la programmazione dei SECONDI avviene all'indietro.

 S4 - Pulsante FUNCTION (SH)  Questo pulsante ha una doppia funzione: se premuto insieme a S1, S2 o S3, la programmazione delle cifre avviene a ritroso mentre se è premuto insieme al pulsante S5 (START) abilita/disabilita la scansione audio dei secondi (il classico "toc" che scandisce il tempo).
NOTA - Con il firmware 4.0, questo pulsante consente inoltre di riaccendere il display dopo essere stato automaticamente spento trascorsi 10 secondi di inattività.

 S5 - Pulsante START  Anche questo pulsante ha una doppia funzione: se premuto quando il display segnala 0:00:00, si attiva il TEST dei display (visualizzazione in sequenza della cifra '8' sui display, per controllarne l'integrità dei segmenti) mentre se è premuto quando il display segnala un qualsiasi valore diverso da 0:00:00, si AVVIA IL CONTEGGIO. Per mettere in pausa il Timer, premere il pulsante STOP, effettuare eventualmente le modifiche al tempo programmato e premere nuovamente il pulsante START per far ripartire il conteggio (durante il countdown, i pulsanti S1, S2 e S3 non sono attivi a meno che il Timer non venga messo in pausa).
Al termine del conteggio e dopo i 3 beep, sul display appare nuovamente il valore programmato dall'utente.

 S6 - Pulsante STOP  La pressione di questo pulsante mette in PAUSA il conteggio (durante la pausa è possibile "correggere" la programmazione). Per far ripartire il Timer, premere il pulsante START altrimenti una seconda pressione del pulsante STOP, ferma definitivamente il Timer e lo riporta al valore 0:00:00 (reset).

 SCANSIONE AUDIO DEI SECONDI  Per attivare la scansione audio dei secondi, premere e tenere premuto il pulsante FUNCTION e contemporaneamente premere il pulsante START: un breve beep segnalerà l’avvenuta selezione. La continua pressione di questa combinazione di tasti, alterna l'attivazione/disattivazione della scansione audio dei secondi. La modalità selezionata rimane in memoria anche quando si spegne il Timer (grazie alla memorizzazione su Eeprom).
NOTA - Con il firmware 4.0, la Scansione Audio dei secondi è sempre automaticamente disabilitata quando il Timer funziona SOLO con la batteria in tampone.

 TEST DEI DISPLAY  Il TEST dei display permette di controllare se tutti i segmenti funzionano alla perfezione. Il TEST è possibile soltanto quando il display visualizza il valore 0:00:00: in questo caso, infatti, alla pressione del pulsante START, si attiva il TEST e i display vengono interamente accesi, uno ad uno in sequenza .
Il video seguente visualizza il Test del Display: da notare come nel mio prototipo, ho inserito volutamente il primo display a sinistra difettoso (3 segmenti sono bruciati) !

Il Test dei Display

Quando il Timer giunge a FINE CONTEGGIO, le cifre sul display vengono spente ed il buzzer emette 3 segnali acustici al termine dei quali sul display appare nuovamente il valore programmato dall'utente.
NOTA - Con il firmware 4.0, oltre alle cifre, vengono spenti anche i LED nel caso in cui il Timer funzioni SOLO con la batteria.

LA SERIGRAFIA    [ TORNA ALL'INDICE ]

Per questo Timer è stata realizzata una serigrafia dedicata ed il circuito dei 6 pulsanti può essere realizzato su una basetta millefori (con passo 2,54 mm): le misure fanno riferimento alle distanze tra i centri dei vari pulsanti. Per scaricare il disegno della serigrafia, cliccarci sopra e con il tasto destro del mouse selezionare "Salva immagine con nome" (il file scaricato sarà già pronto per essere stampato).

La serigrafia per il Timer Digitale con PIC

AGGIORNAMENTI    [ TORNA ALL'INDICE ]

 AGGIUNTA DIODO DI PROTEZIONE 
Per evitare di bruciare la porta RA0 del PIC16F886, consiglio di mettere un diodo di protezione (1N4148) in serie al partitore, come visibile nel disegno seguente. Nella foto a fianco, la modifica realizzata sul mio prototipo (è sufficiente staccare un capo della resistenza R1 da 330k, saldarci il Catodo del diodo 1N4148 e, per finire, inserire l'Anodo del diodo nel foro lasciato libero dalla resistenza).

Modifica al PIC Timer  Foto modifica al PICmicro Timer

 AGGIUNTA DI UN INTERRUTTORE ON/OFF 
Per aggiungere un interruttore ON/OFF al Timer è necessario tagliare una pista e collegare l'interruttore come mostrato nel seguente schema:

Interruttore di accensione ON-OFF

Così facendo, anche quando il Timer è spento, la batteria (se installata) risulterà comunque sotto carica (purché sia collegato l'alimentatore da 12V alla morsettiera M1).

 AGGIUNTA DI UN DIODO 1N4001 
Anche se non strettamente necessario, consiglio di aggiungere in serie a D1 (1N4401) un secondo diodo 1N4001 per abbassare, anche se di poco, la tensione per la ricarica della batteria e quella per l'ingresso dello stabilizzatore.

Aggiunta di un diodo

 AUMENTO AUTONOMIA DELLA BATTERIA 
Come già accennato, l'autonomia della batteria non è delle migliori ma per aumentarla è possibile cambiare il valore delle resistenze dalla R8 alla R14 sulla scheda display portandone il valore a 180 o 220 ohm: in questo modo la luminosità dei display diminuisce ma aumenta sensibilmente l'autonomia totale della batteria. Naturalmente se utilizzerete questo Timer senza la batteria da 9V, questa modifica non è assolutamente necessaria.

 LA RESISTENZA R7 PER I LED 
Se per la coppia di LED separatori utilizzerete il tipo ad alta luminosità, potrebbe essere necessario aumentare il valore della resistenza R7 fino a 390 o 470 ohm (vedi schema display). Questa modifica potrebbe essere necessaria nel caso in cui si riscontrasse una luminosità elevata dei 4 LED che potrebbero disturbare la lettura dei display.

 LE NUOVE FUNZIONI DEL FIRMWARE 4.0 
Il firmware 4.0 introduce alcune interessanti funzioni, create soprattutto per aumentare l'autonomia della batteria:

  • Display che si spegne automaticamente dopo 10 secondi di inattività (funzione abilitata se il Timer è alimentato SOLO dalla batteria in tampone).
  • La scansione audio dei secondi è sempre automaticamente disabilitata quando il Timer funziona SOLO con la batteria in tampone.
  • Memorizzazione su Eeprom e richiamo all'accensione dell'ultimo valore programmato.

GALLERIA FOTOGRAFICA     [ TORNA ALL'INDICE ]

Di seguito una serie di foto relative al Timer Digitale Programmabile descritto in questa pagina (cliccare sulle foto per ingrandirle).

3D Main Board Scheda Display del Timer Digitale generata con Protel99se Timer Digitale - Main Board Programmable Digital Timer with PICmicro
Microchip PicKit2 programmer Il Timer Digitale a MCU Timer Digitale a Microcontrollore Timer Digitale a Microcontrollore

DOWNLOAD    [ TORNA ALL'INDICE ]

Qui di seguito troverete il link per scaricare il manuale completo del progetto (contenente schemi elettrici, Master, PCB Layouts, Schema Collegamenti, ecc.) e il Datasheet del PIC16F886.
Per tutte le altre richieste (firmware HEX ver 4.0, domande, suggerimenti, ecc.) per favore, utilizzate la sezione COMMENTI.

Download

Scarica il manuale tecnico e le istruzioni del Timer Multiuso (4.6 MB)

Scarica il Datasheet del Microcontrollore PIC16F886 (4.3 MB)

COMMENTI    [ TORNA ALL'INDICE ]

[ Torna all'inizio della pagina ]

DISCLAIMER (Dichiarazione di esclusione di responsabilità) - Tutti i progetti elettronici presentati e descritti nel sito internet https://www.narcisivalter.it possono essere utilizzati solo ed esclusivamente ad uso privato e senza scopo di lucro, pertanto non commercializzati. Le documentazioni dei progetti (schemi elettrici, disegni, foto, video, firmware, ecc.) non sono di dominio pubblico per cui i diritti d'autore rimangono dell'ideatore. Per utilizzare a fini commerciali i progetti (o parte di essi) presenti in questo sito web, si dovrà contattare l'Autore per concordare un'eventuale autorizzazione scritta.
- All the projects in this webpage is provided with no explicit or implicit warranties of operation. I do not assume any responsibility for any problems or damage to persons. The project is released "as is" and no support of any kind is provided. If you build the project, you implicitly accept my terms of not taking responsibility. If you do not agree, please, do not build this project and do not download any informations from this website!
- Tutti i progetti elettronici presenti nel sito internet www.narcisivalter.it sono stati realizzati e sperimentati personalmente dall'Autore, tuttavia l'Autore stesso non garantisce, a chi li realizzerà, un sicuro e perfetto funzionamento. Tutti i progetti elettronici presentati sul sito www.narcisivalter.it sono pensati e realizzati per un'utenza addetta ai lavori, specializzata nel settore elettrico ed elettronico e quindi in grado di valutare la correttezza e la funzionalità dei progetti stessi. Pertanto l'utente accetta espressamente di utilizzare i contenuti del sito sotto la propria responsabilità. I PROGETTI ELETTRONICI PRESENTATI SU QUESTO SITO SONO STATI RILASCIATI A PURO TITOLO HOBBISTICO E/O DI STUDIO E L'AUTORE NON GARANTISCE LA MATEMATICA CERTEZZA CIRCA IL LORO FUNZIONAMENTO E NON SI ASSUME ALTRESI' NESSUNA RESPONSABILITÀ, ESPLICITA O IMPLICITA, RIGUARDANTE INCIDENTI O CONSEGUENTI POSSIBILI DANNI A PERSONE E/O COSE DERIVANTI DALL'USO DEI PROGETTI STESSI. CHI REALIZZA E UTILIZZA I PROGETTI ELETTRONICI DESCRITTI IN QUESTE PAGINE, LO FA COME SUA LIBERA SCELTA ASSUMENDOSI TUTTE LE RESPONSABILITÀ CHE, EVENTUALMENTE, NE POTREBBERO DERIVARE.
AVVERTENZE IMPORTANTI - Molti circuiti descritti nelle pagine di questo sito sono sottoposti a tensione di rete 110-240 Vac e pertanto potenzialmente pericolosi; si può rimanere folgorati se non realizzati ed utilizzati secondo le norme di sicurezza vigenti. Pertanto l'utente e' tenuto a verificare se quanto realizza e' conforme alla normativa ed alla legislazione vigente. Per i non "addetti ai lavori" (improvvisati auto-costruttori) va ricordato che in particolari situazioni (diminuzione resistenza del corpo) già una tensione di 25V alternata potrebbe essere pericolosa. L'elettronica e l'elettricita' in genere affascina molte persone ma va ricordato che non basta uno schema scaricato da Internet per poter arrivare a un prodotto funzionante e sicuro: infatti ci vogliono un minimo di conoscienze delle fondamentali leggi della fisica, dell'elettricita' e dell'elettronica oltre all'esperienza pratica nell'uso di attrezzi e strumenti indispensabili, come saldatore, tester, oscilloscopio, ecc...

Privacy Policy - Cookie Policy - Condizioni d'Uso