Indice |
L'obiettivo
Nel Forum di Electroportal vengono spesso chieste informazioni per realizzare circuiti di temporizzazione, circuiti quasi sempre basati sull'ormai vetusto (ma sempre utile) NE555.
Un timer è semplicemente un dispositivo che dà in uscita (OUT) un impulso con fronte d'onda ritardato rispetto all'impulso d'ingresso (IN):
Si vuole qui proporre, per i casi in cui fosse richiesta una elevata precisione nel tempo di ritardo, un'alternativa digitale, cioè basata sul conteggio di un determinato numero d'impulsi di una frequenza costante.
Di per sé, una soluzione del genere non è (come spesso erroneamente si crede) più "precisa" di una soluzione analogica: dipende essenzialmente dal valore della frequenza d'impulsi, ma soprattuttp dalla sua costanza nel tempo.
E' banale dire che se si conta una frequenza di 1Hz, non si possono aver tempi con precisioni inferiori al secondo, ma anche se si conta una frequenza di 1kHz prodotta da un circuito che presenti una imprecisione o una variabilità, non può che essere affetta dalla stessa percentuale d'imprecisione (contare millisecondi non vuol dire automaticamente di avere accuratezza se questi non sono "esattamente" millisecondi!).
Com'è noto, tale problema viene generalmente risolto con oscillatori stabilizzati al quarzo.
Questi però hanno l'inconveniente (oltre al costo dell quarzo), di richiedere l'impiego di più divisori per ridurre l'elevata frequenza di oscillazione del quarzo ad una utilizzabile per stabilire il ritardo.
Ecco allora una prima proposta:
Impulsi dalla rete elettrica
La frequenza della rete elettrica nazionale gode, giustamente, fama di grande stabilità: perché non utilizzarla come generatore degli impulsi da contare per il ritardo ?
Possiamo quindi avere a disposizione in modo semplice ed economico una serie di impulsi esattamente equispaziati nel tempo (clock pulses in inglese e generalmente indicati con CLK).
Con la rete a 50Hz, raddrizzando l'alternata con un ponte a diodi (quindi in doppia semionda), si ottiene esattamente una frequenza di impulsi a 100Hz (10ms/impulso, cioè una quantizzazione al centesimo di secondo).
Si può per questo utilizzare il secondario di un trasformatore di un alimentatore in continua, (generalmente a 12Vefficaci, quindi 17V di picco) per alimentare un ponte a diodi ed utilizzare un optoisolatore (ad es.4N35) per disaccoppiare il trasformatore dal circuito elettronico.
Ecco un possibile schema (simulato con MULTISIM):
Il risultato è visibile all'oscilloscopio virtuale :
Ovviamente ci possono essere varianti: ad es., ancora più semplice è togliere il ponte (mettendo solo un diodo in antiparallelo all'ingresso del fotoaccoppiatore, per protezione della tensione inversa), ottenendo così impulsi a 50Hz (e quantizzazione dei tempi a 2/100 di secondo).
Conteggio degli impulsi
Dando per scontata la conoscenza del conteggio elettronico (vedi anche questo articolo), si propone l'utilizzo di un contatore della serie CMOS4000, precisamente il 4516 (conteggio binario a 4 bit, con predisposizione).
I vantaggi di questo sono la possibilità di conteggio sia in avanti che all'indietro (up/down) e quella di utilizzare il riporto come indicatore del raggiungimento dello zero. Ciò significa che è possibile impostare un numero (binario , da 1 a 15) e far decontare poi questo numero di impulsi fino ad azzerare il contatore.
Ecco lo schema utilizzato (simulato con MULTISIM):
Il deviatore IN simula lo stato del segnale d'ingresso, il segnalatore OUT quello del segnale d'uscita.
Lo stato "alto" di IN abilita il conteggio degli impulsi di clock (CLK), mentre con lo stato "basso" forza le uscite del contatore al valore predisposto sugli ingressi P0...P3.
In questa simulazione CLK è a 2Hz per poter seguire visivamente l'evoluzione del conteggio che, come detto, avviene all'indietro.
Al raggiungimento dello conteggio "zero" si abilita l'uscita OUT e si bloccano gli impulsi di CLK (in modo che il conteggio non possa ripartire).
Per una maggior comprensione di quanto descritto, si attivi il videoclip seguente:
Si noti che l'intero schema mostrato è realizzabile con 2 soli integrati: il già citato contatore 4516, più 4 NAND a 2 ingressi contenuti in un 4011.
Preselezione variabile
Nell'esempio visto, la preselezione del conteggio che determina il tempo di ritardo, è fissa ("cablata"),
In molti casi è però utile poter variare variare facilmente questa impostazione, ed allora può essere usato un un "Dip switch a 4 poli".
Ecco il particolare dello stesso circuito con preselettore (J1, le 4 resistenze possono essere da 10K):
In tal modo è possibile impostare qualsiasi numero binario da 1 a 15 (cioè con un clock a 100Hz, un ritardo variabile da 10 a 150ms).
Se tale tempo fosse insufficiente, si può aggiungere in cascata un altro integrato 4516 (con il proprio preselettore), in modo da portare il massimo ritardo a 2.55s (sempre con la precisione di 1/100s).
In questo caso (configurazione sincrona) entrambi i contatori ricevono in ingresso (CP, pin 15) il CLK , mentre il secondo contatore riceve in ingresso al Carry Enable (CE, pin 5) il riporto del primo (TC, pin 7)
Il numero di impulsi da contare è poi dato da
(Tempo di Ritardo in secoondi per Frequenza di clock in Hz)
e l'impostazione deve avvenire in forma binaria sui 2 preselettori: il primo dei bit meno significativi (0...3), il secondo quello dei bit più significativi (4...7).
Un'esemplificazione per chiarire:
Se si vuole impostare un ritardo di 1s (quindi 100 impulsi del clock a 100Hz) bisogna dividere 100 per 16: il quoziente (intero) costituirà il preset del secondo contatore, il resto della divisione costituirà invece il preset del primo contatore.
Allora 100:16 = 6 con il resto di 4, quindi sul primo contatore si dovrà impostare (in binario) 4 e sul secondo 6.
Di questo esempio, viene riportata la simulazione nel Logic Analyser di MULTISIM:
Si vede il conteggio dei primi 4 impulsi (impostazione del primo contatore), seguito da 6 (impostazione del secondo) serie di 16 impulsi per un totale di 100 impulsi, cioè un ritardo di 1s.
Ovviamente a questo punto innumerevoli possono essere le varianti: per tempi molto lunghi, si potrebbe dividere il CLK, in modo da avere come unità di conteggio il decimo di secondo , oppure 1 secondo, e così via.
Va sottolineato però che oltre un certo numero di integrati, potrebbe risultare più opportuno ricorrere ad un microcontrollore.