Benötige Hilfe bei Auswahl eines Gyroskopsensors und Geschwindigkeitsmessers

Hey Manfred,

danke für die Rückmeldung. Ich habe versicht mit der Linrary zu arbeiten. Welche Funktionen sind das? Mein Problem ist das ich auf dem Gebiet noch nicht so fit bin deswegen habe ich mir Beispielcodes runtergeladen und die Versicht zu "analysieren" um sie dann auch zu verstehen und für meine Zwecke abämdern zu können. Jetzt habe ich schon einen andern Beispielcode ausprobiert aber die Werte die ich aus dem Serial Monitor ablesen kann geben mir Rätsel auf. Eine Frage vorab: ich habe die Pins des Boards direkt auf die Pins am Arduino gesteckt und den Code aufgespielt. Ist das ok oder muss erst noch was an dem Board geändert werden... Offsets... ? Hast du Erfahrung mit dem Board und vielleicht einen Sketch der Funktioniert damit ich eine Funktionierende Vorlage habe?

Gruß, Tobi

Tobias93:
Ich habe versicht mit der Linrary zu arbeiten. Welche Funktionen sind das?

Das Beispiel “FreeIMU_yaw_pitch_roll”, welches bei der Lib dabei ist, sollte von der Ausgabe genau Deinen Wünschen entsprechen.

Eine Frage vorab: ich habe die Pins des Boards direkt auf die Pins am Arduino gesteckt und den Code aufgespielt. Ist das ok oder muss erst noch was an dem Board geändert werden… Offsets… ?

Ehrlich gesagt versteh ich die Frage jetzt nicht so ganz. Was meinst Du damit?

Hey Manfred,

im Nachhinein liest sich der Satz wirklich etwas bescheuert. Ich hole jetzt einfach mal weit aus und hoffe das ich alle Punkte aufzähle. Ich habe das MPU 6050 Sensor Board von Invensense. Ist die Library die du genannt hast auch für dieses Board geeignet?
Das ist es:

Redirect Notice

Wenn ja, dann würde ich nun den Sketch aus der Library den du unten geschrieben hast in den Arduino spielen. Jetzt schließe ich die Ports des Boards an die zugehörigen des Arduinos an (SCL an SCL usw) dann öffne ich den Serial Monitor und bekomme Winkelwerte ausgegeben. Winkelwerte für alle 3 Achsen oder?

Wenn ich das Board flach auf den Tisch lege müsste dann einer der angezeigten Winkelwerte (z.B. X-Achse) 0 sein.

Das ist das was ich brauche. Verstehst du mein Problem jetzt besser?

Gruß,
Tobi

Alles klar.

Nachdem es sich ja um die gleiche MPU handelt, sollte es eigentlich keine Probleme mit der Lib geben. Und ja, das Beispiel würde genau so funktionieren.

Hey,

ok danke für die Rückmeldung. Ich werde die Library und das Beispiel testen.

Gruß, Tobi

Hey,

jetzt habe ich die Library heruntergeladen und in den Library Ordner von Arduino kopiert. Ich bekomme nun folgende Fehlermeldung:

FreeIMU_yaw_pitch_roll.pde:11:24: error: DebugUtils.h: No such file or directory In file included from FreeIMU_yaw_pitch_roll.pde:13: C:\Users\twagner\Downloads\arduino\arduino-1.0.4\libraries\FreeIMU/FreeIMU.h:201: error: 'HMC58X3' does not name a type C:\Users\twagner\Downloads\arduino\arduino-1.0.4\libraries\FreeIMU/FreeIMU.h:215: error: 'MS561101BA' does not name a type

Ich kann mir diese Fehlermeldung nicht so richtig erklären vermute aber das ich die Library irgendwie nicht korrekt eingebunden habe. Kann mir hier jemand weiter helfen?

Gruß,

Tobi

Heruntergeladene Library ist die FreeIMU-20121122_1126.zip?

Und Du hast alles aus dem Ordner FreeIMU-20121122_1126\libraries in Deinen Arduino Libraries-Ordner kopiert (nicht nur den FreeIMU Ordner)?

Hey,

ja ich beschreibe dir mal mein Vorgehen:

  1. Library "FreeIMU-20121122_1126.zip" heruntergeladen.
  2. Entpackt
  3. In dem Entpackten Ordner sind 2 Ordner einer heißt libraries einer processing und es ist noch eine LICENSE.txt drin
  4. Jetzt habe ich alle Ordner die in dem Ordner libraries drin sind kopiert und in den Arduino Ordner Librarys eingefügt (sind insgesammt 10 Libraries)
  5. Nun habe ich die Arduino IDE geöffnet und dein empfohlenes Beispiel geöffnet
  6. Beim klicken auf kompilieren kommen nun keine Fehler mehr
  7. Danke :)

Ich hatte die Datei FreeIMU-20121122_1126.zip umbenannt damit ich mir sie besser merken kann, dadurch sind wohl die Pfade geändert deswegen wohl die Fehlermeldung.

Ich werde die Library nun am Wochenende auf das Board überspielen und testen und schauen ob es funktioniert. (Am Wochenende deshalb weil mir das Board leider bei dem Versuch es auf einer Platte aufzuschrauben durchgebrochen ist, muss erst ein neues beschaffen)

Schonmal vorab vielen Dank für deine Hilfe,

Gruß Tobi

hey,

ich habe jetzt ein neues Board. Ich habe das Programm "yaw pitch rowl" auf den Arduino UNO übertragen. Doch im Serial Monitor wird mir hier sowas angezeigt:

