# data[].attributes.body
Possono essere di  due  tipi:

• Magnetici

• Ottici

I più diffusi sono gli encoder incrementali ottici. Su un disco  (di vetro o plastica) sono  presenti "N" zone  trasparenti. Da un lato del disco è presente un diodo emettitore (in genere nel campo infrarosso) e dall'altro è presente un fototransistor. In uscita dal fototransistor si ottiene un  treno di impulsi. Contando il treno d’impulsi si è in grado di determinare di quanto il disco è ruotato.

La risoluzione angolare è pari a 360° diviso per il numero N delle zone trasparenti.
Risoluzione = 360°/N
dove
360°= angolo giro corrispondente ad una rotazione completa dell'asse dell'encoder

N=numero dei fori, in genere multiplo di 2n

# data[].attributes.headline
Applicazione per la misura della velocità (con un solo sensore fotodiodo/fototransistor)

# data[].attributes.subject
Applicazione per la misura della velocità (con un solo sensore fotodiodo/fototransistor)

# data[].attributes.body
In questa configurazione l’encoder viene  utilizzato per  misurare la velocità di rotazione.

Velocità di  rotazione = f/N     ( misurata in giri/secondo)

dove
f= frequenza del segnale generato dagli impulsi dell'encoder

N=numero dei fori

Inoltre un solo sensore è sufficiente a determinare, nel caso di rotazione in un solo verso, di quale angolo è ruotato l'albero dell'encoder a partire da una posizione di riferimento. E' infatti sufficiente il conteggio del numero di tacche che sono passate in corrispondenza del sensore per ottenere il valore dell'angolo moltiplicando il numero di tacche rilevato per l'angolo elementare corrispondente ad una singola tacca.

# data[].attributes.headline
Rilevamento del senso di rotazione (con una coppia di sensori fotodiodo/fototransistor)

# data[].attributes.subject
Rilevamento del senso di rotazione (con una coppia di sensori fotodiodo/fototransistor)

# data[].attributes.body
Per  rilevare il verso  di  rotazione si considerano due coppie di trasduttori fotodiodo/fototransistor distanziati in modo tale che i segnali siano sfasati di un  angolo corrispondente a mezzo settore.
I due trasduttori vengono chiamati canale A e canale B.

# data[].attributes.headline
Sfasamento dei segnali per determinare il senso di rotazione degli encoder incrementali.

# data[].attributes.subject
Sfasamento dei segnali per determinare il senso di rotazione degli encoder incrementali.

# data[].attributes.body
In termini tecnici gli impulsi del canale A e del canale B sono sfasati di 90°, il che significa che un impulso anticipa sempre l'altro di un quarto di ciclo completo.
Un ciclo completo è una transizione completa da segnale basso a segnale alto a segnale basso ancora.

# data[].attributes.body
L'ordine in cui questi impulsi si verifica cambia quando la direzione di rotazione cambia. I due diagrammi riportati di seguito mostrano quali sono i due modelli a impulsi per la rotazione in senso orario e in senso antiorario.
Se l’encoder ruota in senso orario il treno di  impulsi di A anticipa quello di B. Se l’encoder ruota in senso antiorario il treno di  impulsi di B anticipa quello di A.

Come faccio quindi ad individuare il senso di rotazione ?
Partiamo con il segnale del canale A (rotazione oraria): quando il segnale A passa da basso (LOW) ad alto (HIGH) ed il segnale del canale B è basso (LOW), la rotazione è oraria.
Ora osserviamo quando la rotazione è antioraria: quando il segnale A passa da basso (LOW) ad alto (HIGH), il segnale del canale B è alto (HIGH), la rotazione è antioraria.

# data[].attributes.body
Forniscono la posizione angolare assoluta dell’asse di rotazione. Vengono utilizzate più coppie di trasduttori fotodiodo/fototransistor.

Le  combinazioni trasparente/opaco sul disco riproducono la numerazione binaria. I codici utilizzati negli  encoder assoluti sono:

• codice Binario;

• codice di Gray.

# data[].attributes.body
Disponendo di n “corone circolari”, quindi di n bit, è possibile suddividere l’angolo giro in 2n parti.

In commercio si trovano encoder assoluti a 13 bit, in grado quindi di codificare ben 8192 settori angolari.

# data[].attributes.body
Con gli encoder assoluti di tipo binario nasce questo problema:
nel  passaggio dalla posizione 7 (0111) alla posizione 8 (1000) se la prima spazzola entra in conduzione prima che  le altre tre  escano  di conduzione si presenta la posizione 15  (1111) e non  la posizione 8.

# data[].attributes.body
La soluzione al problema dell'errata codifica degli encoder binari consiste nell'utilizzare il  codice Gray.
Nel codice di Gray i numeri adiacenti (ossia le posizioni adiacenti) differiscono di un  solo  simbolo.
Nel codice Gray si passa da ogni numero al successivo sempre mediante la modifica di un solo bit: grazie a questa caratteristica non si possono verificare gli errori di lettura evidenziati nel caso precedente della codifica "binario puro" e la eventuale incertezza di misura si limita all'angolo corrispondente alla fascia di incertezza del solo sensore interessato alla commutazione.

# data[].attributes.body
Qui di seguito sono messe a confronto le corone di due encoder:

A: codifica di Gray;

B: codifica binaria pura.

E' semplice distinguerli a colpo d'occhio.

# data[].attributes.body
La conversione di una posizione dal codice di Gray al binario è basata sulla funzione XOR:

1. Si seleziona il bit più significativo del numero Gray e lo si riporta tal quale nel numero binario;

2. Si effettua l' XOR di questo bit con il secondo bit del codice di Gray e si riporta il risultato nel numero binario;

3. Si ripete l' operazione fino all'esaurimento delle cifre con XOR tra il riporto e la successiva cifra del cdice di Gray.

Se effettuassimo l' operazione con porte logiche, la configurazione sarebbe questa: