Frank (Diskussion | Beiträge) K (→Das Beispielprogramm in Bascom Basic) |
Pit49 (Diskussion | Beiträge) K |
||
| (3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | Damit sich ein Roboter orientieren kann gibt es die unterschiedlichsten Verfahren. Bei den meisten Verfahren wäre es hilfreich wenn man | + | [[Bild:kompass.jpeg|thumb|Wo gehts lang?]]Damit sich ein Roboter orientieren kann, gibt es die unterschiedlichsten Verfahren. Bei den meisten Verfahren wäre es hilfreich, wenn man wüsste, in welche Himmelsrichtung sich der Bot gerade bewegt. Wo ist Norden oder Süden? Genau für diesen Zweck wurde das Modul CMPS03 von Devantech entwickelt. Dieses Modul ist in der Handhabung äußerst einfach, es gibt über den I2C-Bus den genauen Winkel in Abstufungen von 0,1 Grad zum Nordpol aus, also 0 bis 360 Grad. Obwohl die Anwendung äußerst einfach ist, gibt es kaum Bascom-Beispiele. |
Dem soll hier abgeholfen werden. Das nachfolgende Programm demonstriert die Anwendung mit dem bekannten Board RN-Control. Natürlich lassen sich die Funktionen auch einfach auf andere RN- oder AVR-Boards übertragen. | Dem soll hier abgeholfen werden. Das nachfolgende Programm demonstriert die Anwendung mit dem bekannten Board RN-Control. Natürlich lassen sich die Funktionen auch einfach auf andere RN- oder AVR-Boards übertragen. | ||
| Zeile 9: | Zeile 9: | ||
==Einfacher Anschluss an den I2C-Bus== | ==Einfacher Anschluss an den I2C-Bus== | ||
| − | Da [[RN-Control]] den Standard I2C-Stecker (nach [[RN-Definitionen]]) benutzt, reicht ein Kabel für das Modul aus, die notwendige Betriebsspannung kann nämlich auch gleich über das I2C- | + | Da [[RN-Control]] den Standard-I2C-Stecker (nach [[RN-Definitionen]]) benutzt, reicht ein Kabel für das Modul aus, die notwendige Betriebsspannung kann nämlich auch gleich über das I2C-Kabel erfolgen. |
| − | Das | + | Das Ganze sieht dann angeschlossen so aus: |
| Zeile 17: | Zeile 17: | ||
| − | Man benötigt nicht alle 10 Drähte des 10 pol Kabels. Daher bastelt | + | Man benötigt nicht alle 10 Drähte des 10-pol. Kabels. Daher bastelt man sich einfach einen entsprechenden Stecker an das Kabel und schneidet die nicht benötigten Drähte ab. Da CMPS03 bereits über eine Stiftleiste verfügt, kann der Stecker dann bequem aufgesteckt werden. |
Das sieht dann beispielsweise so aus: | Das sieht dann beispielsweise so aus: | ||
| Zeile 26: | Zeile 26: | ||
==Das Beispielprogramm in Bascom Basic== | ==Das Beispielprogramm in Bascom Basic== | ||
| − | Hier das vollständig dokumentierte Beispielprogramm für RN-Control. Das Programm | + | Hier das vollständig dokumentierte Beispielprogramm für RN-Control. Das Programm kann unverändert übernommen und kompiliert werden. Es gibt über die RS232-Schnittstelle, also ein Terminalprogramm, die Firmwareversion und den Winkel zum Nordpol aus. |
| Zeile 45: | Zeile 45: | ||
' Autor: Frank (Roboternetz) | ' Autor: Frank (Roboternetz) | ||
| − | ' Modul: CMPS03 Devantech/robotikhardware.de | + | ' Modul: CMPS03 Devantech/robotikhardware.de neueste Firmware |
' Getestet mit CMPS Firmware 11 | ' Getestet mit CMPS Firmware 11 | ||
'####################################################### | '####################################################### | ||
Aktuelle Version vom 25. September 2013, 16:23 Uhr
Damit sich ein Roboter orientieren kann, gibt es die unterschiedlichsten Verfahren. Bei den meisten Verfahren wäre es hilfreich, wenn man wüsste, in welche Himmelsrichtung sich der Bot gerade bewegt. Wo ist Norden oder Süden? Genau für diesen Zweck wurde das Modul CMPS03 von Devantech entwickelt. Dieses Modul ist in der Handhabung äußerst einfach, es gibt über den I2C-Bus den genauen Winkel in Abstufungen von 0,1 Grad zum Nordpol aus, also 0 bis 360 Grad. Obwohl die Anwendung äußerst einfach ist, gibt es kaum Bascom-Beispiele.Dem soll hier abgeholfen werden. Das nachfolgende Programm demonstriert die Anwendung mit dem bekannten Board RN-Control. Natürlich lassen sich die Funktionen auch einfach auf andere RN- oder AVR-Boards übertragen.
Inhaltsverzeichnis
Die Pinbelegung des Modules
Einfacher Anschluss an den I2C-Bus
Da RN-Control den Standard-I2C-Stecker (nach RN-Definitionen) benutzt, reicht ein Kabel für das Modul aus, die notwendige Betriebsspannung kann nämlich auch gleich über das I2C-Kabel erfolgen.
Das Ganze sieht dann angeschlossen so aus:
Man benötigt nicht alle 10 Drähte des 10-pol. Kabels. Daher bastelt man sich einfach einen entsprechenden Stecker an das Kabel und schneidet die nicht benötigten Drähte ab. Da CMPS03 bereits über eine Stiftleiste verfügt, kann der Stecker dann bequem aufgesteckt werden.
Das sieht dann beispielsweise so aus:
Das Beispielprogramm in Bascom Basic
Hier das vollständig dokumentierte Beispielprogramm für RN-Control. Das Programm kann unverändert übernommen und kompiliert werden. Es gibt über die RS232-Schnittstelle, also ein Terminalprogramm, die Firmwareversion und den Winkel zum Nordpol aus.
'###################################################
'cmps03_an_rncontrol.bas.bas
'für
'RoboterNetz Board RN-CONTROL (ab Version 1.1)
'und das Kompassmodul CMPS03 für Erkennung der Himmelsrichtung
'Datenblatt zu CMPS03 siehe Downloadbereich:
'http://www.roboternetz.de
'Aufgabe:
' Gibt die Himmelsrichtung in Bezug auf Norden aus
' Die Unterfunktionen können gerne in eigenen Programmen
' genutzt werden.
' Autor: Frank (Roboternetz)
' Modul: CMPS03 Devantech/robotikhardware.de neueste Firmware
' Getestet mit CMPS Firmware 11
'#######################################################
Declare Function Rn_cmps_himmelsrichtung() As Word
Declare Function Rn_cmps_firmware() As Byte
' ---------- Das RN-Control übliche --------------
$regfile = "m32def.dat"
$framesize = 42
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------------------------------------------
Dim Himmelsrichtung As Word
Dim Grad As Single
Dim V As Byte
Wait 3 'Warte 3 Sekunde
I2cinit
Print "RN-Control CMPS03 Kompass Testprogramm "
Print "CMPS03 Kompass Firmware Version:" ; Rn_cmps_firmware()
V = 1
Do
Himmelsrichtung = Rn_cmps_himmelsrichtung()
Print "Himmelsrichtung in 0,1 Grad Schritten: " ; Himmelsrichtung
Grad = Himmelsrichtung / 10
Print "Himmelsrichtung genau in Grad: " ; Grad
V = V + 3
Wait 1
Loop
End
Function Rn_cmps_himmelsrichtung() As Word
Local Lob As Byte
Local Hib As Byte
Local Cmps_slaveid As Byte
Local Cmps_slaveid_read As Byte
Cmps_slaveid = &HC0
Cmps_slaveid_read = Cmps_slaveid + 1
'Register auswählen
I2cstart
I2cwbyte Cmps_slaveid
I2cwbyte 2
I2cstop
I2cstart
I2cwbyte Cmps_slaveid_read
I2crbyte Hib , Ack
I2crbyte Lob , Nack
I2cstop
Rn_cmps_himmelsrichtung = Makeint(lob , Hib)
End Function
Function Rn_cmps_firmware() As Byte
Local Firmware As Byte
Local Cmps_slaveid As Byte
Local Cmps_slaveid_read As Byte
Cmps_slaveid = &HC0
Cmps_slaveid_read = Cmps_slaveid + 1
I2cstart
I2cwbyte Cmps_slaveid
I2cwbyte 0 'Leseregister festlegen
I2cstop
I2cstart
I2cwbyte Cmps_slaveid_read
I2crbyte Firmware , Nack
I2cstop
Rn_cmps_firmware = Firmware
End Function
Siehe auch
Weblinks


