Erklärung Kalibriersketch
Erklärung Kalibriersketch
Welchen Sketch nutzt du für die Kalibrierung? Ich habe einen, beim dem der Sensor in alle Extrem-Positionen bewegt wird und dann durch eine Taste bestätigt (verlinkt beim Eintrag von RC-Maker.)
Bei der Kalibrierung wird der Sensor in eine Extrem-Positionen bewegt. Dabei sollte dann immer eine Achse den Messwert 1G haben und alle anderen Achsen 0G. Wird der Sensor auf den Kopf gelegt, ist der Messwert -1G.
Gehen wir mal davon aus, dass der Sensor flach auf dem Tisch liegt. Dann messen die X und Y-Achse jeweils 0G und Z=1G. Der theoretische Messbereich ist von -4095 für -1G bis +4095 für 1G.
In der Praxis ist dieses aber nicht der Fall. Liegt der Sensor mit flach auf dem Tisch wird z.B. ein Wert von 4050 angezeigt. Somit entspricht bei dem Sensor der Wert 4050 = 1G.
Liegt der Sensor umgedreht auf dem Tisch ergibt sich beispielsweise ein Wert von -3900 = -1G.
Das sind die Sensor-spezifischen Messwerte die dann jeweils für 1G gelten. Also -1G=-3900 / +1G=4050
Der Offset wird wie folgt berechnet:
Offset = (Max-Wert + Min-Wert)*0,5
Offset = (4050+(-3900))*0,5
Offset = 150 * 0,5
Offset = 75
Der Offset beschreibt also, wenn der Messbereich um 150 Einheiten abweicht, muss ich ihn um die hälfte nach oben korrigieren damit wieder 0 raus kommt.
Der Offset berechnet also den Wert den der Sensor bei 0G haben müsste (75). Der Offset wird dann jeweils vom Messwert abgezogen.
Min-Wert mit Offset = Min-Wert -75 = -3900-75 = -3975
Max-Wert mit Offset = Max-Wert - 75 = 4050-75= +3975
Somit ist der Messbereich nach oben und unten gleich.
Fehlt noch Gain(Verstärkungsfaktor). Wir wissen jetzt, dass unser Sensor den Messbereich -3900 bis 4050 hat. Der gesamte Messbereich ist hat also insgesamt 7950 Einheiten.
Messbereich = MaxWert - MinWert = 4050- (-3900) = 7950
Für die Berechnungen der Winkel benötigen wir die G-Werte von allen Sensoren, die eigentlich die Messwerte -4095 bis +4095 haben sollten. Dadurch, dass die Sensoren diese Werte aber nicht haben müssen wir unseren gemessenen Wert so "verstärken", dass am Ende bei 1G wieder 4095 raus kommt.
Gain = 0,5*(Messbereich / 4095)
Gain = 0,5* (7950 / 4095)
Gain = 0,5* 1,941
Gain = 0,97
Somit habe wir jetzt den Offset und Gain für eine Achse berechnet.
Die Berechnung des G-Wertes lautet = ((Messwert - Offset) * Gain) * (1/4095)
Beispiel Messwert 0:
G-Wert = ((0-75)*0,97)* (1/4095)
G-Wert = (-75*0,97)* (0,0002442)
G-Wert = -0,0188G
Beispiel Messwert 4050
G-Wert = ((4050-75)*0,97)* (1/4095)
G-Wert = ((3975)*0,97)* (0,0002442)
G-Wert = 1
Der Offset berechnet also den Messwert, den der Sensor bei 0G ausgeben müsste.
Der Gain-Wert streckt gemessenen Wert so, dass der Messbereich am Ende wieder bei -4095 bis + 4095 liegt und alle Werte somit vergleichbar sind.
Der Kalibriersketch macht nichts anderes als die jeweiligen Min und Max-Werte pro Achse zu speichern und anhand der oben gezeigten Formeln den Offset und Gain zu berechnen.
Was ich an dieser Stelle jetzt nicht beurteilen kann, da ich gerade keinen Sensor zur Hand habe ist, ist die Abweichung positiv zu negativ wirklich gleich?
Dazu müsste man sich mal die unveränderten Messwerte ansehen. Wenn der Sensor beispielsweise bei 0G= Messwert 0 hat aber dennoch unterschiedliche Min/Max-Wert, dann müsste man für positive und negative Werte verschiedene Gain-Faktoren nutzen.
Ich hoffe ich konnte einigermaßen erklären wie die Werte zusammen hängen.