Il comparatore
In alcuni PIC, tra cui 12F510, è
presente un comparatore analogico.
Si tratta di una funzione di impiego non comune, in quanto fa riferimento
strettamente più di altre alla struttura dell' hardware che contorna il
microcontroller.
Nella trattazione di questo modulo non è quindi possibile fare a meno di
confrontarsi con concetti propri dell' elettronica.
|
Un comparatore è un circuito che confronta due segnali applicati in
ingresso e rende una uscita a due livelli, alto e basso, compatibili
con quelli digitali, in funzione dell' esito del confronto.
Costituisce un ponte tra il campo analogico e quello digitale, dato
che i segnali di ingresso possono essere di livello variabile
(analogici), mentre l' uscita ha solo i due livelli digitali
(alto/basso)
Ad esempio, nell' immagine a lato il foglio dati esemplifica la
funzione del comparatore: un segnale variabile viene applicato ad un
ingresso mentre all' altro è applicata una tensione di riferimento.
Ogni volta che il primo segnale supera il valore di riferimento, l'
uscita va a livello alto, indicando la condizione.
I due ingressi prendono il nome di Vin- e Vin+:Quando Vin+ supera
il valore di Vin-, scatta il comparatore. |
Gli usi di questa funzione sono
molteplici: discriminazione di un segnale rispetto ad un riferimento,
rilevatore di sovra o sotto tensione, trigger per misure di grandezze fisiche,
ecc.
PIC12F510 integra un comparatore che
utilizza i seguenti segnali:
- CN1IN+ : ingresso analogico
Vin+
- CN1IN- : ingresso analogico
Vin-
- C1OUT : uscita
digitale
Tutti questi sono multiplexati con altre funzioni sui pin del chip, come abbiamo
visto all' inizio.
Per fornire un supporto il più completo possibile, Microchip ha reso
possibile collegare alla Vin- anche il generatore di tensione da 0.6V già
citato in relazione al modulo ADC. Come informazione, PIC maggiori, dal 16F506
in su, incorporano un generatore di tensione di riferimento più complesso,
che deriva dalla Vdd ed è programmabile in 16 step e possono avere più di un
comparatore, anche realizzati con strutture più complesse.
Per capire meglio come funzioni la logica del comparatore, abbastanza
intricata nelle sue possibilità, occorre fare forzatamente riferimento al diagramma
riportato dal foglio dati
Per i non addetti ai lavori sarà
certamente poco comprensibile, ma si tratta di una necessaria visione di
insieme del modulo, che cerchiamo ora di spiegare.
Per prima cosa da dire è che, evidentemente, anche
il comparatore dispone di un registro di controllo, chiamato CM1CON0.
Per curiosità, CM1 fa riferimento al fatto
che in alcuni PIC (ad esempio 16F506) i comparatori sono due, dove esiste
anche un CM2CON0.
La sua struttura è la seguente:
CM1CON
|
bit
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
nome
|
C1OUT
|
!C1OUTEN
|
C1POL
|
!C1T0CS
|
C1ON
|
C1NREF
|
C1PREF
|
!C1WU
|
funzione
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
default
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
-
bit
7 C1OUT
: flag di uscita del comparatore
1
= Vin+ > Vin-
0
= Vin+ < Vin-
-
bit 6 !COUTEN:
abilitazione uscita del comparatore
1 =
disabilitata
0 = uscita
sul pin C1OUT
-
bit 5
C1POL
: polarità uscita del comparatore
1 = non invertita
0 =
invertita
-
bit 4
!C1T0CS: comparatore come sorgente di Timer0
1 = la sorgente è scelta dal bit T0CS
0 = la
sorgente è l'uscita del comparatore
-
bit
3 C1ON : accensione comparatore
1 =
abilitato
0 =
disabilitato
-
bit
2 C1NREF: selezione
dell' ingresso Vin-
1 = C1IN-
0 =
Vref
0.6V
-
bit
1 C1PREF: selezione dell' ingresso Vin+
1 =
C1IN+
0 =
C1IN-
-
bit
0 !C1WU : Wake up per cambio di stato del comparatore
1 =
disabilitato
0 =
abilitato
Vediamo un maggiore dettaglio:
bit |
Funzione |
valore |
C1OUT |
Questo bit permette, da parte del programma, di leggere lo
stato dell' uscita del compratore. |
- 1 Vin+ >
Vin-
- 0 Vin+< Vin-
|
!COUTEN |
|
Questo bit abilita l' uscita del comparatore sul pin C1OUT.
Se l' uscita non è abilitata il comparatore funziona ugualmente,
ma il risultato della comparazione viene utilizzato solo
internamente al micro.
Se è abilitata l' uscita, essa sostituisce la funzione sul pin 5
(GP2). |
Con riferimento al diagramma iniziale, il bit comanda l'
interruttore che collega l' uscita del comparatore al pin fisico. |
|
- 1 disab.(default)
- 0 uscita su GP2
|
C1POL |
|
Questo bit inverte il livello di uscita del comparatore. L'
azione è effettuata da un gate XOR
che inverte o meno il segnale a seconda del livello dei bit C1POL |
|
- 1 non inv.(default)
- 0 invertita
|
!C1T0CS |
Questo bit, se a 0, fa si che l' uscita del comparatore sia collegata
all' ingresso del Timer0.
Se è posto a 1 (default) la scelta della sorgente è quella impostata col
bit T0CS dell' OPTION_REG |
- 1 T0CS(default)
- 0 uscita a Timer0
|
C1ON |
|
Questo bit accende o spegne il comparatore. In condizioni di
spento, il consumo di corrente viene ridotto. |
|
- 1 abilitato (default)
- 0 disabilitato
|
C1NREF |
|
Questo bit consente di scambiare C1IN- e 0.6Vref all' ingresso
Vin- del comparatore. |
|
- 1 C1IN1-(default)
- 0 0.6Vref
|
C1REF |
|
Questo bit consente di scambiare C1IN+ e C1IN- all' ingresso
Vin+ del comparatore. |
|
- 1 C1IN1+(default)
- 0 C1IN-
|
!C1WU |
|
Questo bit abilita o disabilita (default) la possibilità che l'
uscita del comparatore, se cambia di stato, faccia cessare la
condizione di sleep |
|
- 1 disab.(default)
- 0 abilitato
|
Anche se dal punto di vista della componentistica elettronica un
comparatore è realizzabile con un amplificatore operazionale, questo
comparatore integrato non è utilizzabile come op-amp in quanto la sua
uscita non è analogica, ma esclusivamente digitale.
Per quanto riguarda 16F506, il comparatore è più complesso:
- ha due canali
- dispone di una sorgente di tensione di riferimento interna
programmabile
Questa ultima funzione non è disponibile nel chip a 8 pin. Per maggiori
informazioni rimandiamo alla lettura del foglio dati.
Per chi è interessato a sapere qualcosa di più sui comparatori, il
documento PICmicro
Comparator Tip 'n trick è disponibile da Microchip.
|