Funktionieren bei Euch Kompass und Baro vernünftig ?

Roberto

Erfahrener Benutzer
Perfekt! Danke für die Info Aileroned!
Vielleicht hats doch was gebracht diese wilde Zwangspause abzuschaffen und lieber brav abzufragen, ob es Werte gibt und wenn ja, erst den Buffer füllen (MSBaro/BMP 400/560ms) bevor es weiter geht.

LG
Rob

EDIT: Hier ist die geänderte "getEstimatedAltitude" der Version 5b am Beispiel der MultiWii_dev_20120528.

Code:
#define BARO_TAB_SIZE   40
#define UPDATE_INTERVAL 25000    // 40hz update rate (20hz LPF on acc)

void getEstimatedAltitude(){
  uint8_t index;
  static int16_t BaroHistTab[BARO_TAB_SIZE];
  static int8_t BaroHistIdx;
  static int8_t fstrun=1;
  static int32_t BaroHigh,BaroLow;
  static uint32_t deadLine = 0;
  int32_t temp32;
  int16_t last;

  if (newbaroalt==1)                                        // Update only, if new values are available
   {
    newbaroalt=0;                                           // Reset Boolean
    //**** Alt. Set Point stabilization PID ****
    //calculate speed for D calculation
    last = BaroHistTab[BaroHistIdx];                        // Do the magic
    BaroHistTab[BaroHistIdx] = BaroAlt/10;
    BaroHigh += BaroHistTab[BaroHistIdx];
    index = (BaroHistIdx + (BARO_TAB_SIZE/2))%BARO_TAB_SIZE;
    BaroHigh -= BaroHistTab[index];
    BaroLow  += BaroHistTab[index];
    BaroLow  -= last;
    BaroHistIdx++;
    if (BaroHistIdx == BARO_TAB_SIZE)
     {
      BaroHistIdx = 0;
      fstrun = 0;
     }
   }
  if (currentTime<deadLine || fstrun==1) return;            // Maintain old timing (40Hz)for PID calculation
  deadLine = currentTime + UPDATE_INTERVAL;
  EstAlt = BaroHigh*10/(BARO_TAB_SIZE/2);
  newestalt=1;                                              // Indicate, new EstAlt RDY
 
  BaroPID = 0;                                              // Calculate new PIDs
   //D
  temp32 = conf.D8[PIDALT]*(BaroHigh - BaroLow) / 40;
  BaroPID-=temp32;
  temp32 = AltHold - EstAlt;
  if (abs(temp32) < 10 && abs(BaroPID) < 10) BaroPID = 0;  //remove small D parametr to reduce noise near zero position
  //P
  BaroPID += conf.P8[PIDALT]*constrain(temp32,(-2)*conf.P8[PIDALT],2*conf.P8[PIDALT])/100;   
  BaroPID = constrain(BaroPID,-150,+150); //sum of P and D should be in range 150
  //I
  errorAltitudeI += temp32*conf.I8[PIDALT]/50;
  errorAltitudeI = constrain(errorAltitudeI,-30000,30000);
  temp32 = errorAltitudeI / 500; //I in range +/-60
  BaroPID+=temp32;
}
Zum Vergleich die getEstimatedAltitude der Version 5:http://www.fpv-community.de/showthr...o-vern%FCnftig&p=150774&viewfull=1#post150774
 

Joachim08

Erfahrener Benutzer
Bob,

leider hat sich gar nichts verändert. Bin jetzt echt ein bischen vor den Kopf gestossen...

Anbei nochmal ein Foto der GUI....


@aileroned: welche IMu hast Du ? Ich habe die 10DOF Mit MPU6050 von Drotek und so eingebunden
wie Sn0white auf seiner Page beschrieben hat...
 

Anhänge

Roberto

Erfahrener Benutzer
Bob,

leider hat sich gar nichts verändert. Bin jetzt echt ein bischen vor den Kopf gestossen...

Anbei nochmal ein Foto der GUI....


@aileroned: welche IMu hast Du ? Ich habe die 10DOF Mit MPU6050 von Drotek und so eingebunden
wie Sn0white auf seiner Page beschrieben hat...

Ähem, die Kurve ist doch 1a !!! Alles im grünen Bereich!
Du kannst Deinen Copter noch zum Test hoch und runter bewegen, dann siehst Du wie sich die Kurve ändert.
Stell Deine Pids ein und los gehts!

LG

Rob
 

Joachim08

Erfahrener Benutzer
Ähem, die Kurve ist doch 1a !!! Alles im grünen Bereich!
Du kannst Deinen Copter noch zum Test hoch und runter bewegen, dann siehst Du wie sich die Kurve ändert.
Stell Deine Pids ein und los gehts!

LG

Rob
Ok Rob, wenn Du meinst...

Bin ja nicht päpstlicher als der Papst. ich dachte nur weil Eure Kurven viel glatter aussehen, auch die von aileroned ...

