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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.