Enkoder a debounce v preruseni
Pavel Hudecek
edizon na seznam.cz
Čtvrtek Říjen 22 15:29:56 CEST 2015
Ano, ta stavová tabulka je nejlepší, případně ještě kombinovat s běžícím
čítačem tak na několika MHz. Zjednodušeně asi takto:
- Při přerušení vždy nulovat čítač.
- Pokud se střídají hrany na obou kanálech, je to ok, tzn. přišlo-li
přerušení od kanálu 1 po té, co jsem akceptoval změnu na 0, je to ok, tedy
započítat.
- Pokud se kanály nestřídají, je to buď rušení, nebo se obrátil směr
otáčení. Tzn. pokud mezitím čítač napočítal podezřele krátký čas, je to
rušení, je-li delší než nějaká smysluplná hranice, započítat.
PH
-----------------
From: Pavel Kutina
nemate nekdo nejaky vhodny algoritmus na likvidaci zakmitu pro enkoder? Mam
STM32F103, na nem na pinu PORT.B0 a B1 laciny, osklivy cinsky enkoder
(pull-upy 10k na 3V3, pull-upy zapnute i na procesoru, abych aspon trochu
zvetsil proud skrz kontakty), preruseni obe obe hrany na B0.
Zatim zkousim ten nejjednodussi algoritmus - hrana mi vygeneruje na B0
preruseni, ja se podivam, jaky je stav na druhem pinu a podle toho se
rozhodnu, jestli prictu nebo odectu z nejake globalni promenne.
V idealnim svete by to stacilo - samozrejme binec delaji ruzne zakmity.
Enkoder produkuje spoustu smeti, zatim jsem to "vyresil" tak, ze po spusteni
preruseni nactu stav pinu, pockam nejakou dobu (cca 300us), nactu stav
znovu, a pokud se stavy nelisi, popojedu ve zpracovani o kus dal. Totez u
druheho pinu. Idealni to neni, ty nejvetsi hruzy to sice odfiltruje, ale
prinasi to dalsi problemy, treba ze pri rychlem protoceni enkoderu to diky
zpozdeni misto pricteni zacne odecitat.
Nemate nekdo nejaky vyzkouseny algoritmus? (Nemluvim o kodu, protoze
nepredpokladam, ze by tu STM32 pod MikroE Pascalem krome me jeste nekdo
pouzival) Idealne nejak zdokumentovany, aby to pochopil i idiot?
S titmtez enkoderem na Arduinu (ovsem s pouzitim cizi knihovny - ze ktrere
to ovsem nejsem schopen pochopit a opsat - tusim, ze je to ona:
http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html) nemam
problem, co se tyka generovani falesnych pulsu ani rychlosti toceni -
evidentne to tedy odfiltrovat jde... V te zminene knihovne autor pozuiva
nejake stavove tabulky, ale evidentne nejsem "technologicky na vysi" a
nechapu to (pravda je, ze uz jsem taky tri dny prakticky nespal).
Další informace o konferenci Hw-list