- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 16

Thema: Winkelgeschwindigkeit Integrieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Also ich habe meinen MPU auf 2000°/s und 42Hz Tiefpass eingestellt, da hierbei das Rauschen minimal und die Performance noch gut ist. Vorher war ich bei 250°/s und 256Hz Tiefpass, da hat er öfters mal ein Rad geschlagen, obwohl ich das nicht wollte, sehr ärgerlich.....
    Der Tiefpass ist IMHO Pflicht und die max. Winkelgeschwindigkeits-einstellung würde ich auch eher in Richtung 2000 machen, da du dann den Kopter schneller drehen lassen kannst und er agiler ist... Irgendjemand hier im Forum meinte mal, dass der Sensor bei 250°/s eigentlich auch auf 2000°/s eingestellt ist und die Werte nur verstärkt werden. Das würde auch das deutlich höhere Rauschen erklären.

    Auch ich verwende (noch) einen Komplementärfilter in meinen Kopter, dieser benötigt bei mir auch kein dt. Meine Formel ist einfach (iwo ausm Netz):
    Code:
    Gyro_xangle = Gyro_xangle + Gyrox
    
    Gyro_xangle = Gyro_xangle * Gyro_influence
    ACC_xangle = ACC_x * Acc_influence
    Gyro_xangle = Gyro_xangle + ACC_xangle
    Möchtest du nur einen Hover-Mode integrieren oder auch HH?

    Gruß
    Chris

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2012
    Beiträge
    23
    Danke für deine Erfahrungen.

    Sieht so aus als ob ich die MPU6050 Einstellungen in der Bibliothek anschauen muss.

    Also dein Code hat wirklich kein dt.

    Wie verwendest du dein Wert weiter?
    Direkt zum PD Regler?

    Ich versuche den einen Berühmten Komplementärfilter zu verstehen:

    http://web.mit.edu/scolton/www/filter.pdf

    Du kennst dieses Paper sicher.
    Nur das dt verwirrt mich nun, auf Seite 3 werden die Werte aufbereitet, eventuell hat das dt auch etwas mit dem Scale zu tun?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Ich habe in meinen Koptern zwei Modi: Acro (HH) und Hover
    Beide besitzen einen PID-Regler. Im Acro-Mode wird der Fehler in der Winkelgeschwindigkeit mit p_gain multipliziert und auf die Motoren gebeben, außerdem wird der Fehler integriert und mit i_gain multipliziert. Und dann gibts noch den D-Anteil, der den Fehler mit dem vorherigen vergleicht und auch diesen wieder auf die Motoren gibt.
    Wenn du konkrettere Fragen hast, stell sie einfach, aber ich kann dir jetzt nicht alles erklären.

    Dieses Paper kenne ich nicht, sieht aber auf den ersten Blick ganz informativ aus.

    Gruß
    Chris

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2012
    Beiträge
    23
    Ja gut, werde ich machen mit den Fragen.

    Ich bleib erst mal beim Integrieren und danach mit ACC verrechnen.
    Bleibt nun die Frage nach dem dt und dem scale, also aufbereiten, so wie auf dem Paper.

    Das verstehe ich noch nicht.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Also bei deinem Kopter ist das Integral nicht sooo wichtig, ein Kopter fliegt auch mit einem reinen P-Anteil (zumindest im ACRO (HH) Mode).
    Ich persönlich würde mich nicht nur stur an das Paper halten, sondern einfach selbst einwenig experimentieren. So erhältst du auch einen tieferen Einblick und weißt im Endeffekt dann mehr über das Thema, als wenn du 10 Papers liest

    Gruß
    Chris

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2012
    Beiträge
    23
    Ja Danke Chris

    Ist der liebe Chris der einzige hier der sich mit Integrieren und Komplementärfilter auskennt?
    Wo sind denn die ganzen Profis hier? :--)

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Bei meinen Balance Roboter wird jeden 4 ms der Gyro und die ACC gesampled. Danach wird den offset von Gyro abgesogen und dan integriert. Wichtig ist diesen festen Sampletime, oder du muss gans genau diesen Periode messen konnen zwischen zwei Messungen. Den offset verlauft mit temperatur, so das wird auch nog mal gemessen und korrigiert.
    Ergebnis kannst du here sehen :


    Code:
    /*
    De gyro wordt elke 4 mS uitgelezen via adc0. Dit wordt 10 keer geintegreerd (oversampling) . Bij stilstand geeft dit ca 6232.
    Elke 40 mS wordt de hoek berekend. 
    Ook wordt elke 400 mS de temperatuur van de gyro gemeten via ADC1. Hiermee wordt de driftcorrectie aangepast. 
    In principe kan de drift kleiner zijn dan 0.1 °graad/sek
    */
    void task_initial(void)
    { 
     static uint8_t i=0;
     static uint8_t j=0;
     
     
     int16_t offset_temp=6140;
     
     if(getStopwatch1() > 3) {    //elke 4 mS worden de gyro + ADXL345 uitgelezen + opgeteld
      setStopwatch1(0);     //sample rate is zeer belangrijk voor integraal gyro !!!
      adc0=adc0+readADC(ADC_0); //oversamplen gyro signaal
      adc5= adc5+readADC(ADC_5); //oversamplen acc X signaal
      adc6= adc6+readADC(ADC_6); //oversamplen acc Y signaal
      i++;
      
      if(i>9){       //na 40 ms worden de gemiddelde waarde gebruikt
       aXX=(adc5-4200);adc5=0; // 0 g = 4200 voor de X-as
       aYY=(adc6-4300);adc6=0; // 0 g = 4300 voor de Y-as
       hoek=atan2(aYY,-aXX)/M_PI*1800;//hieruit volgt dan de hoek van de versnellingsvector in 0,1°
       i=0;    
       gyro_d=(adc0-6323);adc0=0; //turnrate gyro over 10 samples-offset, 6323 bij stilstand als i>9
       gyro_hoek=gyro/35;//dit geeft dan de hoek weer in 0.1 graden
       gyro=gyro-gyro_d+0.25*(hoek-gyro_hoek); //sommatie = actuele hoek van gyro+ compensatie drift van ACC
       drift=drift+hoek-gyro_hoek;
       oldgyro=oldgyro-gyro_d;   //dummy variable om de drift te kunnen zien
       oldgyro_hoek=oldgyro/35;
       if(program>1) task_balance();else setMotorPower(0,0);
       j++;
       if (j>9){
        adc1=0.8*adc1+0.2*readADC(ADC_1); //uitlezen temp gyro voor driftcorrectie 
        offset_temp=(adc1-640); //temp compensatie gyrodrift, 640 is ca 20°C 
        gyro=gyro-offset_temp; //elke 400 ms wordt de temperatuur correctie uitgevoerd
        j=0;
        } 
      } 
     }
     
    }

Ähnliche Themen

  1. PID-Regler regelt Winkel anstatt Winkelgeschwindigkeit
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 21.05.2011, 22:35
  2. ISP auf Platine integrieren....
    Von Cybered im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 12.02.2008, 20:31
  3. Gyrosignal integrieren?
    Von Hendrix85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 04.01.2008, 17:04
  4. C compiler in AVR Studio 4.11 integrieren??
    Von Redsox im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 16.09.2005, 11:55
  5. avr-gcc in MSVC integrieren
    Von hahoyer im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 07.07.2005, 09:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test