Forum: Mikrocontroller und Digitale Elektronik Beschleunigungssensoren Kalibrierung


von christian S. (Firma: Gast) (vivien)


Lesenswert?

Hallo Alle,

für Mein Projekt werde ich drei Sensoren benutzen, die schon von einem 
Extern Firma inbetriebgenommen wurden.

Auf ruhelage(Waagerecht) habe ich für die Sensoren folgende Werte:

ADXL345:  X= 32 Y = 87 Z = 49
LIS302DL: X= 0 Y = 3  Z = 7
MMA7455L: X= 6 Y = 28 Z = 60

Ich weiß dass die Sensoren kalbrieren werden müssen, so dass Sie auf 
einer Ruhelegae X= 0, Y= 0 und Z= g sein soll. aber ich weiße nicht, was 
ich mit diesen Werte anfangen soll.
Kann mir jemanden bitte erklären, wie ich die Sensoren zumindest nur 
einen Sensor Kalibrieren soll, damit er verknünpftige Werte anzeigen 
kann?

Zum Beispiel für den ADXL345 das Dattenblat hat folgende Parameter:
  0 g OFFSET
Each axis
0 g Output for XOUT, YOUT −150 0 +150 mg
0 g Output for ZOUT −250 0 +250 mg

und die externe Firma meinte zu mir dass sie die Kalibrierung nicht 
durcgeführ haben.

Danke in voraus

Christian

von oszi40 (Gast)


Lesenswert?

christian Schmidt schrieb:
> ADXL345:  X= 32 Y = 87 Z = 49
z.B. 
http://www.analog.com/en/mems-sensors/mems-inertial-sensors/adxl345/products/product.html

Dann lege die Sensoren auf eine gut ausgerichtet Fläche und miss 
mehrfach ob sie wirklich den gleichen Wert anzeigen. Den Rest könnte man 
rechnerisch korrigieren. Frage bleibt nur wie Du definiert die 
Beschleunigung kalibrieren kannst. Notebook+ Achterbahn?

von Der Rächer der Transistormorde (Gast)


Lesenswert?

christian Schmidt schrieb:
> Kann mir jemanden bitte erklären, wie ich die Sensoren zumindest nur
> einen Sensor Kalibrieren soll, damit er verknünpftige Werte anzeigen
> kann?

Na vom Prinzip her hast du doch nen super Kalibrator. Nennt sich Erde 
und hat exakt 1g plus minus irgendwas bekanntes.

Deine Sensoren sind in jeder Achse nur in einer Richtung empfindlich.

Durch einfaches drehen von maximum zu minimum für jede Achse bekommst du 
somit die Werte für 0g und 1g. Den Rest kannst du mit der 
Steigungsformel ausrechnen.

von christian S. (Firma: Gast) (vivien)


Lesenswert?

oszi40 schrieb:
> Den Rest könnte man
> rechnerisch korrigieren. Frage bleibt nur wie Du definiert die
> Beschleunigung kalibrieren kannst. Notebook+ Achterbahn?

genau meine frage war wie Rechnerisch soll ich das bitte machen?

Der Rächer der Transistormorde schrieb:
> Durch einfaches drehen von maximum zu minimum für jede Achse bekommst du
> somit die Werte für 0g und 1g. Den Rest kannst du mit der
> Steigungsformel ausrechnen

die werte sind warscheinlisch für 0g und wie gehe ich bitte dann weiter 
vor
um den Rest auszurechnen?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

christian Schmidt schrieb:
> die werte sind warscheilisch für 0g und wie gehe ich bitte dann weiter
> vor
> um den Rest auszurechnen?

Ganz einfach.

1. Sensor wagerecht (zur Erdbeschleunigung) ausrichten, Messwert 1 
notieren.
2. Sensor senkrecht ausrichten, Messwert 2 notieren.
3. Sensor um exakt 180 Grad drehen, Messwert 3 notieren.
4. Datenblatt nehmen (0 g Output for XOUT, YOUT −150 0 +150 mg)
5. Mathematik 8. Klasse benutzen.
6. fettich Maister!

von christian S. (Firma: Gast) (vivien)


Lesenswert?

Joe G. schrieb:
> Ganz einfach.
>
> 1. Sensor wagerecht (zur Erdbeschleunigung) ausrichten, Messwert 1
> notieren.
> 2. Sensor senkrecht ausrichten, Messwert 2 notieren.
> 3. Sensor um exakt 180 Grad drehen, Messwert 3 notieren.
> 4. Datenblatt nehmen (0 g Output for XOUT, YOUT −150 0 +150 mg)
> 5. Mathematik 8. Klasse benutzen.
> 6. fettich Maister!

gut die Kalibrierung mit diesen Offset Parameter soll nur einmal 
durchgeführt werden oder soll das bei jeden Auslesen der 
Beschleunigungswerte immer ausgeführt werden?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ja.

von christian S. (Firma: Gast) (vivien)


