In deze tutorial gaan we een roterende encoder koppelen aan een ATmega8-microcontroller. ATmega8 is de microcontroller-serie van atmel die is ontworpen voor embedded toepassingen. Roterende encoder wordt gebruikt om de positie van beweging en hoekbeweging van een motor of as te kennen. Het is meestal een apparaat met drie aansluitingen, met een stroom- en aardingspin tot vijf. Een roterende encodermodule wordt hieronder getoond.
De pinnen van een roterende encoder zijn:
- Grond.
- Positief verbonden met + 5V
- Uitgangssignaal A pin
- Uitgangssignaal B-pin
- Klokpin of gewone pin.
De ENCODER levert pulsen die de verandering in de aspositie vertegenwoordigen zodat de systemen deze kunnen begrijpen. Stel dat een ROTATORY ENCODER wordt ingeschakeld en dat de as wordt bewogen.
Houd er rekening mee dat de as met de klok mee wordt bewogen, zoals weergegeven in bovenstaande tabel. Hiermee is er Falling Edge op de A-terminal en vervolgens op de B-terminal.
Bedenk dat de as tegen de klok in is verplaatst. Hiermee is er Falling Edge bij de B-terminal en vervolgens bij de A-terminal.
Deze flank zal één keer voorkomen voor 360/20 = 18 graden (dit is voor een encoder met 20 posities, dit verandert van type naar type, hoe hoger de telling, hoe nauwkeuriger dit).
Met beide bovenstaande voorwaarden kunnen we richting en mate van rotatie krijgen. Zo krijgen we de vereiste parameters om de positie van een as te bepalen.
Componenten
Hardware: ATMEGA8, aansluitpennen, AVR-ISP PROGRAMMER, 220Ω weerstand, LED (acht stuks), 1KΩ weerstand, 220Ω weerstand (2 stuks), 100nF condensator (2 stuks), breadboard.
Software: Atmel studio 6.1, progisp of flash magie.
Schakelschema en werkuitleg
De condensatoren hier zijn voor het neutraliseren van het contact stuiterende effect in ENCODER. Zonder die condensatoren zullen er ernstige problemen zijn bij het aflezen van posities.
Wanneer de as wordt bewogen, is er een tijdsverschil tussen de twee uitgangspennen. De ATMEGA8 zal dit tijdsverschil herkennen voor rotatie met de klok mee of tegen de klok in.
Als de rotatie met de klok mee is, wordt de binaire telling met één verhoogd en deze telling wordt weergegeven in de LED-poort zoals weergegeven in de afbeelding.
Als de rotatie tegen de klok in is, wordt de binaire telling met één verlaagd en wordt de binaire telling weergegeven bij LED-byte.
Onthoud dat we hier geen fuse bits van atmega8 instellen, dus de controller werkt op 1Mhz standaard intern kristal.
De werking van de interface van de roterende encoder met de ATmega8-microcontroller wordt uitgelegd in onderstaande code.