Vad är skillnaden mellan Arduino Potentiometer och Rotary Encoder

Vad Ar Skillnaden Mellan Arduino Potentiometer Och Rotary Encoder



Potentiometrar och roterande omkodare används båda för att detektera rotation eller avkänna position. De är elektromekaniska anordningar som används med olika tillämpningar inom elektronikområdet. De kan också kopplas till Arduino för att göra olika projekt. Denna artikel är för att demonstrera de grundläggande skillnaderna mellan en potentiometer och en roterande encoder.

Vad är en potentialmätare

En potentiometer är en reostat, eller vi kan kalla det ett variabelt motstånd. Värdet på motståndet varierar beroende på potentiometerns axelrotation. Potentiometrar kan bara vridas till ett inställt avstånd. Det finns både analoga och digitala potentiometrar, men de är nästan lika. Analoga potentiometrar kan kopplas till mikrokontroller på Arduino, Raspberry Pi och andra enheter. En potentiometer har tre stift som är inspänningsstift Vcc, jordstift GND och ingångssignalstiftet. Signalstiftet ger input till Arduino.









Vad är en roterande kodare

Roterande kodare känner av vridknappens vinkelposition och skickar en signal till mikrokontrollern eller någon annan enhet som de är anslutna till. Den har en skiva med jämnt fördelade kontaktytor som är anslutna till ett gemensamt stift. Vridgivare har även en inbyggd tryckknapp eller vridomkopplare som ger PÅ- och AV-signaler enligt specifika krav.







Pinout-diagram och stiftbeskrivning av roterande kodare

Diagrammet nedan visar stiften på den roterande pulsgivaren. Dessa stift beskrivs enligt följande:

Ut B eller CLK



Denna stift ger en utdata på hur många gånger ratten eller vridgivaren har roterats. Varje gång ratten vrids, slutför CLK en cykel med HÖG och LÅG. Det räknas som en rotation.

Ut A eller DT

Detta är det andra utgångsstiftet på den roterande kodaren som bestämmer rotationsriktningen. Den ligger 90° efter CLK-signalen. Därför, om dess tillstånd inte är lika med CLK:s tillstånd är rotationsriktningen medurs, annars moturs.

Växla

Omkopplarstiftet används för att kontrollera om tryckknappen är intryckt eller inte.

Vcc

Detta stift är anslutet till en 5V-matning

GND

Detta stift är anslutet till jord

Skillnaden mellan Potentiometer och Rotary Encoder

Specifikation Potentiometer Roterande kodare
Rotation Potentiometern kan endast vridas i en riktning, och det också för tre fjärdedelar av en cirkel. Rotary Encoder kan rotera 360° kontinuerligt i både medurs och moturs riktning.
Analog eller digital enhet Potentiometern är mestadels en analog ingångsenhet som mäter förändringen i position genom en förändring av värdet på ett motstånd En roterande encoder är en digital ingångsenhet som känner av vinkelpositionen och ger digitala värden.

Antal ingångspositioner En potentiometer har ett oändligt antal ingångspositioner på vilka värden kan tas eftersom det är en analog enhet Roterande omkodare har ett begränsat antal ingångspositioner.

Ställa in Potentiometer med Arduino

Potentiometern är lättare att ställa in med en Arduino än en roterande encoder. Potentiometern har bara tre stift VCC, GND och ett INPUT-stift som är anslutet till Arduino. Potentiometerns gränssnitt med Arduino visas nedan:

Programmering av potentiometern i Arduino är enklare än den för den roterande encodern. Nedan finns exempel på syntaxkoder för dem båda.

Exempelkod för potentiometer

const int pott = A0; // Deklarera ingångsstift
ogiltig installation ( ) {
   pinMode ( pott, INGÅNG ) ; // Inställningsvärde hämtat från potentiometer som inmatning
Serial.begin ( 9600 ) ;
}
tom slinga ( ) {
int potValue = analogRead ( pott ) ; // Avläst värde på ingången tagna av potentiometer
Karta ( potValue, 0 , 1023 , 0 , 255 ) ; // Skala värdet på input för att matcha 8 -bit
Serial.println ( potVärde ) ; // Skriver ut värde som matades in till potentiometern
dröjsmål ( 100 ) ;
}

