Multiwii 2.0 I²C Fehler ohne Ende

ApoC

Moderator
#1
Moin

Hatte neulich das Bedürfnis meinen Heiz-Copter mit der 2.0 Final zu flashen.

- Arduino Pro Mini
- WMP Original
- BMA020
- Paris Board V4 r3

Pullups aufm Paris - an, im Sketch - aus.
Flog so mit der 1.8p2 wunderbar, nach dem 2.0 "Update" geht garnichts mehr.

Gesagt, getan, Sketch eingestellt, compiliert und geflasht. Nachdem das fertig war, bemerkte ich, das meine Status LED dauerhaft leuchtete. Ein Blick in die GUI zeigte, das ich massivste I²C Fehler habe. Der Wert zählt hoch - und wieder runter bis ins Negative - um dann erneut hochzuzählen.

Naja, dachte ich mir: "Ardu gekillt, ja, nimmste n neuen." Diesen erstmal ohne alles geflasht und an die GUI geklemmt. Nix, wieder I²C Fehler.

Noch einen neuen Arduino genommen, aufs Parisboard drauf und geflasht. Nix! Wieder Fehler.

Okay, alle Sensoren abgelötet - Lötstellen kontrolliert - keine Kurzschlüsse (ausgeklingelt) - auch nix.

Einen Sketch programmiert, um die I²C Daten aus dem WMP / BMA rauszubekommen - ohne MultiWii - hat bisher nicht funktioniert, da ich nicht so fit bin, was den Arduino Code angeht.

Hat da jemand vielleicht n Sketch, damit ich meinen BMA / WMP mal ohne die MWii Software testen kann?

Nun bin ich ratlos.

Hatte doch vor dem 2.0 Flash nichts an der Hardware geändert. Ist noch Minuten davor geflogen...

Den Tip, meinen Arduino mit dem EEPROM Clear zu resetten, hat nix gebracht.

Da ist doch auch nicht viel dabei, was diesen Fehler verursachen kann, habe alles gecheckt. (Bin Elektroniker)
Finde aber nichts.

Welche Ideen habt ihr dazu noch?
 

ApoC

Moderator
#4
Ein Flash alle niedrigeren FWs bringt den Arduino nicht zurück. Egal ob 1.9, 1.8p2 (FPV2) oder ähnliches. Auch bei diesen habe ich nun I²C Fehler.

Aber warum?
 

ApoC

Moderator
#5
#6
Hi!

Ich hab ein Ähnliches Phänomen gehabt:

Hatte meinen Arduino steckbar auf dem Board befestigt, aber die Stifte waren nicht lang genug, so dass die Stifte für die Reglerleitungen nicht richtig Kontakt hatten. Per USB lief allerdings alles, mit externen 2k2-Pullups, keine I2C-Fehler mit Multiwii 2.0 final.
Dann hab ich den Arduino direkt aufs Board gelötet: Auf einmal nix mehr in der GUI zu sehen, und wie bei Dir I2C-Fehler ohne Ende. Auf gut Glück hab ich dann die Pullups wieder abgelötet, jetzt läuft alles in der GUI fehlerfrei. Interne Pullups sind nach wie vor auskommentiert.
Ich bin kein Elektroniker und hab keine Ahnung was da nun genau passiert ist, und der Copter fliegt auch noch nicht (ist mein erster, noch nicht eingestellt), aber vielleicht bringt Dich das auf die Spur. Als Sensor hab ich übrigens den MPU6050 von Drotek drauf.

Grüße,
Stefan
 

ApoC

Moderator
#7
Ich hatte beides schon probiert. Sowohl die aufm Paris verbauten Pullups 2auszuschalten" als auch mit den internen (ein, - auskommentiert).

Trotzdem Danke für den Hinweis.
 

kalle123

Jugend forscht ....
#8
Z.B. ergibt eine Eingabe der Begriffe

bosch bma020 arduino sketch

bei google einige Ergebnisse.

Beispiel: http://arduino.cc/forum/index.php?action=printpage;topic=67541.0

Gleiches gilt für

nintendo motion plus arduino sketch.

Beispiel: http://randomhacksofboredom.blogspot.de/2009/06/wii-motion-plus-arduino-love.html

Diese Test gestalten sich natürlich etwas einfacher, wenn man das entsprechende Equipment vorbereitet hat.

So sieht das bei mir aus. Arduino uno, breadboard, div. Sensoren vorbereitet mit Kabel und angelötetem Stift.

An fertig aufgebauten board stell ich mir das etwas schwieriger vor.
 

Anhänge

Zuletzt bearbeitet:

loopo122

Erfahrener Benutzer
#9
Hi

hab gestern auch meine 6DOF MPU6050 auf WMC V2 verbaut und die V2 drauf gespielt.
Zuerst, na klar, 12C Fehler von -10 000 bis 20 000 usw.
Dann genauere Kontrolle und Reinigung der Lötstellen, und siehe da die 12C Fehler sind auf 0.

Ich hab im Sketch die internen Pullups auskommentiert.
Auf die WMC V2 hab ich keine externen Pullups aufgelötet.

