Potenciometry a otočné enkodéry vypadají na první pohled téměř identicky, ale fungují různými způsoby. Objevte, jak používat obojí s Arduinem.

Mezi komponenty elektronického uživatelského ovládání vynikají otočné knoflíky jako jedny z nejuspokojivějších při použití. Mohou doplňovat dotykové obrazovky a další vstupní zařízení a také dobře fungovat s tlačítky a přepínači. Ale jak můžete přidat knoflík do svých vlastních DIY Arduino projektů?

Máte dvě hlavní možnosti: potenciometr nebo otočný enkodér. Tyto komponenty mohou vypadat podobně, ale způsoby jejich použití se zařízením, jako je deska mikrokontroléru Arduino, jsou velmi odlišné. Podívejme se, jak se navzájem porovnávají.

Potenciometry vs. Rotační kodéry

Většina potenciometrů a rotačních enkodérů, se kterými se kutilové setkají, má podobný tvar. Mají krychlovou nebo válcovou základnu s připojenými spojovacími nohami a kulatou hřídel, která se stáčí a má výřezy pro čepici, na kterou se dá sedět.

Některé potenciometry vypadají odlišně, například ty, které se dodávají ve formě dlouhých skluzů, jako jsou ty, které se nacházejí na hudebních mixážních pultech. Pokud jde o rotační typ, ale na první pohled vypadají téměř identicky s rotačními enkodéry, takže by vám bylo odpuštěno, že si myslíte, že jsou stejné.

instagram viewer

Co je to potenciometr?

Potenciometr je v podstatě proměnný odpor. Jak se hřídel otáčí, odpor uvnitř potenciometru se mění, což umožňuje uživateli měnit vlastnosti obvodu, aniž by jej musel přestavovat. Potenciometry mohou být analogové i digitální, ale digitální potenciometry napodobují analogové, a proto jsou velmi podobné použití.

Potenciometry mají vždy definovaný počáteční a koncový bod, kde již nelze hřídelem otáčet. Některé potenciometry mají při otáčení hrbolatý pocit, ale mnohé jsou také hladké, jako ty, které najdete na starých stereech.

Přestože jsou potenciometry analogové, fungují dobře s mikrokontroléry. Můžete snadno nastavit potenciometr s Raspberry Pi Pico nebo Arduino.

Co je rotační kodér?

Rotační enkodéry určují polohu svého hřídele pomocí senzoru, který poskytuje analogový nebo digitální signál zařízení, ke kterému jsou připojeny. Tím se zařízení sdělí, v jaké poloze je kodér. Vedle otočné hřídele mají rotační snímače obvykle také zabudované tlačítko, které se ovládá zatlačením hřídele směrem dolů.

Na rozdíl od potenciometrů se otočné kodéry mohou otáčet bez zastavení a téměř vždy mají hmatové hrbolky pro každou z poloh hřídele. Mnoho moderních automobilů používá k ovládání svých zábavních systémů rotační kodéry.

Jak používat potenciometr s Arduinem

Díky jejich jednoduché konstrukci je použití potenciometru s Arduinem jednoduché. Váš potenciometr má tři konektory: zem, výstup a vref. Zemnící a vref kolíky se připojují ke konektorům GND a 5V na vašem Arduinu, zatímco výstupní kolík potenciometru se připojuje k jednomu z analogových vstupů na vaší desce.

Kód potenciometru Arduino

Váš kód potenciometru Arduino začíná základním založit() a smyčka() šablonu, kterou uvidíte, když vytvoříte nový soubor v Arduino IDE. Nejprve přidejte a const int proměnná na začátku kódu pro registraci analogového pinového spojení hrnce – v tomto případě A0.

konstint potenciometr = A0;

V návaznosti na to založit() funkce je jednoduchá: stačí deklarovat pin potenciometru jako vstup. Můžete také spustit sériové připojení, pokud chcete odeslat data do počítače pro diagnostiku.

prázdnotazaložit(){
pinMode (potenciometr, INPUT);
Seriál.začít(9600);
}

Dále je čas nastavit smyčka() funkce. Začněte vytvořením int proměnná pomocí analogRead() funkce pro uložení polohy vašeho potenciometru. V návaznosti na to můžete použít mapa() funkce pro zmenšení velikosti hodnoty, se kterou máte co do činění – v tomto příkladu pro splnění specifikací PWM, například pro ovládání jasu LED. Přidejte krátké zpoždění, abyste zajistili stabilitu.

prázdnotasmyčka(){
int potenciometrValue = analogRead (potenciometr);
mapa (potenciometrValue, 0, 1023, 0, 255);
Seriál.println(potenciometrValue);
zpoždění (10);
}

Nyní, když máte pozici svého potenciometru, můžete jej použít s dalšími částmi kódu. Například an -li příkaz by fungoval dobře pro spouštění kódu, když je potenciometr v určité poloze.

konstint potenciometr = A0;

prázdnotazaložit(){
pinMode (potenciometr, INPUT);
Seriál.začít(9600);
}

