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 .