@Martinez:
Ich habe mir im Quelltext die ganze MPU6050 Geschichte noch einmal angeschaut.
Grundsätzlich nimmt die MPU dort eine Sonderstellung ein.
1. ACC und Gyro in einem Chip
2. Unterschiedliche Wertzuweisung für acc_1G (Freeimu 256, sonst "512")
Für die jetzige "Formel" ist die grösse des acc_1G Absolutwertes unerheblich, aber bei 512 können natürlich mehr Störungen durchgegeben werden. Die anderen Acc -(einzel) Sensoren haben jeweils einen eingeschalteten Lowpassfilter (LPF) von 20 oder 25Hz (Nunchuk habe ich jetzt nicht nachgeschaut, aber BMA020, BMA180 etc), der direkt von ihrer Hardware erledigt wird. Bei der MPU ist keinerlei Filter eingeschaltet! D.h. alle Minivibrationen gehen glatt durch. Ich weiss nicht warum, vielleicht kann man bei der MPU nur GYRO und ACC Filter gemeinsam definieren? Dort steht: "default DLPF_CFG = 0 => ACC bandwidth = 260Hz GYRO bandwidth = 256Hz)". Jedenfalls solltest Du unbedingt in der config.h //#define MPU6050_LPF_42HZ oder sogar //#define MPU6050_LPF_20HZ setzen. So wie ich das sehe, sind dann bei der MPU sowohl Gyro(unerwünscht) und ACC(erwünscht) betroffen. Wenn z.B mit 20Hz das Höhehalten klappt, er aber fliegt wie ein Eimer (Gyro), dann mache ich noch einen Softwarelowpassfilter rein, der nur das ACC betrifft, d.h. den Harware LPF kann man dann auch reduzieren/abschalten. Den vorhandenen "//#define ACC_LPF_FACTOR 100" kann man leider überhaupt nicht für unsere Zwecke verwenden - VIEL zu träge, da ist sogar der Baro noch schneller.
Ich bin mir sehr sicher, dass da der Hund begraben ist!! Die Regelung selbst ist nicht das Problem, sonst hätte die 2b nicht funktioniert. Irgendwie bekommen wir das in den Griff.
Mache unbedingt einen MPU6050_LPF_42HZ Versuch! Ich suche mal nach dem Datenblatt, ob man getrennte LPF bei der MPU für den Gyro und Acc Anteil angeben kann.
LG
Rob
Guten Abend,
ich war heute wieder testen!
Was ich da erlebt habe war echt sehr komisch.
Als erstes habe ich die Zeile #define MPU6050_LPF_42HZ aktiviert. (Ich habe vorher nochmal zur Sicherheit eeprom_clear per Arduino eingespielt und danach die "MultiWii_2_1_NewBaroPIDVario3Final" drauf geschmissen, ACC kalibriert und ab auf die Wiese.
Das Quad flog sich normal, also Baro rein und......
....die komischen Sprünge und Pumpbewegungen waren weg
(ALT PID war auf Standard 10 0.030 80)
Erfolg!
Aber sobald ich den Baro aktiviert hatte stieg der Kopter immer weiter nach oben.
Mhhh....
Ich habe mir dann gedacht "mal schauen ab wann der Kopter wieder über den ACC pumpt".
Also nach der Reihe die Optionen durch probiert bis ich bei der 256Hz LPF war.
//#define MPU6050_LPF_256HZ // This is the default setting, no need to uncomment, just for reference
//#define MPU6050_LPF_188HZ
//#define MPU6050_LPF_98HZ
//#define MPU6050_LPF_42HZ
Wobei die 256HZ Variante ja laut den Kommentar sowieso per default aktiviert ist.
Bei 256Hz wieder angekommen, war das Pumpen beim Baro immer noch NICHT wieder da!!!!
Daraufhin habe ich alles wieder auskommentiert, das Pumpen ist immer noch nicht wieder da. Ähhhh!!!! Was ist jetzt los????
Ich habe sogar alles per EEPROM_CLEAR gelöscht. Das Pumpen ist weg!!! Ich habe nichts am Kopter Hardware technisch geändert!
Wie kann das sein? Hat sich der LPF eingebrannt
das kann doch nicht sein?!?! Ich verstehe das nicht.
Zu der Höhenregelung von heute.
Am Anfang mit den LPF und den Standard ALT PID ist der Quad ständig gestiegen.
Eine Verbesserung war nur zu erreichen in dem ich I auf 0.004 reduzierte. ??? Sehr seltsam.
Ich habe dann nochmal alles zurückgesetzt und bin dann zu den besten Ergebnis mit den ALT PID 6.0 0.020 80 hält mein Bumblebee jetzt auf ca. 1m die Höhe, also schlechter als die MultiWii_2_1_NewBaroPIDVario2b.
Zusammengefasst war das heute sehr, sehr komisch!!!
Gruß
Martinez