ATNEL tech-forum
https://forum.atnel.pl/

Całkowana prędkość wraca do zera.
https://forum.atnel.pl/topic20936.html
Strona 1 z 1

Autor:  resonator [ 1 lip 2018, o 21:11 ]
Tytuł:  Całkowana prędkość wraca do zera.

Cześć. Mam taki problem, że całkuje sobie prędkość kątową z żyroskopu żeby otrzymać kąt obrotu. O ile całkowanie prędkości ujemnej wychodzi poprawnie, tzn po obrocie i zatrzymaniu żyra scałkowany kąt jest poprawny i stoi w miejscu. To przy obrocie w drugą stronę kiedy prędkość jest dodatnia, po zatrzymaniu żyroskopu kąt natychmiast zaczyna spadać aż do zera. Zejście do zera z 90stopni zajmuje gdzieś ok. 10 sekund. Ja już nie wiem gdzie może być błąd, rozebrałem kod, podpatrywałem na sucho wartości prędkości i wydawały się być ok. Może Wy coś doradzicie z góry dziękuję.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Potem tylko wyrzucam ang_z na seriala z częstotliwością 10Hz

Autor:  krish [ 2 lip 2018, o 20:18 ]
Tytuł:  Re: Całkowana prędkość wraca do zera.

Mnożysz zmienne int16 z double i podstawiasz wynik do int16, co niekoniecznie może dawać wynik, którego oczekujesz.

Autor:  Alcybiades [ 3 lip 2018, o 09:02 ]
Tytuł:  Re: Całkowana prędkość wraca do zera.

J.w kolega już opisał.

Jeżeli chcesz liczyć na AVRku przesuń sobie przecinek i daj nawet uint32. By ci się zmieściły liczby z wynikami.
W przypadku 8bitowych ciężko jest ogarnąć na nich wydajne liczenie zmiennoprzecinkowych. Po za tym zawsze następują błędy obliczeń. W przypadku jak przesuniesz przecinek i będziesz operować na dużych liczbach bez wartości ułamkowych, błędy będą dużo mniejsze, a i same obliczenia szybsze.
Sama biblioteka zmiennoprzecinkowa zajmowała z tego co pamiętam ok 2kb na AVRku. Nie mówiąc już o wykorzystaniu sporych zasobów ramu do ich obliczania.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/