MPU-6050 / Preversion 2.0 / I2C

#1
Hallo zusammen!

Ich hab vorhin das MPU-6050 auf das MWC-Board und die 2.2k-Pullups direkt aufs Flyduino gelötet, aber der I2C-Error-Zähler läuft trotzdem hoch und ich bekomme keine Reaktion vom Gyro.

Die MPU-6050 wird ja bisher nur im Verbund mit der FreeIMU unterstützt. Ich hab also erstmal die komplette IMU im Sketch aktiviert, nachdem das nicht ging hab ich die beiden Extrasensoren, die mir fehlen wegkommentiert, zB

//#define HMC5883
//#define MS561101BA

Nun ist mir ja klar dass es sozusagen eine Betaversion ist und ich nur unwissend am Sketch rumpfusche, aber mal generell:

1: Wenn im Sketch definierte Sensoren nicht vorhanden sind, laufen die vorhandenen dann auch nicht?

2: Hab ich die Widerstände korrekt verlötet (Bild)? Und wenn ja, wieso bekomme ich trotzdem die I2C-Fehler? Im Sketch hab ich die internen Pullups auskommentiert. Ich habs auch mal ohne den MPU versucht, gleiches Ergebnis.

Vielleicht kann mir einer von Euch Hackern weiterhelfen.

Vielen Dank und Grüße,
Stefan
 

Anhänge

JUERGEN_

Generation 60++
#2
quosman hat gesagt.:
Ich hab vorhin das MPU-6050 auf das MWC-Board und die 2.2k-Pullups direkt aufs Flyduino gelötet, aber der I2C-Error-Zähler läuft trotzdem hoch und ich bekomme keine Reaktion vom Gyro.
sind auf der MPU6050- Trägerplatine nicht schon die Pullups bestückt ? :???:

stimmt die I2C-Adresse [size=medium]?[/size]

:rot:
 

r0sewhite

Erfahrener Benutzer
#3
Wo ist das Problem? Wenn unter #if defined(FREEIMUv04) #define MPU6050 steht, kannst Du auch ebenso gut in der config.h selber #define MPU6050 einfügen. Steht halt nur noch nicht als einzelner Sensor da drin.

Ich tippe mal auch eher auf I²C-Adresse, wenn die Verkabelung stimmt.
 
#4
Danke für die Antworten!

@Jürgen:
Ich hab ehrlich gesagt keine Ahnung. Wenn Du es mir sagen kannst wäre ich Dir dankbar, aber ich werde aus dem Datenblatt nicht schlau. Ich schaffs nichtmal die korrekte Ausrichtung da rauszulesen :S:
mir bleibt da nur Trial and Error...

zur I2C-Adresse:
Ich hab mir den Code gestern zum ersten mal näher angeschaut. Wird die I2C-Adresse in der Sensors.pde Zeile 35 festgelegt?

#if !defined(MPU6050_ADDRESS)
#define MPU6050_ADDRESS 0xD0 // address pin AD0 low (GND), default for FreeIMU v0.4 and InvenSense evaluation board
//#define MPU6050_ADDRESS 0xD2 // address pin AD0 high (VCC)
#endif

Im Datenblatt vom MPU6050 finde ich:
"The slave address of the MPU-60X0 is b110100X", das letzte Bit soll 0 sein bei AD0 = low.

0xDO ist 11010000 in binär, aber 1101000 (=0X68) steht in der Anleitung. Ist das ein Fehler? Oder hat die Adresse für die FreeIMU tatsächlich ein Bit mehr? Ich werd mal noch ein bisschen daran basteln heute abend, aber bin für jeden Tipp dankbar!

Grüße,
Stefan
 

JUERGEN_

Generation 60++
#5
ich habe gar keine MPU6050,

wenn,denn würde ich mich an die Ausführungen von Fabio halten,
er hatte das initialisiert, und man muss das Fahrad ja nicht neu erfinden. ;)
> http://www.varesano.net/projects/hardware/FreeIMU#v0.4

:rot:
 
#6
Puh, wieder viele neue Rätsel zu lösen. Aber was ich mal mitnehmen kann: In der FreeIMU-Library ist die I2C-Adresse 0x68. Was ich ansonsten mit der Library machen soll: Keine Ahnung. Ich hoffe alles Nötige steht schon im Sketch, denn da per Hand die Sachen für die MPU6050 aus der Library zu integrieren trau ich mir nicht zu. Ansonsten: Abwarten bis Alex & Team das machen :/:

Grüße,
Stefan
 

r0sewhite

Erfahrener Benutzer
#7
Ist doch alles kein Hexenwerk. Drotek hat bei allen IMUs schon gerne die ITG-Adresse auf 0XD2 gesetzt. Also einfach mal in der Sensors.pde die MPU-Adresse auf 0XD2 umgeswitched und - oh Wunder - es läuft. ;)

