ADXL345

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

Reply to
slawek
Loading thread data ...

Am 17.06.2016 um 07:39 schrieb slawek:

A jaką rozdzielczość ustawiłeś?

Waldek

Reply to
Waldemar

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.

Reply to
slawek

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

Reply to
Waldemar

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

Reply to
Waldemar

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

Reply to
slawek

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

Reply to
Waldemar

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.

Reply to
slawek

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

Reply to
Waldemar

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.

Reply to
slawek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.