
Zitat von
cauboy
zum kompassmodul cmps03.
wie kalibriert man den über i2c? ich habe zwar das datenblatt von roboter-teile.de jedoch weiß ich nicht, wie man zum beispiel "255 in Reg15" schreibt.
gibt es da ein beispielprogramm? genial wäre es wenn es in Interactive C wäre.
Hallo cauboy!
Ich habe den schon kalibriert über I2C, habs nacher bereut, irgend etwas klappt nicht so ganz wie es soll und mein Istwert liegt jetzt bei ca. 1700-2300 aber nicht mehr bei 0 bis 3599 wie es sein sollte und davor war. Ich habe die Register aber mit einer CC2.0 geschreiben. In anderen Sprechen ist das ähnlich zu schreiben nur andere Syntax. Das Protokoll ist wie folgt:
Code:
Const DevWR_CMPS03 = C0h ' Kompassmodul CMPS03
Const DevRD_CMPS03 = C1h
Function KalibKompass()
' Kompass kalibrieren
Define Antwort As Byte
Print "Kompass kalibrieren"
#DoN
Print "Auf N drehen"
Input Antwort
IIC.Init
IIC.Start
IIC.Send DevWR_CMPS03
IIC.Send 15
IIC.Send 255
IIC.Stop
IIC.Off
#DoO
Print "Auf O drehen"
Input Antwort
IIC.Init
IIC.Start
IIC.Send DevWR_CMPS03
IIC.Send 15
IIC.Send 255
IIC.Stop
IIC.Off
#DoS
Print "Auf S drehen"
Input Antwort
IIC.Init
IIC.Start
IIC.Send DevWR_CMPS03
IIC.Send 15
IIC.Send 255
IIC.Stop
IIC.Off
#DoW
Print "Auf W drehen"
Input Antwort
IIC.Init
IIC.Start
IIC.Send DevWR_CMPS03
IIC.Send 15
IIC.Send 255
IIC.Stop
IIC.Off
#DoW
' Kalibrierung flashen
IIC.Init
IIC.Start
IIC.Send DevWR_CMPS03
IIC.Send 15
IIC.Send 0
IIC.Stop
IIC.Off
Print "Kalibrierung beendet"
End Function
Function StartSonarMeasure()
' Entfernungsmessung am Sonar starten
With IIC
.Init
.Start ' Starten der Messung in cm
.Send DevWR_SRF08
.Send 81
.Stop
Pause 4 ' 65ms warten auf Messergebnis
.Off
End With
End Function
Function GetSonarDistance()
' Den Ultraschall-Sonar lesen
With IIC
.Init
.Start ' Lesevorgang anstossen
.Send DevWR_SRF08
.Send 2
.Stop
.Start ' 1. Echo lesen
.Send DevRD_SRF08
.Get SonarDistanzH
.Get SonarDistanzL
.Stop
.Off
End With
Return SonarDistanz
End Function
Ich schreibe folgende Sequenz:
- Startbit
- C0 Hex (Schreiben)
- 15 Dez (Register)
- 255 Dez (Wert zum Kalibrieren)
- Stopbit
Das in jeder Richtung (N/S/O/W in unbestimmter Reihenfolge) und dann das Sichern der Kalibrierungsdaten mit:
- Startbit
- C0 Hex (Schreiben)
- 15 Dez (Register)
- 0 Dez (Wert zum Sichern der Kalibrierungsdaten)
- Stopbit
Aber aufpassen, ich hab mir meinen damit ver-kalibriert! Falls jemand den Haken sieht bitte melden, ich wäre auch dankbar für jeden Hinweis.
Grüsse Wolfgang
Lesezeichen