categorieën: Microcontroller-circuits
Aantal keer bekeken: 16,299
Reacties op het artikel: 0

Hoe incrementele encoder aan Arduino te verbinden

 

Vaak in apparaten op microcontrollers moet u het beheer van menu-items organiseren of enkele aanpassingen doorvoeren. Er zijn veel manieren: gebruik knoppen, variabele weerstanden of encoders. Met de incrementele encoder kunt u iets bedienen door de eindeloze rotatie van de hendel. In dit artikel zullen we kijken hoe we de incrementele encoder en Arduino kunnen laten werken.

Hoe incrementele encoder aan Arduino te verbinden

Incrementele encoderfuncties

De incrementele encoder is, net als elk ander type encoder, een apparaat met een roterende handgreep. In de verte lijkt het op een potentiometer. Het belangrijkste verschil met de potentiometer is dat de encoderhandgreep 360 graden draait. Hij heeft geen extreme voorzieningen.

Encoders zijn er in vele soorten. Incrementeel verschilt daarin dat het met zijn hulp onmogelijk is om de positie van de hendel te kennen, maar alleen het feit van rotatie in een bepaalde richting - naar links of naar rechts. Aan de hand van het aantal signaalpulsen kunt u al berekenen in welke hoek deze is gedraaid.

Encoder en Arduino

Op die manier kun je passeren microcontroller commando, beheer het menu, bijvoorbeeld het volumeniveau, enzovoort. In het dagelijks leven zag je ze in autoradio's en andere apparatuur. Het wordt gebruikt als een multifunctioneel niveau-instellingsorgaan, equalizer en menunavigatie.

Geluidsknop

Werkingsprincipe

Binnen de incrementele encoder bevindt zich een schijf met labels en schuifregelaars die hiermee in contact komen. De structuur is vergelijkbaar met een potentiometer.

Gedemonteerde encoder

In de bovenstaande afbeelding ziet u een schijf met markeringen, deze zijn nodig om de elektrische verbinding met het beweegbare contact te onderbreken, waardoor u gegevens krijgt over de draairichting. Het ontwerp van het product is niet zo belangrijk, laten we het werkingsprincipe begrijpen.

Encoderontwerp

De encoder heeft drie informatie-uitgangen, een gemeenschappelijke, de andere twee worden meestal "A" en "B" genoemd, in de bovenstaande afbeelding ziet u de encoderpen met een knop - u kunt een signaal ontvangen als u op de as klikt.

Welk signaal zullen we ontvangen? Afhankelijk van de draairichting verschijnt de logische eenheid eerst op pin A of B, dus krijgen we een in fase verschoven signaal en met deze verschuiving kunnen we bepalen welke richting. Het signaal wordt verkregen in de vorm van een rechthoekige vorm en de microcontroller wordt bestuurd na het verwerken van de gegevens van de rotatierichting en het aantal pulsen.

Werkingsprincipe

De afbeelding toont het symbool van de schijf met de contacten, in het midden is er een grafiek van de uitgangssignalen en aan de rechterkant is de statustabel. Dit apparaat wordt vaak getekend als twee toetsen, wat logisch is, omdat we in feite een signaal krijgen "vooruit" of "terug", "omhoog" of "omlaag", en het aantal acties.

Encoder circuit

Hier is een voorbeeld van een echte encoder pinout:

Voorbeeld van een echte encoder pinout

I wonder:

Een defecte encoder kan worden vervangen door twee knoppen zonder vergrendeling en vice versa: zelfgemaakte bediening waarin twee van deze knoppen kunnen worden voltooid door de encoder in te stellen.

In de onderstaande video ziet u de afwisseling van het signaal op de terminals - tijdens soepele rotatie lichten de LED's op in de volgorde die wordt weergegeven in de vorige grafiek.

Niet minder duidelijk geïllustreerd in de volgende animatie (klik op de foto):

Het apparaat en het werkingsprincipe van de encoder

De encoder kan zowel optisch zijn (het signaal wordt gegenereerd door emitters door fotodetectors, zie onderstaande afbeelding), als magnetisch (het werkt op het Hall-effect). In dit geval heeft hij geen contacten en een langere levensduur.

