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?
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.
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.
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.
Das Problem ist, daß wahrscheinlich keiner außer Dir den Chip kaufen kann, deswegen gibt es auch keine Tipps.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.