Die Werte verändern sich richtig beim Bewegen des Copters. Testflug kann ich dann erst morgen machen, bin schon gespannt.
 

Roberto

Erfahrener Benutzer
@r0sewhite:
Ich glaube, ich kann Dich mit Fug und Recht als Vollprofi bezeichnen. Es ist daher für mich nicht nur eine Ehre, sondern auch besonders spannend, wenn Du den DIY Mod ausprobierst!

@Joachim:
Vielleicht haben wir mehr Schaumstoff am Sensor, der die "Bohnensuppe" besser filtert.

Ich habe die komplette Idee und alle Programmveränderungen jetzt offiziell hier in Englisch (habe schon massig Fehler gefunden - egal, ist authentisch) geposted:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1777
Hoffentlich entwickelt sich ein guter Gedankenaustausch.

LG

Rob
 

martinez

Erfahrener Benutzer
@Helste: Wind wird dem Sonar auch zu schaffen machen. Vom Winde verweht.....
@Joachim versuche mal die Version, ob dein Baro dann eine bessere Kurve liefert.

Die 4sec Zwangspause ist weg und beim Erstdurchlauf wird zunächst der Puffer voll gemacht.

LG

Rob


P.s: Die Config.h ist nicht verändert.
Kann mir bitte einer kurz den Unterschied zwischen den beiden DEVs (504 und 528) sagen....
Ich hab's irgendwie nicht mitbekommen, was wurde geändert, optimiert?
Danke!

@Rob, heute Nachmittag hab ich viel Zeit, da kann ich deine Mods richtig testen und werde versuchen die PID Werte der Alt zu optimieren....

Gruß
Martin
 

Joachim08

Erfahrener Benutzer
So, erster Testflug habe ich hinter mir, leider nicht viel Unterschied zu früher. Das habe ich auch fast erwartet, wenn man sich die Linie in der GUI ansieht. Ich verstehe nicht warum diese Linie schon im Stand ohne Motorlauf so schwankt. Ich habe die obere Seite des Sensorboards komplett mit Schaumstoff versehen und eingeschweißt, da sollte nichts mehr passieren.

Der Flug endete dann noch mit einem Crash, da sich im Schwebeflug plötzlich alle Motoren ausstellten....
Bin jetzt ziemlich angefressen und überlege mir auf ein zuverlässigeres System umzusteigen. Habe schon ein Auge auf den Arducopter geworfen..... Läuft das Board von flyduino eigentlich mit der Arducopter Soft bzw,. Ardupirates ?

Grüße

Joachim
 

Joachim08

Erfahrener Benutzer
So jetzt habe ich den Übeltäter für die unruhige Kurve des Baros gefunden....:
Lt. Drotek Homepage soll man meine 10DOF an 5V anschliessen, wenn man den Mini 5V hat.
Daran habe ich mich gehalten und das war wohl der Fehler. Ich habe jetzt die Stromversorgung
der IMU an 3.3 V geschalten und die Barolinie ist wunderbar glatt.... :)

Jetzt habe ich doch wieder Hoffnung geschöpft... und werde später testen
 

Andi

Erfahrener Benutzer
Mensch Joachim , das ist der Tip des Jahres !!:D:D:D:D:D
Habs gerade umgelötet ,die Barokurve ist jetzt auch ohne Mod um Welten besser.
Die Onboardregler stören anscheinend.

Andi
So jetzt habe ich den Übeltäter für die unruhige Kurve des Baros gefunden....:
Lt. Drotek Homepage soll man meine 10DOF an 5V anschliessen, wenn man den Mini 5V hat.
Daran habe ich mich gehalten und das war wohl der Fehler. Ich habe jetzt die Stromversorgung
der IMU an 3.3 V geschalten und die Barolinie ist wunderbar glatt.... :)

Jetzt habe ich doch wieder Hoffnung geschöpft... und werde später testen
 

Wollez

Erfahrener Benutzer
Sodele, jetzt komme ich auch endlich mal dazu, den Mod zu testen.
Ich habe den dev528 verwendet und benutze den BMP085. So richtig kann ich aber keinen Unterschied zu vorher feststellen, oder bin ich blind???

Nachher werde ich ihn auf jedenfall mal damit fliegen. Es ist heute relativ windstill.

Gruß Wolfgang
 

Anhänge

Wollez

Erfahrener Benutzer
Ok, den hab ich vorher nicht gelöscht :(

Jetzt habe ich es noch mal eingespielt. Er scheint jetzt sauberer zu gehen. Ab und zu macht er aber schon noch Sprünge.

Mal ne frage (von jemand, der sich mit diesem Code nicht so toll auskennt!), werden da eigentlich die Durchschnittswerte eines bestimmten Zeitraums verwendet? Z.B. 4 Werte einer Zeit "X" addieren und durch 4 teilen und diesen dann verwenden. Das würde, wenn es nicht bereits gemacht wird, vielleicht etwas mehr Ruhe rein bringen.

Gruß Wolfgang
 

Anhänge

FPV1

Banggood

Oben Unten