habe grad nicht den nerv mir den code genauer anzusehen
aber die messwerte geben wirklich zu denken
x y und z wert sind immer gleich
habe grad nicht den nerv mir den code genauer anzusehen
aber die messwerte geben wirklich zu denken
x y und z wert sind immer gleich
was gibt es noch zu sagen
@robonooby:
Ich kann deinen Code auch nicht komplett ansehen.
Aber:
Du solltest erst mal ganz einfach nur die Rohwerte auslesen (ohne weitere Berechnungen, Kalibrierung o.ä.) und hier posten.
Zum Auslesen der Rohwerte:
1. Beschleunigungssensor:
Nach dem Einlesen der 6 Bytes und Berechnung jeder Achse als (H_Byte * 256 + L_Byte)
... gib hier mal die Min/Max-Werte an.
Dabei sollte beim Beschleunigungssensor der jeweilige Maximal-/Minimalwert erreicht werden, wenn die jeweilige Achse (X/Y/Z) nach unten/oben gehalten wird.
2. Magnetfeldsensor:
Nach dem Einlesen der 6 Bytes und Berechnung jeder Achse als (H_Byte * 256 + L_Byte)
... gib hier mal die Min/Max-Werte an.
Dabei kann man die Min/Max-Werte durch Drehen/Neigen/Kippen des Sensors erreichen.
Gruß
Dirk
Also hab das mal gemacht.
dabei ist mir aufgefallen dass die Magnetwerte sich immer nur um den Faktor 256 ändern .
![]()
Also um die Multiplikation des H_Bytes.
das bedeutet demnach, dass entweder der Magnetsensor defekt ist, was ich nicht hoffe. Oder dass hier beim auslesen ich irgendwas falsch mache.
hier nochmal der Code vom auslesen des Magnetsensor:
Code:'Variablen für Magnetfeld Sensor : Const Magnet_w_addr = &H3C '3C 1E Const Magnet_r_addr = &H3D Const Cra_reg_m = &H00 Const Crb_reg_m = &H01 Const Mr_reg_m = &H02 Const Out_x_h_m = &H03 ' Magnetfeld Const Out_x_l_m = &H04 Const Out_y_h_m = &H05 Const Out_y_l_m = &H06 Const Out_z_h_m = &H07 Const Out_z_l_m = &H08 Dim Abmagdata(6) As Byte Dim Imx As Integer At Abmagdata(1) Overlay Dim Imy As Integer At Abmagdata(3) Overlay Dim Imz As Integer At Abmagdata(5) Overlay ....... Sub Magnet_readsensordata() Dim Temp As Byte I2cstart I2cwbyte Magnet_w_addr I2cwbyte Out_x_h_m I2cstart I2cwbyte Magnet_r_addr 'I2cwbyte Magnet_w_addr 'I2cwbyte Mr_reg_m I2crbyte Abmagdata(1) , Ack I2crbyte Abmagdata(2) , Ack I2crbyte Abmagdata(3) , Ack I2crbyte Abmagdata(4) , Ack I2crbyte Abmagdata(5) , Ack I2crbyte Abmagdata(6) , Nack I2cstop Imx = Abmagdata(1) Shift Imx , Left , 8 , Signed Imx = Imx + Abmagdata(2) Imy = Abmagdata(3) Shift Imy , Left , 8 , Signed Imy = Imy + Abmagdata(4) Imz = Abmagdata(5) Shift Imz , Left , 8 , Signed Imz = Imz + Abmagdata(6) End Sub
Es gibt keine Probleme, es gibt nur Lösungen
Hi,
du hast glaube ich einen Fehler beim einlesen! Durch das Overlay ersparst du dir das shiften, deswegen springen deine Werte (wegen dem Shiften) um den Wert 256
Probier mal so:
Kann sein, dass du zuerst das zweite Byte auslesen musst, das kommt drauf an, ob dein Sensor MSB oder LSB zuerst ausgibt.Code:Dim Imx As Integer Dim Imy As Integer Dim Imz As Integer Dim Imx_tmp(2) As Byte At Imx Overlay Dim Imy_tmp(2) As Byte At Imy Overlay Dim Imz_tmp(2) As Byte At Imz Overlay Sub Magnet_readsensordata() I2cstart I2cwbyte Magnet_w_addr I2cwbyte Out_x_h_m I2cstart I2cwbyte Magnet_r_addr I2crbyte Imx_tmp(1) , Ack I2crbyte Imx_tmp(2) , Ack I2crbyte Imy_tmp(1) , Ack I2crbyte Imy_tmp(2) , Ack I2crbyte Imz_tmp(1) , Ack I2crbyte Imz_tmp(2) , Nack I2cstop End Sub
Gruß
Chris
Also Chris hab gerade mal deinen Code ausprobiert.
wenn ich das mache bekomm ich ebenfalls immer wieder die selben Werte für Imx_tmp, Imy_tmp und Imz_tmp egal wie ich das Modul drehe und wende.
Imx_tmp(1) = 255 und Imx_tmp(2) = 255
Imy_tmp(1) = 1 und Imy_tmp(2) = 1
Imz_tmp(1) = 0 und Imz_tmp(2) = 0
Find das schon sehr merkwürdig...
Es gibt keine Probleme, es gibt nur Lösungen
Hi,
also erstmal sind für dich die Variablen Imx, Imy und Imz relevant, die anderen solltest du nicht verändern oder irgendwo verwenden.
Hast du den mal probiert, zuerst die zweite Variable der Arrays einzulesen?
Gruß
Chris
also wenn du mit zweite variable der arrays meinst, dass ich I2cwbyte Out_x_l_m oder I2cwbyte Out_y_h_m als erstes auslese, das hab ich eben mal gemacht. aber keine veränderung. immer die gleichn werte.
aber was meinst du mit die anderen nicht verändern oder verwenden?
Es gibt keine Probleme, es gibt nur Lösungen
Lesezeichen