Jaký je rozdíl mezi potenciometrem Arduino a rotačním kodérem

Jaky Je Rozdil Mezi Potenciometrem Arduino A Rotacnim Koderem



Potenciometry a rotační enkodéry se používají k detekci rotace nebo snímání polohy. Jsou to elektromechanická zařízení používaná s různými aplikacemi v oblasti elektroniky. Mohou být také propojeny s Arduino pro vytváření různých projektů. Tento článek má demonstrovat základní rozdíly mezi potenciometrem a rotačním enkodérem.

Co je to potenciometr

Potenciometr je reostat, nebo jej můžeme nazvat proměnný rezistor. Hodnota odporu se mění podle natočení hřídele potenciometru. Potenciometry se mohou otáčet pouze na nastavenou vzdálenost. Existují analogové i digitální potenciometry, ale jsou téměř podobné. Analogové potenciometry mohou být propojeny s mikrokontroléry na Arduino, Raspberry Pi a dalších zařízeních. Potenciometr má tři kolíky, kterými jsou kolík vstupního napětí Vcc, zemnicí kolík GND a kolík vstupního signálu. Signální pin poskytuje vstup pro Arduino.









Co je rotační kodér

Otočné kodéry snímají úhlovou polohu otočného knoflíku a posílají signál do mikrokontroléru nebo jakéhokoli jiného zařízení, ke kterému jsou připojeny. Má kotouč s rovnoměrně rozmístěnými kontaktními plochami, které jsou spojeny se společným kolíkem. Otočné kodéry mají také vestavěné tlačítko nebo otočný přepínač, který dává signály ON a OFF podle specifických požadavků.







Schéma pinů a popis pinů rotačního kodéru

Níže uvedené schéma ukazuje kolíky otočného kodéru. Tyto piny jsou popsány následovně:

Out B nebo CLK



Tento kolík udává, kolikrát se knoflík nebo otočný kodér otočil. Pokaždé, když otočíte knoflíkem, CLK dokončí cyklus HIGH a LOW. Počítá se to jako jedno otočení.

Out A nebo DT

Toto je druhý výstupní kolík otočného kodéru, který určuje směr otáčení. Za signálem CLK zaostává o 90°. Pokud se tedy jeho stav nerovná stavu CLK, směr otáčení je ve směru hodinových ručiček, v opačném případě proti směru hodinových ručiček.

Přepínač

Spínací špendlík se používá ke kontrole, zda je tlačítko stisknuto nebo ne.

Vcc

Tento pin je připojen k napájení 5V

GND

Tento kolík je připojen k zemi

Rozdíl mezi potenciometrem a rotačním kodérem

Specifikace Potenciometr Rotační kodér
Otáčení Potenciometrem lze otáčet pouze jedním směrem a to také o tři čtvrtiny kruhu. Rotační kodér je schopen se nepřetržitě otáčet o 360° ve směru i proti směru hodinových ručiček.
Analogové nebo digitální zařízení Potenciometr je většinou analogové vstupní zařízení, které měří změnu polohy prostřednictvím změny hodnoty odporu Rotační kodér je digitální vstupní zařízení, které snímá úhlovou polohu a poskytuje digitální hodnoty.

Počet vstupních pozic Potenciometr má nekonečný počet vstupních pozic, na kterých lze odebírat hodnoty, protože se jedná o analogové zařízení Rotační snímače mají konečný počet vstupních pozic.

Nastavení potenciometru s Arduino

Potenciometr se snadněji nastavuje u Arduina než u otočného kodéru. Potenciometr má pouze tři piny VCC, GND a pin INPUT, který je připojen k Arduinu. Propojení potenciometru s Arduinem je znázorněno níže:

Programování potenciometru v Arduinu je jednodušší než u otočného kodéru. Níže jsou uvedeny ukázkové kódy syntaxe pro oba z nich.

Ukázkový kód pro potenciometr

const int pot = A0; // Deklarujte vstupní pin
neplatné nastavení ( ) {
   pinMode ( hrnec, VSTUP ) ; // Hodnota nastavení převzata z potenciometru tak jako vstup
Serial.begin ( 9600 ) ;
}
prázdná smyčka ( ) {
int potValue = analogRead ( hrnec ) ; // Odečtěte hodnotu vstupu odebraného potenciometrem
mapa ( potValue, 0 , 1023 , 0 , 255 ) ; // Změna měřítka hodnoty vstupu tak, aby odpovídala 8 -bit
Serial.println ( potValue ) ; // Vypíše hodnotu, která byla zadána do potenciometru
zpoždění ( 100 ) ;
}

