- 3D-Druck Einstieg und Tipps         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 35

Thema: LSM303DLH 3D Compass and accelerometer Umrechnungsporblem

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    Anzeige

    E-Bike
    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

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Naja, die Variablen Imx_tmp(1) usw.. solltest du nicht verändern. Das sind nur Dummy-variablen, die eigentlich garnicht existieren. Es sind Zeiger, die auf die beiden Bytes der Variable Imx zeigen. Sie dienen hauptsächlich dazu, das einlesen der Sensorwerte zu verschnellern und machen das Shiften und addieren überflüßig.

    Gruß
    Chris

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    ahh jetzt kapier ich auch den sinn des overlays
    okay. aber finds komisch dass es trotz des shiftens bei den Beschleunigungswerten funktioniert aber bei den Magnet werten nicht

    - - - Aktualisiert - - -

    jetzt bekomm ich auf ejdenfall andere werte raus
    Imx: -2817 Imy: 32257 Imz: 0
    allerdings bleiben die ebenfalls Konstant egal wie ich das Modul drehe
    Es gibt keine Probleme, es gibt nur Lösungen

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Warum bekommst du jetzt andere Werte? Was hast du den geändert? Wie oft liest du denn den Sensor aus?
    Hast du mal versucht, die Error-Variable nach der I2C-Kommunikation auszugeben? Vielleicht läuft da was schief?

    Gruß
    Chris

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Warum bekommst du jetzt andere Werte? Was hast du den geändert? Wie oft liest du denn den Sensor aus?
    Hast du mal versucht, die Error-Variable nach der I2C-Kommunikation auszugeben? Vielleicht läuft da was schief?

    Gruß
    Chris
    ich hab das shiften weggelassen und somit komm ich jetzt auf andere werte ^^
    braucht man ja bei deiner methode nicht mehr, wenn ichs richtig verstanden habe.
    aber mir ist noch nen Fehler aufgefallen. Hatte die falsche Hex Adresse zum auslesen angegeben. jetzt kommen Werte an.

    Jetzt wäre nur die Frage soll ich das nach deiner Methode ohne Shiften, mit den Hilfsvariablen Imx_tmp(1) usw. machen, oder mit meiner shift methode wie unten zu sehen.
    Meine Shift Methode hab ich hier irgendwo im Forum gefunden, da hatte jemand nur den Beschleunigungssensor ausgelesen und das dann so gelöst. weis aber jetzt nicht was besser bzw. richtig ist...

    Code:
    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
    
    ...
    
     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)
    - - - Aktualisiert - - -

    Was mir auch noch aufgefallen ist, ist dass die Werte weit außerhalb der maximal Ausgabewerte des Sensors liegen (Laut Datenblatt: -2048 bis 2047)

    Messdaten ohne Bewegung des Sensors:
    Iax: 0 Iay: -12033 Iaz: 24769
    Imx: 25088 Imy: -1793 Imz: 31745

    Iax: 4096 Iay: 0 Iaz: 28865
    Imx: 25600 Imy: -1793 Imz: 32513

    Iax: 0 Iay: -20225 Iaz: -16191
    Imx: 23552 Imy: -3073 Imz: -32511

    Iax: 0 Iay: 0 Iaz: -28479
    Imx: 23552 Imy: -2305 Imz: 32001

    Iax: 0 Iay: 0 Iaz: -28479
    Imx: 22272 Imy: -1537 Imz: -32511
    Es gibt keine Probleme, es gibt nur Lösungen

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    du kannst sowohl mit Shift als auch mit Overlay arbeiten, Overlay hat aber eben den Vorteil, dass es wesentlich schneller von statten geht
    Dann tausch doch mal die beiden Bytes, also erst Imx_tmp(2) und dann Imx_tmp(1) einlesen bzw. andersrum wenn dus schon so hast.

    Gruß
    Chris

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Hi,

    du kannst sowohl mit Shift als auch mit Overlay arbeiten, Overlay hat aber eben den Vorteil, dass es wesentlich schneller von statten geht
    Dann tausch doch mal die beiden Bytes, also erst Imx_tmp(2) und dann Imx_tmp(1) einlesen bzw. andersrum wenn dus schon so hast.

    Gruß
    Chris
    ja das hab ich probiert. Da kommen natürlich auch andere werte raus, aber immer noch sehr hoch. wobei sich diese noch innerhalb des 16Bit Fensters Bewegen...
    Ist das den Normal, dass so nen Sensor so arg streut. Wenn man oben die Werte sich anguckt. Da springt er ja immer hin und her obwohl er einfach nur aufm Tisch liegt....
    Es gibt keine Probleme, es gibt nur Lösungen

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    also innerhalb des 16Bit - Fensters werden sich wohl alle Werte bewegen, da deine Variable als 16Bit deklariert sind
    Irgendwas wird da wohl noch faul sein, wenn im DB von 12Bit Werten gesprochen wird. Das würde ich als erstes mal rausfinden, dann kannst du ja schauen, ob die Werte noch immer so stark springen.

    Gruß
    Chris

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi robonooby,

    da ich aktuell eher in GCC unterwegs bin, habe ich Bascom nicht mehr so auf dem Schirm.

    Was ich aber noch weiß:
    1. Wenn du Imx, Imy und Imz mit Overlays auf die Abmagdata()-Variablen legst, dann entsteht nach Einlesen der Abmagdata()-Variablen schon in Imx, Imy und Imz der gewünschte 16-Bit-Wert. Damit sind die Zeilen:
    Imx = Abmagdata(1)
    Shift Imx , Left , 8 , Signed
    Imx = Imx + Abmagdata(2)
    ... ganz überflüssig und müssen auch für Imy und Imz weg!

    2. Dasselbe gilt auch für den Acc-Sensor.

    Poste mal die Ausgabewerte nach dieser Änderung!
    Gruß
    Dirk

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    Also hier mal die Messdaten ohne Shift.
    Hatte das aber oben schonmal gemacht. (letzte 3 Messungen waren bei Stillstand des Sensors)

    Iax: 0 Iay: 8192 Iaz: -12095
    Imx: 23296 Imy: 1280 Imz: 27649

    Iax: 4096 Iay: 0 Iaz: -16191
    Imx: -31489 Imy: 17407 Imz: 26113

    Iax: 8192 Iay: 28672 Iaz: -28479
    Imx: -15618 Imy: 4352 Imz: 25857

    Iax: -24383 Iay: -16384 Iaz: 20484
    Imx: 7169 Imy: 1024 Imz: 17151

    Iax: 0 Iay: 8192 Iaz: 24769
    Imx: 25344 Imy: -3073 Imz: 26369

    Iax: 4096 Iay: 0 Iaz: -28479
    Imx: 26112 Imy: -769 Imz: 26881

    Iax: 16384 Iay: 8192 Iaz: 28865
    Imx: 25088 Imy: 256 Imz: 26881
    EDIT:
    Hab das ganze nochmal ganz abgeändert. Auch wie im anderen Beispiel von Mikrocontroller.net die Einstellwerte geändert, sodass er ne höhere aber ungenauere Updaterate hat.
    Hier nun die aktuellen Werte.
    Diese sind mit Shift Befehl aber ohne Overlay generiert worden. Die ACC Werte sehen schonmal viel besser aus. Die Magnetwerte erscheinen mir jedoch etwas klein. Oder könnte das hin kommen?

    Iax: -48 Iay: 48 Iaz: -15872
    Imx: 78 Imy: 4 Imz: 266

    Iax: 32 Iay: 64 Iaz: -15872
    Imx: 79 Imy: 9 Imz: 260

    Iax: -16 Iay: 32 Iaz: -15872
    Imx: 80 Imy: 12 Imz: 267

    Iax: -80 Iay: 64 Iaz: -15872
    Imx: -86 Imy: -152 Imz: 265
    - - - Aktualisiert - - -

    so nochmal das ganze Ohne Shift sondern mit Overlay: (erste drei Messungen im Stillstand, vierte Messung um Y gedreht, 5 Messung um Z Achse gedreht)

    Iax: 4096 Iay: 4096 Iaz: 28866
    Imx: 19968 Imy: 3584 Imz: 4353

    Iax: 0 Iay: 4096 Iaz: 12482
    Imx: 20736 Imy: 5120 Imz: 3329

    Iax: 0 Iay: 0 Iaz: 16578
    Imx: 19456 Imy: 3072 Imz: 3585

    Iax: -28479 Iay: -12287 Iaz: -28668
    Imx: -11008 Imy: 1280 Imz: 28927

    Iax: 4096 Iay: 8192 Iaz: 24770
    Imx: -23041 Imy: 27647 Imz: 3073
    Geändert von robonooby (02.05.2013 um 16:49 Uhr)
    Es gibt keine Probleme, es gibt nur Lösungen

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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

Solar Speicher und Akkus Tests