In der GUI schaut alles perfekt aus, wie es beim Fliegen aussieht kann ich erst in paar Tagen sagen, warte noch auf die Motoren für meinen neuen Y4.

Hab allerdings auch schon die DEV_20120121 vorbereitet, da ich fasst am Herzinfakt gestorben wäre als ich eure Berichte über die V2.0 mit oder ohne (MPU6050) gelesen hab.

Also werd weiter berichten

LG Loopo122
 
Zuletzt bearbeitet:
#10
Diese Test gestalten sich natürlich etwas einfacher, wenn man das entsprechende Equipment vorbereitet hat.
Nunja, ich hatte den ProMini ausgesteckt aufs Breadboard gepackt und meine Sensoren abgelötet und dann aufm Bread verbaut.
Dort hatte ich auch keine Werte. Nur eine dauerhaft leuchtende LED, die mir Fehler anzeigt. In der GUI sah man sie auch.

Leider habe ich nurnoch 2 ProMinis, die diesen Fehler machen - also keinen 3. ums nochmal genauer zu testen.

Werde mir das am WE nochmal genauer anschauen - zb den BMA / WMP mal mit dem Mega testen - dann weiss ich wenigstens, das die Sensoren okay sind. Irgendwie muss ich das ja eingrenzen.
 

kalle123

Jugend forscht ....
#11
Chris, hab den sketch mit dem uno und BMA020 probiert.

Der geht ganz gut

#include <Wire.h>

#define ACCELEROMETER 0x38

#define X_OUT1 0x02
#define X_OUT2 0x03
#define Y_OUT1 0x04
#define Y_OUT2 0x05
#define Z_OUT1 0x06
#define Z_OUT2 0x07


void setup() {
Wire.begin();
Serial.begin(9600);
}


void loop() {
Serial.print("X: ");
Serial.print((unsigned int)accRead(X_OUT1));
Serial.print (" ");
Serial.print((unsigned int)accRead(X_OUT2));
Serial.println();
Serial.print("Y: ");
Serial.print((unsigned int)accRead(Y_OUT1));
Serial.print (" ");
Serial.print((unsigned int)accRead(Y_OUT2));
Serial.println();
Serial.print("Z: ");
Serial.print((unsigned int)accRead(Z_OUT1));
Serial.print (" ");
Serial.print((unsigned int)accRead(Z_OUT2));
Serial.println();
delay(200);
}

byte accRead(byte address){
byte val = 0x00;
Wire.beginTransmission(ACCELEROMETER);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(ACCELEROMETER, 6);

val = Wire.read();

Wire.endTransmission();
return val;
}
 
#12
Ja danke, hatte mir die Sketches nun zusammengesucht. Dann teste ich erstmal die Sensoren nochmal einzeln.
 
#14
Jop, wie du auch gesehen hast, war ich dort auch schon unterwegs. ;)

Also ich hatte damals, als mit mit MultiWii angefangen habe, auch meine Sensoren aufm Breadboard verbaut, mitm Test-Arduino.

Leider sah ich bisher keinen Anlass, das nochmal zu wiederholen. Wie es scheint, muss ich das bei der 2.0 mal revidieren - und den Fehler endlich eingrenzen.
 

Q3Max

Erfahrener Benutzer
#15
Hi,

habe mit der sketch 20120413 das selbe problem, LED an und die i2c fehler gehen hoch und runter, wenn ich in der config_h das baro bma020 auskommentiere lässt sich da board scharf stellen und die motoren laufen auch nur leider kann ich sie nicht mehr abstellen. auf 1_9 kann ich auch nicht zurückflashen.

Jemand noch nen vorschlag?

MfG Nick
 

t-mo

Neuer Benutzer
#17
Ich hatte das gleiche Problem, bis ich gemerkt habe, dass ich die Pullups, die auf dem BMA020 drauf sind ebenfalls aktiviert habe. Die Leitung entfernt und schwups ging es ohne Fehler.
Was hast du denn für nen Widerstand wenn du zwischen einer I²C Leitung und 5V misst?
Grüße timo
 

Q3Max

Erfahrener Benutzer
#19
Hi Timo,

danke für den tipp werde mich heute abend nochmal drüber machen... da ich noch "frisch" bin was wii-boards angeht, könntest du mal nen bild machen von dem was du gemacht hast...

MfG Nick

Ich hatte das gleiche Problem, bis ich gemerkt habe, dass ich die Pullups, die auf dem BMA020 drauf sind ebenfalls aktiviert habe. Die Leitung entfernt und schwups ging es ohne Fehler.
Was hast du denn für nen Widerstand wenn du zwischen einer I²C Leitung und 5V misst?
Grüße timo
 

t-mo

Neuer Benutzer
#20
Moin Nick,
klar mach ich Bilder, kein Problem, aber da ist nichts space'iges dabei... Einfach die zwei Widerstände zwischen beiden I²C Leitungen und 5V und KEINE Leitung von UPULLUP auf 5V auf dem BMA020.
Grüße
 

Anhänge

FPV1

Banggood

Oben Unten