ENCODER
Encoder è traducibile come "codificatore". In generale la parola
si applica a qualsiasi dispositivo che codifica un segnale.
Nel nostro caso facciamo riferimento ai trasduttori di posizione, rotativi o
lineari.
Il trasduttore di posizione angolare, o encoder rotatnte, è un
dispositivo elettromeccanico che converte la posizione angolare del suo asse
rotante in segnali elettrici che possono essere trattati da citcuiti digitali.
Solitamente il segnale è generato da un sistema ottico, ma anche magnetico o
semplicemente costituito da contatti.
Si possono dividere in tre categorie:
- tachimetrici;
- relativi (noti anche come incrementali);
- assoluti.
|
Gli encoder tachimetrici possono essere realizzati
semplicemente con una o più tacche di colore contrastante, individuate
da un sensore ottico, oppure con una o più denti che agiscono su
un sensore magnetico. Lo scopo è misurare il numero di impulsi nell'
unità di tempo e calcolare la velocità di rotazione e il numero dei
giri effettuati.
Serve anche per realizzare un sistema di allarme che individua una
velocità troppo bassa o l' arresto della rotazione. |
Questi encoder, se usati per rilevare angoli, hanno in
genere da 100 a 6.000 fori e sono in grado di fornire una
risoluzione rispettivamente di 3,6 e 0,06 gradi.
Non è possibile utilizzare un encoder dotato di un solo sensore per
determinare il senso di rotazione.
Un encoder relativo o incrementale dispone di un sensore
costituito generalmente da una ruota forata su cui agiscono dei sensori
ottici, al minimo 2. I segnali generati dal passaggio dei fori davanti
al sensori consentono di misurare solo i cambi di posizione del disco e
quindi possono venir elaborati per calcolare la velocità,
l'accelerazione, il numero di giri, l' anglo di spostamento dell'asse.
Possono disporre di una tacca di zero che fornisce un ulteriore segnale
al momento del passaggio su n punto determinato.
Con gli encoder incrementali non è possibile determinare la posizione
assoluta del rotore, che può essere ricavata soltanto mantenendo una
costante elaborazione dei segnali in uscita.
|
|
Per facilitare questa elaborazione, solitamente dispongono di almeno
due segnali in quadratura tra di loro (encoder in quadratura), dall'
analisi dei quali è possibile anche determinare il senso di rotazione
dell' asse.
I segnali in quadratura si ottengono posizionando i sensori su una serie
di fori o meglio utilizzando ruote con sagome particolari.
I segnali solitamente prendono il nome di Canale A e Canale B.
Come nell' immagine a lato, al posto delle forature si tracciano aree
trasparenti ne opache su un un supporto plastico o vetroso: le aree
trasparenti saranno attraversate dal raggio di luce dell' emettitore. |
Negli encoder assoluti i dischi forati assumono forme e disegni
particolari che codificano i segnali elettrici d'uscita in modo tale da avere un
solo codice per ognuna delle posizioni angolari possibili dell' asse.
In questo modo si può conoscere istante per istante anche la posizione del
rotore rispetto al corpo fisso.
|
Nel caso di encoder assoluti i dischi assumono disegni molto
complessi, costituiti da circoli concentrici.
Ad esempio, quello a lato (Analog Devices) dispone di 16 sensori
ottici per generare un codice assoluto a più bit, in grado di
individuare univocamente la posizione angolare del disco.
Siccome ogni anello raddoppia il numero di aree rispetto all'anello
precedente, i valori ottenuti sono codificabili in un sistema binario.
Le uscite, quindi, forniscono solitamente un dato parallelo, che può
andare da 4 a 16 o più bit a seconda della risoluzione voluta. |
Un encoder con una circonferenza (corsa) di 25 cm e una codifica a 16
bit consente una risoluzione di 25/65,536 ovvero 0.00038 cm.
Gli encoder hanno in genere da 100 a 6.000 fori e sono in grado di
fornire una risoluzione rispettivamente di 3,6 e 0,06 gradi.
Esistono anche encoder con contatti meccanici che hanno lo scopo di fungere
da dispositivi di input per ogni genere di apparecchiatura elettronica, dalla
strumentazione agli amplificatori BF, sostituendo commutatori, tasti,
potenziometri.
|
Ad esempio, nell' immagine a lato, un encoder rotativo previsto per
l'azionamento manuale, prodotto da BOURNS, serie 3315.
Le dimensioni sono quelle di un piccolo potenziometro cermet.
L' encoder genera due segnali in quadratura con la risoluzione di 6 o
16 impulsi per giro, che corrispondono a un impulso ogni 60 e 22.5 gradi
rispettivamente.
Questo genere di encoder, molto economico, si basa su due contatti
meccanici che scorrono su una pista conduttrice sagomata opportunamente. |
movimento ORARIO
|
movimento ANTIORARIO
|
posizione di riposo |
IN1 = 1, IN2 = 1
|
posizione di riposo |
IN1 = 1, IN2 = 1
|
inizio movimento orario (A) |
IN1 = 0, IN2 = 1
|
inizio movimento orario (B) |
IN1 = 1, IN2 = 0
|
metà movimento (A+B) |
IN1 = 0, IN2 = 0
|
metà movimento (A+B) |
IN1 = 0, IN2 = 0
|
fine movimento orario (B) |
IN1 = 1, IN2 = 0
|
fine movimento orario (A) |
IN1 = 0, IN2 = 1
|
La casistica degli encoder elettromeccanici non si esaurisce in quelli
rotativi, in quanto ne esistono di altre forme, ad esempio lineari per la
valutazione di movimenti lungo assi e che trovano applicazione in sistemi di
automazione, macchine a controllo numerico, strumenti di misura, ecc.
Un encoder con una corsa di 25 cm e una codifica a 16 bit consente una
risoluzione di 25/65,536 ovvero 0.00038 cm.
Quadrature Encoder
|
Un encoder a quadratura ha due uscite, solitamente ad onda quadra,
sfasate tra di loro di 90 gradi.
Se il segnale A passa dal livello basso a quello alto mentre il
segnale B si trova a livello basso, si ritiene per convenzione che il
disco dell' encoder stia girando in senso orario (clockwise o CW).
Se il segnale A passa dal livello basso a quello alto mentre il segnale
B si trova a livello alto, si ritiene che il disco dell' encoder stia
girando in senso antiorario (counter clockwise o CCW).
Attraverso l' analisi dei due segnali si può quindi determinare
anche il senso di rotazione dell' asse. |
Vediamo di raccogliere in una tabella l' andamento dei segnali rispetto alla
rotazione. Un conteggio che consideri positivi gli spostamenti in senso orario e
negativi in senso anti orario sarà facilmente derivabile.
Input A |
Input B |
Direzione |
Conteggio |
Rising Edge |
High |
CW |
+ |
Rising Edge |
Low |
CCW |
- |
Falling Edge |
High |
CCW |
- |
Falling Edge |
Low |
CW |
+ |
La successione degli stati, dunque, è tale da determinare la possibilità di
individuare il senso di rotazione.
Se applichiamo i due segnali A e B a due ingressi digitali di un microcontroller,
abbiamo la seguente sequenza:
Clockwise ->
|
00 01 11 10 00
|
<- Counter Clockwise
|
Questa tabella è valida per qualsiasi tipo di encoder in quadratura.
Va notato, però, che alcuni encoder per movimento manuale, caratterizzati da
uno scatto per ognuna delle posizioni, hanno uno stato di riposo in cui entrambi
i contatti sono aperti:
movimento ORARIO
|
movimento ANTIORARIO
|
posizione di riposo |
IN1 = 1, IN2 = 1
|
posizione di riposo |
IN1 = 1, IN2 = 1
|
inizio movimento orario (A) |
IN1 = 0, IN2 = 1
|
inizio movimento orario (B) |
IN1 = 1, IN2 = 0
|
metà movimento (A+B) |
IN1 = 0, IN2 = 0
|
metà movimento (A+B) |
IN1 = 0, IN2 = 0
|
fine movimento orario (B) |
IN1 = 1, IN2 = 0
|
fine movimento orario (A) |
IN1 = 0, IN2 = 1
|
In tutti i casi, comunque, i due segnali si prestano ad ulteriori elaborazioni, come:
- la determinazione della posizione angolare rispetto ad un riferimento,
contando gli impulsi, che sono relativi ad un certo angolo di spostamento
dell' asse
- il numero dei giri effettuati, sempre sul conteggio degli impulsi
- la velocità di rotazione, valutando gli impulsi rispetto ad un periodo di
tempo
- l' accelerazione, sempre valutando l' andamento degli impulsi nel tempo
Una decodifica hardware si può ottenere con semplici logiche TTL/CMOS,
ottenendo in uscita solitamente un segnale di direzione di rotazione ed uno di
impulsi.
Esistono, poi, specifici circuiti integrati dedicati all'acquisizione e
all' elaborazione dei segnali degli encoder.
Ad esempio la serie HCTL 2000 di HP, i prodotti di e alcuni ASIC dedicati.
Inoltre sono disponibili i microcontroller, anche con un modulo di ingresso ed
elaborazione per i segnali degli encoder in quadratura (QEI).
In questo caso la decodifica diventa una operazione software.
Decodifica software
Tipicamente l' algoritmo di decodifica dei
segnali in quadratura è questo:
- Rilevare il cambiamento di stato del canale A
- Rilevare In corrispondenza lo stato del canale B
- In base alla tabella vista sopra, determinare il senso di
rotazione e conteggiare gli impulsi
Se la velocità è minima e se il processore non
è impegnato in altre attività, il punto 1 può essere rilevato con un polling
sul pin di ingresso.
Stabilita una velocità massima per il cambio dello stato di un canale, si può,
con vantaggio, cadenzare il polling ad una frequenza di campionamenti tale da
consentire il sicuro rilevamento del cambio di stato.
Se, invece, il micro non è in grado di
permanere in un polling, l' unica soluzione possibile è quella di un interrupt
sul cambio di stato, o meglio, sul fronte di salita o discesa.
va aftta però una discriminazione molto precisa
tra encodr con uscita ottica e encoder con uscita meccanica: i primi forniscono
segnali ad andamento quadro con i fronti di discesa e salita puliti.
I secondi, per la loro natura, se non sono supportati da una logivca di debounce,
sono soggetti alla presenza di rimbalzi alla commutazione dei contatti.
Questi rimbalzi, che possono durare anche 5 ms generano un segnale 'sporco'
che attiva l' interrupt in modo inadeguato.
Una prima soluzione, come detto, è quella di
utilizzare integrati anti rimbalzo, come il classico MC14490 o i piccoli MAX..
Queste soluzioni, però aggiungono costo e parti alla realizzazione (ma riducono
drasticamente il software).
Altra possibilità è quella di inserire un semplice condensatore, che, assieme
ad una resistenza di pull up
crei una rete di ritardo che elimina, almeno in parte, gli impulsi veloci di
rimbalzo.
Soluzione puramente software, poi, è quella di introdurre un debounce
attraverso il programma.
Altro problema che può presentarsi è la velocità degli impulsi.
Negli encoder ottici che sono dedicati ad applicazioni di automazione, frequenze
dell' ordine di molte decine o centinaia di kHz sono comuni.
In questi casi difficilmente un solo microcontroller può gestire la situazione
se assieme sta eseguendo anche altre operazioni.
La soluzione è quella di
utilizzare gli integrati di interfaccia prima menzionati per una pre
elaborazione dei segnali e/o dedicare un microcontroller specifico alla
decodifica dei segnali.
|