- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 16

Thema: Winkelgeschwindigkeit Integrieren

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2012
    Beiträge
    23

    Winkelgeschwindigkeit Integrieren

    Hallo

    Ich versuche eine simple Integration von Winkelgeschwindigkeit eines Gyros um auf die Winkel zu kommen.
    Mir ist klar das das Integrieren auch das aufsummieren von Fehlern bedeutet und der Winkel innert einigen Sekunden nicht mehr stimmt.
    Mir geht es hier aber um das verstehen, später kommt dann eventuell das verrechnen von einem ACC.

    Ich habe nun viele Tage Gesucht und die Beispiele sehen immer gleich aus:

    Code:
    angle = angle + gyro * dt;
    Ich denke angle ist Winkel, gyro ist die Winkelgeschwindigkeit, dt die Zeit die ein Loop Durchgang benötigt.

    nur bin ich vermutlich zu Blind um die Rohdaten aufzubereiten.

    Die Hardware ist ein simpler Arduino uno mit dem 328.
    Breakout mit MPU6050 = http://www.sparkfun.com/products/11028
    Mit I2C ausgelesen lese ich nun folgende max -min werte = -32767 bis 32768.

    Wie muss ich nun die Werte aufarbeiten?

    Angefangen habe ich damit den Offset abzuziehen:
    Im Setup mache ich dies:

    Code:
     for (int i=0;i<500;i++) //mittelung von nullpunkt
        {
          accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
          gz_null = gz_null+gz;
        }
        gz_null = gz_null/500;
    Danach versuche ich das Integrieren:

    Code:
    #include "Wire.h"
    #include "I2Cdev.h"
    #include "MPU6050.h"
    MPU6050 accelgyro;
    int16_t ax, ay, az;
    int16_t gx, gy, gz;
    
    float gz_null=0;
    float winkel=0;
    
    
    void setup() {
       
        Wire.begin();
        Serial.begin(38400);
        accelgyro.initialize();
        
        
        for (int i=0;i<500;i++) //mittelung von nullpunkt
        {
          accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
          gz_null = gz_null+gz;
        }
        gz_null = gz_null/500;
        
        
    }
    
    void loop() {
      
        accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //MPU6050 auslesen
        gz = gz - gz_null; //offset abziehen
        winkel=winkel+gz*2.8; //Winkel Integrieren, winkel + winkel * 2.8ms (dauer zwischen 2 loop durchgängen.
        
        Serial.println(winkel); //Winkel ausgeben
        
    }
    Jetzt habe ich einen Wert, das sich schön ändert wenn ich den Gyro langsam um die Achse drehe, je nach Richtung nimmt dieser Wert zu oder ab.
    Aber wenn ich den Gyro schneller drehe, verschluckt sich das und die Werte ändern viel zu wenig.

    Habe ich nun kompletten Murks Programmiert?
    Muss ich die Gyro Rohdaten ( -32767 bis 32768 ) zuerst aufbereiten?
    Wie bekomme ich hier nun den Winkel in °?

    Gruss Tomatenbaum
    Geändert von Tomatenbaum (10.06.2012 um 18:00 Uhr)

Ä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, 23:35
  2. ISP auf Platine integrieren....
    Von Cybered im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 12.02.2008, 21:31
  3. Gyrosignal integrieren?
    Von Hendrix85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 04.01.2008, 18: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, 12:55
  5. avr-gcc in MSVC integrieren
    Von hahoyer im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 07.07.2005, 10:22

Berechtigungen

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

Solar Speicher und Akkus Tests