Forum: Mikrocontroller und Digitale Elektronik Beschleunigungssensor - unverständliche Werte


von Bastelanfänger (Gast)


Lesenswert?

Hallo Formengemeinde,

ich habe ein Problem mit meinem ADXL345.

Im Moment betreibe ich den ADXL345 im 2g Modus also bekomme ich Werte 
zwischen Plus und Minus  512.

Nun zu dem was ich nicht verstehe:
Wenn ich den Sensor beispielsweise auf der X-Achse in die eine Richtung 
kippe bekomme ich bei 90° exakt -256 was ja -1g entspricht.  Soweit so 
gut.

Wenn ich den Sensor allerdings in die andere Richtung um 90 kippe 
(ebenfalls auf der X-Achse) bekomme ich Werte um die 310 und nicht wie 
erwartet 256.

Kann mir jemand sagen wie das zustande kommt?




Mit freundlichen Grüßen

Bastelanfänger

von Timmo H. (masterfx)


Lesenswert?

Offset. Einfach ermitteln und dann abziehen.
Macht er auch automatisch wenn du den Offset in die entsprechenden 
Register einträgst: "OFSX,OFSY,OFSZ"
Steht auch im Datenblatt:
1
                                              min  typ   max
2
0 g Output for XOUT, YOUT                    −150  0    +150  mg
3
0 g Output for ZOUT                          −250  0    +250  mg
4
0 g Output Deviation from Ideal, XOUT, YOUT       ±35         mg
5
0 g Output Deviation from Ideal, ZOUT             ±40         mg
6
0 g Offset vs. Temperature for X-, Y-Axes         ±0.4        mg/°C
7
0 g Offset vs. Temperature for Z-Axis             ±1.2        mg/°C

: Bearbeitet durch User
von Bastelanfänger (Gast)


Lesenswert?

An Offset dachte ich auch zuerst, habe diesen Gedanken aber aus 
folgendem Grund verworfen:

Wenn 90° dem Wert 310 entspricht müsste ich ja 54 abziehen um auf die 
gewünschten 256 zu kommen.

Dadurch verfälsche ich mir aber jetzt die Werte die zuvor gestimmt 
haben.


Oder muss ich den Offset praktisch getrennt für den negativen und den 
positiven Bereich betrachten?



Mit freundlichen Grüßen

Bastelanfänger

von Timmo H. (masterfx)


Lesenswert?

Nein der Offset ist praktisch die Nullpunkt-Verschiebung.

Vorher: X_min = -256, X_max = 310
Nachher X_min = -283, X_max = +283

Dass du nun etwas mehr als +-1g hast ist dann die Abweichung:
1
                                                               min typ max
2
Sensitivity at XOUT, YOUT, ZOUT All g-ranges, full resolution  230 256 282  LSB/g

Das musst du dann einfach entsprechend skalieren dass du wieder auf 1g 
kommst.

: Bearbeitet durch User
von Bastelanfänger (Gast)


Lesenswert?

Okey vielen dank.

Nur um nochmal zusammen zu fassen das ich alles richtig verstanden habe:

Die prinzipielle Vorgehensweise erst die Werte so zu verschieben das der 
Betrag beider Wertebereiche gleich ist und diesen (angepassten) Wert 
dann noch mit einem Offset verrechnen so das ich bei 90° Neigung exakt 
256 sprich 1g habe?



Mit freundlichen Grüßen

Bastelanfänger

von Timmo H. (masterfx)


Lesenswert?

Lesen: 
http://www.analog.com/static/imported-files/application_notes/AN-1057.pdf

Insb. "CALIBRATION FOR OFFSET AND SENSITIVITY MISMATCH ERROR"

von Bastelanfänger (Gast)


Lesenswert?

Also irgendwie scheine ich auf dem Schlauch zu stehen.

