Moin, heute abend werde ich mal wieder an den ADXL345 aus der Bucht dran gehen, I2C ist alles geschrieben, jetzt folgen die Auswerteroutinen auf stm32. Am Arduino habe ich bei den 3 Modulen etwas gespielt und trotzdem noch Probleme. Punkt 1: Die Z-Achse lässt sich durch das OFFS Register nicht ganz kompensieren, der Wert ist einfach zu gross. Den Grund dafür habe ich noch nicht ganz erschlossen. X und Y lassen sich auf ca 0 trimmen. Punkt 2: Was misst der eigentlich? Mechanisch sind da 3 MEMS Sensoren, die orthgonal gestellt sind auf dem Chip. Auf alle wirkt immer 1g Erdbeschleunigung. Liegt er flach auf dem Tisch mit einem senkrechten Vektor zur Erdmitte zeigt Z nach oben/unten und x und y zu beiden Seiten. Drehe ich ihn ändern sich die Werte aber nur kurz, dann gehen sie wieder zurück auf "Ruhezustand". Z bleibt sehr hoch. Ist in dem Chip noch ein Rechenwerk drin? Die MEMS ändern ihre statische Lage zur Erdmitte bei Drehung der platine. Eigentlich müsste auch X mal maximal werden oder Y. Tut es aber nicht, nur Z bleibt "gross". Rechnerisch wäre eine Koordinatentransformation Z-> Z', X->X', Y-Y' kein Problem, egal welche Lage die Platine hat, Z ist immer der Vektor zur Erdmitte und die X und Y orthogonal dazu. Kann da mal jemand etwas Licht ins Dunkel bringen? Lese ich da die echten Werte der MEMS aus oder das berechnete "Normal"? Oder ist mein vermutlicher China-Fake-Chip vielleicht kaputt?
Wenn Dein Chip funktioniert, dann zeigt immer diejenige Achse 9,81 m/s2 an, welche zum Erdmittelpunkt zeigt. Liegt die Platine flach auf dem Tisch, sollest Du aZ = 1g haben. Im Kopfstand aZ = -1g. Wird die Platine senkrecht auf die Seite gestellt, dann sollte aX oder aY auf +/-1 g gehen. Halt genau so wie in Deinem Bild oben dargestellt. Wenn das nicht klappt funktioniert Dein I2C nicht (kannst Du das who-am-i - Register lesen, klappt der Selbsttest?), oder man hat Dir Chinaware verkauft.
Christian J. schrieb: > Eigentlich müsste auch X mal > maximal werden oder Y. Tut es aber nicht, nur Z bleibt "gross". Dann ist Dein Auslese Code kaputt. Die Dinger zeigen +1G nach unten, und wenn man sie um 180° dreht, dann zeigen die -1G an. Die Erdbeschleunigung kann man mit 'nem High Pass Filter rausrechnen.
Christian: > Oder ist mein vermutlicher China-Fake-Chip vielleicht kaputt? Soul: > ... oder man hat Dir Chinaware verkauft. Immer daran denken: Wenn ihr beide irgendetwas nicht hinbekommt - ihr bekommt nach meinem Eindruck viele nicht hin - dann liegen es nicht an euch.
Soul E. schrieb: > Wenn Dein Chip funktioniert, dann zeigt immer diejenige Achse 9,81 m/s2 > an, welche zum Erdmittelpunkt zeigt. Tja, dann können wir das hier beenden. Das tut es nämlich nicht. x und y verhalten sich normal, Z ist wie festgenagelt und damit wohl im A****. Und das auf gleich 2 Ebay Platinen, die vermutlich wohl B-Ware sind oder Fakes, oder... inzwischenn gibt es ja auch keine echten Blue Pills mehr, nur noch "kompatible" :-((( Wird wohl mit den Bosch Chips nicht anders sein.
Da die Sensoren für jede Achse eine eigene bewegte Masse haben, können auch einzelne Achsen ausfallen, wenn sich die entsprechende Masse durch Stöße "verklemmt". Während die x- und y- Massen sich parallel zur Chipfläche bewegen, bewegt sich die Masse für die Z-Achse aus der Chipfläche heraus oder - in der Gegenrichtung - näher an die Chipfläche heran. Das macht sie besonders empfindlich, speziell wenn der Baustein auf einen Tisch fallen gelassen wird. Beim Aufprall auf harte Flächen treten sehr hohe Beschleunigungen auf, die den Sensor beschädigen können. Sensorbausteine aus Verpackungen deshalb nur auf weiche Untergründe ablegen und auch die Platinen mit den Bausteinen nie fallen lassen oder beim Einsetzen in Gehäuse durch Klopfen "justieren".
Das hier ist zwar ein Konkurrenzprodukt, aber der prinzipielle Aufbau ist der gleiche: https://www.richis-lab.de/MEMS_02.htm In den Bildern kann man gut die XY- und die Z-Masse erkennen.
Wenn man die Z-Achse (durchaus üblich) über das beschriebene Kippen der Fläche erfasst, bedeutet dieses, dass schon bei leichter Auslenkung aus der Waagerechten die Masse eine (leichte) Empfindlichkeit gegenüber Beschleunigungen in horizontaler Richtung erhält. Das kann man zwar im Chip kompensieren, genauere - und teurere - Bausteine müssten diese Achse in Bulk-Mikromechanik ausgeführt haben. Da Bulk- und Oberflächenmikromechanik auf einem Chip kaum realisierbar sind, würde man den Sensor für die Z-Achse als eigenes Chip im IC-Gehäuse unterbringen. Solche aufwändigen Lösungen machen aber wegen des hohen Aufwandes nur für Spezialanwendungen Sinn.
Christian J. schrieb: > Tja, dann können wir das hier beenden. Das tut es nämlich nicht. x und y > verhalten sich normal, Z ist wie festgenagelt und damit wohl im A****. Dann lies den Sensor doch mal über das SPI aus
Wolfgang schrieb: > Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort > Antwort mit Zitat Keine Lust. Ist schon richtig, die Z-Ache hängt, bewegt sich aber nur ganz wenig. Habe das ganze i2C Geschissel 3 Tage lange programmiert und beim STM32 ist das nicht mal eben so, wie beim Arduino. Ein 5 Euro Teil, was nicht spielt fliegt in die Tonne, werde mal den Dealer wechseln...
Christian J. schrieb: >(...) Ein 5 Euro > Teil, was nicht spielt fliegt in die Tonne, werde mal den Dealer > wechseln... Schick's dem Richard, der kann reingucken. Den ADXL345 hatten wir noch nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.