Mi a különbség az Arduino potenciométer és a forgó kódoló között

Mi A Kulonbseg Az Arduino Potenciometer Es A Forgo Kodolo Kozott



A potenciométereket és a forgó jeladókat egyaránt használják a forgás vagy a pozíció érzékelésére. Ezek elektromechanikus eszközök, amelyeket sokrétűen alkalmaznak az elektronika területén. Az Arduino-val is összekapcsolhatók különböző projektek létrehozásához. Ez a cikk bemutatja a potenciométer és a forgó jeladó közötti alapvető különbségeket.

Mi az a potenciométer

A potenciométer egy reosztát, vagy nevezhetjük változó ellenállásnak. Az ellenállás értéke a potenciométer tengelyforgásától függően változik. A potenciométerek csak beállított távolságra tudnak fordulni. Léteznek analóg és digitális potenciométerek is, de ezek szinte hasonlóak. Az analóg potenciométerek összekapcsolhatók Arduino, Raspberry Pi és más eszközök mikrokontrollereivel. A potenciométer három érintkezővel rendelkezik, amelyek a Vcc bemeneti feszültség érintkezője, a GND földelés és a bemeneti jel érintkezője. A jelérintkező bemenetet biztosít az Arduino számára.









Mi az a Rotary Encoder

A forgó jeladók érzékelik a forgatógomb szöghelyzetét, és jelet küldenek a mikrokontrollernek vagy bármely más eszköznek, amelyhez csatlakoztatva vannak. Egyenletes érintkezési felületekkel rendelkező lemeze van, amelyek egy közös tűvel vannak összekötve. A forgójeladók beépített nyomógombbal vagy forgókapcsolóval is rendelkeznek, amely az egyedi igényeknek megfelelően BE és KI jeleket ad.







A forgó jeladó pinout diagramja és tű leírása

Az alábbi diagram a forgó jeladó érintkezőit mutatja. Ezeknek a csapoknak a leírása a következő:

Out B vagy CLK



Ez a tű jelzi, hogy a gomb vagy a forgó jeladó hányszor fordult el. Minden alkalommal, amikor a gombot elforgatják, a CLK egy HIGH és LOW ciklust hajt végre. Egy fordulatnak számít.

Out A vagy DT

Ez a forgó jeladó második kimeneti érintkezője, amely meghatározza a forgásirányt. 90°-kal elmarad a CLK jeltől. Ezért, ha az állapota nem egyenlő a CLK állapotával, akkor a forgásirány az óramutató járásával megegyező, ellenkező esetben az óramutató járásával ellentétes.

Kapcsoló

A kapcsolócsap segítségével ellenőrizhető, hogy a nyomógomb meg van-e nyomva vagy sem.

Vcc

Ez a tű 5 V-os tápegységhez van csatlakoztatva

GND

Ez a tű csatlakozik a földhöz

Különbség a potenciométer és a forgó jeladó között

Leírás Potenciométer Rotary Encoder
Forgás A potenciométer csak egy irányba forgatható, és azt is a kör háromnegyedéig. A Rotary Encoder képes folyamatosan 360°-ban forogni az óramutató járásával megegyező és azzal ellentétes irányban.
Analóg vagy digitális eszköz A potenciométer többnyire egy analóg bemeneti eszköz, amely a pozíció változását méri az ellenállás értékének változásán keresztül A forgó jeladó egy digitális bemeneti eszköz, amely érzékeli a szöghelyzetet és digitális értékeket szolgáltat.

Bemeneti pozíciók száma A potenciométernek végtelen számú bemeneti pozíciója van, amelyeken értékeket lehet venni, mivel ez egy analóg eszköz A forgó jeladóknak véges számú bemeneti pozíciója van.

A potenciométer beállítása Arduino segítségével

A potenciométert egyszerűbb beállítani egy Arduino-val, mint egy forgó jeladóval. A potenciométernek csak három érintkezője van, VCC, GND, és egy INPUT érintkező, amely az Arduino-hoz csatlakozik. Az alábbiakban látható a potenciométer és az Arduino összekapcsolása:

A potenciométer programozása az Arduino-ban egyszerűbb, mint a forgó jeladóé. Az alábbiakban látható mindkettő szintaktikai kódja.

Példakód a potenciométerhez

const int pot = A0; // Bemeneti PIN deklarálása
üres beállítás ( ) {
   pinMode ( pot, INPUT ) ; // A beállítási érték a potenciométerből származik mint bemenet
Serial.begin ( 9600 ) ;
}
üres hurok ( ) {
int potValue = analogRead ( edény ) ; // A potenciométer által vett bemeneti érték kiolvasása
térkép ( potValue, 0 , 1023 , 0 , 255 ) ; // A bemenet értékének skálázása, hogy megfeleljen 8 -bit
Serial.println ( potValue ) ; // Kiírja a potenciométerbe bevitt értéket
késleltetés ( 100 ) ;
}

