Wat is het verschil tussen Arduino Potentiometer en Rotary Encoder

Wat Is Het Verschil Tussen Arduino Potentiometer En Rotary Encoder



Potentiometers en roterende encoders worden beide gebruikt om rotatie of positiedetectie te detecteren. Het zijn elektromechanische apparaten die worden gebruikt met diverse toepassingen op het gebied van elektronica. Ze kunnen ook worden gekoppeld aan Arduino voor het maken van verschillende projecten. Dit artikel is bedoeld om de fundamentele verschillen tussen een potentiometer en een roterende encoder te demonstreren.

Wat is een potentiometer

Een potentiometer is een reostaat, of we kunnen het een variabele weerstand noemen. De weerstandswaarde varieert afhankelijk van de asrotatie van de potentiometer. Potentiometers kunnen alleen naar een ingestelde afstand draaien. Er zijn zowel analoge als digitale potentiometers, maar ze lijken bijna op elkaar. Analoge potentiometers kunnen worden gekoppeld aan microcontrollers op Arduino, Raspberry Pi en andere apparaten. Een potentiometer heeft drie pinnen: de ingangsspanningspen Vcc, de aardingspen GND en de ingangssignaalpen. De signaalpen levert input aan Arduino.









Wat is een roterende encoder

Roterende encoders detecteren de hoekpositie van de draaiknop en sturen een signaal naar de microcontroller of een ander apparaat waarop ze zijn aangesloten. Het heeft een schijf met gelijkmatig verdeelde contactgebieden die zijn verbonden met een gemeenschappelijke pin. Roterende encoders hebben ook een ingebouwde drukknop of draaischakelaar die AAN- en UIT-signalen geeft volgens specifieke vereisten.







Pinout-diagram en pinbeschrijving van roterende encoder

Het onderstaande diagram toont de pinnen van de roterende encoder. Deze pinnen worden als volgt beschreven:

Uit B of CLK



Deze pin geeft een output van hoe vaak de knop of roterende encoder is gedraaid. Elke keer dat aan de knop wordt gedraaid, voltooit de CLK een cyclus van HIGH en LOW. Het wordt geteld als één omwenteling.

Uit A of DT

Dit is de tweede uitvoerpin van de roterende encoder die de draairichting bepaalt. Het loopt 90° achter op het CLK-signaal. Daarom, als zijn toestand niet gelijk is aan de toestand van CLK, is de draairichting met de klok mee, anders tegen de klok in.

Schakelaar

De schakelpin wordt gebruikt om te controleren of de drukknop is ingedrukt of niet.

Vcc

Deze pin is verbonden met een voeding van 5V

GND

Deze pin is verbonden met de aarde

Verschil tussen potentiometer en roterende encoder

Specificatie Potentiometer Roterende encoder
Rotatie De potentiometer kan maar in één richting worden gedraaid, en dat ook voor driekwart van een cirkel. De Rotary Encoder kan continu 360° draaien, zowel met de klok mee als tegen de klok in.
Analoog of digitaal apparaat De potentiometer is meestal een analoog invoerapparaat dat de positieverandering meet door een verandering in de waarde van een weerstand Een roterende encoder is een digitaal invoerapparaat dat de hoekpositie detecteert en digitale waarden levert.

Aantal invoerposities Een potentiometer heeft een oneindig aantal invoerposities waarop waarden kunnen worden genomen omdat het een analoog apparaat is Roterende encoders hebben een eindig aantal invoerposities.

Potentiometer instellen met Arduino

De potentiometer is gemakkelijker in te stellen met een Arduino dan met een roterende encoder. De potentiometer heeft slechts drie pinnen VCC, GND en een INPUT-pin die is verbonden met Arduino. Interfacing van de potentiometer met Arduino wordt hieronder getoond:

Het programmeren van de potentiometer in Arduino is eenvoudiger dan dat van de roterende encoder. Hieronder staan ​​​​de voorbeeldsyntaxiscodes voor beide.

Voorbeeldcode voor potentiometer

const int pot = A0; // Declareer invoerpin
ongeldige opstelling ( ) {
   pinMode ( pot, INGANG ) ; // Instelwaarde overgenomen van potentiometer als invoer
Serieel.begin ( 9600 ) ;
}
lege lus ( ) {
int potValue = analogRead ( pot ) ; // Lees waarde van input genomen door potentiometer
kaart ( potwaarde, 0 , 1023 , 0 , 255 ) ; // De waarde van invoer schalen om overeen te komen 8 -beetje
Serial.println ( potWaarde ) ; // Drukt de waarde af die is ingevoerd in de potentiometer
vertraging ( 100 ) ;
}

