In questo tutorial interfacciamo un encoder rotativo con il microcontrollore ATmega8. ATmega8 è la serie di microcontrollori di atmel progettata per applicazioni embedded. L'encoder rotativo viene utilizzato per conoscere la posizione del movimento e il movimento angolare di un motore o di un asse. Di solito è un dispositivo a tre terminali, con il numero di pin di alimentazione e di terra fino a cinque. Di seguito è mostrato un modulo encoder rotativo.
I pin di un encoder rotativo sono:
- Terra.
- Positivo collegato a + 5V
- Segnale di uscita A pin
- Segnale di uscita B pin
- Pin dell'orologio o pin comune.
L'ENCODER fornisce impulsi che rappresentano il cambiamento nella posizione dell'albero per i sistemi da capire. Considerare che un ENCODER ROTANTE è acceso e l'albero è spostato.
Come mostrato nella tabella sopra, considerare che l'albero si muove in senso orario. Con questo ci sarà Falling Edge al terminale A e poi al terminale B.
Considera che l'albero è spostato in senso antiorario. Con questo ci sarà Falling Edge al terminale B e poi al terminale A.
Questo fronte si verificherà una volta per 360/20 = 18 gradi (Questo è per un Encoder con 20 posizioni, cambia da tipo a tipo, maggiore è il conteggio maggiore è la precisione).
Con entrambe le condizioni di cui sopra, possiamo ottenere la direzione e il grado di rotazione. Quindi otteniamo i parametri richiesti per ottenere la posizione di un albero.
Componenti
Hardware: ATMEGA8, pin di collegamento, PROGRAMMATORE AVR-ISP, resistenza 220Ω, LED (otto pezzi), resistenza 1KΩ, resistenza 220Ω (2 pezzi), condensatore 100nF (2 pezzi), breadboard.
Software: Atmel studio 6.1, progisp o flash magic.
Schema del circuito e spiegazione del funzionamento
I condensatori qui servono per neutralizzare l'effetto di rimbalzo del contatto nell'ENCODER. Senza questi condensatori ci saranno alcuni seri problemi nella lettura della posizione.
Quando l'albero viene spostato, ci sarà una differenza di tempo tra l'uscita di due pin di uscita. L'ATMEGA8 riconoscerà questa differenza di orario per la rotazione in senso orario o antiorario.
Se la rotazione è in senso orario, il conteggio binario viene incrementato di uno e questo conteggio viene visualizzato nella porta LED come mostrato in figura.
Se la rotazione è in senso antiorario, il conteggio binario viene decrementato di uno e il conteggio binario viene visualizzato sul byte del LED.
Ricorda che qui non stiamo impostando alcun bit di fusibile di atmega8, quindi il controller funzionerà su un cristallo interno predefinito da 1 Mhz.
Il funzionamento dell'interfaccia dell'encoder rotativo con il microcontrollore ATmega8 è spiegato nel codice sottostante.