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
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
- 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
zu
wie schliesst man externe pullups an?
externe pullups werden von den 2 i²c datenkabeln zu +5v (z.B. vcc) angeschlossen...
also:
gruß
felix
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-
------------------------------------------------------------
- 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
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