EMULARE IL 555 CON UN MICRO - 3



Il comparatore digitale

L’unico blocco che dobbiamo emulare in maniera digitale tra quelli presenti nello schema del NE555 è il comparatore a soglia fissa in quanto gli altri circuiti sono di natura digitali e quindi automaticamente realizzabili dai blocchi interni del micro stesso. Per definizione un comparatore è un circuito che confronta una tensione di ingresso con una tensione di riferimento detta anche soglia. Se la tensione di ingresso è maggiore della soglia, allora l’uscita del comparatore assume uno stato logico prefissato. In un circuito a logica positiva il valore logico che assume l’uscita del comparatore è di norma “1” che corrisponde alla tensione di alimentazione. Se la tensione di ingresso è inferiore o uguale alla soglia, uscita assume il valore logico opposto. Se vogliamo realizzare un comparatore digitale dobbiamo fare il confronto tra due parole digitali con lo stesso numero di bit, che rappresentano la tensione da confrontare e la soglia.

Fig.3: schema di base di un comparatore digitale

Implementazione software del comparatore digitale

Per la implementazione del comparatore digitale via firmware dobbiamo definire in maniera digitale la soglia. Questa, essendo costante, è rappresentata da un costante a n bit che rappresenta il valore della conversione della tensione corrispondente alla soglia. Nel caso del PIC 10F322 la periferica di conversione è un ADC a 8 bit con tensione di fondo scala pari alla tensione di alimentazione VDD del micro. Essendo le due soglie di tensione a 1/3 e 2/3 della tensione di alimentazione (come nel NE555) allora si ha: Vth_H = 2/3 VDD e Vth_L =1/3 VDD.

La conversione analogica digitale a n bit di una tensione Vin con l’ADC del micro  segue la formula:

 

ADC= (Vin /VDD) x (2^n-1)

 

Per cui valori che rappresentano le due soglie sono:

 

HTH= (2/3) (2^8-1) = 2/3 x255= 170

 

HTL= (1/3) (2^8-1) = 2/3 x255= 85

 

Quindi le soglie dei due comparatori sono rappresentati da due costanti HTH e HTL a 8 bit .

Per effettuare il confronto necessita quindi il valore convertito della tensione di ingresso. Effettuata la conversione della tensione presente sul pin CAP che fa capo all’ingresso del convertitore ADC, il valore della conversione verrà quindi caricato in una variabile a 8 bit e confrontato con il valore di soglia. Se dal confronto matematico tra le due variabili segue che il valore della tensione di ingresso convertito è maggiore della soglia allora il nostro comparatore digitale assume il valore prefissato. Altrimenti assume il valore opposto. All'interno del codice del micro e' presente la sezione che rappresenta la implementazione firmware del comparatore. In questa implementazione, il confronto tra la tensione CAP e la soglia costante e' ottenuto mediante l'operazione somma tra la variabile che contiene la conversione ADC della tensione CAP e la costante che rappresenta il valore 255- soglia. In tal modo se CAP e' maggiore della soglia allora la somma va in overflow dando origine ad un bit di carrier che monitorato ci dice quando accade questa condizione. Il bit C del registro di stato praticamente e' l'uscita del nostro comparatore digitale. Facciamo un esempio. Supponendo che la tensione CAP sia convertita con un valore di 250d che deve essere confrontato con la soglia HTH. Facendo la somma:

250 +255-HTH= 250 +(255-170)= 335 che sicuramente da origine ad un overflow quindi C=1. Nel codice onde evitare di calcolare la quantità 255-HTH direttamente si pone la costante HTH=255-170 e HTL=255-85. Per ulteriori informazioni conviene visionare il codice assembler del progetto presentato nelle pagine seguenti.