- LiFePO4 Speicher Test         
Seite 8 von 8 ErsteErste ... 678
Ergebnis 71 bis 78 von 78

Thema: minIMU-9 v2, software, kalibrierung...

  1. #71
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Anzeige

    E-Bike
    Hi Dirk,

    ich habe den code für den gyro um die ausgabe der normalisierten werte ergänzt, die funktion sieht jetzt so aus:

    Code:
    void gyroscope(void) //  L3GD20 gyroscope
    
        {
        mSleep(1000);
        task_I2CTWI();
        readL3GD20();                        // Get sensor values
        normalizeL3GD20();
        task_I2CTWI();
        clearLCD();
        setCursorPosLCD(0, 0);        // line 1
        writeStringLCD_P("X");
        writeIntegerLCD(x_axisg, DEC);
        setCursorPosLCD(0, 6);        // line 1 pos 6
        writeStringLCD_P("Y");
        writeIntegerLCD(y_axisg, DEC);
        setCursorPosLCD(0, 12);        // line1 pos 12
        writeStringLCD_P("Z");
        writeIntegerLCD(z_axisg, DEC);
    
        setCursorPosLCD(1, 0);        // line 2
        writeStringLCD_P("X");
        writeIntegerLCD(xg, DEC);
        setCursorPosLCD(1, 6);        // line 2 pos 6
        writeStringLCD_P("Y");
        writeIntegerLCD(yg, DEC);
        setCursorPosLCD(1, 12);        // line 2 pos 12
        writeStringLCD_P("Z");
        writeIntegerLCD(zg, DEC);
    
    
    #ifdef GET_TEMP
        temperatureg = calcTempL3GD20(temperatureg) + 5;
        temperatureg += OFFSET_TEMP;
        setCursorPosLCD(1, 8);        // line 2 pos 9
        writeStringLCD_P("T");
        writeIntegerLCD(temperatureg, DEC);
        writeStringLCD_P("    ");
    #endif
        mSleep(2000);//3 sec
        clearLCD();
        task_I2CTWI();
        }
    ich habe Deine erklärungen so verstanden, dass die normalisierten werte sich durch die normalisierung von den rohwerten unterscheiden, in der ausgabe dieser funktion sind beide zeilen gleich, oben die rohwerte (x_axisg) unten die normalisierten (xg). Da ist doch irgendwas falsch, oder?
    gruß inka

  2. #72
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Die Variablen xg, yg und zg sind Floating Points.
    Du müßtest also die Funktion writeDoubleLCD() zur Ausgabe nehmen.
    Das passt dann kaum noch aufs LCD: Ich würde die Werte über das Terminal ausgeben.
    Gruß
    Dirk

  3. #73
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ok, habe nun den code etwas verändert:


    Code:
    //    setCursorPosLCD(1, 0);        // line 2
    //    writeStringLCD_P("X");
        writeString_P("x: ");
        writeDouble(xg, 5, 5);
        writeString_P("\n");

    im terminal wird der wert der xg-variablen jetzt ausgegeben, ist aber immer noch identisch mit x_axis_g, nur mit angehängten 5 nullen hinterm koma...

    ob die zwei zahlen 5, 5 nun passend sind weiss ich nicht so genau, auch bei 1, 1 verändert sich nur die zahl der nullen...

    irgendwie habe ich erwartet, dass der unterschied zwischen x_axis_g und xg signifikanter ist?
    gruß inka

  4. #74
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    du bist ja da beim Gyro:
    Die "Normalisierung" geschieht in der Funktion normalizeL3GD20() zum einen durch eine Begrenzung der Werte nach oben/unten auf 20000/-20000.
    Zum anderen wird ein OFFSET addiert (OFFSET_X/Y/Z).
    Nach der Normalisierung werden sich die kalibrierten Werte (xg, yg, zg) nicht von den Rohwerten (x_axisg, y_axisg, z_axisg) unterscheiden.
    Geändert von Dirk (24.07.2013 um 21:00 Uhr) Grund: Text verbessert
    Gruß
    Dirk

  5. #75
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    @Dirk,

    die sache mit dem "make" und den "strukturen" scheine ich jetzt verstanden zu haben. Die kalibrierung des gyro mit der "demo_05_02" hat auch einigermassen geklapt, jetzt möchte ich weitermachen mit accelerometer und magnetometer.

    Dieser code hier (als beispiel für den accelerometer):
    Code:
    #ifdef IMU_9D 
                //  LSM303DLHC accelerometer: 
                task_I2CTWI(); 
                readLSM303DLHC_A();                    // Get sensor values 
                task_I2CTWI(); 
                setCursorPosLCD(0, 0);        // line 1 
                writeStringLCD_P("X"); 
                writeIntegerLCD(x_axisa, DEC); 
                writeStringLCD_P("   "); 
                setCursorPosLCD(0, 5);        // line 1 pos 6 
                writeStringLCD_P("Y"); 
                writeIntegerLCD(y_axisa, DEC); 
                writeStringLCD_P("   "); 
                setCursorPosLCD(0, 10);        // line 1 pos 11 
                writeStringLCD_P(" Z"); 
                writeIntegerLCD(z_axisa, DEC); 
                writeStringLCD_P("    "); 
                normalizeLSM303DLHC_A();            // Normalize data 
                positionLSM303DLHC_A();                // Calculate position 
                setCursorPosLCD(1, 0);        // line 2 
                writeStringLCD_P("P"); 
                writeDoubleLCD(pitch, 6, 1); 
                writeStringLCD_P(" "); 
                setCursorPosLCD(1, 8);        // line 2 pos 9 
                writeStringLCD_P("R"); 
                writeDoubleLCD(roll, 6, 1); 
                writeStringLCD_P(" "); 
                task_I2CTWI(); 
                mSleep(1000); 
                clearLCD(); 
    #endif
    sollte das "normalize" nun auskommentiert werden, oder nicht? Wie ist der letzter stand in der lib?

    btw: meine kalibriervorrichtung, auf die ich soo stolz war taugt nicht viel. habe festgestellt, dass beim umschrauben 1° versatz reicht, um völlig andere werte zu bekommen. Eigentlich müsste man sich über eine genaue und zwar wiederholbar genaue befestigung der minIMU gedanken machen!
    gruß inka

  6. #76
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @inka:

    Beschleunigungssensor:
    In der Funktion normalizeLSM303DLHC_A() werden die X/Y/Z-Rohwerte nur begrenzt. Außerdem erfolgt die Ausgabe in der Demo ja VOR Aufruf der normalizeLSM303DLHC_A()-Funktion, so dass du sie ruhig drin lassen kannst.
    Aber: Pitch und Roll werden NACH Normalisierung berechnet, also aus den begrenzten Rohwerten.

    Magnetfeldsensor:
    Auch hier werden die Rohwerte in der Demo VOR der Normalisierungsfunktion ausgegeben, so dass sie unverändert sind.
    Aber: Die Berechnung der Richtung erfolgt dann mit den normalisierten Rohwerten.
    Gruß
    Dirk

  7. #77
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    @Dirk:

    ich kämpfe immer noch mit dem begriff "negativer Maximalwert". Beim kalibrieren des magnetometers waren diese negativen maximalwerte werte alle drei (X,Y und Z) nahe null, oder sogar gleicn null. Die "negativen Minimalwerte" entsprachen in ihrem absolutwert aber in etwa dem absoluten wert der "positiven Maximalwerte". Irgendwie würde ich dazu tendieren für das "nullen" eines sensors die jeweils maximalen "ausschläge" in positiver wie auch negativer richtung zu verwenden. Gibt es eine allgemeinverständliche erklärung dafür, dass es hier anders ist?
    gruß inka

  8. #78
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @inka:
    Möglicherweise habe ich mich nicht mathematisch korrekt ausgedrückt:
    Zur Kalibrierung wird der jeweils größte (MAX) und jeweils kleinste Wert (MIN) benötigt.

    Beispiele:
    a) -20 -14 -8 +2 +23 +177
    ==> MIN = -20 und MAX = +177

    b) +44 +56 +126 +1244 +2833
    ==> MIN = +44 und MAX = +2833

    c) -2833 -574 -233 -88 -12
    ==> MIN = -2833 und MAX = -12

    So klarer?
    Gruß
    Dirk

Seite 8 von 8 ErsteErste ... 678

Ähnliche Themen

  1. Arduino und Pololu MinIMU-9 v2
    Von MechMac im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.05.2013, 19:44
  2. CMPS03 kalibrierung
    Von rideyourstyle im Forum Sensoren / Sensorik
    Antworten: 10
    Letzter Beitrag: 03.03.2009, 18:01
  3. Kalibrierung
    Von seppo1903 im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 26.10.2007, 09:26
  4. Kalibrierung der Motoren
    Von BeeWee im Forum Asuro
    Antworten: 21
    Letzter Beitrag: 17.07.2007, 00:53
  5. Notebook Akku Kalibrierung
    Von Lars. im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 08.03.2007, 23:04

Berechtigungen

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

LiFePO4 Speicher Test