I Comparatori
In 16F526 è
presente una coppia di comparatori analogici.
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.
I comparatori che
utilizzano i seguenti segnali:
- CNxIN+ : ingresso analogico
Vin+
- CNxIN- : ingresso analogico
Vin-
- CxOUT
: 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 i comparatori dispongono di
registri di controllo, chiamati CM1CON0 e CM2CON0.
La sua struttura è la seguente:
CMxCON0
|
bit
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
nome
|
CxOUT
|
!CxOUTEN
|
CxPOL
|
!CxT0CS
|
CxON
|
CxNREF
|
CxPREF
|
!CxWU
|
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 CxOUT
: flag uscita del comparatore
1
= Vin+ > Vin-
0
= Vin+ < Vin-
-
bit 6 !CxOUTEN:
abilitazione uscita del comparatore
1 =
disabilitata
0 = uscita
sul pin C1OUT
-
bit 5
CxPOL : polarità uscita del comparatore
1 = non invertita
0 =
invertita
-
bit 4
!CxT0CS : comparatore come sorgente di Timer0
1 = la sorgente è scelta dal bit T0CS
0 = la
sorgente è l'uscita del comparatore
-
bit
3 CxON : accensione comparatore
1 =
abilitato
0 =
disabilitato
-
bit
2 CxNREF : selezione
dell' ingresso Vin-
1 = C1IN-
0 =
Vref
0.6V
-
bit
1 CxPREF : selezione dell' ingresso Vin+
1 =
C1IN+
0 =
C1IN-
-
bit
0 !CxWU : Wake up per cambio di stato del comparatore
1 =
disabilitato
0 =
abilitato
Vediamo un maggiore dettaglio:
bit |
Funzione |
valore |
CxOUT |
Questo bit permette di conoscere lo stato dell' uscita del
comparatore. |
- 1 Vin+ >
Vin-
- 0 Vin+< Vin-
|
!CxOUTEN |
|
Questo bit abilita l' uscita del comparatore sul pin CxOUT.
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 ogni altra funzione sul pin
corrispondente. |
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 CxOUT
|
CxPOL |
|
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 CxPOL |
|
- 1 non inv.(default)
- 0 invertita
|
!CxT0CS |
Questo bit, se a 0, fa si che l' uscita del comparatore sia collegata
all' ingresso del Timer0. Questa scelta sovrappassa l' eventuale
assegnazione con l' OPTION_REG
Se è posto a 1 (default) la scelta della sorgente è quella impostata col
bit T0CS dell' OPTION_REG |
- 1 T0CS(default)
- 0 uscita a Timer0
|
CxON |
|
Questo bit accende o spegne il comparatore. In condizioni di
spento, il consumo di corrente viene ridotto. |
|
- 1 abilitato (default)
- 0 disabilitato
|
CxNREF |
|
Questo bit consente di scambiare C1IN- e 0.6Vref all' ingresso
Vin- del comparatore. |
|
- 1 CxIN1-(default)
- 0 0.6Vref
|
CxREF |
|
Questo bit consente di scambiare C1IN+ e C1IN- all' ingresso
Vin+ del comparatore. |
|
- 1 CxIN1+(default)
- 0 CxIN-
|
!CxWU |
|
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
|
La scelta 0 sul bit !C1OUTEN
sovrappassa quanto indicato nel bit T0CS
per il TRIS del pin RB2.
La scelta 0 sul bit !C2OUTEN sovrappassa
quanto indicato nel bit T0CS per il TRIS
del pin RC4.
Quando i comparatori sono selezionati, selezionando i bit CxNREF
e CxPREF per una tensione esterna,
si sovrappassano le funzioni digitali dei pin.
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 chi è interessato a sapere qualcosa di più sui comparatori, il
documento PICmicro
Comparator Tip 'n trick è disponibile da Microchip.
|