În acest tutorial vom interfața un codificator rotativ cu microcontroler ATmega8. ATmega8 este seria de microcontrolere a atmel concepută pentru aplicații încorporate. Codificatorul rotativ este folosit pentru a cunoaște poziția mișcării și mișcarea unghiulară a unui motor sau axa. Este un dispozitiv cu trei terminale, de obicei, cu puterea și pinii de masă numără până la cinci. Un modul de codificare rotativ este prezentat mai jos.
Pinii unui codificator rotativ sunt:
- Sol.
- Pozitiv conectat la + 5V
- Semnal de ieșire A pin
- Semnal de ieșire pin B.
- Pinul ceasului sau pinul comun.
ENCODER furnizează impulsuri care reprezintă schimbarea poziției arborelui pentru ca sistemele să le înțeleagă. Luați în considerare faptul că un codificator rotativ este alimentat și arborele este mutat.
Așa cum se arată în tabelul de mai sus, considerați că arborele este deplasat în sens orar. Cu aceasta va fi Falling Edge la terminalul A, apoi la terminalul B.
Luați în considerare arborele deplasat în sens antiorar. Cu aceasta va fi Falling Edge la terminalul B, apoi la terminalul A.
Această margine va apărea o dată pentru 360/20 = 18 grade (Aceasta este pentru un codificator cu 20 de poziții, aceasta se schimbă de la tip la tip, cu cât este mai mare numărul mai mare de precizie).
Cu ambele condiții de mai sus, putem obține direcția și gradul de rotație. Astfel, obținem parametrii necesari pentru a obține poziția unui arbore.
Componente
Hardware: ATMEGA8, pini de conectare, AVR-ISP PROGRAMMER, rezistență 220Ω, LED (opt bucăți), rezistență 1KΩ, rezistență 220Ω (2 bucăți), condensator 100nF (2 bucăți), panou pentru pană.
Software: Atmel studio 6.1, progisp sau flash magic.
Diagrama circuitului și explicația de lucru
Condensatoarele de aici sunt pentru neutralizarea efectului de săritură a contactului în ENCODER. Fără aceste condensatoare vor exista unele probleme grave în citirea poziției.
Când arborele este deplasat, va exista diferență de timp între ieșirea a doi pini de ieșire. ATMEGA8 va recunoaște această diferență de timp pentru rotație antiorar în sensul acelor de ceasornic.
Dacă rotația este în sensul acelor de ceasornic, numărul binar este incrementat cu unul, iar acest număr este afișat în portul LED, așa cum se arată în figură.
Dacă rotația este anti-orologică, numărul binar este decrementat cu unul și numărul binar este afișat la octetul LED.
Amintiți-vă aici că nu setăm biți siguranți ai atmega8, deci controlerul va funcționa pe cristal intern implicit de 1Mhz.
Funcționarea interfeței codificatorului rotativ cu microcontrolerul ATmega8 este explicată în codul de mai jos.