www.narcisivalter.it
| |||||||||||
Translate Page
|
TIMER MULTIUSO a MICROCONTROLLOREDigital Timer with PIC16F886 MicrocontrollerIndice:
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.
Nel progettarlo, ho tenuto conto delle seguenti caratteristiche:
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). 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). 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.
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.
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...'). 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). 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).
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...'). 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.
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.
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. 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. Da notare che, rispetto ai precedenti due firmware, nella versione 3.0 il funzionamento è leggermente diverso, soprattutto per quanto riguarda il pulsante START.
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). 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). 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). 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 .
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. 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).
AGGIORNAMENTI [ TORNA ALL'INDICE ] AGGIUNTA DIODO DI PROTEZIONE
AGGIUNTA DI UN INTERRUTTORE 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
AUMENTO AUTONOMIA DELLA BATTERIA LA RESISTENZA R7 PER I LED LE NUOVE FUNZIONI DEL FIRMWARE 4.0
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). 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.
|