PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompaß CMPS03 an Rn-Control



flammenvogel
20.04.2008, 17:49
Hallo,

ich versuche gerade den Kompaß hier aus dem Shop (CMPS03) mit dem RN-Control Board zum funktionieren zu bringen. Bis her leider nur mit mäßigem Erfolg. Ich kann zwar mit dem mitgeliefertem Sample Programm Werte auslesen, allerdingen springen diese in einem Winkel von ca 20 Grad (immer die selbe Richtung) wild hin und her (1000-9000). Ansonsten sehen die Werte ganz gut aus.

Hat jemand ne Idee wie das angehen kann?

Dirk
20.04.2008, 18:13
... allerdingen springen diese in einem Winkel von ca 20 Grad (immer die selbe Richtung) wild hin und her (1000-9000).

Wenn man den 16-bit Wert des CMPS03 via I2C ausliest, liegen die Werte zwischen 0 und 3599. Dann können sie eigentlich nicht zwischen 1000 und 9000 hin und herspringen. Die Werte sehen dann auch nicht wirklich gut aus.

Gruß Dirk

flammenvogel
20.04.2008, 22:04
Also zur Zeit benutzen wir diesen Code:



Function Rn_cmps_himmelsrichtung() As Word
Local Msb As Byte
Local Lsb As Byte

I2cstart
I2cwbyte 192 'I2C Slaveadresse C0
I2cwbyte 2 'Register 2 und 3 auswählen
I2cstart
I2cwbyte 193 'Slaveadresse+1 (C1)
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Rn_cmps_himmelsrichtung = Makeint(lsb , Msb) 'Word aus 2 Byte machen
End Function


Ich meine das ich die aus irgendeinen Tutorial habe, ich weiß allerdings nichtmehr genau woher.

Was ich mir auch noch eventuell vorstellen könnte ist, dass das irgendwie mit der Firmware zusammenhängt. Ich meine das unser Kompass als Firmware 16 ausgibt. Kann es daran liegen? Wenn ja, wie kriege ich auf das Ding eine neue Firmware rauf und wo kriege ich die her?

Kalibriert haben ich das Ding wie gesagt schon. Muss man dabei eventuell auch irgendwas beachten? Ich hab den Pin jetzt einfach immer mit dem Rn-Control Board auf GND gezogen für 100ms und dann das Ding um 90° Grad gedreht.

Dirk
20.04.2008, 23:14
Hallo flammenvogel,

probier 'mal:

Function Rn_cmps_himmelsrichtung() As Word
Local Msb As Byte
Local Lsb As Byte

I2cstart
I2cwbyte 192 , Ack 'I2C Slaveadresse C0
I2cwbyte 2 'Register 2 und 3 auswählen
Waitms 10
I2cstart
I2cwbyte 193 , Ack 'Slaveadresse+1 (C1)
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Rn_cmps_himmelsrichtung = Makeint(lsb , Msb) 'Word aus 2 Byte machen
End Function

Gruß Dirk

flammenvogel
21.04.2008, 10:33
ok, der Kompass funktioniert.

Der Fehler war ganz trivial, auf dem LCD haben wir den alten Wert nicht mit Leerstellen überschrieben. Daher hatten wir immer noch die alten Werte mit auf dem LCD Display und deswegen sah die Zahl so seltsam aus.

Trotzdem danke für die Hilfe!