Hallo,
ich bin gerade dran ein Programm zum Auslesen eines LSM303C Sensors zu
schreibben.
Da habe ich folgendes Problem:
Die Werte die ich für das Magnetometer auslese sind sehr asymetrisch.
Das heist:
Die X- und Z-Werte sehen etwas komisch aus.
Hier die Werte von 2000 Messungen:
1
LSMMagnetX-->
2
Max-->2123Min-->-6254
3
LSMMagnety-->
4
Max-->4385Min-->-4305
5
LSMMagnetZ-->
6
Max-->5424Min-->-2775
Für den Y-Wert könnten sie passen. aber die X- und Z-Werte sind
irgendwie seltsam. Sind solche Abweichungen normal?
Danke für eine Antwort.
Wie sieht denn dein Aufbau aus? Du hast den Sensor in alle Richtungen
gedreht und das ist dann dein resultierender Wertebereich ja? Ist da
vielleicht was auf der Platine, was magnetisch wirkt?
Nutzt du irgendeine Library, gibts da irgendwas zum kalibrieren? Oder
hast du die Auswertung komplett selber geschrieben?
Paar mehr Details bitte.
@Mathias, @Patrick,
danke für Eure Antwort.
Der LSM303C wirde zunächst in einem Kunststoffrahmen verbaut, dann habe
ich ihn mittels einem Schrittmotor um die drei Achsen gedreht, damitt
ich die Beschleunigungswerte erhalten habe. KLann es sein, dass dadurch
der Magnetometer kaputt ging?
Wenn ich jetzt versuche die Daten auszulesen, dann drehe ich nur den
Sensor der per Kabel mit dem Rechner (Raspberry 3) mit I2C verkabelt
ist.
Die Daten (ca. 2000) lese ich mit einem selbst geschriebenen Programm
aus, das die Daten in eine Datei schreibt.
Das Ergebnis habe ich wie folgt geprüft:
Ich lasse die Daten aus der Datei aus und suche jeweils das Maximum bzw.
Minimum dieser Daten.
Kurt S. schrieb:> mittels einem Schrittmotor um die drei Achsen gedreht
Spaß? Schrittmotoren leben von sehr starken Magneten für den Rotor.
Dadrin einen Magnetfeld Sensor zu betreiben ist etwa so, wie ein
Hydrometer ins Wasser zu tunken.
@Mathias,
denkst Du, dass ich damit den Magnetometer zerstört habe?
Die eigentliche Messung für den Magnetometer mache ich ohne
Schrittmotor. Ist also der pure Sensor ohne Magnet in der Umgebung.
So leicht kann man kein Magnetometer zerstören (außer durch falsche
Versorgungssoannung / Überspannung an den Digital Pins) dann würde man
aber wahrscheinlich gar nichts mehr lesen können. Je nach Sensor, kann
schon eine recht starke Offset-Abweichung sein.
Wenn du dir sicher bist, dass du die Daten vom Sensor richtig
interpretierst (z.B. LSB und MSB vertauscht) kannst du mal so einen Plot
wie in dem Artikel erstellen, wenn du den Sensor um alle Achsen drehst.
Wie rechnet man die Werte bei dem Sensor in uT um, damit man sehen kann,
um wie viel die Werte tatsächlich abweichen.
@Matthias,
danke für Deimne Antwort.
Ich lese diuese Daten mittels einer selbst geschrieben Funktion aus.
Das gilt sowohl für den Beschleunigungs- als auch für die
Magnttometerwerte.
Ich will mir das aber morgen nochmal genauer anschauen.
Zunächst mal Danke. Ich schreibe die nächsten Tage was ich noch
herausgefunden habe.
Kurt S. schrieb:> denkst Du, dass ich damit den Magnetometer zerstört habe?
Nein, glaube ich nicht. Aber das Erdmagnetfeld ist zwischen
Schrittmotoren stark gestört. Das kannst du schon mit einem einfachen
Kompass in deiner Testapparatur feststellen.
Kurt S. schrieb:> @micha,> danke für Deine Antwort. Es ist ein kleibner Stepper mit 5V Spannung> (Schrittmotor 28BYJ-48).
Das Erdmagnetfeld ist im Vergleich zu dem, was ein Motor verursacht,
sehr schwach. Für genaue Messungen würde ich jetzt mal so gefühlt einen
Mindestabstand von mindestens 50 cm anstreben.
Mache mal den folgenden Versuch:
- Sensor in einer definierten Position auf einem Holztisch (oder was
auch immer, aber nichts metallisches) befestigen.
- Sichergehen, dass im Abstand von 2m rings um den Sensor nichts
metallisches außer der Sensorplatine, die mit langen Kabeln
angeschlossen ist, ist.
- Referenzmessungen durchführen - Du solltest dabei in näherungsweise
nur das Erdmagnetfeld messen.
- Antriebsmotor in die Nähe bringen, und erneute Messung durchführen.
Abstände variieren.
Damit bekommst Du heraus, in wie weit deine Motoren die Messungen
beeinflussen und welchen Abstand Du einhalten musst, damit der Fehler
einen bestimmten Prozentsatz nicht überschreitet.
fchk
Lege den Motor weit weg und dann orientiere den Sensor von Hand in alle
möglichen Richtungen. Die resultierenden Messpunkte müssen dann alle auf
einer Kugel liegen.
Hallo,
vielen Danke für Eure Tipps.
Ich habe den Eindruck, dass der Sensor defekt ist.
Die Werte des Magnetometers sid so asymmetrisch dass sich das mit
Messfehlern nicht mehr erklären lässt.
Ich kaufe mir nochmal neue und schaue dann ob das Problem weiterhin
besteht.
Wenn ich Neues habe melde ich mich hier wieder.
Vielleicht wärs ja mal hilfreich deine selbst geschriebene Funktion zum
Auslesen zu posten.
Vielleicht liegt da ja der Fehler ;)
Stichwort LSB, MSB wurde ja schon genannt.
Kurt S. schrieb:> Ich habe den Eindruck, dass der Sensor defekt ist.> Die Werte des Magnetometers sid so asymmetrisch dass sich das mit> Messfehlern nicht mehr erklären lässt.
Die drei Achsen decken alle einen Bereich von gut 8000 ab. Wo ist dein
Problem und welche Besserung erhoffst du dir von einem neuen neuen
Sensor?
Das Erdmagnetfeld hat größenordnungsmäßig 50µT entsprechend 0.5Gs. Für
den Sensor ist im Datenblatte eine typische Nullpunkgenauigkeit von ±1Gs
angegen. Also ist doch mit deinem Sensor alles in Ordnung.
Auf magnetische Störquellen (auch in deinem Aufbau) wurde schon hin
gewiesen. Du könntest sicherheitshalber mal alles entmagnetisieren.
Hast du inzwischen mal das Experiment mit wilder Drehung um alle
Raumachsen bei laufender Datenaufzeichnung gemacht und geguckt, ob die
Werte auf einer Kugel liegen?
Hallo,
danke für Eure Antworten.
Ich habe eben mal geschaut was mit dem Magnetometer ist.
Dazu habe ich einen Magnet in die Nähe gehalten und dabe istellte ich
fest, dass das magnetometer dabei auch je nach dem wo der Magnet war
auch die Richtung angezeigt hat.
Dabei mußte ich aber feststellen, dass der Magnet irgendwie
vormagnetisiert ist. Er scheint irgendwie durch den Magnet verstellt
(magnetisiert?) zu werden. Die Werte sind je nachdem wo der Magnet
zuletzt war stark asymmetrisch -->
1
LSMMagnetX-->
2
Max-->2401Min-->-6994
3
LSMMagnety-->
4
Max-->4470Min-->-4870
5
LSMMagnetZ-->
6
Max-->4901Min-->-3400
Gerade hier die Messung in X-Richtung (=-6994 ---> 2401)
Kann ich den irgendwie zurückstellen (entmagnetisieren=?
@Wolfgang
das stimmt mit dem Bereich von 8000. Macht das nichts aus?
Kurt S. schrieb:> Kann ich den irgendwie zurückstellen (entmagnetisieren=?
Probiere es mal mit einem normalen Entmagnetisierer oder lass deinen
Aufbau zügig vor deinem Magneten rotieren und entferne ihn dabei langsam
(evtl. mehrfach für die verschiedenen Achsen). Ziel ist es, den
Permanentmagnetismus durch fortwährendes Ummagnetisieren in einem
zeitlich abnehmenden magnetischen Wechselfeld zu beseitigen.
Erstmal solltest du allerdings Klarheit darüber gewinnen, was da
magnetisiert wird.
Wie sieht dein Aufbau aus (Photo)?
Sind darin irgendwelche magnetisierbaren Anteile/Komponenten enthalten?
Hallo @Gerd E,
da habe ich mich wohl etwas undeutlich ausgedrückt.
Ich meine natürlich ob der Sensor des Magnbetometers magnetisiert oder
so ist.
Ich bin leider kein Physiker etc. daher die ungenauen und vielleich
naiven Fragen.
@ Manuel X.
Ja ich habe mal die Prozedur zum Auslesen überarbeitet. Daran kann es
nicht liegen.
Der Sensor war einem stärkeren Magnetfels ausgesetzt, daher meine
Frage ob dadurch die Unsymetrie entstanden sein kann.
Kurt S. schrieb:> das ist mein Aufbau.
Da sehe ich z.B. die Metallkragen der Buchsen. Sind die magnetisch?
> Kann man das wieder zurücksetzen?
s.o.
Kurt S. schrieb:> Er scheint irgendwie durch den Magnet verstellt> (magnetisiert?) zu werden.
Das kann passieren, wenn irgendetwas auf der Platine magnetisierbar ist
und du diese Teile einem Magnetfeld aussetzt.
Selbst bei ganzen Schiffen ist es völlig normal, dass die selbst zu
einem Magnet werden, wenn sie längere Zeit in einer festen
Himmelsrichtung liegen.
@Wolfgang,
>Da sehe ich z.B. die Metallkragen der Buchsen. Sind die magnetisch?
Was meinst Du mit Metallkragen? Sind das die USB-Buchsen auf dem
Raspberry #Zero?
Im Anhang findest Du Bilder vom Sensor.
Kurt S. schrieb:> Was meinst Du mit Metallkragen? Sind das die USB-Buchsen auf dem> Raspberry #Zero?
ok, die sind wohl weit genug weg.
> Im Anhang findest Du Bilder vom Sensor.
Auch die SMD Bauteile auf dem Sensorboard sind manchmal magnetisierbar,
wenn du da direkt mit einem Magneten dran warst.
Einfach mal entmagnetisieren - schaden kann das nichts.
@Wolfgang,
danke für den Tipp.
> Einfach mal entmagnetisieren - schaden kann das nichts.
Kannst Du mir sagen wie ich das machen kann? Ich hab keine Ahnung davon
wie das gehen soll.
Ich habe gelesen, dass das entweder durch Erschütterungen oder Hitze
geht.
Aber das ist wohl keine Lösung
Kurt S. schrieb:> Ich habe gelesen, dass das entweder durch Erschütterungen oder Hitze> geht.
Oder durch ein abnehmendes magnetisches Wechselfeld, dass sich bspw.
erzeugen lässt, indem man einen Magneten um eine Achse senkrecht zu
seinen inneren Feldlinien rotieren lässt und dabei langsam entfernt.
Genauso, wie dein Magnet es geschafft hat, irgendetwas auf deinem Board
zu magnetisieren, kann er es auch ummagnetisieren.
s.o.
Wolfgang schrieb:
Kurt S. schrieb:>> Einfach mal entmagnetisieren - schaden kann das nichts.> Kannst Du mir sagen wie ich das machen kann?
Ich nutze eine uralte Lötpistole dafür. Statt der Lötspitze einige zig
cm. 1,5mm²-Kupferleitung angeschlossen. Aus der Leitung wird eine
lockere Spule geformt, durch welche das zu entmagnetisierende Objekt
hindurchgeschoben wird. Ich entmagnetisiere so regelmäßig
Schraubendreher und Pinzetten.
Grüßle
Volker
Hallo,
vielen Dank für Eure Tipps.
Ich habe mir jetzt einen neuen Sensor gekauft.
Den bisherigen konnte ich nicht mehr entmagnetisieren.
@vobs, danke für den Tipp. Aber ich habe keine Lötpistole, daher kann
ich das nicht machen. Was geschiet denn da? Wird der durch Erhitzen
entmagnetisiert?
@Wilfgang, das hat bei mir leider nicht funktioniert.
Kurt S. schrieb:> @vobs, danke für den Tipp. Aber ich habe keine Lötpistole, daher kann> ich das nicht machen. Was geschiet denn da? Wird der durch Erhitzen> entmagnetisiert?
Nein, es fließt ein recht hoher 50-Hz-Wechselstrom, dessen Magnetfeld
das Objekt enmagnetisiert.
Grüßle
Volker