Lesenswert?

Joe G. schrieb:
> Ja.

ok und was ist denn wenn man bitte mit

±2 g, 10-bit resolution 230 256 282 LSB/g
±4 g, 10-bit resolution 115 128141 LSB/g
±8 g, 10-bit resolution 57 6471 LSB/g
±16 g, 10-bit resolution 29 32 35 LSB/g laut Dateblatt arbeiten will?

Es tut mir leid aber ich möchte nur mehr Klarheit haben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Wie du leicht erkennst, besteht zwischen der Auflösung und dem 
Messbereich ein linearer Zusammenhang (fast, bis auf einen 
Rundungsfehler). Es reicht also die Kalibrierung für einen Messbereich 
(optimal der Empfindlichste +-2g) durchzuführen.

von MaWin (Gast)


Lesenswert?

> oder soll das bei jeden Auslesen der
> Beschleunigungswerte immer ausgeführt werden

Gute Idee, ich würde immer auf 0/0/1g kalibrieren, dann kann ich mir das 
Messen und den Sensor sparen.

von Karl H. (kbuchegg)


Lesenswert?

christian Schmidt schrieb:

> die werte sind warscheinlisch für 0g und wie gehe ich bitte dann weiter
> vor
> um den Rest auszurechnen?

Die Werte können nicht für 0g sein, denn du hast bei ruhendem Sensor 
IMMER 1g in irgendeine Richtung. Der Sensor kann ja a priori nicht 
wissen, in welcher Richtung aus seiner Sicht jetzt unten ist, daher kann 
man auch die Schwerebeschleunigung nur mit den Daten des 
Beschleunigungssensors alleine da nicht rausrechnen. Anders ausgedrückt: 
ein Lot (ein Gewicht an einer Schnur) zeigt immer in irgendeine 
Richtung, egal wie rum die Aufhängung im Raum verdreht ist, und das 
Gewicht erzeugt in der Schnur immer die gleiche Kraft, egal wie rum die 
Aufhängung des Lots verdreht ist. Alles was dein Beschleunigungssenor 
anders macht, ist, dass er dir diese 'Kraft' bereits auf seine lokalen 
Koordinatenachsen aufgeschlüsselt rausgibt.

Die Frage ist, ob die Sensoren exakt eben eingebaut wurden oder nicht. 
Wenn nicht, dann misst du mit deinen Sensoren die Verdrehung des Sensors 
in Bezug auf die Senkrechte, definiert durch die Erdbeschleunigung. 
Diesen Fehler könnte man noch mechanisch ausgleichen, ansonsten muss man 
eben eine entsprechende Rotationsmatrix aus den Kalibrierwerten 
errechnen, die das Korrdinatensystem entegen der Einbauverdrehung 
zurückdreht.

Die andere Frage ist, ob du in den Sensoren einen Offsetfehler hast. 
D.h. obwohl der Sensor tatsächlich exakt waagrecht in Bezug auf die 
Schwerebeschleunigung steht (zb mit Libelle oder Wasserwaage 
kontrolliert), liefert er nicht 0 in 2 Achsen sondern davon abweichende 
Werte.

Und das dritte ist, dass ein exakt waagrecht ausnivellierter Sensor 
eigentlich die Werte (0, 0, -1) oder (0, 0, 1) liefern sollte, bzw. 
entsprechende Vielfache davon, wenn eine 1.0 durch ein entsprechendes 
Vielfaches dargestellt wird (zb 256), der Sensor das aber nicht tut und 
anstelle von erwarteten (0, 0, 256) dann eben zb (0, 0, 248) liefert, 
bzw. bei entsprechenden Drehungen um 90° bzw. 180° (sodass die jeweils 
anderen Achsen exakt senkrecht nach unten schauen), dann eben wieder 
andere Werte, zb (0, 252, 0)

Theoretisch gäbe es dann noch die Möglichkeit, dass die 3 Messachsen im 
Sensor nicht exakt orthogonal zueinander stehen (also nicht 90°) sondern 
davon abweichen, aber ich denke, diesen Fehler können wir ausschliessen. 
Dafür hat schon der Hersteller des Sensors gesorgt.

Aber: So ein Beschleunigungssensor ist kein Wunderwuzzi, den man einfach 
anschliesst und man hat keine Sorgen mehr. Man muss sich schon ein wenig 
damit beschäftigen, welche Fehler es geben kann, was sie physikalisch 
aussagen und sich überlegen, wie man sie feststellt und rechnerisch 
korrigieren kann.

von christian S. (Firma: Gast) (vivien)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Die andere Frage ist, ob du in den Sensoren einen Offsetfehler hast.
> D.h. obwohl der Sensor tatsächlich exakt waagrecht in Bezug auf die
> Schwerebeschleunigung steht (zb mit Libelle oder Wasserwaage
> kontrolliert), liefert er nicht 0 in 2 Achsen sondern davon abweichende
> Werte

