Witam
Męczę się już kilka dni z obsługą enkodera obrotowego takiego jak stosuje się w niektórych sprzętach (zakłada się na niego gałkę i kręci). Najpopularniejszym typem enkodera jest ten gdzie występuje przesunięcie wychodzącego sygnału jak na obrazku.
Problem mam w tym że program działa dobrze gdy kręcę gałka powoli. Gdy pokręcę szybciej to już jest źle wykrywany kierunek lewo/prawo. Przy powolnym kręceniu też czasem źle wykrywa kierunek.
Dodatkowo takie enkodery lubią się zatrzymać w pozycji "niestabilnej" czyli nie tam gdzie jest zapadka (wystarczy lekko dotknąć pokrętło i wtedy wskoczy w zapadkę).
Obsługa takiego enkodera w praktyce okazała się trudniejsza niż myślałem. Wklejam mój kawałek programu odpowiedzialnego za obsługę.
Kondensatory 100nF, oporniki 180 omów, INT1 skonfigurowane jako Rising edge.
W etykiecie f40_wyjdz dodałem oczekiwanie aż pokretło wskoczy w stan stabilny. Poprawia to działanie obsługi ale jak pisałem wcześniej, pokrętło czasem zatrzymuje się w stanie niestabilnym co zawiesza program. Pozostaje mi to tylko zmienić na pętlę skończoną, np powtarzaną max 10 razy i jeśli pokretło dalej jest niestabilne to wyjście z niej.
Każdy impulsator działa doskonale bez pokretła i jego zapadka też. Problem pojawia się po dodaniu pokrętła bo wtedy mechanizm zapadkowy jest bardziej "miękki".
Macie jakiś pomysł jak to lepiej rozwiązać?
Męczę się już kilka dni z obsługą enkodera obrotowego takiego jak stosuje się w niektórych sprzętach (zakłada się na niego gałkę i kręci). Najpopularniejszym typem enkodera jest ten gdzie występuje przesunięcie wychodzącego sygnału jak na obrazku.
Problem mam w tym że program działa dobrze gdy kręcę gałka powoli. Gdy pokręcę szybciej to już jest źle wykrywany kierunek lewo/prawo. Przy powolnym kręceniu też czasem źle wykrywa kierunek.
Dodatkowo takie enkodery lubią się zatrzymać w pozycji "niestabilnej" czyli nie tam gdzie jest zapadka (wystarczy lekko dotknąć pokrętło i wtedy wskoczy w zapadkę).
Obsługa takiego enkodera w praktyce okazała się trudniejsza niż myślałem. Wklejam mój kawałek programu odpowiedzialnego za obsługę.
Kod: text
Kondensatory 100nF, oporniki 180 omów, INT1 skonfigurowane jako Rising edge.
W etykiecie f40_wyjdz dodałem oczekiwanie aż pokretło wskoczy w stan stabilny. Poprawia to działanie obsługi ale jak pisałem wcześniej, pokrętło czasem zatrzymuje się w stanie niestabilnym co zawiesza program. Pozostaje mi to tylko zmienić na pętlę skończoną, np powtarzaną max 10 razy i jeśli pokretło dalej jest niestabilne to wyjście z niej.
Każdy impulsator działa doskonale bez pokretła i jego zapadka też. Problem pojawia się po dodaniu pokrętła bo wtedy mechanizm zapadkowy jest bardziej "miękki".
Macie jakiś pomysł jak to lepiej rozwiązać?