Progetti - PIC

 

Generatore di onde quadre


Quando serve un' onda quadra...

Nello sviluppo di sistemi a microcontroller capita spesso di avere a che fare con la necessità di misurare frequenze o periodi o di conteggiare impulsi.

In generale, nell' ambito dei controlli industriali, i sensori che generano frequenza dipendente da un processo meccanico, non raggiungono valori più elevati di qualche kHz : un asse che ruota a 10000rpm a cui è applicato un sensore che fornisce 2 impulsi/giro, dà in uscita una frequenza di soli 333.33Hz. Un motore a 4 cilindri, a 6000rpm, rende, considerando gli impulsi di accensione delle candele, solo 400Hz. 

Si finisce, anche disponendone, per non accendere il costoso generatore di onde arbitrarie, riservandoli per le fasi finali dei test, dato che, almeno nelle fasi iniziali, quello che serve è verificare che le routines scritte facciano quello che devono.

In questo senso, più che la variabilità della frequenza, importa la disponibilità di valori sicuramente definiti e precisi, indispensabili per controllare, ad esempio, se le impostazioni del modulo CCP siano corrette o i conteggi siano esatti.
Inoltre è utile come base tempi a frequenze fisse, ma note e precise.

Anche quando si parla di didattica, non c'è sempre la possibilità di disporre di strumenti costosi di cui, peraltro, vengono sfruttate solamente una minima parte delle possibilità.

Viene comodo, allora, un qualche trespolo semplice che generi semplici onde quadre e che sia di uso immediato.   

Un esempio è il generatore minimale che andiamo a descrivere.


Il generatore.

Sarebbe perfettamente possibile realizzare un qualsiasi altro circuito con frequenza variabile tra 0.01 e 20MHz e oltre, con onde quadre, triangolari, sinusoidali, con frequenzimetro incluso, DDS e ogni altra opzione immaginabile.
Sarebbe possibile, ma i principi di realizzazione di questo circuito, nato tempo fa per supportare lo sviluppo di un sistema per automotive e poi trovato buono per mille altre applicazioni, anche del tutto diverse dal settore microcontroller, si basano sulle seguenti disposizioni:

  • Semplice. Servono solo onde quadre
  • Di uso immediato. Niente "manuale di istruzioni".
  • Frequenze tra pochi Hz e pochi kHz. Non serve oltre: nell'applicazione difficilmente si superano questi valori e comunque, per il collaudo iniziale del firmware, è una gamma adeguata.
    Quello che importa è avere valori noti, stabili e precisi.
  • Economico. Poche parti, facilmente duplicabile.
  • Alimentabile direttamente dal circuito in prova.

Ed ecco lo schema elettrico:

Componenti:

  • IC1   CD4060
  • IC2   CD4016, 4584
  • R1    100k
  • R2    10 ohm
  • R3    15 Mohm
  • R4    330k
  • R5    1k
  • C1    10 pf
  • C2    3-39 pf variabile
  • C4-C5 100 nF multistrato
  • C6    10uF-16V
  • LED   3-5mm 
  • S1    commutatore 1 via-12 posizioni
  • J1    pinhead 4 poli
  • Q1    quarzo 32768Hz

Si possono usare componenti di recupero, a patto che siano "buoni". In particolare, dalla qualità di C1 e C2 dipende la stabilità con il variare della temperatura.


Un po' di teoria, ma poca.

Si tratta di un oscillatore basato sul CMOS CD4040, seguito da un buffer realizzato con il parallelo dei gate di un 4584. Extra semplice.

Dato che dal simbolo usato nello schema precedente non è chiaro come funzioni l' oscillatore, vediamolo più in dettaglio:

Di per se 4060 è qualificato come un 14 Stage Ripple Binary Counter, ovvero di 14 flip flop (divisori per 2) collegati in cascata.
Però, gli stadi di ingresso della catena di divisori sono realizzati con gruppo di porte logiche che permette la realizzazione di un oscillatore.
Si tratta di un Pierce (o meglio, un gate oscillator) attorno ad un NAND che funziona come invertitore; l' altro ingresso serve per imporre un reset al contatore, bloccando il passaggio (o la generazione) della frequenza di ingresso dei flip-flop.