A potenciométer kódja nagyon egyszerű és egyszerű. Az Arduino analóg bemeneti lábáról egyszerűen deklarálják, hogy bemenetet vesz a potenciométerről, majd az analogRead() és a map() függvények segítségével beolvassák és megadják a potenciométer leolvasásának pontos értékét.

A Rotary Encoder összekapcsolása az Arduino-val

A forgó jeladó öt érintkezős. A forgó kódoló VCC-je és GND-je csatlakozik az Arduino-hoz. A fennmaradó CLK, DT és SW érintkezők az Arduino digitális bemeneti érintkezőihez csatlakoznak.

Arduino kód a Rotary Encoderhez

// Rotary Encoder bemenetek
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int számláló = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
aláíratlan long lastButtonPressTime = 0 ;
üres beállítás ( ) {
// Állítsa be a kódoló érintkezőit mint bemenetek
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, BEMENET ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Soros monitor beállítása
Serial.begin ( 9600 ) ;
// Olvassa el a CLK kezdeti állapotát
lastCLKState = digitalRead ( CLK_PIN ) ;
}
üres hurok ( ) {
// Olvassa el a CLK aktuális állapotát
currentCLKState = digitalRead ( CLK_PIN ) ;
// Ha utolsó és a CLK jelenlegi állapota eltérő, akkor pulzus keletkezett
// Csak erre reagáljon 1 állapotváltoztatás a kétszeres számítás elkerülése érdekében
ha ( jelenlegiCLKSállapot ! = lastCLKState && currentCLKState == 1 ) {
// Ha a DT állapota eltér a CLK állapottól, akkor
// a kódoló az óramutató járásával ellentétes irányban forog, ezért csökkentse
ha ( digitalRead ( DT_PIN ) ! = aktuálisCLKSállapot ) {
számláló--;
currentDirection = 'CCW' ;
} más {
// A kódoló az óramutató járásával megegyező irányban forog, ezért növelje
számláló++;
currentDirection = 'CW' ;
}
Serial.print ( 'Forgatás iránya:' ) ;
Serial.print ( aktuálisDirection ) ;
Serial.print ( ' | Ellenérték: ' ) ;
Serial.println ( számláló ) ;
}
// Emlékezzen a utolsó CLK állapot
lastCLKState = jelenlegiCLKState;
// Olvassa el a gomb állapotát
int buttonState = digitalRead ( SW_PIN ) ;
// Ha LOW jelet észlelünk, megnyomjuk a gombot
ha ( buttonState == ALACSONY ) {
// Ha 50 ms telt el azóta utolsó LOW impulzus, ez azt jelenti, hogy a
// gombot megnyomta, felengedte, majd újra megnyomta
ha ( millis ( ) - lastButtonPressTime > ötven ) {
Serial.println ( 'A gomb megnyomva!' ) ;
}
// Emlékezzen a utolsó gombnyomás esemény idő
lastButtonPressTime = millis ( ) ;
}
// Tedd ban ben enyhe késéssel Segítség visszaverni az olvasást
késleltetés ( 1 ) ;
}

A fent megadott kódban a CLK láb állapotát a loop() függvényben ellenőrizzük. Ha nem egyezik meg az előző állapotával, az azt mutatja, hogy a forgatógomb elfordult. Most a gomb forgásirányának ellenőrzéséhez a CLK jelenlegi állapotát összehasonlítjuk a DT állapotával. Ha mindkét állapot nem egyenlő, akkor ez azt mutatja, hogy a gomb az óramutató járásával megegyező irányban forgott, és az ellentétes érték növeli a forgatógomb helyzetét. Ellenkező esetben a számláló csökken.

Alkalmazások

A potenciométereket főként ott használják, ahol vezérlő funkcióra van szükség. Hangerőszabályozásra, LED fényerőszabályozásra használják. Másrészt a forgójeladók az alkalmazások széles skáláját kínálják. Használják robotikában, orvosi berendezésekben, automatizálásban és játékokban.

Következtetés

A potenciométerek és a forgójeladók egyaránt különösen hasznos eszközök az elektronika területén. A forgó jeladók fejlettek a potenciométerekhez képest, mivel folyamatosan 360°-ban elforgathatók. Hasonlóképpen több alkalmazásuk van a modern elektronikában, és valamivel nehezebb használni őket, mint a potenciométereket .