I2C error bei BMP085

jokakilla

Neuer Benutzer
#1
Hallo,
dank der Hilfe einiger hier im Forum fliegt mein kleiner Nanoquad nun schon recht ansehnlich. Ich wollte heute ein Barometer anschließen. Jedoch bekomme ich nur haufenweise I2C Fehler.

Daten:
MultiWii 2.1
BMP085 Baromether


Config.h
Code:
    #define QUADX
    #define MINTHROTTLE 1200
    #define MAXTHROTTLE 1850
    #define MINCOMMAND  1000
    #define I2C_SPEED 400000L
    #define NANOWII
    #define BMP085
    #define MPU6050_LPF_98HZ
    #define VBAT           
    #define VBATSCALE     183
    #define VBATLEVEL1_3S 68
    #define VBATLEVEL2_3S 65
    #define VBATLEVEL3_3S 63
    #define NO_VBAT       16
IMG_20131014_212034.jpg

Im MultiWiiConf zeigt er Baro grün jedoch laufen die I2C error laufend hoch. Wo in der GUI müsste ich denn den Luftdruck sehen? Derzeit geht SCL vom Board auf SDA an der Sensorplatine und umgekehrt. So gibt es weniger I2C Fehler. Wenn ich SCL auf SCL und SDA auf SDA verbinde zittern selbst die Werte der Onboarsensoren und die I2C Fehler steigen nochmal um den Faktor 10. So habe ich pro Sekunde "nur" etwa 100 Fehler.
 

jokakilla

Neuer Benutzer
#2
Btw: Das ist nur die fliegende Testverdrahtung ;) Kurzschlüsse kann ich ausschließen. Habe ich mit dem Durchgangsprüfer gecheckt. Die einzelnen Pins sind auch verbunden.
 

TTRCmedia

Erfahrener Benutzer
#3
Habe an meinem Arduino Pro Mini auch den BMP085 auf BreakOut-Board, und bis ich den am Laufen hatte...

SCL muss an SCL, und SDA an SDA. #define I2C_SPEED 100000L funktioniert bei mir. Zudem läuft der BMP085 auf 3,3V. Ich erkenne nicht, woher VCC kommt - 3,3V oder 5V?

Falls 5V: Lag dem Modul ein 330K Widerstand bei? Setz den mal in die VCC-Leitung - dann sollte es funktionieren :)

Angezeigt wird der Wert dann in MultiWiiConf links-unten als "ALT" bzw. als graue Linie.
 

jokakilla

Neuer Benutzer
#4
Also auf dem Board steht 3,3V. Das Breakout Board ist angeblich auch für 3,3V. Insofern nehme ich an die Versorgungsspannung passt. Auf dem Board sind nur 5 Bauteile. Drei sehen aus wie Kondensatoren und zwei wie Widerstände.

Den I2C Speed habe ich mal runter gesetzt.

Die Leitungen habe ich noch nicht wieder gedreht weil die ACC&Gyro Sensoren dann wieder verrückt spielen.

Unter Alt steht -2632.69.
 

TTRCmedia

Erfahrener Benutzer
#5
SCL und SDA müssen passend angeschlossen sein, sonst kann es nicht funktionieren. Teste mal mit zurückgetauschten Leitungen, ob es mit der niedrigeren I2C-Speed klappt.
 

jokakilla

Neuer Benutzer
#6
Hi,
also es scheint nun schon etwas sinnvolles heraus zu kommen. Nachdem die Adern vertauscht sind hatte ich heute morgen einen Alt Wert von ca. 130. Nun 152.

Unbenannt.png

Aber die Fehler sind noch da und die anderen Sensorwerte sind im Verhältnis sehr "wackelig". Ohne den Sensor am I2C Bus sind die ACC und Gyro Messwerte fast schnurgerade.
 

schneipe

Erfahrener Benutzer
#8
Wieso hast du den MPU 6050 definiert? Der ist doch schon definiert, sobald man NanoWii definiert. Vielleicht ist das der Fehler....die Nano erwartet auf dem I2C Bus die Werte eines MPU6050, bekommt aber nur die vom Baro. Deswegen laufen auch die Fehler hoch.
Mach mal den MPU6050 in Configh wieder raus. Dann sollte es klappen.
MPU6050.jpg
 
Zuletzt bearbeitet:

jokakilla

Neuer Benutzer
#10
Ist es sinnvoll externe Pullups zu verwenden? Habe etwas von je 2,2k zwischen SCL und 3,3V und SDA und 3,3V gelesen.

Edit: Habe mir die kleine Platine nochmal angesehen. Neben dem Sensor sind dort an SCL und SDA 4,7k Widerstände dran. Ich nehme an das sind schon Pullups. Ist das dramatisch? Beißt sich das mit den internen Pullups?
 
Zuletzt bearbeitet:

jokakilla

Neuer Benutzer
#12
Problem gelöst: Die Platine um den Sensor war nicht vollständig bestückt. Ich nahm an es gäbe zwei Varianten und dass das fehlende Bauteil nicht wichtig wäre. Ich schätze es handelt sich um einen Spannungswandler 5V zu 3,3V. Ich habe nun, da ja schon 3,3V anliegen einfach das VCC Pin auf der Platine an den Spannungsversorgungspin des Sensors gebrückt. Schwupps keine Fehler mehr auf dem Bus und stabile ACC/Gyro Signale.

Den Sensor habe ich mit Schaumstoff lichtdicht abgedeckt und Schrumpfschlauch drüber gezogen. Es wird wie vor dem "verpacken" ein Alt Wert von 119 angezeigt. Was für ein Wert ist das? Höhe über normal null kann es eigentlich nicht sein. Das wäre ca. 50 Meter zu hoch. Sind es vllt 119Pa? Das wäre aber auch relativ hoch.
 

jokakilla

Neuer Benutzer
#14
Nicht Luftdicht ;) Lichtdicht....ich habe das irgendwo gelesen, dass kein Licht auf den Sensor kommen darf. Und natürlich kein von den Rotorblättern direkt produzierter Wind.

Bei der Konkurenz (Mikrkopter mit Flighcontrol ME) wurde als Sensor ein mpx4115 verwendet. Der scheint ein ähnliches Messprinzip zu haben und sollte auch so verpackt werden.
 

zerosight

Erfahrener Benutzer
#15
Luftdicht verpackt bedeutet ja nicht, dass er keine Luftdruckänderungen mitbekommen kann. So ein in Watte oder Schaumstoff verpackter Sensor kann auch in ein elastisches Material eingewickelt sein, z.B. Luftballon, Latexhandschuh etc.

Das mit dem Schutz vor Sonnenlicht bzw. Temperaturschwankungen ist von Modell zu Modell abhängig, kann aber eigentlich nie schaden.

Die typischen MultiWii-Sensoren sind digital, der MPX von MK ist ein analoger Sensor. Hier muss die FC das analoge Signal vom Sensor selber glätten/ samplen. Das ist etwas aufwändiger, kann unter gewissen Umständen besser funktionieren, braucht aber auch immer etwas Performance des Prozessors - und das hat 8-Bit MultiWii nicht gerade im Überfluss.
 

jokakilla

Neuer Benutzer
#17
Die Widerstände aufbder Platine haben wohl doch einen anderen Zweck. Oder der Widerstand reicht selbst bei Parallelschaltung noch aus.

Jedenfalls fumktionierte Alt Hold gestern bei einem Test bei Windstille richtig gut :)
 
FPV1

Banggood

Oben Unten