I denne vejledning skal vi interface en roterende encoder med ATmega8 mikrocontroller. ATmega8 er atmels mikrocontroller-serie designet til indlejrede applikationer. Rotary encoder bruges til at kende positionen af bevægelse og vinkelbevægelse af en motor eller akse. Det er normalt en tre terminalenhed med strøm og jordstift tæller til fem. Et roterende kodermodul er vist nedenfor.
Stifterne på en drejekoder er:
- Jord.
- Positiv forbundet til + 5V
- Udgangssignal A pin
- Udgangssignal B pin
- Clock pin eller fælles pin.
KODEREN tilvejebringer impulser, der repræsenterer ændringen i akselpositionen, som systemerne kan forstå. Overvej, at en roterende encoder er tændt, og akslen bevæges.
Som vist i ovenstående tabel skal du overveje, at akslen bevæges med uret. Med dette vil der være Falling Edge på A-terminalen og derefter på B-terminalen.
Overvej skaftet bevæges mod uret. Med dette vil der være Falling Edge ved B-terminalen og derefter ved A-terminalen.
Denne kant vil forekomme en gang i 360/20 = 18 grader (dette er for en koder med 20 position, dette skifter fra type til type, jo højere tælling større nøjagtighed).
Med begge ovenstående betingelser kan vi få retning og grad af rotation. Således får vi nødvendige parametre for at få positionen af en aksel.
Komponenter
Hardware: ATMEGA8, tilslutningsstifter, AVR-ISP PROGRAMMER, 220Ω modstand, LED (otte stykker), 1KΩ modstand, 220Ω modstand (2 stykker), 100nF kondensator (2 stykker), brødbræt.
Software: Atmel studio 6.1, progisp eller flash-magi.
Kredsløbsdiagram og arbejdsforklaring
Kondensatorerne her er til neutralisering af kontaktspringende effekt i ENCODER. Uden disse kondensatorer vil der være nogle alvorlige problemer i positionslæsning.
Når akslen bevæges, vil der være tidsforskel mellem to outputstifter output. ATMEGA8 genkender denne tidsforskel for urets retning mod urets rotation.
Hvis rotationen er med uret, øges det binære antal med en, og dette antal vises i LED-port som vist i figuren.
Hvis rotationen er mod uret, mindskes det binære antal med et, og det binære antal vises ved LED-byte.
Husk her, at vi ikke indstiller nogen sikringsbits af atmega8, så controlleren arbejder på 1MHz intern intern krystal.
Arbejdet med grænseflader mellem roterende encoder og ATmega8 mikrokontroller er forklaret i nedenstående kode.