I denne opplæringen skal vi grensesnitt en roterende koder med ATmega8 mikrokontroller. ATmega8 er atmels mikrokontrollerserie designet for innebygde applikasjoner. Rotary encoder brukes til å vite posisjonen til bevegelse og vinkelbevegelse til en motor eller akse. Det er vanligvis en tre terminalenhet, med strøm og jordpinne teller til fem. En roterende kodermodul er vist nedenfor.
Pinnene til en roterende koder er:
- Bakke.
- Positiv koblet til + 5V
- Utgangssignal A pin
- Utgangssignal B-pinne
- Clock pin eller vanlig pin.
KODEREN gir pulser som representerer endringen i akselposisjonen for systemene å forstå. Tenk på at en ROTATORISK KODER er slått på og akselen flyttes.
Som vist i tabellen ovenfor, bør du vurdere at skaftet beveges med klokken. Med dette vil det være Falling Edge på A-terminalen og deretter på B-terminalen.
Tenk på at skaftet beveges mot klokken. Med dette vil det være Falling Edge på B-terminalen og deretter på A-terminalen.
Denne kanten vil oppstå en gang i 360/20 = 18 grader (Dette er for en koder med 20 posisjon, dette endres fra type til type, jo høyere teller større nøyaktighet).
Med begge ovennevnte forhold kan vi få retning og rotasjonsgrad. Dermed får vi nødvendige parametere for å få posisjonen til en aksel.
Komponenter
Maskinvare: ATMEGA8, tilkoblingspinner, AVR-ISP PROGRAMMER, 220Ω motstand, LED (åtte stykker), 1KΩ motstand, 220Ω motstand (2 deler), 100nF kondensator (2 stk), brødbrett.
Programvare: Atmel studio 6.1, progisp eller flash magi.
Kretsdiagram og arbeidsforklaring
Kondensatorene her er for å nøytralisere kontaktstoppeffekten i ENCODER. Uten disse kondensatorene vil det være noen alvorlige problemer med posisjonsavlesning.
Når akselen flyttes, vil det være tidsforskjell mellom to utganger. ATMEGA8 vil gjenkjenne denne tidsforskjellen med urviseren mot klokken mot rotasjon.
Hvis rotasjonen er med klokken, økes binærtellingen med en, og denne tellingen vises i LED-port som vist i figuren.
Hvis rotasjonen er mot klokken, reduseres binærtellingen med en, og binærantallet vises ved LED-byte.
Husk at vi ikke setter noen sikringsbiter av atmega8, så kontrolleren vil jobbe med 1Mhz internt krystall.
Arbeid med grensesnitt roterende koderen med ATmega8 mikrokontroller er forklart i koden nedenfor.