Problem SMB380

OP #1261626
Lesenswert?

Hallo!

Ich habe folgendes Problem:
Ich lese mit einem ATmega1281 den digitalen Beschleunigungssensor SMB380 
von Bosch über die I²C-Schnittstelle aus.
Die Anschlussbelegung ist dem Datenblatt des Sensors entnommen.
Ausgelesen werden bei mir die Register für die x-Achse und die y-Achse.
Die erhaltenen Werte wandle ich in Neigungswerte um, übertrage sie per 
Funk und lasse sie mir auf dem HyperTerminal anzeigen.

Wenn ich ich Register auslesen,die schon mit voreingestellten Werten 
belegt sind passt das auch alles. Auch der Inhalt der Achsenregister 
wird korrekt übertragen.

Mein Problem ist halt: Wenn ich den Sensor auf einem Neigetisch 
positioniere und mir zum Beispiel die Werte für +2° Neigung übertrage, 
schwanken die Sensorwerte zwischen z.B. -1° ... +4°!!!

Ich weiss aber absolut nicht woran das liegen kann?Mein Bustakt SCL ist 
200KHz und im Sensor habe ich nur den Messbereich auf +/-2g und die 
Bandbreite auf 50Hz eingestellt.Mehr nicht.

Ich weiss nicht ob es evtl. daran liegt,dass ich mir die Sensorwerte 
nicht über einen Interrupt in den µC hole,aber ich entnehme dem 
Sensordatenblatt,dass dies nur eine Option ist und nicht zwangsweise so 
gemacht werden muss.

Kann mir jemand helfen?
Angehängte Dateien:
OP #1262328
Lesenswert?

Guten Morgen!

Hat hier keiner einen Tipp, was ich falsch mache?
Klar wird nicht jeder den Sensor vor sich haben, aber evtl. ein kurzer 
Blick ins Datenblatt würde mir schon helfen.

Wie oben erwähnt, möchte ich nur wissen ob ich mir zwingend die 
Sensorwerte über den Interruptpin in meinen Controller holen muss?
Ich interpretiere das eher als Option.
Angehängte Dateien:
OP #1263263
Lesenswert?

Ja,ich bins nochmal! (auch wenn ich hier scheinbar einen Monolog führe)

Also jedenfalls habe ich grad den Sensor mit dem PICkit Serial Analyzer 
von Mikrochip ausgelesen.Da passen die Werte relativ gut und sind obwohl 
ich jetzt daheim nicht die Registerwerte noch in die Neigung umrechnen 
will vertrauenswürdig.

Es muss ja also irgendwie an meinem I²C-Code liegen!Aber ich verwende 
das gleiche Protokoll wie der Analyzer!

Hier mal ein paar Busdaten aus dem Analyzer für ca. 0° (auf meinem 
Schreibtisch):
In den eckigen Klammern das Protokoll wie folgt:
[S_] - Startbefehl
[70] - Sensoradresse und Schreiben
[02] - Auswahl Register 0x02
[RS] - Repeated Start
[71] - Sensoradresse und Lesen
[06] - 6Bytes nacheinander lesen
[P_] - Stopbefehl

Sent I2C Read Cmd:
[S_][70][02][RS][71][06][P_]

[S_][C1][01][C1][00][81][22][P_] (=>  LSB1 MSB1 LSB2 MSB2 LSB3 MSB3)

Sent I2C Read Cmd:
[S_][70][02][RS][71][06][P_]

[S_][C1][02][81][01][C1][21][P_]

Sent I2C Read Cmd:
[S_][70][02][RS][71][06][P_]

[S_][C1][FF][C1][01][41][24][P_]

Sent I2C Read Cmd:
[S_][70][02][RS][71][06][P_]

[S_][81][01][01][00][81][21][P_]

Mein Programm,was ich im ersten Beitrag oben im Anhang habe macht genau 
dasselbe nur erhalte ich halt komische Werte!!!
Woran kann das denn liegen???

Bitte um eine Antwort.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren