Difference between revisions of "Arduino - Rotary Encoder"
(Created page with "===Rotary Encoder=== Een Rotary Encoder lijkt erg op een potmeter die we al vaak hebben gebruikt. Potmeters hebben een weerstand met een variabel aftappunt. Vaak gebruiken we...") |
(No difference)
|
Revision as of 15:41, 25 February 2018
Rotary Encoder
Een Rotary Encoder lijkt erg op een potmeter die we al vaak hebben gebruikt. Potmeters hebben een weerstand met een variabel aftappunt. Vaak gebruiken we de potmeter om een regelbare spanning te krijgen. Daarvoor hangen we de ene kant van de weerstand aan de plus en de andere kant aan de nul, zodat je op het aftappunt een variabel in te stellen spanning krijgt. De spanning is dan maatgevend voor de stand van de potmeter. Die spanning moet vervolgens wel digitaal worden uitgelezen, waarvoor we dan analoge ingang van de Arduino gebruiken. Daar ontstaat al een probleempje omdat door meetfouten en andere fluctuaties de gemeten spanning steeds een beetje anders is. Zelfs als je helemaal niet aan de potmeter zit. Een eventuele regelaar zal dus continu bij willen regelen, terwijl er eigenlijk niks gebeurt. Bij het servo-project hebben we het hier al een keer over gehad. Een ander probleem met normale potmeters kan ontstaan doordat ze hooguit 300 graden kunnen draaien. Soms geeft dat niet genoeg precisie. In dat geval kun je een dure meerslags potmeter kopen, maar ook dan ben je gelimiteerd. Een Rotary Encoder is een alternatief invoer apparaatje dat in dit soort gevallen uitkomst kan bieden. Uiterlijk lijken ze erg op een potmeter, maar ze werken heel anders. Dat blijkt ook uit het feit dat ze minimaal 4 aansluitpins hebben, terwijl potmeters er meestal drie hebben. In plaats van een spanning, geven Rotary Encoders pulsen af, één puls per stukje draaing. Dergelijke pulsjes kun je met een Arduino tellen. Daar komt bij dat, door een truukje ook de draai-richting kan worden bepaald zodat je kunt optellen en aftrekken. Er is in feite geen limiet voor wat betreft de precisie, maar als je heel grote precisie wilt, moet je natuurlijk wel veel draaien, al kun je daar softwarematig nog wel wat aan doen. Je slaat dan bijvoorbeeld stukken over als de pulsjes snel achter elkaar komen. Op die manier kun je lekker snel naar een bepaald punt toe, zonder in te leveren op precisie. Overigens is het aantal pulsjes per hele ronde afhankelijk van het type Rotary Encoder, waarbij meer pulsjes per ronde natuurlijk is voorbehouden voor de duurdere types. Een standaard Rotary Encoder heeft bijvoorbeeld 18 of 30 graden per tic, dus 20 of 12 tics per 360 graden.
Naast draaiing hebben sommige encoders een drukknop functie: je kunt de knop dan draaien en pulsen genereren, maar ook indrukken en dan op een extra pin een signaal geven. Daarnaast zijn er rotary encoders die echte positie informatie geven, dus niet alleen met pulsen getelde verandering van positie, maar echt de stand van de as "weten" en die gecodeerd als digitaal getal doorgeven. Een dergelijke encoder heeft natuurlijk veel meer pins, bijvoorbeeld 10 pins, om met voldoende precisie de stand door te geven. Ook bij deze encoders ben je vrij om een signaal te gebruiken dat meerdere rondes vergt zodat je zoveel precisie hebt als je maar wilt. Het aantal rondes moet dan wel worden geteld zodat het voordeel van dit type, dat het de stand kent, verdwijnt.
De schakeling
Extra benodigdheden:
- 1 onderdeel zus
- 8 onderdelen zo van 18kΩ
| Bestand:naam bestand.png |
| Beschrijving bovenstaande figuur |
Het programma
Hier de broncode van het programma
Uitleg
Beetje spelen
Verdiepende opdrachtjes