Kompasssensoren - bin ich schwer von Begriff?

  • Abend,

    ich habe zwei Kompasssensoren (verschiedene) und einen guten alten Kompass hier liegen.

    Wenn ich mir den normalen Kompass nehme und den drehe zeigt die Nadel immer nach Norden (ist klar dafür ist das Ding ja da).

    Die Bewegung der Nadel ist linear (auch klar sie kann ja nicht rumspringen)

    So nun zu den Sensoren:

    Meine Erwartung war jetzt das sich die Ausgabe linear verhällt (also bei 0/4095 Norden, bei ungefähr 2048 Süden usw...)

    Habe ich da irgendwas falsch verstanden?
    zwei Unterschiedliche Module an unterschiedlichen PI's angesprochen mit zwei komplett verschiedenen Programmen zeigen mir im Norden und Süden das gleiche und dazwischen nur Müll ...

    ich habe mir schon einen Magnet geschnappt und damit versucht lineare Werte zu erzwingen ... ohne echten Erfolg :wallbash:

    hat jemand Erfahrung mit dem Mist? :-/:helpnew:


    HDMM01:

    LSM303:


    Bin für jeden Tipp dankbar :danke_ATDE:

    Grüße
    Leo
    Automatisch zusammengefügt:
    Ergänzung 0:36

    Ich habe grade gemerkt das auch der Analoge Kompass hier spinnt....

    Was ist hier bloß los?

    Wenn's qualmt und stinkt hast du was falsch gemacht :D

    Einmal editiert, zuletzt von Adiamus (22. Oktober 2016 um 00:37)

  • Hallo,

    sind die Kompass-Sensoren kalibriert? Das ist i.d.R. nötig, damit die wissen, wo Norden ist.

    Das Kompass-Modul auf meinem SenseHAT hat jedenfalls ohne Kalibrierung auch keine brauchbaren Werte geliefert. Ggf. solltest du mal in das Datenblatt der Sensoren schauen, was da dazu drin steht.

    Gruß, noisefloor


  • Hallo,

    sind die Kompass-Sensoren kalibriert? Das ist i.d.R. nötig, damit die wissen, wo Norden ist.

    Das Kompass-Modul auf meinem SenseHAT hat jedenfalls ohne Kalibrierung auch keine brauchbaren Werte geliefert. Ggf. solltest du mal in das Datenblatt der Sensoren schauen, was da dazu drin steht.

    Gruß, noisefloor


    Die waren werkskalibriert .... liegen aber schon ne Weile, kannst du mir Tipps zur Kalibrierung geben?

    :danke_ATDE:

    Wenn's qualmt und stinkt hast du was falsch gemacht :D

  • Moin,
    mit dem Modul von Pollin (HDMm01) hab ich vor Jahren schon mal mit dem Arduino experimentiert.
    Es werden keine linearen Werte geliefert.
    Wie sie aussehen kannst Du Dir hier:
    http://chris.cnie.de/avr/arduino-hdmm01.html
    anschauen.
    So weit ich mich erinnern kann müssen die Werte mit einer zyklometrischen Funktion (atan) umgerechnet werden.
    Außerdem muß der Bereich (0-90,90-180, 180-270,270-360 Grad) bestimmt werden.
    Ich hab es damals hinbekommen (frag mich bitte nicht mehr wie, ist zu lange her).
    Aufgegeben habe ich das Projekt allerdings dennoch weil man nur plausibe Werte bekam wenn das Modul absolut waagerecht stand.
    Außerdem haben größere Eisenteile (Ofen) das Ergebnis sehr stark beeinflußt.

    NACHTRAG: unter folgenden Link:
    http://rn-wissen.de/wiki/index.php?title=RP6v2_Orientierung
    findest Du wenn Du nach unten scrollst ein Beispieprogramm für den Arduino mit Umrechnung


    Edit: hatte senkrecht und waagerecht verwechselt. Habs geändert.

    Einmal editiert, zuletzt von ait (22. Oktober 2016 um 12:18)

  • Ein Echter Sensor (Opa's Kompass mit Nadel) ist weitaus träger als ein elektronischer.
    Der elektronische kann zudem durch diverse kleinere Magnetfelder beeinträchtigt / gestört werden, je nach dem wie empfindlich oder flink dieser ist.
    Bei meinem RoPi Projekt hab ich auch 2 verschiedene Sensoren (CMPS10 & HMC5883L) ausprobiert weil die Messungen komische Ergebnisse lieferten - bis ich dann dahinter kam das der Abstand zwischen Kompass und Pi bzw Arduino zu gering war... Kaum waren beide Sensoren ca. 10cm von den Platinen entfernt lieferten diese auch korrekte Werte.

    Meine Sensoren zeigen aber auch eine Ausrichtung der eigenen Platine an, also die PCB des Kompass's. Drehe ich die PCB ändert sich logischerweise auch der Bearing Wert. Die meisten Kompass Sensoren haben aber auch noch 2 andere Achsen: Pitch und Roll.
    Bearing = Peilung
    Pitch = Gefaelle/Steigung
    Roll = Neigung

  • Danke für die Tipps, werde das alles mal in Ruhe durchgehen :thumbs1:

    So langsam verstehe ich wo das hinführt....

    Aufgeben geht bei mir nicht :D

    Das ist teil meiner Abschlussprojektarbeit, Abgabe ist im Januar zur Prüfung :shy:

    ABER! Ich schaffe das! :D

    Danke Merkel!
    Automatisch zusammengefügt:


    Bei deinem oberen Link bin ich auf etwas gestoßen was mir schon öffter aufgefallen ist:

    Code
    x=((MsbX&0x0f)*256)+(LsbX);
    y=((MsbY&0x0f)*256)+(LsbY);


    Warum MSB + 15? und dann * 256?
    Das taucht in vielen Beispielen so oder so ähnlich auf.

    aber zum aneinander hängen würde es doch reichen das MSB 8Bit nach links zu schieben und das LSB hinten drann zu hängen?

    Code
    x=(MSB<<8)+LSB ?


    :danke_ATDE:

    Wenn's qualmt und stinkt hast du was falsch gemacht :D

    Einmal editiert, zuletzt von Adiamus (23. Oktober 2016 um 12:58)

  • Das ist nich +15, sondern die ausmaskierung der oberen 4 Bit - damit werden effektiv nur 12 Bit Werte erzeugt. Ich halte das fuer cargo-cult-Programmierung, weil es mich doch sehr wundern wuerde, wenn die oberen 4 Bit irgendwelche (Zufalls oder andere) Werte annehmen koennten, die das Ergebnis beeinflussen.

  • Zitat

    Das ist nich +15, sondern die ausmaskierung der oberen 4 Bit - damit werden effektiv nur 12 Bit Werte erzeugt.

    und zwar deshalb (aus HDMM01 Datenblatt):

    Zitat

    Even though each axis consists two bytes, which are
    16bits of data, the actual resolution is limited 12bits.
    Unused MSB should be simply filled by “0”s.

  • So ein paar Tage sind vergangen.
    Ich habe meine Scripte komplett überarbeitet aber der Abstand stimmt wohl noch nicht.
    Melde mich wenn ich etwas Neues habe.
    :D

    Wenn's qualmt und stinkt hast du was falsch gemacht :D

Jetzt mitmachen!

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