Raspberry Pi - Rotary Encoder
Deze handleiding legt uit hoe u de incrementele rotary encoder gebruikt met de Raspberry Pi. Dit gaan we behandelen:
- Hoe de rotary encoder werkt
- Het verschil tussen een rotary encoder en een potentiometer (een ander type draaiknop)
- Hoe u de rotary encoder fysiek aansluit op een Raspberry Pi
- Hoe u code schrijft voor de Raspberry Pi om richting en positie van de rotary encoder uit te lezen
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de Rotary Encoder
Een draaiende knop die beweging omzet in een signaal wordt een rotary encoder genoemd. Hiermee kunt u zien hoeveel iets is verdraaid en waar het zich bevindt. Er zijn twee hoofdtypen:
- Incrementele encoder: Deze gebruikt snelle pulsen om te meten hoeveel iets is veranderd.
- Absolute encoder: Dit type geeft voor elke positie een unieke code, zodat u precies weet waar iets is, zelfs als de stroom uitvalt.
Deze gids richt zich op de incrementele encoder.
Rotary Encoder Module Pinout

Een rotary encoder module heeft 4 pinnen:
- CLK pin (Output A): is de hoofd-puls die ons vertelt hoeveel rotatie heeft plaatsgevonden. Elke keer dat u de knop een klik (detent) in welke richting ook draait, geeft de CLK pin een signaal dat een volledige cyclus doorloopt (LOW → HIGH → LOW).
- DT pin (Output B): werkt vergelijkbaar met de CLK pin maar het signaal loopt 90 graden achter op dat van CLK. Dit helpt ons de draairichting te bepalen (met de klok mee of tegen de klok in).
- SW pin: is de uitgang van de drukknop in de encoder. Normaal is deze open. Met een pull-up weerstand op deze pin is de SW pin HIGH wanneer de knop niet is ingedrukt, en LOW wanneer hij wel wordt ingedrukt.
- VCC pin (+): moet verbonden worden met VCC (tussen 3,3 en 5 Volt)
- GND pin: moet verbonden worden met GND (0V)
Rotary Encoder versus Potentiometer
U kunt de rotary encoder verwarren met de potentiometer, maar het zijn verschillende componenten. Hier een vergelijking:
- De rotary encoder is als een moderne versie van de potentiometer, maar kan meer functies.
- De rotary encoder kan 360 graden rondgedraaid worden zonder te stoppen, terwijl een potentiometer meestal ongeveer driekwart van een cirkel draait.
- De rotary encoder geeft pulsen (digitale signalen), terwijl de potentiometer een analoge spanning levert.
- De rotary encoder is handig om te meten hoeveel de knop is verdraaid, niet precies waar hij staat. Een potentiometer is geschikt als u exact wilt weten welke stand de knop heeft.
Hoe werkt een Rotary Encoder

Binnenin de encoder zit een schijf met gleuven die verbonden is met een pin C, wat fungeert als gedeelde aarde (ground). Er zijn nog twee andere pinnen, A en B.
- Wanneer u aan de knop draait, maken pinnen A en B contact met de gedeelde aarde pin C, maar in een bepaalde volgorde afhankelijk van de draairichting (met de klok mee of tegen de klok in).
- Deze contacten creëren twee signalen die ietwat uit fase zijn omdat de ene pin eerder contact maakt dan de andere. Deze twee signalen liggen 90 graden uit elkaar in timing. Dit heet quadratuur-encoding.
- Draait u de knop met de klok mee, dan maakt pin A eerst contact met de aarde voordat pin B dat doet. Draait u tegen de klok in, dan maakt pin B eerst contact.
- Door te controleren wanneer elke pin contact maakt of verliest met de aarde, kunnen we bepalen welke kant de knop op draait. We doen dit door te zien wat er met pin B gebeurt als pin A verandert.

Wanneer pin A wisselt van LOW naar HIGH:
- Als pin B LOW is, is de knop met de klok mee gedraaid.
- Als pin B HIGH is, is de knop tegen de klok in gedraaid.
※ Notiz:
Pin A en B zijn verbonden met respectievelijk de CLK en DT pinnen. Afhankelijk van de fabrikant kunnen deze omgewisseld zijn. De onderstaande code is getest met de rotary encoder van DIYables.
Hoe Programmeert u voor de Rotary Encoder
- Controleer het signaal van de CLK pin
- Als de status verandert van LOW naar HIGH, controleer dan de status van de DT pin.
- Als de DT pin HIGH is, wordt de knop tegen de klok in gedraaid, verhoog de teller met 1
- Als de DT pin LOW is, wordt de knop met de klok mee gedraaid, verlaag de teller met 1
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Raspberry Pi Code – Rotary Encoder
De onderstaande code voor Raspberry Pi doet het volgende:
- Detecteert de richting en de hoeveelheid rotatie van de encoder.
- Bij het detecteren dat de knop een klik (detent) met de klok mee draait, wordt de teller met één verhoogd.
- Bij het detecteren dat de knop een klik tegen de klok in draait, wordt de teller met één verlaagd.
- Detecteert of de knop wordt ingedrukt.
Snel aan de slag
- Zorg dat u Raspbian of een ander compatibel besturingssysteem op uw Raspberry Pi geïnstalleerd heeft.
- Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
- Zorg dat uw Raspberry Pi toegang tot internet heeft als u bibliotheken moet installeren.
- Gebruikt u de Raspberry Pi voor het eerst? Zie dan hoe u de Raspberry Pi instelt
- Verbind uw pc met de Raspberry Pi via SSH met de ingebouwde SSH-client op Linux en macOS of met PuTTY op Windows. Zie hoe uw pc verbindt met Raspberry Pi via SSH.
- Zorg dat u de RPi.GPIO library geïnstalleerd heeft. Zo niet, installeer deze dan met het volgende commando:
- Maak een Python-scriptbestand aan met de naam rotary_encoder.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit via de Terminal met het volgende commando:
- Draai de knop met de klok mee en daarna tegen de klok in
- Druk op de knop
- Bekijk het resultaat in de Terminal.
Code-uitleg
Bekijk de commentaarregels in de code voor een regel-voor-regel toelichting.
Raspberry Pi Rotary Encoder Toepassingen
Met de Rotary Encoder kunt u onder andere de volgende toepassingen realiseren:
- Raspberry Pi - Rotary Encoder bestuurt de positie van een servo motor
- Raspberry Pi - Rotary Encoder bestuurt de helderheid van een LED
- Raspberry Pi - Rotary Encoder bestuurt de snelheid van een stappenmotor
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.
Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap.