Skocz do zawartości

Pomiar prędkości enkoderem absolutnym


Hudyvolt

Pomocna odpowiedź

Mam problem jak w temacie. Chciałbym za pomocą enkodera absolutnego odczytywać prędkość w dwóch kierunkach.

Niby prosta sprawa. Pomiar w odstępie czasu:

t1 - 20

t2 - 30

różnica pomiędzy nimi (10) podzielona przez odstęp czasu i mam prędkość kątową.

W przypadku obrotów w przeciwnym kierunku różnica wyjdzie ujemna i o to chodzi.

Co zrobić jednak w przypadku przejścia przez zero (zakłam zakres 0-359)?

t1 - 355

t2 - 5

Różnica wynosi -350, czyli informacja nieprawdziwa. Powinno być 10.

Wstępnie rozwiązałem to tak, że przy maksymalnej prędkości obrotowej różnica pomiędzy odczytami wyniesie ok. 250. Daję więc warunek, że przy obliczonej różnicy mniejszej od -300 dodaję do wyniku 360 lub dla różnicy większej od 300 (obroty w przeciwnym kierunku) odejmuję 360.

Nie bardzo mi się jednak podoba to rozwiązanie. Czy macie jakiś lepszy pomysł?

Link do komentarza
Share on other sites

Teoretycznie ten sam problem występuje też podczas pomiaru czasu timerem. Gdy w czasie okresu pomiarowego timer przekręci się przez FFFF→0000, wydaje się, że wynik powinien być błędny. Tam jednak cechy (natywnej dla procesora) arytmetyki U2 modulo 2^N zapewniają, że wynik jest zawsze dobry (0x0200-0xFFF0=0x0210).

W przypadku enkodera i liczb 0..360 taka "automatyka" nie zadziała i żeby wrócić wynikiem odejmowania do poprawnego zakresu musisz korekcję wykonać ręcznie, czyli po prostu dodać 360 dla każdego wyniku < 0. Wynik odejmowania odczytów z enkodera musi być oczywiście zmienną int ze znakiem.

Możesz też pracować tylko liczbach bez znaku: wtedy sprawdzasz warunek na wynik > 360 (10-350=0xFEAC), ale korekcja jest identyczna, dodajesz 360 (0xFEAC+0x0168=0x0014=20) 🙂

Link do komentarza
Share on other sites

Możesz to w pewnym sensie zautomatyzować - wybierz z obu kierunków ten o mniejszej wartości bezwzględnej. Czyli jak masz 359 i 1 to możliwe wyniki to +2 lub -358... mniejsze jest +2 i ten bierzesz jako poprawny.

Oczywiście to tylko działa sensownie jak nie możesz prędkością przekroczyć zmiany na pomiar o 180... w innym wypadku musiałbyś patrzeć na poprzednie wyniki i brać ten bliższy poprzedniemu, ale potrzeba takiego rozwiązania potencjalnie ukazuje nam błąd w założeniach konstrukcyjnych (źle dobrane czasy pomiędzy pomiarami / przekładnia enkodera itp.)

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.