0ù¦Ð?¸ oª¤ùæл? ª´?Óû0ºÍª´?Óû0äͨ´Áùz0Ù¦¼0óz0?Á¸pó¨¤ù¦Ð?? }¦¼É®ô0z0?Á¸pó0äͪ´?ÓûoªäÍæ´Áóx0?Á¸pó0äͨ´Áùoª¤ùæл? ª¤ù¦Ð?? z0ù¦Ð?¸ oª¤ùæл? ¨¤ù¦Ð?? z0ù¦Ð?¸ ?Á¸É®ô0 x0?Á¸pz0ù¦¼0óoª¤ùæл? ¦?ñºpz0ù¦Ð?¸ x0?Á¸pópù¦Ð?? z0ù¦¼0óz0?Á¸pópù¦Ð?? }¦¸?

Damit kann ich irgendwie nichts so richtig anfangen. Weiß einer was hier los ist?

Gruß, Tobi

Baudrate des Serial Monitor mit dem Beispielcode identisch?

Hallo Manfred,

ja die Baudrate passt. Denkst du es ist ein Hardwaredefekt des Boards?

Gruß, Tobi

hey,

also die Baudrate und alles passt aber jetzt bekomme ich das hier im serial monitor angezeigt:

Yaw: nan Pitch: nan Roll: nan Yaw: nan Pitch: nan Roll: nan Yaw: nan Pitch: nan Roll: nan

Egal wie man das Board bewegt es ändert sich an der anzeige nichts. Kann mir jemand weiterhelfen?

Gruß, Tobi

Tobias93: hey,

also die Baudrate und alles passt aber jetzt bekomme ich das hier im serial monitor angezeigt:

Yaw: nan Pitch: nan Roll: nan Yaw: nan Pitch: nan Roll: nan Yaw: nan Pitch: nan Roll: nan

Egal wie man das Board bewegt es ändert sich an der anzeige nichts. Kann mir jemand weiterhelfen?

Gruß, Tobi

Ich glaube, das wird angezeigt wenn keine Daten von der IMU kommen. Korrekt an den Arduino angeschlossen? Hast Du PullUps am I2C Bus? Manche 6050 Boards enthalten schon eigene PullUps.

Hey,

nein ich habe keine zusätzlichen Bauteile an dem Board angeschlossen. Ich habe die I2C Anschlüsse an den I2C Ports auf der I/O Pin Seite angeschlossen, das sind ja die Pins (steht dran SCL bzw. SDA) In manchen Anschlussplänen sind sda und SCL an den analogpins 4 und 5 angeschlossen. Das sollte aber auch so gehen oder? Denkst du es ist ein hardwareproblem oder ein softwareproblem? Werde gleich nochmal ein Tonic aufmachen, weil das ein Projekt ist und mir langsam die Zeit davon rennt, das Board muss doch schonmal bei irgendjemand anderes funktioniert haben und dann nehm ich genau das Programm und dann muss es ja bei mir auch gehen, nur damit ich weiß ob es überhaupt funktioniert.

Gruß Tobi

Ob I2C Pins oder die Pins 4 und 5 ist egal, die laufen intern eh zusammen. Schau mal dass Du ein Datenblatt für das Board findest. Du müsstest prüfen, ob das Board I2C Pullups besitzt. Wenn nicht, musst Du die noch mit berücksichtigen. Probiers mal mit 4,7k.

Hey,
aus dem Datenblatt werde ich nicht so richtig schlau, kann ich die pull-up Wiederstände auch einfach zum testen dranlöten oder mach ich da was kaputt wenn es schon interne hat? Eigentlich mach ich nichts kaputt, das Signal wird wohl nur dann bei zwei pull ups einfach nicht mehr ankommen wegen dem Spannungsabfall oder?

Wie kann ich die I2C Adressse einstellen? Muss ich die einstellen?

Gruß tobi

Wenn du zwei Pull-Up dran hast sollten die parallel hängen. Dass heißt du halbierst die praktisch. Was soll da groß passieren? Im schlimmsten Fall funktioniert es immer noch nicht und du entfernst sie wieder.

Die I2C Adresse deines Moduls und deiner Software müssen schon gleich sein. Manche Module haben dafür Jumper, z.B. mein LCD. Andere haben sie fest und die Adresse muss dann in der Software eingetragen werden. Manchmal kann/muss man die Adresse im Konstruktor übergeben. Oder sie ist als Konstante festgelegt. Da musst du mal bei der Initialisierung der Klasse schauen. Wenn deine Bibliothek genau für den Sensor ist kann es auch schon passen.

Hey, Ok ich versuche das mit den Pull Ups aus. Mit der Adressierung bin ich mir immer noch nicht wirklich sicher weil in meinem Sketch nichts von Adresse auftaucht.

Gruß, Tobi

Schau mal in die Bibliothek des Sensors. Irgendwo in den globalen Variablen sollte da die Adresse mal definiert werden (z.B. über #define oder const). Wenn sie nicht passt kannst du sie da auch ändern. Sie wird auf jeden Fall bei Datenübertragungen angegeben. Also z.B. bei der Auslese-Methode. Kann sein dass sie da auch fest lokal steht.

hey,

was meinst du mit "wenn sie nicht passt" ?? Wie müsste sie den lauten? Ich finde in der FreeIMU.cpp und FreeIMU.h keine Angaben zu einer I2C Adresse des Gerätes.

Gruß, Tobi