Forum: Mikrocontroller und Digitale Elektronik Problem SMB380


von Tommy T. (tommy776)


Angehängte Dateien:

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?

von Tommy T. (tommy776)


Lesenswert?

Nachtrag: Der 16Bit-Wert des Sensors entsteht indem das LSB zuerst 
ausgelesen wird und nachfolgend das MSB. Ein Mixen beider Bytes wird 
controllerintern verhindert.
Diesen Fehler kann ich also schonmal ausschließen.

von Tommy T. (tommy776)



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.

von Tommy T. (tommy776)


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Problem ist, daß wahrscheinlich keiner außer Dir den Chip kaufen 
kann, deswegen gibt es auch keine Tipps.

von Günti (Gast)


Lesenswert?

verhält sich der SMB380, nicht so wie der BMA150 ? 
http://www.sander-electronic.de/be00006.html

oder wo sind die unterschiede ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.