@inka:
Ja! Ja!frage zu den X/Y min/max werten: Sollten die werte währen der drehung um 360° einen kontinuierlichen verlauf haben (sinus?) Gilt das für HDMM wie auch für dier minIMU?
@inka:
Ja! Ja!frage zu den X/Y min/max werten: Sollten die werte währen der drehung um 360° einen kontinuierlichen verlauf haben (sinus?) Gilt das für HDMM wie auch für dier minIMU?
Gruß
Dirk
@Dirk: ich komme nicht drauf woran es liegt dass der HDMM immer um ca. 90° cw mehr/falsch anzeigt als er sollte. Habe schon alle möglichen störquellen wie Servos abgebaut, es ändert sich nicht...
Der verlauf der anzeige beim drehen des RP6 ist aber kontinuierlich, ohne außreisser, bzw. eine plötzliche anzeige die zu der vorherigen nicht passt. von 0 bis 359...
Gibt es in der lib irgendwo eine möglichkeit den angezeigten wert durch das hinzufügen eines korrekturfaktors um diese 90° zu verändern?
gruß inka
@inka:
Einen "Korrekturfaktor" könnte man zur Richtungsanzeige hinzufügen, das ist aber nur die zweitbeste Lösung.
Die beste ist:
HDMM01 so anbringen:
- Sensorchip nach OBEN (U1 von oben lesbar)
- SDA/SCL Pins in Fahrtrichtung VORN
Wenn du den Sensor anders angebracht hast, ist das auch kein Drama:
- Nimm dir die Funktion readHDMM01() vor. Darin gibt's die Zeilen:
Durch y_axis2dm *= -1; wird hier z.B. die Y-Achse umgekehrt. Du kannst das probeweise auskommentieren.Code:// xb = y: x_axis2dm = ((readBuf[MSB_X_AXIS] & 0x0f) << 8) + readBuf[LSB_X_AXIS]; // yb = -x: y_axis2dm = ((readBuf[MSB_Y_AXIS] & 0x0f) << 8) + readBuf[LSB_Y_AXIS]; y_axis2dm *= -1;
Genauso kannst du für die X-Achse eine neue Zeile x_axis2dm *= -1; einfügen, um die X-Achse umzukehren.
Damit probierst du alle 4 Kombinationen durch bis die Richtungsangaben passen.
Gruß
Dirk
ist so aufgebaut...
das wars noch nicht, aber vielleicht hilft es bei der fehlersuche:
RP6 steht in fahrtrichtung NORD.
1) y_axis2dm *= -1; auskommentiert, anzeige heading: 90, die sich nur im bereich 88-91 bei 360° drehung verändert
2) x_axis2dm *= -1; hinzugefügt bei auskommentierter umkehrung der y achse: anzeige heading:135, die anzeige verändert sich bei 360° drehung im bereich 135-136
3) beide achsen umgekehrt: anzeige heading 181, verändert sich bei drehung 360° im bereich 179-181
4) ursprünglicher zustand(x auskommentiert, y-achse umgekehrt): heading anzeige 251, verändert sich kontinuierlich bei einer drehung um 360° im bereich 0-360
gruß inka
Wenn der HDMM01 so angebracht ist, wie beschrieben, bringt auch ein Tauschen der Achsen nichts.
Die Anzeige müßte dann mit der Orientierungslib stimmen.
Wenn nicht: Metalleinflüsse von außen reduzieren und neu kalibrieren.
Wenn das auch nicht hilft: ???
Gruß
Dirk
und da ist nix an metalleinfluss was ich beseitigen könnte. Also doch die zweitbeste lösung mit dem korrekturfaktor. Wie mache ich das?
gruss u. dank
Inka
Hi inka:
In der Funktion headingHDMM01() könnte man 90° addieren oder subtrahieren.
Gruß
Dirk
Lesezeichen