Ovviamente, volendo precisione, utilizziamo non una semplice rete RC, ma un cristallo. Ed è facile disporre di quarzi da 32768Hz, quelli detti "per orologeria", ricavabili da qualsiasi scheda madre PC o piccolo orologio elettrico. 

Si tratta dei ben noti elementi cilindrici, di piccole dimensioni, che, data la loro destinazione, sono piuttosto precisi e stabili nel tempo ed al variare della temperatura.

Si tratta in ogni caso di elementi realizzati per lavorare con una minima energia di eccitazione, dato che finiscono in buona parte in sistemi di tempo mantenuti da batterie tampone.

Un inverter logico (TTL, CMOS) si presta ad essere usato in questo schema:

R1 polarizza il gate logico nella sua regione di funzionamento lineare, in modo da farlo operare come un amplificatore (assumendo l'inverter come ideale, con impedenza di ingresso infinita e pari a zero in uscita)

Il cristallo, in combinazione con i condensatori, forma una rete passa-banda a pigreco, che fornisce i 180 gradi di sfasamento necessari all' oscillazione e un guadagno massimo alla frequenza di risonanza del cristallo.

La resistenza di feedback dipende molto dal tipo di gate usato e dalla frequenza di lavoro. Pensando di utilizzare CMOS, si possono indicare dei valori di impiego generale:

Cristallo Rp
32kHz 10-15 Mohm
1MHz 5-10 Mohm
10MHz 1-5 Mohm
20MHz 470K-5 Mohm

Nella realizzazione di questo semplicissimo oscillatore, va considerato, però, che la corrente gestita da un gate logico è dell'ordine dei milliampere e che, quindi, l' energia disponibile nell' anello dell' oscillatore è elevata.
Se questo è necessario per cristalli un po' "duri", non va assolutamente bene per quelli a bassa potenza.
Occorre ridurre la corrente nel cristallo, aggiungendo una resistenza in serie.
In particolare, i quarzi per "orologeria" sono previsti per essere azionati con solo 1uW e quindi la resistenza serie può assumere valori molto elevati (100k-470k). Se la omettiamo, il cristallo, stressato con una corrente troppo elevata, produce comunque una oscillazione, ma a frequenze armoniche molto superiori alla nominale, instabili e casuali.

Il corretto valore della resistenza parallelo e serie dipende quindi dal tipo di cristallo usato. Sono stati provati numerosi quarzi derivati da schede madri PC (dove servono al Real Time Clock-Calendar) e i valori indicati nello schema sono sempre stati adeguati. E' possibile che utilizzando cristalli di orologi, sopratutto se molto miniaturizzati, siano necessarie delle variazioni.

Si potrà usare un qualsiasi altro cristallo nei limiti consentiti dall'oscillatore. Se si usano quarzi non low power, la resistenza in serie andrà eliminata ed è possibile che quella in parallelo non serva o debba avere un valore differente, come indicato nella tabella qui sopra.

Per quanto riguarda i condensatori, si è utilizzato un trimmer capacitivo ad una estremità del pi-greco, il che permette un ritocco molto fine della frequenza generata. Disponendo di un frequenzimetro di qualità, si potrà tarare l'oscillatore a 32768.0kHz precisi.

La catena dei divisori per 2 è composta da 14 unità, ma solo 10 sono accessibili dall' esterno.

Osserviamo che le uscite dei primi tre e dell'undicesimo flip flop non sono accessibili. Quindi, la catena dei 14 divisori agisce in questo modo:

Divisore Fattore Pin
1 2 -
2 4 -
3 8 -
4 16 7
5 32 5
6 64 4
7 128 6
8 256 14
9 512 13
10 1024 15
11 2048 -
12 4096 1
13 8192 2
14 16384 3

Usando i pin 10 e 11 per l' oscillatore visto sopra, dal pin 9 è possibile derivare la frequenza fondamentale. Il pin 12 di reset va a massa per lasciare libero l' oscillatore.

Tutte le forme d'onda di uscita sono simmetriche (duty cycle 50%), dato che sono l'uscita di divisori per due.

Per una frequenza di ingresso di 32768kHz si ottiene:

Divisore Fattore Frequenza Periodo Impulso Pin
1 2 16384     -
2 4 8192     -
3 8 4096     -
4 16 2048Hz 488.28us 244.14us 7
5 32 1024Hz 976.56us 488.28us 5
6 64 512Hz 1.9531ms 976.56us 4
7 128 256Hz 3.90625ms 1.9531ms 6
8 256 128Hz 7.8125ms 3.90625ms 14
9 512 64Hz 15.625ms 7.8125ms 13
10 1024 32Hz 31.25ms 15.625ms 15
11 2048 16     -
12 4096 8Hz 125ms 62.5ms 1
13 8192 4Hz 250ms 125ms 2
14 16384 2Hz 500ms 250ms 3

E dal pin 9 si prelevano i 32768 Hz.

Questi valori, potenze di 2, sono molto adatti per valutare la precisione della lettura di un periodo o di una frequenza dal microcontroller, che lavora con numeri binari.

Se, per qualche ragione, questi valori non piacciono, si potrà usare, ad esempio, un cristallo da 32000Hz, meno immediato da reperire, ma disponibile presso i distributori di componenti elettronici. 
In tal caso i valori in uscita saranno 2000/1000/500/250/125/62.5/31.25/7.8125/3.906/1.953Hz.

Dato che il commutatore disponibile ha 12 posizioni, le prime due sono collegate rispettivamente alla massa e alla Vcc, ottenendo in uscita (che è invertita) un livello alto (H) e uno basso (L), utili in molte situazioni senza dover staccare il generatore dal circuito in sviluppo.

Si può usare la stessa funzione anche in altre tecnologie, con queste caratteristiche:

Tecnologia Sigla Fmax
[MHz]
Aliment.
[V]
CMOS CD4040
HEF4060
8 3-15
HCMOS 74HC4040 20 2-6
HCTMOS 74HCT4040 20 4.5-5.5

Da notare che la versione CMOS standard è alimentabile in un range molto ampio di tensioni, cosa non possibile per le famiglie HC/HCT che sono limitate. Per contro, ha una massima frequenza minore, ma nel caso in esame non ha importanza.

CD4060 ha una corrente in uscita massima di un paio di milliampere.  In generale è opportuno disporre di più corrente (non si sa mai...). Questo si ottiene semplicemente con un buffer ottenuto mettendo in parallelo i 6 gate contenuti in un integrato genere 4584, 40106, 4050 o similari, ottenendo una decina di mA almeno in uscita.
Una resistenza (R2) da 10-100 ohm tra il buffer e l' uscita evita danni in caso di corto circuito.

Il circuiti è completato con i soliti indispensabili condensatori sulle alimentazioni e con un LED e relativa resistenza che segnala la presenza della tensione di alimentazione.


Realizzazione pratica.

Non molto impegnativa: un circuito stampato a faccia singola che porta il commutatore e la presa a 4 poli per alimentazione e uscite.

Realizzazione extra semplice accessibile a chiunque abbia una minima esperienza nel saldare. Integrati su zoccolo.

La scala del commutatore è stampata su un cartoncino protetto da vernice trasparente e fissata direttamente sul commutatore.
Particolare del quarzo-compensatore variabile.

Il circuito stampato è protetto dall' ossidazione non eliminando il resist fotografico, che è saldabile.

Il circuito è sollevato dal piano di lavoro con 4 colonnine in nylon e il lato saldature è protetto da falsi contatti con un foglio isolate trasparente (recupero da alimentatore PC).

Funziona al primo colpo; se si vuole la massima precisione, recuperare conoscente con frequenzimetro e tarare il trimmer per 32768Hz precisi.

Nel prototipo in foto tutte le parti sono di recupero ed è difficile che nei cassetti di un hobbista non ci siano le parti necessarie alla realizzazione.


Variazioni.

CD4060 può oscillare senza problemi almeno fino a 5MHz a 5V di alimentazione (di più con una Vcc maggiore). Per cui si potranno usare anche quarzi diversi, ottenendo diverse frequenze in uscita.

Se non si usano quarzi a bassa potenza, la resistenza serie andrà ridotta fino ad eliminarla, a seconda del cristallo usato. Così anche la resistenza in parallelo al gate oscillatore va modificata secondo quanto detto prima.

Se si usano 4060 in altre tecnologie, la frequenza possibile aumenta di molto, ma in compenso si riduce il range di alimentazione.
Con la versione CMOS si potrà usare il circuito tanto a 3V quanto a 15V.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 13/05/17.