Der Sensor auf Waagerecht liefert er normalerweise folgender Werte:
X = 45 umgerechnet um signed 18
Y = 65493 umgerechnet um signed 41
Z = 102 umgerechnet um signed 24

Karl Heinz Buchegger schrieb:
> Die Frage ist, ob die Sensoren exakt eben eingebaut wurden oder nicht.
> Wenn nicht, dann misst du mit deinen Sensoren die Verdrehung des Sensors
> in Bezug auf die Senkrechte, definiert durch die Erdbeschleunigung.
> Diesen Fehler könnte man noch mechanisch ausgleichen, ansonsten muss man
> eben eine entsprechende Rotationsmatrix aus den Kalibrierwerten
> errechnen, die das Korrdinatensystem entegen der Einbauverdrehung
> zurückdreht.

Die Sensoren wurden eben eingebaut, bitte siehe Anhang

Karl Heinz Buchegger schrieb:
> Und das dritte ist, dass ein exakt waagrecht ausnivellierter Sensor
> eigentlich die Werte (0, 0, -1) oder (0, 0, 1) liefern sollte, bzw.
> entsprechende Vielfache davon, wenn eine 1.0 durch ein entsprechendes
> Vielfaches dargestellt wird (zb 256), der Sensor das aber nicht tut und
> anstelle von erwarteten (0, 0, 256) dann eben zb (0, 0, 248) liefert,
> bzw. bei entsprechenden Drehungen um 90° bzw. 180° (sodass die jeweils
> anderen Achsen exakt senkrecht nach unten schauen), dann eben wieder
> andere Werte, zb (0, 252, 0)

genau, dass möchte ich gern als Beschleunigungswerte zu haben. Wenn man
die ausgelesenen werte meiner Beshleunigungssensoren sieht, wie kann ich
dann machen damit ich die erwartenden werte habe.

von christian S. (Firma: Gast) (vivien)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Und das dritte ist, dass ein exakt waagrecht ausnivellierter Sensor
> eigentlich die Werte (0, 0, -1) oder (0, 0, 1) liefern sollte, bzw.
> entsprechende Vielfache davon, wenn eine 1.0 durch ein entsprechendes
> Vielfaches dargestellt wird (zb 256), der Sensor das aber nicht tut und
> anstelle von erwarteten (0, 0, 256) dann eben zb (0, 0, 248) liefert,
> bzw. bei entsprechenden Drehungen um 90° bzw. 180° (sodass die jeweils
> anderen Achsen exakt senkrecht nach unten schauen), dann eben wieder
> andere Werte, zb (0, 252, 0)

Wenn zum Beispiel einen Sensor folgende Werte liefert auf die Ruhelage(0 
, 0 , 248) dann egibt er (248*4)/1024 = 0,96g das ist ganz normal.

Mein Problem ist mein Sensor liefert X = 45 umgerechnet um signed 18
Y = 65493 umgerechnet um signed 41
Z = 102 umgerechnet um signed 24

was kann ich bitte mit diesen Werte anfangen, wie kann ich den Sensor 
ordenlich kalibrieren, damit ich vielleicht (0,0,248) habe.

Weil mein sensor auf eben eingebaut wurde.

Danke

von christian S. (Firma: Gast) (vivien)


Lesenswert?

Kann mir jemanden bitte helfen?

von as3.1415rin@gmx.de (Gast)


Lesenswert?

Allerdings muss man sich auch überlegen was man alles kalibrieren muss, 
und wie genau die kalibration am ende sein soll.

wenn man bspw. einen schrittmotor an dem neigungssensor anbringt und den 
dann durchfährt, so ist oftmals keine genauigkeit von besser als 0.5-1° 
zu erwarten bei handelsüblichen sensoren, wenn man nur die sensitivität 
und den offset der achsen kalibriert. Weiterhin stehen die Achsen nicht 
unbedingt im 90° winkel zueinander (oder es gibt andere formen des 
übersprechens) und auch nichtlinearitäten der einzelnen achsen. D.h. da 
wären dann nochmal drei winkel (erste achse so wie sie ist, zweite achse 
in der x-y achse verkippt und die dritte hat dann zwei winkel als 
freiheitsgrade) die durch einen fit durch eine größere menge datenpunkte 
bestimmt werden können.

Für den Anfang kann man verschiedene sensorpositionen aufnehmen und über 
die bedingung dass alles 1g ergeben müsste schonmal gut offset und 
skalierung der achsen bestimmen. ein solches verfahren ist in 
http://link.springer.com/chapter/10.1007/11526858_19 bspw. beschrieben. 
je mehr datenpunkte, desto besser natürlich. google gibt da auch noch 
andere beispiele, finden sich teilweise auch in den datenblättern.

von Nitrobor (Gast)


Lesenswert?

>Kann mir jemanden bitte helfen?

>Aber bitte sofort.

>Schnell bitte.

Irgendwie scheinen da ein paar Grundlagen zu fehlen...

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.