MultiWii 1.9 Probleme und Lösungen

ronco

User
Da sich in der version 1.9 auch die hardware anforderungen geändert haben, und es verwirrend viele verschiedene 1.9er giebt, hier ein klärungsversuch ;)

es giebt meines wissens nach 4 verschiedene 1.9er.. die erste und die 2. sollten nicht bennutzt werden .. da sie mit vielen sensor kombinationen einfach nicht funktioniert!

woran kann man sehen ob man eine der neueren hat?
- öffnet die software die ihr habt klickt auf den tab Serial.pde und sucht nach debug2
wenn es sich um eine der neueren (brauchbaren) versionen handelt müsste vor //debug2 in den klammern "i2c_errors_count" stehen
Code:
      serialize16(BaroAlt/10);        // 4 variables are here for general monitoring purpose
      serialize16(i2c_errors_count);  // debug2  <==== HIER
      serialize16(0);                 // debug3
      serialize16(0);                 // debug4

um sicher zu gehen ladet doch einfach die neuste version runter! http://code.google.com/p/multiwii/downloads/detail?name=MultiWii_1_9.zip&can=2&q=

Was ist i²c / TWI?
- i²c und TWI sind technisch das selbe
- beim MultiWiiCopter wird der i²c bus als verbindung des arduinos mit den sensoren genommen (die 2 kabel die von z.B. von A4 und A5 zur Wii Modtion Plus gehn)
- er überträgt die sensor daten
- Weitere infos -> http://de.wikipedia.org/wiki/I²C

was sind Pullups?
- pullups sind in wiederstände die ein signal anheben (pullups => hochheber)
- diese wiederstände heben das signal
- könnte mann sich vllt. so vorstellen
Code:
ohne pullups:
------------------------------------------------------------
3-
2-
1-     ----       ----       ----      ----       ----        ----
0- ---     ------     ------     ------     ------     -------     ---
------------------------------------------------------------
mit pullups:
------------------------------------------------------------
3-
2-     ----       ----       ----      ----       ----        ----
1- ---     ------     ------     ------     ------     -------     ---
0-
------------------------------------------------------------
- ausserdem können die richtigen pullups das signal "verdeutlichen" siehe http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html
- der arduino hat interne pullups die z.B. für ein Wii Motion Plus only setup ausreichen .. manchmal müssen aber auch externe pullups angeschlossen werden.

wie kann es sein, das ein setup mit allen bisherigen versionen "problemlos" lief und jetzt mit 1.9 nicht mehr?
in den versionen vor 1.9 wurden auftretende i²c fehler weggerundet .. es wurde versucht nur die brauchbaren werte heraus zu filtern. resultat war das ein teil der sensor daten nicht ausgewertet werden konnte.. was heist der copter war instabieler.

ab 1.9 wurde ein "sauberer" i²c code eingeführt. so werden auch die fehlerhaften signale ausgewertet .. was zu komischen zuckungen oder sogar dazu führen kann das man mit ACC nicht mehr starten kann(die software startet die motoren nicht wen der copter nicht anähernd grade steht und mit fehlerhaften signalen meint er, er stände schief).

die i²c fehler kann man nun auch in der GUI im feld debug2 sehen.. zum testen den copter an den pc anschliessen in der GUI auf start drücken und einfach mal ne stunde laufen lassen .. ist in dem debug2 feld immernoch 0, kann man davon ausgehen das man keine probleme hat... steigt der wert schnell hat man etwas arbeit vor sich ;)

hat man aber einmal ein setup ohne i²c fehler mit 1.9 wird man einen deutlichen unterschied merken!