Die einfachste Möglichkeit den Offset raus zu bekommen ist ja den Sensor 
in einen definierten Zustand zu bringen (X, Y  = 0g  und Z = 1g) und die 
Werte die der Sensor dann ausgibt (bei der X und Y Achse) entsprechen 
direkt dem Offset.

Diesen ziehe ich also im weiteren Verlauf von den Messwerten ab und habe 
somit eine Verschiebung des Nullpunktes. Soweit waren wir ja schon 
einmal ;-)


Die neue Skalierung müsste doch dann folgendermaßen aussehen oder ?
1
  -1g                         0                     +1g
2
   |-------------------------|-----------------------|
3
   
4
   -283                      0                    +283
5
   |-------------------------|-----------------------|
6
7
   90°                       0°                      90°
8
   |-------------------------|-----------------------|



Mit freundlichen Grüßen

Bastelanfänger

: Bearbeitet durch User
von Timmo H. (masterfx)


Lesenswert?

Im Prinzip schon, nur dass der Winkel natürlich nicht linear mit dem 
Sensorwert zusammenhängt.

von Bastelanfänger (Gast)


Lesenswert?

Okey, dann zu meiner (hoffentlich :-) ) letzten Frage.

Zurzeit rechne ich den Wert des Sensors mittels Folgender Formel um:
g[m/s^2] = (Messwert) * (4/2^10)

Sehe ich das richtig dass diese jetzt hinfällig ist da ich ja bei z.B. 
283 nicht 1g sondern ungefähr 1,1g rausbekomme?

Kann man jetzt einfach die Formel so anpassen das ich meinen Messwert 
anstatt mit 1/256 mit 1/283 multipliziere?



Mit freundlichen Grüßen

Bastelanfänger

von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Also doch nicht gelesen... siehe Bild

von Bastelanfänger (Gast)


Lesenswert?

Doch gelesen schon allerdings dachte ich mir ich versuche erst mal 
simple Kalibrierung.

Allerdings habe ich auch ein Verständnisproblem und zwar benötige ich ja 
A+1g und A-1g um dann mit den nachfolgenden Formeln zuerst Offset und 
Gain und dann den wirklichen Beschleunigungswert zu errechnen.

Für  A+1g und A-1g benötige ich allerdings schon einen Offset und Gain 
obwohl das doch eigentlich die gesuchten Größen sind ?


Mit freundlichen Grüßen

Bastelanfänger

von Timmo H. (masterfx)


Lesenswert?

A_+1g und A_-1g sind aber DEINE gemessenen "1g" Werte.
Mit der ersten "Formel" A_+1g[g] sagen die einfach nur, dass DEIN A_+1g 
ein Wert ist der aus [irgendeinem Offset] + (1g * [irgendeinem Gain]).

Also A_-1g = -256*0.0039g = -0.9984g; A_+1g = 310*0.0039 = 1.209g
Demnach ist dein "A_off" = 0.5*(1.209g+(-0.9984g)) = 0.1053g
Danach ist dein Gain also:
Gain = 0.5*(1.209g-(-0.9984g))/1g = 1.1032 (kein "g"... kürzt sich weg)

Also ist dein A_actual = (A_out -A_off)/gain.

Also im Falle von -256 => A_actual = (-0.9984g - 0.1053g)/ 1.1032 = -1g
und im Falle von 310   => A_actual = (1.209g - 0.1053g)/ 1.1032 = +1g

passt also

: Bearbeitet durch User
von Bastelanfänger (Gast)


Lesenswert?

Okey das leuchtet ein, damit sollte das Problem gelöst ein.

Vielen vielen dank an dich masterfix.



Mit freundlichen Grüßen

Bastelanfänger

von Stefan (Gast)


Lesenswert?

Ich habe mal mit dem Bosch BMA020 Sensor gearbeitet, der zeigte das 
gleiche Verhaltern, alllerdings erheblich weniger stark ausgeprägt. Für 
meine Roboter Bastelei waren sowohl Offset als auch nicht-linearität so 
gering (unter 1%), dass ich sie vernachlässigen konnte.

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.