- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 35

Thema: LSM303DLH 3D Compass and accelerometer Umrechnungsporblem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @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

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    Also hab das mal gemacht.
    dabei ist mir aufgefallen dass die Magnetwerte sich immer nur um den Faktor 256 ändern .
    Klicke auf die Grafik für eine größere Ansicht

Name:	Ausgelesene Werte.jpg
Hits:	5
Größe:	62,2 KB
ID:	25383
    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

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    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:
    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
    Kann sein, dass du zuerst das zweite Byte auslesen musst, das kommt drauf an, ob dein Sensor MSB oder LSB zuerst ausgibt.

    Gruß
    Chris

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    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

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    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

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    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

Ähnliche Themen

  1. 3D-Beschleunigungssensor LSM303DLH auslesen
    Von dariegel im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 19.08.2011, 16:55
  2. 3D-Accelerometer ADXL330
    Von BlueNature im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 22
    Letzter Beitrag: 14.02.2010, 00:16
  3. Accelerometer Empfehlung
    Von justin im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 19.10.2009, 15:15
  4. 3 Achsen Accelerometer
    Von Involut im Forum Sensoren / Sensorik
    Antworten: 13
    Letzter Beitrag: 11.04.2009, 14:00
  5. V2Xe 2-Axis Compass Modul
    Von Wredo2 im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 22.10.2004, 14:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test