Skocz do zawartości

Arduino i enkoder CPR


zazik

Pomocna odpowiedź

zazik, atmegi nie mają wbudowanych peryferiów do sprzętowej obsługi enkoderów, więc najlepiej byłoby zainteresować się tematem przerwań zewnętrznych 🙂

Link do komentarza
Share on other sites

Dużo zależy od tego ile tych CPR Twój enkoder ma. Jeżeli dużo i w dodatku siedzi na osi silnika (a nie na wale wyjściowym przekładni) to częstotliwość impulsów będzie wysoka. Już dla 1000rpm i 64CPR masz ponad 1kHz a przecież nie są to wysokie obroty jak na silnik DC. Musisz pamiętać, że środowisko Arduino już "samo z siebie" korzysta w sposób niejawny z wielu przerwań procesora. Podstawowe to przerwanie liczące czas, następne to te obsługujące generację programowych PWM i sygnałów do serwomechanizmów. Do tego dochodzi UART (Serial.cośtam) i zaczyna być gęsto. Jeżeli przerwanie od wejścia enkodera "nie wciśnie" się między obsługi pozostałych, krok zostanie zgubiony a dodatku przy dużym obciążeniu nie będzie już czasu na wykonywanie programu głównego.

Odpowiedzi na tak ogólne pytania nie są proste, bo i szczegóły implementacji nie są zawsze takie same. Raz się da coś zrobić, innym razem trzeba lekko coś zmodyfikować a w jeszcze innym przypadku po prostu nie ma szans. Napisz jaki to enkoder, czy kwadraturowy i czy potrzebujesz detekcji kierunku. Czy jest na osi silnika, jak szybko zamierzasz nim kręcić i wreszcie jaką pętlę chcesz zamykać? Położenie robota (odometria) czy sam regulator obrotów silnika.

Nie zawsze potrzebna jest duża rozdzielczość więc może wystarczy mniej CPR, może trzeba będzie poświęcić osobny procesor na obsługę pętli sterowania silnikami albo wstawić inny, szybszy lub ze sprzętową obsługą enkoderów. Robi się obsługę takich enkoderów na gołych AVR i to działa do wielu(nastu) kHz, ale organizacja systemu Arduino zużywa trochę mocy procesora i trzeba to wziąć pod uwagę.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.