2014 m. gruodžio 22 d., pirmadienis

Rotary encoders naudojimas

Egzistuoja toks dalykas kaip rotary encoders (Rotaciniai enkoderiai?). Lemona juos vadina skaitmeniniais potenciometrais, ir tame yra truputis tiesios. Jie panašūs į potenciometrus, ir turi 3 išvadus, tačiau veikia visiškai skirtingai. Enkoderiai, juos sukant, išduoda skaitmeninius signalus. Jie patogūs naudoti todėl, kad yra prasisukantys, t.y. į vieną puse galima sukti kiek nori. Taip pat juos labai patogu jungti prie mikrovaldiklio. Nusprendžiau su jais pažaisti, ir nusipirkau 10vnt iš ebay'jaus už maždaug 2.5$.



 Jungimas paprastas - vidurinė koja į GND, kitos dvi kojos - tai A ir B. Ant A ir B užkabinami pull-up rezistoriai. Dabar, jei pajungsime oscilografą prie A ir B kojų ir pasuksime, pamatysime tokį vaizdą.

Geltonas - A, Mėlynas -B

Kaip matote, gauname du vienodus signalus tik pasislinkusius. Jei enkoderį suksime į kitą pusę, signalas gausis toks pats, tik iš kitos pusės. T.y. jeigu dabar kai A leidžiasi B būna 0V, tai sukant į kitą pusę, kai leisis B bus 5V. Žinant šį principą, labai lengva parašyti programą.


Parsisiųsti. Principas toks pats. Padarytas falling pertraukimas ant vieno iš dviejų kojų (A arba B). Falling reiškia, kad suveikia kai lygis keičiasi iš aukšto į žemą. Tada tikrinama ar kita koja tuo metu buvo aukštam ar žemam lygyje, ir pagal tai sprendžiama, ar pasukta pagal, ar prieš laikrodžio rodyklę.
Problema ta, kad programa nuskaito tik 1/4 visų būsenų. Tačiau man tai tik privalumas, nes pasukus rankenėlę vieną kartą (sukant jaučiasi toks tarsi treškėjimas, vienas kartas - tai vienas "stepas"), pereinama per visas 4 būsenas. Todėl jei nuskaitinėjant visas būsenas, pasukus vieną kartą, poz vertė pasikeistų per 4 vienetus.

Kita problema yra ta, kad kaip ir mygtukuose, enkoderiuose persijungiant būsenai atsiranda triukšmas, ir mikrovaldiklis tai gali interpretuoti kaip keletą pasukimų. Todėl juos reikia taip sakant "debouncinti".
Šis procesas gali būti dviejų rūšių : programinis, arba hardwarinis. Aš dažniausiai renkuosi hardwarinį, nes programavimas yra mano silpnoji pusė. Tam aš pasinaudojau tokia schema :

Viską sujungiame ir bandome

Rezultatai
Išbandžiau ir galiu pasakyti, kad veikia labai sklandžiai, neperšoko nei vieno skaičiaus - man tikrai labai patiko. Manau, kad tikrai naudosiu juos projektams, kur reikia ką nors reguliuoti, pvz.: laboratorinis maitinimo šaltinis. Dar vienas geras dalykas kurio nepaminėjau - šie enkoderiai turi integruotus mygtukus. Galima paspausti pačia ašį. Nuo savo oscilografo nusižiūrėjau, kad labai patogu ant tų mygtukų padaryti skalės keitimą. Pvz. jei reikia tikslaus nustatymo, paspaudi mygtuką, ir pereinama į mV reguliavimą, paspaudi dar kartą - grįžtama į V.