De potentiometercode is heel gemakkelijk en eenvoudig. De analoge invoerpin van Arduino wordt eenvoudigweg gedeclareerd om invoer van de potentiometer te nemen, en vervolgens worden analoogRead () en map () functies gebruikt om de exacte waarde van het lezen van de potentiometer te lezen en te geven.

Interface Rotary Encoder met Arduino

De roterende encoder heeft vijf pinnen. VCC en GND van de roterende encoder zijn verbonden met die van Arduino. De resterende pinnen CLK, DT en SW zijn verbonden met de digitale ingangspinnen van Arduino.

Arduino-code voor roterende encoder

// Rotary Encoder-ingangen
#definieer CLK_PIN 2
#definieer DT_PIN 3
#definieer SW_PIN 4
int teller = 0 ;
int huidigeCLKState;
int laatsteCLKState;
Tekenreeks huidigeRichting = '' ;
niet-ondertekend lang lastButtonPressTime = 0 ;
ongeldige opstelling ( ) {
// Codeerpennen instellen als ingangen
    pinMode ( CLK_PIN, INVOER ) ;
    pinMode ( DT_PIN, INVOER ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Stel seriële monitor in
Serieel.begin ( 9600 ) ;
// Lees de beginstatus van CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
lege lus ( ) {
// Lees de huidige status van CLK
huidigeCLKState = digitalRead ( CLK_PIN ) ;
// Als laatst en de huidige status van CLK zijn verschillend, Dan er trad een puls op
// Reageer alleen op 1 staatswijziging om dubbeltelling te voorkomen
als ( huidigeCLKState ! = laatsteCLKState && huidigeCLKState == 1 ) {
// Als de DT-status verschilt van de CLK-status, Dan
// de encoder draait tegen de klok in, dus verlaag
als ( digitaal lezen ( DT_PIN ) ! = huidigeCLKState ) {
balie--;
huidigeRichting = 'CCW' ;
} anders {
// Encoder draait met de klok mee, dus ophogen
teller++;
huidigeRichting = 'CW' ;
}
Serieel.afdrukken ( 'Rotatierichting: ' ) ;
Serieel.afdrukken ( huidigeRichting ) ;
Serieel.afdrukken ( ' | Tellerwaarde: ' ) ;
Serial.println ( balie ) ;
}
// Herinner de laatst CLK staat
lastCLKState = huidigeCLKState;
// Lees de knopstatus
int buttonState = digitalRead ( SW_PIN ) ;
// Als we een LAAG signaal detecteren, wordt de knop ingedrukt
als ( buttonState == LAAG ) {
// Als er 50 ms zijn verstreken sinds de laatst LAGE puls, het betekent dat de
// knop is ingedrukt, losgelaten en opnieuw ingedrukt
als ( millis ( ) - lastButtonPressTime > vijftig ) {
Serial.println ( 'Knop ingedrukt!' ) ;
}
// Herinner de laatst knop druk evenement tijd
lastButtonPressTime = millis ( ) ;
}
// Neerzetten in een kleine vertraging op hulp de lezing ontkrachten
vertraging ( 1 ) ;
}

In de hierboven gegeven code wordt de status van de CLK-pin gecontroleerd in de functie loop(). Als het niet gelijk is aan de vorige status, geeft dit aan dat de draaiknop is gedraaid. Om nu de draairichting van de knop te controleren, wordt de huidige toestand van CLK vergeleken met de toestand van DT. Als beide toestanden ongelijk zijn, geeft dit aan dat de knop met de klok mee is gedraaid en wordt de waarde tegengesteld verhoogd om de positie van de draaiknop weer te geven. In het tegenovergestelde geval, teller verlaagt.

toepassingen

Potentiometers worden voornamelijk gebruikt waar een regelfunctie vereist is. Ze worden gebruikt bij volumeregeling, LED-helderheidsregeling. Aan de andere kant bieden roterende encoders een breed scala aan toepassingen. Ze worden gebruikt in robotica, medische apparatuur, automatisering en gaming.

Conclusie

Potentiometers en roterende encoders zijn beide bijzonder nuttige apparaten op het gebied van elektronica. Roterende encoders zijn geavanceerd in vergelijking met potentiometers, omdat ze continu tot 360° kunnen draaien. Evenzo hebben ze meer toepassingen in moderne elektronica en zijn ze iets moeilijker te gebruiken dan potentiometers .