Forum: Mikrocontroller und Digitale Elektronik LSM303C Magnetometer


von Kurt S. (k-str)


Lesenswert?

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
LSM Magnet X -->
2
Max --> 2123 Min --> -6254
3
LSM Magnet y -->
4
Max --> 4385 Min --> -4305
5
LSM Magnet Z -->
6
Max --> 5424 Min --> -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.

von Mathias (Gast)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

Ich kenn den LSM303 leider nicht, aber wenn irgendwo in der Nähe ein 
Magnet odet Lautsprecher ist, kann das durchaus sein.
Hier ein guter Artikel, wie man einen Magentometer kalibriert (auch mit 
Magneten in der Umgebung): 
https://github.com/kriswiner/MPU6050/wiki/Simple-and-Effective-Magnetometer-Calibration

von Kurt S. (k-str)


Lesenswert?

@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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Kurt S. (k-str)


Lesenswert?

@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.

: Bearbeitet durch User
von Patrick (Gast)


Lesenswert?

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.

von micha (Gast)


Lesenswert?

Kurt S. schrieb:
> Ist also der pure Sensor ohne Magnet in der Umgebung.

Hängt vom Motor ab :-)

von Kurt S. (k-str)


Lesenswert?

@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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

Beitrag #6114345 wurde vom Autor gelöscht.
von Kurt S. (k-str)


Lesenswert?

@micha,
danke für Deine Antwort. Es ist ein kleibner Stepper mit 5V Spannung 
(Schrittmotor 28BYJ-48).

von Frank K. (fchk)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von Kurt S. (k-str)


Lesenswert?

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.

von Manuel X. (vophatec)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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?

von Kurt S. (k-str)


Lesenswert?

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
LSM Magnet X -->
2
Max --> 2401 Min --> -6994
3
LSM Magnet y -->
4
Max --> 4470 Min --> -4870
5
LSM Magnet Z -->
6
Max --> 4901 Min --> -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?

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

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?

von Gerd E. (robberknight)


Lesenswert?

Kurt S. schrieb:
> Dabei mußte ich aber feststellen, dass der Magnet irgendwie
> vormagnetisiert ist.

Das ist bei den meisten Magneten so...

von Kurt S. (k-str)


Angehängte Dateien:

Lesenswert?

Hallo @Wolfgang,
das ist mein Aufbau.
Ich denke, dass das Magnetometer durch einen Magneten "verstellt" ist.
Kann man das wieder zurücksetzen?

von Kurt S. (k-str)


Lesenswert?

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.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

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.

von Kurt S. (k-str)


Angehängte Dateien:

Lesenswert?

@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.

von Wolfgang (Gast)


Lesenswert?

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.

von Kurt S. (k-str)


Lesenswert?

@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

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

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:

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

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

von Kurt S. (k-str)


Lesenswert?

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.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.