Rotační enkodér

Page

Stránky / Súčiastky ku Arduinu /

Rotační enkodér (kódovač) je mechanická součástka, která snímá polohu. Nemá krajní polohu a lze jím otáčet neomezeně na obě strany. V reálném životě se s ním setkáváme například v autorádiích nebo mikrovlnných troubách. Pomocí něj lze pohodlně nastavovat hodnoty, při kterých je žádoucí, aby se daly postupně nastavovat v jednom nebo druhém směru.

Názvosloví

V češtině neexistuje ustálená pojmenování pro tuto součástku. Proto uvádím všechny názvy, s nimiž jsem se během přípravy tohoto článku setkal.

  • rotary encoder - V angličtině je toto zažitý název.
  • rotační kodér - Takto to překládá Google Překladač.
  • rotační kódovač - Pojmenování na stránkách společnosti Farnell (na slovenské verzi).
  • inkrementální spínač/snímač polohy - Pojmenování na stránkách GME.
  • rotační enkodér - Pojmenování v běžné řeči, kterou používají lidé na fórech.

Druhy

Existují dva základní druhy:

  • absolutní - Vědí oznámit přesnou polohu natočení, přičemž poloh může být N.
  • inkrementální - Vědí oznámit pouze to, zda se otáčejí jedním směrem nebo druhým a přesnou polohu je třeba sledovat programově.

V následujícím textu se budeme věnovat pouze inkrementálním.

Schéma

Vnitřní zapojení enkodéru se dá na internetu obtížněji objevit a proto zde uvádím schématu, které jsem našel v datasheetu firmy Bourns, konkrétně ke PEC11R. Všechny enkodéry, které se dají koupit mají přibližně tento rozměr a také tvar.

Na schématu jsou důležité dva místa. Body označené jako 1 a 2 jsou vývody tlačítka, které se při stlačení sepne. Jejich ovládání se v ničem neliší od toho, jak se ovládají běžné tlačítka.

Body označené jako A, B a C jsou vývody samotného enkodéru. Jejich význam je možné pochopit podle následujícího obrázku. Samotný enkodér je jen ta část označena čárkovanou čarou. Bod C se připojuje na GND. Body A a B se připojují přes pull-up rezistor ke zdroji napětí.

Na schématu je ještě vidět kombinaci rezistoru a kondenzátoru, která se připojuje ke vstupu mikrokontroléru. Jejich úkolem je zabránit zákmitům tlačítek, protože tento jev může vznikat i v rotačním enkoderu. Pokud při ovládání nevadí drobná nedokonalost a občasné výskyty falešných signálů, může se tato část vynechat.

Jak to funguje

V klidovém stavu není propojen ani jeden z výstupů. O tom lze přesvědčit pomocí multimetru, kterým nenaleznete žádný zkrat mezi libovolnými piny. Teprve při otáčení hřídele dochází ke spojování bodů A a B s bodem C. Tehdy je signalizována poloha hřídele pomocí následujícího kódu.

Signály na pinech A a B jsou vůči sobě navzájem mírně posunuté a podle toho se dá zjistit, kterým směrem se otáčí hřídel. Není to úplně snadno představitelné, proto se to pokusím zaznamenat na video. Na videu se pokusím sejmout i zákmity tlačítek.

Jak zjistit umístění pinů

Pokud kupujete ze zdroje, který nedodává datasheet, je dobré se přesvědčit, jak jsou jednotlivé piny zapojeny. To je trochu problém, protože v klidovém stavu není propojen žádný pin a pokud chcete kroutit hřídelí a současně měřit multimetrem, nebudete mít na to dostatek rukou.

Můžete si pomoci jednoduchým zapojením na zkušebním poli:

  • Propojte 5 V, LED diodu a rezistor 10k. Toto bude představovat větev A.
  • Propojte rezistor 10k a GND. Toto bude představovat větev C.
  • Propojte 5 V, LED diodu a rezistor 10k. Toto bude představovat větev B.

Připojte ke každé větvi jeden pin rotačního enkodéru a sledujte, jak se budou při pomalém otáčení hřídele postupně zapínat a vypínat jednotlivé LED. Pokud uvidíte svítit LED v následujícím pořadí, našli jste správné piny:

  • 00
  • 10
  • 11
  • 01
  • 00

Protože máte na každém pinu rezistor, nehrozí nebezpečí, že se vám podaří nechtěně něco vyzkratovat.

Video

Ve videu je vidět, jak rotační enkodér funguje. Je tam zapojen na zkušebním poli a při otáčení hřídelí se postupně rozsvítí jednotlivé LED diody.

Rotační enkodér na Internetu

Toto je seznam jiných zdrojů, které pomohou při studiu enkodérů. Jeden ze zdrojů je i slovenský.

  • Arduino - Rozcestník na stránce Arduina. Je tam kdeco, ale třeba si dát pozor na to, že jsou tam i nefunkční řešení.
  • Ako na rotačné enkodéry - Řešení pro více rotačních enkodérů v slovenštině.
  • Rotary encoders, done propertly - Předchozí článek v slovenštině vychází z této stránky. Zde je vysvětlena logika ošetřování zákmitů na rotačním enkodéru.
  • Rotační enkodéry zadruhé - nelineární přírůstky - Autor článku Jak na rotační enkodéry nespal na vavřínech a napsal úpravu původního článku. Čím rychleji točíte hřídelí, tím rychleji narůstá hodnota. Přírůstek se řídí funkcí, která je závislá od času mezi jednotlivými signály z enkodéru.

Programování

Na závěr přichází to nejlepší. Praktické programování rotačního enkodéru. Bude se skládat z několika článků.

  • ATtiny85 a PWM stmívač diody - Inspirací mi byla stránka Technoblogy, kde se podrobně přebírá problematiky Gray kódování, které signalizuje ekodér. Toto je zároveň i příklad, kde na nějaké nepřesnosti až tak nezáleží a tak se tam enkodér připojuje bez ošetřování zákmity. V mé verzi je vylepšené PWM stmívání LED, aby mělo oko pocit lineárního jasu a výsledný program funguje mírně odlišně.
  • Arduino a rotační enkodér - Několik praktických experimentů s Arduinem a rotačním enkodérem.

21.04.2018


Menu