En aquest tutorial farem una interfície d’un codificador rotatiu amb microcontrolador ATmega8. ATmega8 és la sèrie de microcontroladors atmel dissenyada per a aplicacions incrustades. El codificador rotatiu s’utilitza per conèixer la posició del moviment i el moviment angular d’un motor o eix. Normalment és un dispositiu de tres terminals, amb potència i comptador de pins de terra fins a cinc. A continuació es mostra un mòdul de codificador rotatiu.

Els pins d’un codificador rotatiu són:
- Terra.
- Positiu connectat a + 5V
- Senyal de sortida A pin
- Pin de senyal de sortida B.
- Pas de rellotge o passador comú.
L’ENCODER proporciona polsos que representen el canvi en la posició de l’eix perquè els sistemes entenguin. Tingueu en compte que s’encén un codificador rotatiu i es mou l’eix.

Com es mostra a la taula anterior, considereu que l'eix es mou amb el rellotge. Amb això hi haurà Falling Edge a la terminal A i després a la terminal B.
Penseu que l’eix es mou anti rellotge. Amb això hi haurà Falling Edge a la terminal B i després a la terminal A.
Aquesta vora es produirà una vegada durant 360/20 = 18 graus (això és per a un codificador amb 20 posicions; canvia de tipus a tipus, més gran serà el recompte de precisió).
Amb les dues condicions anteriors, podem obtenir direcció i grau de rotació. Així obtenim els paràmetres necessaris per obtenir la posició d’un eix.
Components
Maquinari: ATMEGA8, pins de connexió, PROGRAMADOR AVR-ISP, resistència 220Ω, LED (vuit peces), resistència 1KΩ, resistència 220Ω (2 peces), condensador 100nF (2 peces), placa de pa.
Programari: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuits i explicació de treball

Els condensadors aquí serveixen per neutralitzar l’efecte de rebot de contacte a ENCODER. Sense aquests condensadors hi haurà alguns problemes greus en la lectura de posició.
Quan es mou l’eix, hi haurà diferència de temps entre la sortida de dos pins de sortida. L'ATMEGA8 reconeixerà aquesta diferència horària per a la rotació anti-rellotge en sentit horari.
Si la rotació és en sentit horari, el recompte binari s'incrementa en un i aquest recompte es mostra al port LED tal com es mostra a la figura.
Si la rotació és anti rellotge, el recompte binari es decrementa en un i el recompte binari es mostra en un byte LED.
Recordeu aquí que no configurem cap fusible de atmega8, de manera que el controlador funcionarà amb cristall intern predeterminat d'1 MHz.
A continuació s’explica el funcionament de la interfície del codificador rotatiu amb el microcontrolador ATmega8.