wie kann man die i²c fehler verhindern?
(eine übersetzung der liste hier http://www.multiwii.com/forum/viewtopic.php?f=8&t=986)

- nehmt die neuste WMC version: http://code.google.com/p/multiwii/downloads/detail?name=MultiWii_1_9.zip&can=2&q=
- die arduinos die wir hier meisstens nehmen laufen mit 5v.. also müssen auch externe pullups (wenn vorhanden) an +5v angeschlossen sein (nicht an 3.3v)
- 3.3v sensoren brachen einen LLC(Logic Level Converter) der das "3.3v signal" auf ein "5v signal" hebt, und die 3.3v sensoren vor schaden durch zu hoher spannung schützt
- deaktiviert die internen pullups und nehmnt 2,2k externe (achtung! manche MWC boards haben aufgelötete 3.3v pullups.. diese müssen deaktiviert werden)
- 5V sensoren sollten direckt an +5v angeschlossen sein (nicht an pin12 dieser war für die hard reset funktion der WMP .. wird jetzt in 1.9 nicht mehr benötigt!). entfernt alle spannungs senkenden dioden.
- Lasst euer setup an der GUI laufen und überprüft das debug2 fenster für mehr als 10 minuten .. bleibt der wert auf 0 lasst es nochmal für eine minute mit laufenden motoren laufen .. ist es immer noch 0, ist euer setup in ordnung.


Wie deaktiviert man die internen pullups?
in der datei config.h das "define INTERNAL_I2C_PULLUPS" auskommentieren

Code:
//enable internal I2C pull ups
#define INTERNAL_I2C_PULLUPS
zu
Code:
//enable internal I2C pull ups
//#define INTERNAL_I2C_PULLUPS

wie schliesst man externe pullups an?
externe pullups werden von den 2 i²c datenkabeln zu +5v (z.B. vcc) angeschlossen...
also:
Code:
A4 --- 2,2k --- vcc
A5 --- 2,2k --- vcc



gruß


felix
 

skaan1

User
Hallo Felix
Danke für die Erklärung.

Ich habe ein IMO 10DOF von Drotek das zwar läuft aber i2c fehler zeigt, habe es eingeschickt und der Hersteller hat es kontroliert, alles i.o.
Das IMU läuft ja mit 3.3v..
Habe auf meiner MWC Platine von flyduino den Spannungsregler verbaut, aber keinen Externen LLC(Logic Level Converter).
Wie muss ich den jetzt vorgehen damit das IMU richtig läuft ?
Ein LCC dazwischen schalten oder ??????

Würde mich über Hilfe freuen.

Gruss Andy
 

ronco

User
Hi,

und ich kenne diese IMU nicht ... vllt. ist da ja schon ein LLC drauf? habe selbst nur mit der wmp, nunchuck und dem elv bma020 rumgespielt .. aber die vertragen ja alle 5v ..
wäre bei 3,3v sensoren aber vorsichtig mit den 5v pullups .. so wie ich das verstanden habe können die den sensoren schaden.

also hier der llc http://lipoly.de/index.php?main_page=product_info&products_id=11385 kostet ja quasi nix.. wäre bestimmt ein versuch wert ;)
ansonnsten würd ich mal im wmc forum fragen .. die müsstens wissen.

[edit]
jetzt hab ich die frage ganet beantwortet -.-

also ich würde so einen llc und 2 2.2k wiederstände nehmen und die daran tun...

also dann:
Code:
                     +5v
                      |
                     2.2k
                      |
     sda-----       ------
IMU            LLC        Arduino
     scl-----       ------
                      |
                     2.2k
                      |
                     +5v
aber wie gesagt .. nicht sicher!


[/edit]


gruß

felix
 

ronco

User
hab was gefunden...

hier http://diydrones.com/profiles/blogs/drotek-small-imu-10dof
steht das deine IMU für 5v arduinos ein externen LLC braucht

Drotek a small French startup sell a new 10 DoF IMU that can be interfaced with Arduino cards ( 3,3V and 5v with an external LLC , in few weeks, this IMU will have the LLC on the board)

aber auch das es wohl bald eine version mit LLC onboard giebt...

gruß

Felix
 
Zuletzt bearbeitet von einem Moderator:

skaan1

User
Hallo
Danke für die Info's.
Habe mein IMU schon länger bestellt da gab es leider noch keins mit Integriertem LLC.

Gruss Andy
 

ronco

User
Da wohl immer noch die meinung korsiert das 1.9 mit WMP + ELV BMA020 nicht geht, ... hier ein schaltplan:
bma020.jpg
(das fliege ich so mit 0 I²C fehlern)

also UPullup und +5V(vcc) am BMA020 nicht verbinden!
und die internen pullups im sketch(multiwii software) deaktivieren!
[edit]für alle die mit einem arduino Mega oder fertigem WMC board fliegen vcc(hier rote linie) = 5V![/edit]


gruß


Felix
 

flug2905

User
Drotek IMO

Drotek IMO

Hallo Felix
Danke für die Erklärung.

Ich habe ein IMO 10DOF von Drotek das zwar läuft aber i2c fehler zeigt, habe es eingeschickt und der Hersteller hat es kontroliert, alles i.o.
Das IMU läuft ja mit 3.3v..
Habe auf meiner MWC Platine von flyduino den Spannungsregler verbaut, aber keinen Externen LLC(Logic Level Converter).
Wie muss ich den jetzt vorgehen damit das IMU richtig läuft ?
Ein LCC dazwischen schalten oder ??????

Würde mich über Hilfe freuen.

Gruss Andy

Hallo!

Ist zwar schon paar Tage her, aber vielleicht für jemanden interessant.
Habe auch das 10DOF ohne LLC von Drotek. Fliege es auch mit der 1.9er Version.
Auf der Platine ist ein Lötjumper, der die beiden Pullups auf die 3,3V legt.
Jetzt wird das Board einfach am i2c Bus angeschlossen.
Die internen pullups im sketch (multiwii software) müssen deaktiviert werden!
Das geht übrigens mit allen 3,3V sensoren. Pullups müssen dann auf die 3,3V gehen.
Bei gemischtem Betrieb von 5V und 3,3V Sensoren braucht man einen LLC...

Gruß Ewald
 

MoD

User
Ich möchte Ronco nur kurz zustimmen. Ich fliege genau so und es funktioniert bestens.
Da ich auch schon vor dem MultiWii mit I2C Komponenten gearbeitet habe,
habe ich mich sowieso gewundert, wo die 2k2 Widerstände geblieben sind.
Wäre nie auf die Idee gekommen dafür die internen Pullups zu verwenden!
 

skaan1

User
Ist es egal wie die Widerstände eingebaut werden ?
Welche Farbe (rot oder gold) schaut zu +5V und welche zu SDA oder SCL ?

Gruss Andy
 
Hallo Andy,

bei einem Widerstand spielt es keine Rolle, kannst Du verbauen wie Du möchtest. Die Farbringe sind ein Farbcode für Widerstandwert und Toleranz.

Grüsse

Niko
 
Zuletzt bearbeitet:
Ansicht hell / dunkel umschalten
Oben Unten