prázdnotasmyčka(){
int potenciometrValue = analogRead (potenciometr);
mapa (potenciometrValue, 0, 1023, 0, 255);
Seriál.println(potenciometrValue);
zpoždění (10);
}

Jak používat rotační kodér s Arduinem

Rotační enkodéry vyžadují složitější kód než potenciometry, ale i tak se s nimi docela snadno pracuje. Váš rotační kodér má pět kolíků: zem, VCC, kolík tlačítka (SW), výstup A (CLK) a výstup B (DT). Zemnící kolíky a VCC kolíky se připojují k zemnímu a 5V konektorům na vašem Arduinu, zatímco kolíky SW, CLK a BT se připojují k jednotlivým digitálním konektorům na Arduinu.

Kód rotačního kodéru Arduino

Aby byl náš kód jednodušší a lépe se s ním pracovalo, použijeme knihovnu SimpleRotary Arduino vytvořenou MPrograms na GitHub. Než začnete pracovat na kódu, ujistěte se, že máte tuto knihovnu nainstalovanou.

Podobně jako váš kód potenciometru můžete spustit skript rotačního kodéru se základním Arduinem založit() a smyčka() funkční šablona. Začněte deklarováním knihovny SimpleRotary a přiřazením pinů kodéru v tomto pořadí; CLK, DT a SW.

#zahrnout 
Jednoduché Rotační rotační(1,2,3);

Ke svému nemusíte nic přidávat založit() Pokud nechcete použít sériový monitor k diagnostice vašeho rotačního kodéru.

prázdnotazaložit(){
Seriál.začít(9600);
}

The smyčka() funkce je jiný příběh. Určení rotace hřídele kodéru začíná a rotary.rotate() volání funkce, které je přiřazeno k int variabilní. Pokud je výsledek 1, kodér se otáčí ve směru hodinových ručiček. Pokud je výsledek 2, kodér se otáčí proti směru hodinových ručiček. Výsledek bude vždy 0, pokud se kodér od poslední kontroly neotočil.

Můžeš použít -li příkazy ke spuštění dalšího kódu v závislosti na směru otáčení kodéru.

prázdnotasmyčka(){
int kodérRotation;
kodérRotace = rotační.rotovat();

if (encoderRotation == 1) {
Serial.println("ve směru hodinových ručiček");
}

if (encoderRotation == 2) {
Serial.println("proti směru hodinových ručiček");
}
}

Musíte také přidat nějaký kód pro tlačítko vašeho kodéru do smyčka() funkce. Tento proces je velmi podobný, až na to, že použijete rotační.push() funkce, spíše než rotary.rotate().

prázdnotasmyčka(){
int kodérButton;
encoderButton = rotační.push();

if (encoderButton == 1) {
Serial.println("tlačítko stisknuto");
}
}

Tento skript je poměrně jednoduchý a můžete udělat hodně, abyste si jej přizpůsobili. Stojí za to si prohlédnout projektovou dokumentaci SimpleRotary, abyste se ujistili, že používáte všechny její klíčové funkce. Po sestavení by váš kód kodéru měl vypadat takto.

#zahrnout 
Jednoduché Rotační rotační(1,2,3);

prázdnotazaložit(){
Seriál.začít(9600);
}

prázdnotasmyčka(){
int kodérRotation;
kodérRotace = rotační.rotovat();

if (encoderRotation == 1) {
Serial.println("ve směru hodinových ručiček");
}

if (encoderRotation == 2) {
Serial.println("proti směru hodinových ručiček");
}

int kodérButton;
encoderButton = rotační.push();

if (encoderButton == 1) {
Serial.println("tlačítko stisknuto");
}
}

Jak si vybrat mezi potenciometry a rotačními kodéry pro projekty

Jak vidíte, otočné enkodéry a potenciometry fungují docela jinak. Obě tyto komponenty vám poskytují nové způsoby ovládání vašich elektronických projektů, ale který byste si měli vybrat?

Potenciometry jsou cenově dostupné a snadno použitelné, ale umožňují pouze omezený vstupní rozsah. Díky tomu jsou skvělé, když chcete ovládat jas LED nebo zvyšovat a snižovat výkon pro konkrétní komponenty a další podobné úkoly.

Rotační enkodéry poskytují mnohem větší rozsah než potenciometry. Zahrnutí tlačítka znamená, že jsou skvělé pro systémy ovládání menu, jak je vidět v mnoha moderních autech. Tento typ součástek se stal velmi oblíbeným v prostoru pro stavbu mechanických klávesnic. Můžete dokonce postavit malý makropad s vestavěným kodérem.

Podobný vzhled, různé komponenty

Se všemi těmito informacemi byste měli být připraveni začít s elektronickým projektem s potenciometrem nebo otočným kodérem. Tyto komponenty vám mohou poskytnout spoustu kontroly nad obvody, které sestavujete, ale musíte se ujistit, že vyberete správnou možnost pro váš projekt.