Im Übrigen müssen noch die Wirkrichtungen angepasst werden. Ich habe auch erst gestern Abend mein 6DOF Sample von Jerome auf einem MultiWii Board verbaut und geflasht. Meine Wirkrichtungen daher noch ohne Gewähr:

Code:
#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = -Y; accADC[PITCH] = X; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -X; gyroADC[PITCH] = -Y; gyroADC[YAW] = -Z;}

EDIT: Alex und Team machen da eigentlich wenig bezüglich der IMUs. Die defines für die Drotek IMUs habe ich letztens mal geschrieben und Alex geschickt, sonst würde da heute noch nichts im MultiWii Code stehen. Für die 6DOF MPU6050 werde ich ihm auch noch eins schicken, damit es in der finalen V2 drin ist.
 
#8
AHA!! Er tuts! Hätte nicht gedacht dass ich das noch hinbekomme! Vielen Dank für die Hilfe!

Adresse D2 ist korrekt, danke Tilman!

Bzgl. der Wirkrichtung: Ich würde den MPU jetzt so lassen wie er ist und den Sketch anpassen. Oder gibt es Parameter die sich so nicht beeinflussen lassen? Wie gesagt, aus dem Datenblatt ist für mich nicht ersichtlich in welche Richtung er "von Haus aus" gehört.

Meine Güte, welche Emotion für ein kleines animiertes Kreuzchen :D

Grüße,
Stefan
 

r0sewhite

Erfahrener Benutzer
#9
Wenn Du ihn mit den Lötpads in Flugrichtung gesehen nach hinten hast, übernimm einfach meine Wirkrichtungen im Sketch.
 

Klema

Erfahrener Benutzer
#11
Hi, habe heute meinen MPU6050 von Drotek bekommen, muss ich da irgendwas mit dem Pullup-Jumper auf der Rückseite veranstalten?? In der 2.0 ist die IMU ja nun drin, dürfte also kein Problem sein.
 

Klema

Erfahrener Benutzer
#12
Habe nur I2C-Errors. Welche Adresse ist denn korrekt? Bei Drotek steht die 0x69, hier die 0xD2... Hat jemand noch diese IMU im Einsatz, also die 6DOF mit MPU 6050?
 

Kayle

Erfahrener Benutzer
#13
Hi,

ich habe die Drotek 6DOF mit MPU6050 gerade verbaut. Arduino Pro mini und diese IMU. Einfach die drotek 6dof v2 im sketch aktiviert, die internen pullups deaktiviert und funktioniert. Testflug gemacht, einwandfrei.

Kayle
 

r0sewhite

Erfahrener Benutzer
#14
Hab ich doch schon auf Seie 1 geschrieben: Drotek grundsätzlich auf 0xD2, da er den Adresspin im Gegensatz zu anderen IMU-Herstellern bevorzugt auf High zieht.
 

Klema

Erfahrener Benutzer
#15
Danke. Die Seite habe ich ausführlich gelesen. Wundere mich halt, dass es nicht geht und vor allem, dass auf der Drotek-HP 0x69 als Adresse steht... Muss ich halt weiter probieren.
 

Klema

Erfahrener Benutzer
#17
Ja, hab ich als erstes gemacht, da ich die IMU nicht gefährden will, wundere mich aber, dass in der def.h bei der Definition der Drotek IMU die Zeile #undef INTERNAL_I2C_PULLUPS nicht drin ist, bei der FreeIMU schon (habe davon 2 im Einsatz und nicht solche Probleme...).
 

Klema

Erfahrener Benutzer
#18
So, hab mal einen I2C-Scan laufen lassen, er findet den MPU6050 gar nicht, werde heute nach der Arbeit mal an einem anderen Arduino testen, der Probelauf an einem anderen Board mit der Drotek IMU mit ITG3200 und BMA 180 zeigte beim Scan die beiden Sensoren auf der seriellen Konsole mit korrekter Adresse. Wobei die Adresse 0x69 beim MPU (lt. Drotek-HP) der 1101001 (7 bit) entspricht, in der MultiWii-FW ist dann die 0xD2 korrekt (11010010 8 bit binär). So hab ich es mir zumindest rekonstruiert. Also ist Tilmans Aussage -wie sollte es auch anders sein ;) - bezüglich der Adressierung richtig.
 

Klema

Erfahrener Benutzer
#19
So, hab die IMU jetzt mal an einem anderen Board angeschlossen, hab schon an mir gezweifelt, aber jetzt geht es!! Sitzt der MPU6050 eben auf einem Divide et Impera statt auf einem Warthox-Board ;) . Weiss nicht, woran es gelegen hat, muss mir das andere Board mal ansehen, danke auf jeden Fall für die Tipps, auch per PN.
 

braadert

Erfahrener Benutzer
#20
Muss aktuell für den MPU6050 noch etwas geändert werden bei der Multiwii Software oder wurde das mit eingefügt vom Ersteller der Software?
 
FPV1

Banggood

Oben Unten