Rotačný enkodér

Page

Stránky / Súčiastky ku Arduinu /

Rotačný enkodér (kódovač) je mechanická súčiastka, ktorá sníma polohu. Nemá krajnú polohu a možno ním otáčať neobmedzene na obe strany. V reálnom živote sa s ním stretávame napríklad v autorádiách alebo mikrovlnných rúrach. Pomocou neho možno pohodlne nastavovať hodnoty, pri ktorých je žiadúce, aby sa dali postupne nastavovať v jednom alebo druhom smere.

Názvoslovie

V slovenčine neexistuje ustálené pomenovanie pre túto súčiastku. Preto uvádzam všetky názvy, s ktorými som sa počas prípravy tohoto článku stretol.

  • rotary encoder - V angličtine je toto zaužívaný názov.
  • rotačný snímač - Takto to prekladá Google Prekladač.
  • rotačný kódovač - Pomenovanie na stránkach spoločnosti Farnell.
  • inkrementálny spínač/snímač polohy - Pomenovanie na stránkach GME.
  • rotačný enkodér - Pomenovanie v bežnej reči, ktorú používajú ľudia na fórach.

Druhy

Existujú dva základné druhy:

  • absolútne - Vedia oznámiť presnú polohu natočenia, pričom polôh môže byť N.
  • inkrementálne - Vedia oznámiť iba to, či sa otáčajú jedným smerom alebo druhým a presnú polohu je treba sledovať programovo.

V nasledovnom texte sa budeme venovať iba inkrementálnym.

Schéma

Vnútorné zapojenie enkodéra sa dá na internete ťažšie objaviť a preto tu uvádzam schémy, ktoré som našiel v datasheete firmy Bourns, konkrétne ku PEC11R. Všetky enkodéry, ktoré sa dajú kúpiť majú približne tento rozmer a aj tvar.

Na schéme sú dôležité dva miesta. Body označené ako 1 a 2 sú vývody tlačidla, ktoré sa pri stlačení zopne. Ich ovládanie sa v ničom nelíši od toho, ako sa ovládajú bežné tlačidlá.

Body označené ako A, B a C sú vývody samotného enkodéra. Ich význam je možné pochopiť podľa nasledovného obrázku. Samotný enkodér je len tá časť označená čiarkovanou čiarou. Bod C sa pripája na GND. Body A a B sa pripájajú cez pull-up rezistor ku zdroju napätia.

Na schéme je ešte vidno kombináciu rezistora a kondenzátora, ktorá sa pripája ku vstupu mikrokontroléra. Ich úlohou je zabrániť zákmitom tlačidiel, pretože tento jav môže vznikať aj v rotačnom enkodéri. Pokiaľ pri ovládaní nevadí drobná nedokonalosť a občasné výskyty falošných signálov, môže sa táto časť vynechať.

Ako to funguje

V kľudovom stave nie je prepojený ani jeden z výstupov. O tom sa dá presvedčiť pomocou multimetra, ktorým nenájdete žiaden skrat medzi ľubovoľnými pinmi. Až pri otáčaní hriadele dochádza ku spájaniu bodov A a B s bodom C. Vtedy je signalizovaná poloha hriadele pomocou nasledovného kódu.

Signály na pinoch A a B sú voči sebe navzájom mierne posunuté a podľa toho sa dá zistiť, ktorým smerom sa otáča hriadeľ. Nie je to úplne ľahko predstavitelné, preto sa to pokúsim zaznamenať na video. Na videu sa pokúsim zosnímať aj zákmity tlačidiel.

Ako zistiť umiestnenie pinov

Pokiaľ kupujete zo zdroja, ktorý nedodáva datasheet, je dobré sa presvedčiť, ako sú jednotlivé piny zapojené. To je trochu problém, pretože v kľudovom stave nie je prepojený žiaden pin a pokiaľ chcete krútiť hriadeľou a súčasne merať multimetrom, nebudete mať na to dostatok rúk.

Môžete si pomôcť jednoduchým zapojením na skúšobnom poli:

  • Prepojte 5 V, LED diódu a rezistor 10k. Toto bude predstavovať vetvu A.
  • Prepojte rezistor 10k a Gnd. Toto bude predstavovať vetvu C.
  • Prepojte 5 V, LED diódu a rezistor 10k. Toto bude predstavovať vetvu B.

Pripojte ku každej vetve jeden pin rotačného enkodéra a sledujte, ako sa budú pri pomalom otáčaní hriadele postupne zapínať a vypínať jednotlivé LED. Ak uvidíte svietiť LED v nasledovnom poradí, našli ste správne piny:

  • 00
  • 10
  • 11
  • 01
  • 00

Pretože máte na každom pine rezistor, nehrozí nebezpečenstvo, že sa vám podarí nechtiac niečo vyskratovať.

Video

Vo videu je vidno, ako rotačný enkodér funguje. Je tam zapojený na skúšobnom poli a pri otáčaní hriadeľou sa postupne rozsvietia jednotlivé LED diódy.

Rotačný enkodér na Internete

Toto je zoznam iných zdrojov, ktoré pomôžu pri štúdiu enkodérov. Jeden zo zdrojov je aj slovenský.

  • Arduino - Rozcestník na stránke Arduina. Je tam kadečo, ale treba si dať pozor na to, že sú tam aj nefunkčné riešenia.
  • Ako na rotačné enkodéry - Riešenie pre viac rotačných enkodérov v slovenčine.
  • Rotary encoders, done propertly - Predchádzajúci článok v slovenčine vychádza z tejto stránky. Tu je vysvetlená logika ošetrovania zákmitov na rotačnom enkodéri.
  • Rotačné enkodéry po druhé – nelineárne prírastky - Autor článku Ako na rotačné enkodéry nespal na vavrínoch a napísal úpravu pôvodného článku. Čím rýchlejšie točíte hriadeľou, tým rýchlejšie narastá hodnota. Prírastok sa riadi funkciou, ktorá je závislá od času medzi jednotlivými signálmi z enkodéra.

Programovanie

Na záver prichádza to najlepšie. Praktické programovanie rotačného enkodéra. Bude sa skladať z niekoľkých článkov.

  • ATtiny85 a PWM stmievač diódy - Inšpiráciou mi bola stránka Technoblogy, kde sa podrobne preberá problematiky Gray kódovania, ktoré signalizuje ekodér. Toto je zároveň aj príklad, kde na nejakej nepresnosti až tak nezáleží a tak sa tam enkodér pripája bez ošetrovania zákmitov. V mojej verzii je vylepšené PWM stmievanie LED, aby malo oko pocit lineárneho jasu a výsledný program funguje mierne odlišne.
  • Arduino a rotačný enkodér - Niekoľko praktických experimentov s Arduinom a rotačným enkodérom.

15.11.2015


Menu