Hey!
Ich habe gerade in den Code von Polulu rein geschaut ... sehr halbherzig das Zeug aber nagut - jedenfalls verrechnen die schon mal nicht die Sensor Konfigurationswerte mit den gelesenen Werten vom Sensor.
Wenn ich den Adafruit Code lese könnte ich schon wieder Amok laufen - das wird aber wahrscheinlich an meinen rostigen C Grundlagen liegen... aber eine Verrechnung habe ich auch hier nicht gefunden ...
Wenn ich das richtig lese verändern die die Werte so das man am ende Gaus oder mücro Tesla raus bekommt aber das sind nur Mathematische Tricksereien die nicht notwendig sind (meiner nicht besonders Bescheidenen Meinung nach)
Der fähige Herr Kawaguchi ...
def readMagneticsGauss(self):
"Returns magnetometer readings in gauss unit"
magData = self.readMagnetics()
magVal3D = Obj3D()
magVal3D.x = self.__twos_comp(magData.x, 12) * self.magFactor
magVal3D.y = self.__twos_comp(magData.y, 12) * self.magFactor
magVal3D.z = self.__twos_comp(magData.z, 12) * self.magFactor
return magVal3D
...macht mit obiger Funktion aus seinen Sensorwerten Gaus ... 1 Tesla waren glaub ich 1000 Gaus ...
def test_reading_raw(self):
count = 0
print ""
while count < 3:
time.sleep(0.25)
accel = self.lsm.readAccelerations()
mag = self.lsm.readMagnetics()
temp = self.lsm.readTemperature()
print "Timestamp: %s" % datetime.now().isoformat() #strftime('%Y-%m-%dT%H:%M:%S(%Z)')
print "Accel X: 0x%04X (%d) Y: 0x%04X (%d) Z: 0x%04X (%d)" % (accel.x & 0xFFFF, accel.x, accel.y & 0xFFFF, accel.y, accel.z & 0xFFFF, accel.z)
print "Mag X: 0x%04X (%d) Y: 0x%04X (%d) Z: 0x%04X (%d)" % (mag.x & 0xFFFF, mag.x, mag.y & 0xFFFF, mag.y, mag.z & 0xFFFF, mag.z)
print "Temp : 0x%04X (%d)" % (temp & 0xFFFF, temp)
count = count + 1
pass
Alles anzeigen
...was er hier macht leuchtet mir nicht so ganz ein aber das ist ja auch nur eine test Klasse also weniger von belang...
Meine Meinung zu diesem Sensor und dem Code den wir dafür schreiben ist recht simpel:
Ein Wert den ein sensor ausgibt muss nicht der Realität entsprechen
(Du misst mit einem Thermometer 20°C - Dein Thermo Sensor gibt dir den Wert 150)
[nicht weiter schlimm du weist doch das 150 vom Sensor 20°C entsprechen das lässt sich also umrechnen]
Im Falle Dieser Sensor Kombie die wir gerade benutzen finde ich ist die Temperatur der einzige Wert von dem es Sinn ergibt ihn umzurechnen in °C oder °F oder Kelvin - Kein normaler Mensch kann was mit Magnetischer Feldstärke anfangen - also warum umrechnen in bekannte Einheiten?
Und bei dem was wir mit dem Lagesensor anstellen brauchen wir doch garkeine bekannten Einheiten.
Oder sieht dein Projekt vor Gravitationsschwankungen zu messen?
Grüße
Leo
PS: Ich werde mich jetzt daran setzen und deinen Code testen wenn du es wirklich geschafft hast brauchbare Werte in bekannten Einheiten zu bekommen dann ist das doch gar nicht so schlecht - je nachdem was du vor hast