Skocz do zawartości

Porównanie czujników ciśnienia, żyroskopów i akcelerometrów


Pomocna odpowiedź

wartość temperatury również odczytuje z czujnika i wyświetlam na wyświetlaczu jest ona podobna do tej z czujnika DS18B20.

przy podstawieniu wartości ze strony 13 czujnik pokazuje niewłaściwa temperaturę i ciśnienie, ale tylko dlatego że mam inne współczynniki kalibracji

poprawienie UT nic nie dało

wartość ciśnienia zmienia się tylko jest zawyżona o jakieś 30hPa od ciśnienia właściwego

przy podstawieniu wartości ze strony 13 czujnik pokazuje niewłaściwa temperaturę i ciśnienie, ale tylko dlatego że mam inne współczynniki kalibracji

Współczynniki też koniecznie trzeba podstawić na te przykładowe wtedy zweryfikujesz poprawność obliczeń.

Jest ich kilka, ale to dwie minuty roboty.

podstawiłem i rzeczywiście zawyża wartość ciśnienia o ponad 40hPa ( wskazuje teraz 740.6hPa)

zauważyłem że błąd wynika z niedokładności wyliczeń np. X2 w wyliczaniu B5 jest większe o jeden gdyż rzeczywista wartość liczby jest -2343,99, a mikrokontroler zapisuje tylko liczby całkowite i pokazuje -2343 a nie -2344. im dalej w wyliczeniach tym błąd rośnie

Miałem analogiczny problem, jedna zmienna różniła się o 1, już nie pamiętam która. Dłubałem dotąd przy tej linii obliczeń aż zaczęło się liczyć tak jak w przykładzie. Niestety nie znam na tyle dobrze C aby zrozumieć przyczynę takiego zachowania się kompilatora. Praktycznie wszystkie operacje robię na floatach i nie mam doświadczenia z liczbami całkowitymi. Dzisiaj nie mam swojego kodu przed oczami i nie mogę porównać, ale coś mi się kojarzy że u mnie pomogło rozbijanie operacji na mniejsze bloki i ogólnie kombinowanie z różnymi próbami zapisu tego samego wyrażenia.

  • Lubię! 1

1. Jak masz << 2 czyli przesunięcie bitowe to nie wiem czy kompilator nie zmieni liczby float na int (w końcu w float nie ma przesunięcia bitowego...). Powinieneś to zamienić na * 4.0f

2. Jak używasz liczb całkowitych to użyj fixedpoint math

3. Pamiętaj też o kolejności działań. Bez sensu jest robić (b7/b4) <<1. Powinno być ((b7<<1)/b4). Czasami będziesz potrzebował liczb 64bitowych żeby zmieścić wynik. (Oczywiście to się nie tyczy liczb float, bo tam nie tracisz dokładności w ten sposób...)

  • Lubię! 1

praca na liczbach typu float przyniosła poprawę, wyliczenia z noty katalogowej były podobne (różniły się tylko o 1 Pa)

widać że nie można ufać nocie katalogowej, w której wszystkie równania były prowadzone na liczbach rzeczywistych

[ Dodano: 07-08-2011, 03:41 ]

czujnik jest niezbyt dokładny jeśli chodzi o mierzenie wysokości, skacze w granicach delta0.5m

😖😕

[ Dodano: 07-08-2011, 03:47 ]

dziękuje bardzo za pomoc

  • 1 miesiąc później...

Pitlab mam pytanie odnośnie akcelerometrów. W jaki sposób obliczasz kąt odchylenia od danej osi? Chodzi mi dokładniej o to czy uwzględniasz przyspieszenie związane z poruszaniem się obiektu?

W jaki sposób obliczasz kąt odchylenia od danej osi? Chodzi mi dokładniej o to czy uwzględniasz przyspieszenie związane z poruszaniem się obiektu?

W tej chwili obliczenia są jeszcze dosyć proste i nie uwzględniają ruchu obiektu. Robię transformację układu współrzędnych żyroskopów i całkuję uzyskane prędkości kątowe. Tak uzyskany wynik przepuszczam przez filtr komplementarny razem z kątami wyliczonymi z akcelerometrów w ten sposób kasując dryft żyroskopów.

Finalnie dążę do uzyskania AHRSa, który będzie analizował ruch w przestrzeni 3D i wtedy będzie można mówić o uwzględnianiu przyspieszeń, ale to jest trochę dalsza przyszłość.

Tak uzyskany wynik przepuszczam przez filtr komplementarny razem z kątami wyliczonymi z akcelerometrów w ten sposób kasując dryft żyroskopów.

A czy przyspieszenie całego obiektu nie powoduje powstanie błędów przecież przyspieszenie obiektu dodaje się do przyspieszenia grawitacyjnego co zmienia sumę geometryczną wartości przyspieszeń?

A czy przyspieszenie całego obiektu nie powoduje powstanie błędów przecież przyspieszenie obiektu dodaje się do przyspieszenia grawitacyjnego co zmienia sumę geometryczną wartości przyspieszeń?

Wpływa, ale tylko na wynik akcelerometrów. Filtr komplementarny obecnie ma współczynnik 0,002 dla akcelerometrów a reszta (1,0-0,002) podchodzi od żyroskopów. Przy przyspieszeniach z jakimi mam do czynienia nie jest to istotny problem.

  • 4 tygodnie później...

Mała aktualizacja. Oprogramowałem jeszcze dwa cyfrowe czujniki ciśnienia: MS5803 od Measurement Specialist oraz MPL3115 od Freescale. Wyniki pomiarów dodałem do artykułu. Na razie nie miałem tyle czasu aby robić testy temperaturowe, więc na razie tylko W-test i porównanie wartości szumu statycznego.

Tutaj jest rozszerzony i trochę przeredagowany artykuł z porównaniem parametrów czujników ciśnienia

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