Kód potenciometru je velmi snadný a jednoduchý. Analogový vstupní kolík Arduina je jednoduše deklarován tak, že přijímá vstup z potenciometru, a poté jsou použity funkce analogRead() a map() ke čtení a poskytování přesné hodnoty čtení z potenciometru.

Propojení rotačního kodéru s Arduinem

Otočný kodér má pět kolíků. VCC a GND rotačního kodéru jsou připojeny k Arduinu. Zbývající piny CLK, DT a SW jsou připojeny k digitálním vstupním pinům Arduina.

Arduino kód pro rotační kodér

// Vstupy otočného kodéru
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int čítač = 0 ;
int currentCLKSate;
int lastCLKSate;
String currentDirection = '' ;
unsigned long lastButtonPressTime = 0 ;
neplatné nastavení ( ) {
// Nastavte piny kodéru tak jako vstupy
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Nastavení sériového monitoru
Serial.begin ( 9600 ) ;
// Přečtěte si počáteční stav CLK
lastCLKSate = digitalRead ( CLK_PIN ) ;
}
prázdná smyčka ( ) {
// Přečtěte si aktuální stav ČLK
currentCLKSate = digitalRead ( CLK_PIN ) ;
// Li poslední a současný stav CLK se liší, pak došlo k pulzu
// Reagovat pouze na 1 změna stavu, aby se zabránilo dvojímu započtení
-li ( aktuální stav CLKS ! = poslední CLKSstav && aktuální CLKStav == 1 ) {
// Pokud je stav DT jiný než stav CLK, pak
// kodér se otáčí proti směru hodinových ručiček, takže snižte
-li ( digitální čtení ( DT_PIN ) ! = aktuální stav CLKS ) {
čelit--;
currentDirection = 'CCW' ;
} jiný {
// Kodér se otáčí ve směru hodinových ručiček, takže zvyšujte
čítač++;
currentDirection = 'CW' ;
}
Sériový.tisk ( 'Směr otáčení:' ) ;
Sériový.tisk ( currentDirection ) ;
Sériový.tisk ( ' | Protihodnota: ' ) ;
Serial.println ( čelit ) ;
}
// Pamatujte si poslední stav CLK
lastCLKState = aktuálníCLKSstav;
// Přečtěte si stav tlačítka
int buttonState = digitalRead ( SW_PIN ) ;
// Pokud detekujeme signál LOW, je stisknuto tlačítko
-li ( buttonState == NÍZKÁ ) {
// Pokud uplynulo 50 ms od poslední NÍZKÝ puls, to znamená, že
// bylo stisknuto, uvolněno a znovu stisknuto tlačítko
-li ( milis ( ) - lastButtonPressTime > padesáti ) {
Serial.println ( 'Tlačítko stisknuto!' ) ;
}
// Pamatujte si poslední událost stisknutí tlačítka čas
lastButtonPressTime = milis ( ) ;
}
// Dát v mírné zpoždění Pomoc odrazit čtení
zpoždění ( 1 ) ;
}

Ve výše uvedeném kódu se stav pinu CLK kontroluje ve funkci loop(). Pokud se nerovná předchozímu stavu, ukazuje, že se otočný knoflík otočil. Nyní, pro kontrolu směru otáčení knoflíku, je aktuální stav CLK porovnán se stavem DT. Pokud jsou oba stavy nestejné, ukazuje to, že se knoflík otočil ve směru hodinových ručiček a počitadlo zvyšuje jeho hodnotu, aby se zobrazila poloha otočného knoflíku. V opačném případě počítadlo snižuje.

Aplikace

Potenciometry se používají hlavně tam, kde je vyžadována funkce ovládání. Používají se při ovládání hlasitosti, ovládání jasu LED. Na druhou stranu rotační enkodéry nabízejí širokou škálu aplikací. Používají se v robotice, lékařském vybavení, automatizaci a hraní her.

Závěr

Potenciometry a rotační enkodéry jsou zvláště užitečná zařízení v oblasti elektroniky. Rotační enkodéry jsou ve srovnání s potenciometry pokročilejší, protože se mohou otáčet plynule o 360°. Podobně mají více aplikací v moderní elektronice a jejich použití je o něco obtížnější než potenciometry .