ADXL345

Jun 17, 2016 9 Replies

ADXL345 spięty przez SPI z Arduino Pro Mini. Ładnie zwraca DEVID. Transmisja działa w obie strony. Ale...


  1. Oś z ma gigantyczny odczyt nawet gdy jest zorientowana poziomo. Plus 70 m/s^2.


  1. Dla każdej osi: czułość nie wynosi ani 0.004 ani 0.0039. Nota bene w ref. sheet raz podają taką, a raz taką.

  2. Ok, da się wykryć poruszenie, da się ustalić zgrubnie orientację. Ale do dokładnych pomiarów przyspieszeń to IMO się nie nadaje.

Pytanie: czy ADXL345 tak ma, czy może trafił mi się wadliwy egzemplarz? A może coś źle robię? Ma ktoś pozytywne doświadczenia z tym akcelerometrem?



TIA


Am 17.06.2016 um 07:39 schrieb slawek:

A jaką rozdzielczość ustawiłeś?

Waldek

Konfiguracja 0x8|0x3 czyli FULL_res 13 bitów, ułożone w prawo, zakres

+-16g. Tempo 100 pomiarów na sekundę, SPI 4MHz, MCU 8MHz i 3.3V. Zasilanie modułu ADXL345 5V, moduł toleruje od 3 do 5V, bo ma stabilizator na swoim PCB.

Dane czytane przez hardware'owe SPI Atmega328, biblioteka SPI, w porządku little-endian jako sześć bajtów pod adres tablicy z trzema int16_t. Atmega jest little-endian więc wszystko trafia gdzie trzeba.

Nie chodzi o to, że nie czyta. Ale że offset w osi z jest nawet gdy uruchamiane jest to z poziomo ustawioną osią z. I że jak np. ustawić ładnie offset w programie by było 9.81 dla osi x skierowanej w gorę, to dla osi pionowo w dół jest 11.44 m/s^2.

Am 17.06.2016 um 11:34 schrieb slawek:

Bawiłem się ADXLami dość dawno temu, ale były łatwe w obsłudze. Jednak miały one duży offset, który najpierw trzeba zdjąć.Robiłem trzypunktowe kalibracje. Wzmocnienie (znaczy incr/g) też nie jest jednakowe dla każdej osi. Myślałem, że mam tu na kompie jakieś stare kalibracje, ale niestety są na innym, ok. 30km stąd :-(

Kalibracje robiłem +1g, -1g, 0g dla każdej osi. Upierdliwe, ale dość dobrze trzymało, nawet po kilku latach.

Waldek

Am 17.06.2016 um 12:01 schrieb Waldemar:

Jeszcze jedno. w FULL_res się nie bawiłem. OIDP miałem 12 bitów. Podłączone toto było pod Arduino, ale program pisał kolega.

Waldek

No cóż, wygląda na to że one tak mają. Spróbuję jeszcze autotestu. BTW, nota katalogowa jest umiarkowanie bełkotliwa, bardzo też nie lubią jednostek SI.

Trzeba będzie też sprawdzić inny egzemplarz.

Wic w tym, że w zasadzie składową z w spoczynku dokładniej daje się obliczyć niż zmierzyć.

Am 17.06.2016 um 13:49 schrieb slawek:

Naszą płytkę miałem przykręconą do klocka (sześcian z "dziurą") i po prostu kładłem ten sześcian na wypoziomowaną płytę stalową i spisywałem wartości x, y, z. Dostawałem po jednej wartości +- 1g dla x, y, z i po

3x zero dla x, y, z.

Waldek

A jak z pomiarem gdy sześcian miał leżeć na tym boku co sam akcelerometr? ;)

Wydaje się, że rejestry ofsx itd. ADXL345 to nie offset w sensie numerycznym, ale jakieś napięcie przykladane gdzieś. Wrażliwość jest nieliniowa.

Am 17.06.2016 um 16:10 schrieb slawek:

Ten sześcian miał dziurę na płytkę. Dokładniej podwójne U z krawędziami i miejscem do przykręcenia płytki. Niestety nie mam już dostępu do hardware, bo bym zdjęcie podesłał.

Nie, arytmetycznie dodaje wartość w rejestrze. Osobiście tego rejestru nie używałem, mieliśmy zewnętrzną macierz transformacji.

Spadam na łykend, będę zaś w poniedziałek.

Waldek

W dokumentacji jest że offset jest w specyficznych jednostkach.

Nieważne.

Wygląda na to, że coś jest nie tak z osią z. X i y też trochę mogłyby, ale nie jest źle. Potrzebne to do inklininometru, wystarczy ax, ay i znane g.

Swoją drogą to szacun dla błędników.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required