CMPS11 Kalibrierung

  • Hallo zusammen,
    Habe einen Rover5 mit 4 Motoren und eine MCP und Arduino Mega verbaut. on Top ist das Kompass Modul flach montiert. Ich habe keine pullup Widerstände verbaut sondern nutze die im Arduino eingebauten an 5V.
    Ich bekomme von meinem CMPS11 keine sinnvollen Werte. roll und pitch verändern sich wenn ich das Fahrzeug manuell bewege, fallen aber rasch auf die gezeigten Werte zurück, auch wenn ich das Fahrzeug schräg halte. die Kompasswerte ändern sich ebenfalls aber nicht im richtigen Mass. (Angel 16 bit schwankt je nach Richtung zwischen 200 und 300 Grad, angel 8 bit entsprechend)

    Battery 9V: 9.99 V
    Battery 7V: 7.91 V
    Battery 5V: 5.00 V
    Motor 1 Current: 0.00 A
    Motor 2 Current: 0.00 A
    Motor 3 Current: 0.00 A
    Motor 4 Current: 0.00 A
    roll: -35 pitch: 35 angle 16 bit: 329.0 angle 8 bit: 233

    Nun habe ich nach Anleitung eine Kalibrierung durchgeführt. Dazu habe ich die Codesequenzen der Messung auskommentiert und die Kalibrierungssequenzen aktiviert.

    Das Verhalten des CMPS11 während der Kalibrierung war wie beschrieben (LED aus nach dem Start, Blinken während der Drehung des Fahrzeugs). Das Endergebnis sieht leider nicht besser aus.

    Hat jemand einen Tip was ich falsch mache?

    Hier noch mein Arduino Code (Die Kalibrierung ist wieder auskommentiert)

    Danke für Eure Unterstützung

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

    Einmal editiert, zuletzt von Wolfgang Glück (25. November 2015 um 18:13)

  • Hallo dreamshader,
    habe den CMPS11 schon ca. 20 cm am i2C vom Fahrzeug weg betrieben. Die Werte streuen dann weiter, sind aber immer noch nicht plausibel

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

  • Hi,
    keine gute Idee ... mit 20 cm bist Du bei I2C afaik schon eher grenzwertig unterwegs, falls Du keinen Treiber-IC einsetzt. Da tauscht Du eine mögliche Fehlerquelle mit einer anderen.
    Kannst Du nicht einfach einen Arduino mit dem Kompass koppeln und losgelöst vom Fahrzeug betreiben?
    Ach ja: I2C beim Arduino braucht noch Pullups (4k7 wenn ich mich recht entsinne) ... hast Du das berücksichtigt?
    cu,
    -ds-

  • Hallo dreamshader

    Leider habe ich die Arduinos nicht einfach so herumliegen. Der, den ich besitze, ist im Fahrzeug verbaut und verdrahtet.

    Ich werde nun das Kabel (Flachband) kürzen, ich kann da auf ca. 10cm runtergehen, dann werde ich noch 4,7k Widerstände einbauen.
    Allerdings zeigt mir die Kalibrierung, dass die I2C Kommunikation an sich funktioniert.

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

  • Na ... das ist blöd, wenn Du nur den einen Arduino hast ...

    Aaaber: schau mal in meigrafds Thread bezüglich Roboter. Der hatte, glaube ich, auch ein Problem mit so einem Gyro-Teil. Vielleicht hat der ja noch einen Tipp in seinem Projekt ;)

    cu,
    -ds-

  • wow, das hat geholfen
    die Werte für pitch und roll sind jetzt 0 bzw stabil wenn ich das Fahrzeug kippe. Der Kompass zeigt plausible Werte.

    Ich werde nun noch die Kalibrierung wiederholen

    Herzlichen Dank für den Tip, hätte ich eigentlich selber draufkommen müssen, mit meiner Vorbildung.

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

  • Neues Phänome:

    Der CMPS11 ist an Arduino 5 V sowie am I2C angeschlossen.
    Wenn ich nun die Versorgungsspannung zum Arduino einschalte (9,6 V Batterie) passiert es öfters, dass der Kompass unplausible Werte liefert.
    Nach entfernen und wieder anschliessen der 5V Leitung des CMPS11 funktioniert alles wieder normal.

    ich habe die Pullup Widerstände wieder entfernt, da der Arduino Mega interne Pullup Widerstände hat, die von Wire per default aktiviert sind. CMPS11 ist tolerant zu 5 V pullups.
    Die I2C Leitungen sind nun 10cm lang. Eine Kapazität kann ich da praktisch nicht messen, das Instrument hat als kleinsten Messbereich 2nF.

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

  • So, das Problem ist gelöst!
    Ich bin den Weg gegangen, den CMPS11 über einen digitalen Ausgang zu schalten. Das geht da der Kompass nur 25mA aufnimmt.

    Also folgende Sequenz im Anlaufteil der Arduino Software:

    void setup()
    {
    Serial.begin(250000);
    pinMode(ledPin, OUTPUT);

    pinMode(distanceRightTrig, OUTPUT);
    pinMode(distanceLeftTrig, OUTPUT);
    pinMode(distanceFrontTrig, OUTPUT);
    pinMode(distanceDownTrig, OUTPUT);
    pinMode(distanceUpTrig, OUTPUT);
    pinMode(motor1Direction, OUTPUT);
    pinMode(motor2Direction, OUTPUT);
    pinMode(motor3Direction, OUTPUT);
    pinMode(motor4Direction, OUTPUT);
    pinMode(motor1PWM, OUTPUT);
    pinMode(motor2PWM, OUTPUT);
    pinMode(motor3PWM, OUTPUT);
    pinMode(motor4PWM, OUTPUT);
    pinMode(CMPS11_VCC, OUTPUT);

    // CMPS11 startup
    // ************************************************************************************************************
    digitalWrite(CMPS11_VCC, 1);
    delay(2000);
    Wire.begin();

    Softwarefehler suchen ist wie Pilze suchen. Wenn man erst einen gefunden hat, findet man meist mehrere.

    Bei Hardware ist es schlimmer, da findet man bereits Fehler wenn man gar keine sucht!

    Einmal editiert, zuletzt von Wolfgang Glück (8. Dezember 2015 um 10:24)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!