Hoek sensor

Zoals reeds vermeld, kan de draairichting worden bepaald door welke van de uitgangssignalen eerder is veranderd, maar zo ziet het er in de praktijk uit!

Mechanische bevestigingspunten

De regelnauwkeurigheid is afhankelijk van de resolutie van de encoder - het aantal pulsen per omwenteling. Het aantal pulsen kan variëren van eenheden tot duizenden stukken. Omdat de encoder als positiesensor kan fungeren, geldt dat hoe meer pulsen, des te nauwkeuriger de bepaling zal plaatsvinden.Deze parameter wordt PPR - puls per omwenteling genoemd.

Maar er is een kleine nuance, namelijk een vergelijkbare aanduiding LPR is het aantal labels op de schijf.

En het aantal verwerkte pulsen. Elk label op de schijf geeft 1 rechthoekige puls op elk van de twee uitgangen. De impuls heeft twee fronten - de achterkant en de voorkant. Omdat er twee uitwegen zijn, krijgen we in totaal 4 pulsen, waarvan je de waarden kunt verwerken.

PPR = LPRx4


Maak verbinding met Arduino

We hebben ontdekt wat je moet weten over de incrementele encoder, laten we nu kijken hoe we deze kunnen verbinden met de Arduino. Overweeg het verbindingsdiagram:

Het verbindingsdiagram van de positiesensor naar Arduino

Een encodermodule is het bord waarop de incrementele encoder en pull-up weerstanden zich bevinden. Je kunt alle pinnen gebruiken.

Schakelschema encoder

Als u geen module, maar een afzonderlijke encoder hebt, hoeft u alleen deze weerstanden toe te voegen, het circuit zal in principe niet verschillen. Om de draairichting en de bruikbaarheid te controleren in combinatie met Arduino we kunnen informatie van de seriële poort lezen.

Programma voorbeeld

Laten we de code in meer detail analyseren, in volgorde. In void setup () hebben we aangekondigd dat we communicatie via de seriële poort zouden gebruiken en vervolgens pin 2 en 8 in de invoermodus zouden zetten. Selecteer zelf pincodes op basis van uw verbindingsschema. De constante INPUT_PULLUP stelt de invoermodus in, de Arduino heeft twee opties:

  • INPUT - invoer zonder pull-up weerstanden;

  • INPUT_PULLUP - aansluiting op de ingang van pull-up weerstanden. Er zijn al weerstanden in de microcontroller waardoor de ingang is verbonden met de power plus (pullup).

Als u weerstanden gebruikt om de power plus vast te zetten zoals weergegeven in de bovenstaande diagrammen of de encodermodule gebruikt, gebruikt u de opdracht INPUT en als u om een ​​of andere reden geen externe weerstanden wilt of wilt gebruiken - INPUT_PULLUP.

De logica van het hoofdprogramma is als volgt: als we er een hebben bij ingang “2”, voert het poort H uit naar de monitor, zo niet, L. Dus, als je in dezelfde richting draait op de seriële poortmonitor, krijg je zoiets als: LL HL HH LH LL. En andersom: LL LH HH HL LL.

Als je de regels aandachtig leest, heb je waarschijnlijk gemerkt dat in het ene geval het eerste teken een waarde kreeg en in het andere geval het tweede teken eerst veranderde.


conclusie

Incrementele encoders hebben een brede praktische toepassing gevonden in versterkers voor akoestische systemen - ze werden gebruikt als een volumeregeling, in autoradio's - om geluidsparameters en menunavigatie aan te passen, in computermuizen hiermee blader je dagelijks pagina's (een wiel is op zijn as geïnstalleerd) . En ook in meetinstrumenten, CNC-machines, robots, selsyn niet alleen als besturingselementen, maar ook meetwaarden en het bepalen van de positie.

Zie ook op bgv.electricianexp.com:

  • Methoden voor het lezen en beheren van Arduino I / O-poorten
  • Motor- en servobesturing met Arduino
  • Functies apparaten verbinden met Arduino
  • Arduino verbinden en programmeren voor beginners
  • Meest populaire sensoren voor Arduino

  •