Potentiometerkoden är väldigt enkel och enkel. Det analoga ingångsstiftet på Arduino förklaras helt enkelt ta indata från potentiometern, och sedan används analogRead()- och map()-funktionerna för att läsa och ge det exakta värdet av avläsningen från potentiometern.

Interfacing Rotary Encoder med Arduino

Rotationsgivaren har fem stift. VCC och GND för den roterande kodaren är anslutna till den för Arduino. De återstående stiften CLK, DT och SW är anslutna till Arduinos digitala ingångsstift.

Arduino-kod för roterande kodare

// Rotary Encoder-ingångar
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int räknare = 0 ;
int aktuellCLKState;
int lastCLKState;
String currentDirection = '' ;
osignerad long lastButtonPressTime = 0 ;
ogiltig installation ( ) {
// Ställ in kodarstiften som ingångar
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Ställ in seriell monitor
Serial.begin ( 9600 ) ;
// Läs initialtillståndet för CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
tom slinga ( ) {
// Läs det aktuella läget för CLK
aktuellCLKState = digitalRead ( CLK_PIN ) ;
// Om sista och nuvarande tillstånd för CLK är olika, sedan en puls uppstod
// Reagera bara på 1 tillståndsändring för att undvika dubbelräkning
om ( nuvarande CLKState ! = sistaCLKState && nuvarandeCLKState == 1 ) {
// Om DT-tillståndet skiljer sig från CLK-tillståndet, sedan
// kodaren roterar moturs, så minska
om ( digitalRead ( DT_PIN ) ! = aktuellCLKState ) {
disken--;
currentDirection = 'CCW' ;
} annan {
// Kodaren roterar medurs, så stega
räknare++;
currentDirection = 'CW' ;
}
Serial.print ( 'Rotationsriktning: ' ) ;
Serial.print ( aktuell riktning ) ;
Serial.print ( ' | Räknarvärde: ' ) ;
Serial.println ( disken ) ;
}
// Kom ihåg sista CLK-tillstånd
lastCLKState = aktuellCLKState;
// Läs knappens status
int buttonState = digitalRead ( SW_PIN ) ;
// Om vi ​​upptäcker en LÅG signal trycks knappen in
om ( buttonState == LÅG ) {
// Om det har gått 50 ms sedan sista LÅG puls betyder det att
// knappen har tryckts ned, släppts och tryckts ned igen
om ( millis ( ) - lastButtonPressTime > femtio ) {
Serial.println ( 'Knapp nedtryckt!' ) ;
}
// Kom ihåg sista knapptryckningshändelse tid
lastButtonPressTime = millis ( ) ;
}
// Sätta i en liten fördröjning till hjälp avstudsa läsningen
dröjsmål ( 1 ) ;
}

I den ovan angivna koden kontrolleras tillståndet för CLK-stiftet i loop()-funktionen. Om det inte är lika med dess tidigare tillstånd, visar det att vridknappen har vridits. Nu, för att kontrollera rattens rotationsriktning, jämförs nuvarande tillstånd för CLK med tillståndet för DT. Om båda tillstånden är olika visar det att ratten har roterats medurs och räknar in dess värde för att visa vridknappens position. I det motsatta fallet, räknare dekrement.

Ansökningar

Potentiometrar används främst där en kontrollfunktion krävs. De används i volymkontroll, LED-ljusstyrka. Å andra sidan erbjuder roterande kodare ett brett utbud av applikationer. De används inom robotik, medicinsk utrustning, automation och spel.

Slutsats

Potentiometrar och rotationsgivare är båda särskilt användbara enheter inom elektronikområdet. Roterande omkodare är avancerade jämfört med potentiometrar, eftersom de kan rotera kontinuerligt till 360°. På samma sätt har de fler tillämpningar inom modern elektronik, och de är något svårare att använda än potentiometrar .