www.narcisivalter.it
| |||||||||||||||
Translate Page
|
TEMPORIZZATORE 0-90 SECONDI con PIC16F84A(0-90 seconds Digital Timer with PIC16F84A Microcontroller)Indice: LO SCHEMA ELETTRICO [ TORNA ALL'INDICE ] In questa pagina descrivo come relizzare un semplice Timer programmabile per tempi corti (da 0 a 90 secondi). I pulsanti sono 3: PROG. START e RESET e l'uso risulta alquanto semplice. La figura successiva riporta lo schema elettrico completo del TIMER 0-90 Sec. (cliccare sulla figura per ingrandirla). Il circuito è abbastanza semplice perché tutto il lavoro è svolto da un microcontrollore della Microchip, il famosissimo (ma ormai obsoleto) PIC16F84A. Il principio di funzionamento si basa sull'uso del Timer 0: il Timer 0, infatti, è un contatore a 8 bit (da 0 a 255) e si incrementa automaticamente ad ogni ciclo di clock (ovvero ogni Fosc/4). Quando il Timer 0 supera il suo limite (ovvero 255 o FF in esadecimale) va in overflow ed il microcontrollore genera un interrupt che è possibile intercettare leggendo il bit 2 del registro INTCON (o INTCON.T0IF). Usando un quarzo da 4 MHz, il microcontrollore genera un interrupt ogni 256 us. Dopo l'overflow, il Timer 0 inizia un nuovo ciclo di conteggio e così via. Naturalmente, per intercettare i successivi overflow, è necessario che il registro INTCON.T0IF sia resettato via software almeno prima che avvenga il successivo overflow. Il diagramma seguente illustra quanto appena detto.
Ma dal momento che i tempi in gioco sono troppo brevi per poter gestire alcune operazioni si ricorre al Prescaler, un divisore di frequenza con il quale è possibile ridurre ulteriormente la frequenza di 2, 4, 8, 16, 32, 64, 128 o 256 volte (impostabile con i bit PS2, PS1 e PS0 del registro OPTION). Nel software di questo progetto è stato utilizzato un prescaler da 1:32 (PS2=1, PS1=0, PS0=0) per cui si avrà un interrupt da overflow ogni 8 ms circa (per la precisione 8.192 ms corrispondente al prodotto 0.256 ms x 32). Nei casi in cui il valore finale (come in questo caso) non coincida con un numero intero, si ricorre al Preload, una tecnica che consente di precaricare il Timer 0 ad un determinato valore così da "aggiustare" i tempi su valori interi ben definiti. Infatti, in questo progetto, il Timer 0 conta da 6 a 255 perché ad ogni overflow il Preload del Timer è settato a 6: questo significa che si avrà un Interrupt esattamente ogni (256-6) x 32 = 8000 µs. A questo punto si imposta una variabile byte incrementandola ad ogni interrupt (ovvero ogni 8 ms) e quando essa raggiungerà un valore pari a 125 sapremo che sarà trascorso esattamente 1 secondo (8 ms x 125 = 1000 ms) . Quando si usa il Timer0 in maniera autonoma (ovvero gestito solo dai cicli macchina del PIC) e si ha necessità di usare il Preload, vanno considerati sempre 2 cicli istruzione in più: questi cicli, infatti, vengono "persi" durante l'assegnazione del TMR0 per cui devono essere sommati al Preload per "recuperarli" altrimenti i tempi (specie quelli lunghi) non saranno assolutamente affidabili: quindi, nella rutine di interrupt, il valore da precaricare nel TMR0 sarà 8 e non 6. Il relè è del tipo a 2 vie (con bobina a 5 V), per cui possono essere attivati contemporaneamente due carichi indipendenti. La gestione dei segmenti del Display è affidata al Port B mentre il Multiplexer è gestito dalle Porte A1 e A2. I display a 7 segmenti sono del tipo HDN1131-O (Orange, Super-Red, del tipo a basso consumo, necessari per non sovraccaricare eccessivamente le uscite del microcontrollore). In ogni segmento, quando acceso, scorre una corrente di circa 8-9 mA. Per le altre informazioni sul display, fare riferimento al seguente datasheet:
REALIZZAZIONE PRATICA [ TORNA ALL'INDICE ] Lo schema elettrico è stato diviso in due parti ben distinte: MAIN e DISPLAY, ognuna delle quali fa capo ad un PCB. Nelle figure successive sono riportati i Master, i PCB Layouts e le dimensioni delle schede (per scaricare le immagini, cliccare su quella desiderata e, una volta ingrandita, con il tasto destro del mouse scegliere 'Salva immagine con nome...'). Sezione MAIN Sezione DISPLAY Per quanto riguarda la scheda MAIN, consiglio di utilizzare uno zoccolo DIP18 per il microcontrollore. La presenza del LED DL2 (nel mio prototipo ho utilizzato il timo da 3 mm, ad alta luminosità) non è tassativa: la sua accensione indica soltanto che il circuito è correttamente alimentato. La precisione del Timer è garantita da un quarzo da 4 MHz ma è essenziale utilizzarne uno di buona qualità e montare per C4 e C5, dei condensatori ceramici a disco di tipo NPO/COG. Per il quarzo, utilizzare il modello HC49US. Nella foto seguente è visibile il prototipo della scheda MAIN.
COLLEGAMENTI [ TORNA ALL'INDICE ]
Nell'immagine seguente è riportato uno schema di collegamento tipico del Timer.
Tutto il circuito deve essere alimentato con una tensione stabilizzata di 6 V circa per cui può andare benissimo uno Step-Down 220V-6V. L'assorbimento medio del circuito si aggira intorno ai 50 mA ma con il relè attivato si arriva fino a circa 120 mA. Il fusibile (da 200-300 mA) è collegato SOLO sul circuito dell'alimentatore e NON sul carico da attivare. I 3 pulsanti di comando ed il LED rosso vanno collegati con degli spezzoni di filo conduttore. Il collegamento tra la scheda DISPLY e la scheda MAIN va fatto utilizzando una piattina a 10 poli. Il relè è del tipo a 2 vie per cui, se lo si desidera, i suoi contatti possono essere collegati in maniera tale da realizzare un doppio interruttore sulla linea di carico. COMANDI E USO [ TORNA ALL'INDICE ] Il Timer è molto semplice da utilizzare. All'accensione il display visualizza l'ultimo valore programmato.
IMPORTANTE - Durante la fase di conteggio, con relè attivato, EVITARE DI SPEGNERE IL TIMER ! LE FOTO DEL PROTOTIPO [ TORNA ALL'INDICE ] Come già accennato, per il collegamento alla rete elettrica è necessario un piccolo alimentatore stabilizzato da 6 V in grado di erogare almeno 300 mA. Di seguito, alcune foto del prototipo finale racchiuso in un elegante contenitore plastico della TEKO mod. Pult 362.8 (in questo prototipo è stato già installato internamente un piccolo alimentatore switching da 5 Vcc). Nel manuale PDF (che potete scaricare cliccando sul link riportato qui sotto) troverete gli schemi, i disegni per realizzare il PCB, lo schema dei collegamenti, l'elenco dei componenti, la serigrafia per il pannello frontale e altro.
|