PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompass???



Static
25.01.2004, 11:24
Gibt es einen elektronischen Kompass als Sensor :?: Oder kann man irgendwie anders festellen in welche Richtung der Bot fährt, außer durch koppeln?

Matthias
25.01.2004, 11:27
Man kann sich nen kompass mit hallsensoren selber bauen oder eins für den I²C kaufen.

Matthias

Kjion
25.01.2004, 12:23
Selberbauen ist nicht ganz einfach. Da muss man sich schon ein bißchen mit beschäftigen, da die Spannungen die man von den Hallsensoren messen muss sehr klein sind.

Zu kaufen gibts fertige Module unter http://www.roboter-teile.de/Shop/index.html

MfG Kjion

Static
25.01.2004, 17:27
cool, danke! Werden diese Module denn nicht von Motoren etc. abgelenkt?

Florian
25.01.2004, 17:53
Hey, Static!
Ich denke mal, solange der Motor nicht direkt daneben sitzt, ist das Magnetfeld nicht stark genug, um den Sensor abzulenken!
Die Sensoren sind aber nicht gerade billig!
In na Ausgabe von elektor wurde mal eine Kompassschaltung vorgestellt, die günstiger als die sensoren is!

Kjion
25.01.2004, 19:08
Man sollte die Kompassmodule möglichst weit weg von allen störenden Einflüssen anbringen...

Zum Beispiel so ;) :
http://www.acroname.com/robotics/gallery/mm1/mm1a.jpg
Rechts oben unter der weißen Kappe sitzt der Kompass...
ist von http://www.acroname.com/robotics/gallery/mm1/mm1.html.

Ansonsten einfach ausprobieren....

MfG Kjion

26.01.2004, 19:22
jo, vielen Dank

26.01.2004, 21:42
Habe das Kompassmodul CMPS03 eingesetzt, es wird über den I2C-Bus ausgelesen. Die Motoren auf dem Bot verändern die Werte um ca. +-5 Grad. Schlimmer sieht es schon in Gebäuden (Stromleitungen) aus.

Der Bot ist im Forum: "Eure Roboterprojekte oder Bilder" unter "Diplomarbeit an der FH-Amberg-Weiden".

Gruß
Judgeman

holgerf
16.02.2004, 07:52
...dem kann ich nur zustimmen. In Gebäuden werden die Meßwerte ziemlich ungenau (wir hatten bis zu +/- 30°) mit dem oben genannten Modul.

Ist aber trotzdem nützlich, weil die Ungenauigkeit der Orientierungsmessung - im Gegensatz zu Koppelnavigation über die Raddrehungssensoren - nicht immer größer wird (also auch nach einer Stunde Betrieb max +/- 30° Fehler).

btw: Ich würde sowas nicht selbst basteln, denn wir hatten mit dem fertigen Sensor NOCH NIE Probleme und so teuer ist er doch gar nicht!

Holger

bewild
16.02.2004, 08:04
Hallo Kompassbenutzer,

wie ist das mit Heizungen und Metallgestellen in der Wohnung?

Wenn der Robbie in deren Nähe kommt gibt es doch grössere Probleme!?

Bernd

holgerf
16.02.2004, 08:51
Innerhalb eines Gebäudes gibt es viele Sachen, die den Sensor stören (z.B. Stromleitungen, usw...)
Es gibt zumindest keine speziellen Probleme, wenn man mal einem Heizkörper vorbeifährt.

Weitere Fehlerquelle: Wir haben die Erfahrung gemacht, dass die gemessene Orientierung des Roboters nicht ganz linear von der tatsächlichen Orientierung abhängt (siehe Attachment).

Holger

pebisoft
29.12.2004, 19:16
hallo, ich suche eine ansteuerungsroutine für das kompassmodul cmps03 in bascom für i2c-auslesung. oder evtl andere programvorschläge die man dann umändern kann.
mfg pebisoft

cauboy
29.12.2004, 22:14
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.

BlueNature
30.12.2004, 06:13
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:



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

pebisoft
01.01.2005, 10:39
wenn du den neu kalibrierst über den mechanischen weg (schalter und masse) geht er wieder.
mfg pebisoft

BlueNature
01.01.2005, 13:26
Hallo pebisoft!

Das habe ich jetzt inzwischen sowiso gemacht. Hab auf meinem Board ja zwei Jumper vorgesehen gehabt mit der Frequenz 50/60Hz und dem Calib. Hab da einfach einen Stecker genommen und einen Taster für den Vorgang angeschlossen. Ich wollte das nur der Vollständigkeit halber auch noch über Funk anstossen können und per I2C kalibrieren. Wäre eben ein nettes Feature gewesen. Werde ich aber bei Gelegenheit noch tun. Heute muss erst noch der neue Stapellauf meines Roboters funktionieren dann ist der Start in 2006 perfeckt, dann wieder Experimente mit dem Kalibrieren.


Grüsse Wolfgang

m.artmann
01.01.2005, 14:00
Heute muss erst noch der neue Stapellauf meines Roboters funktionieren dann ist der Start in 2006 perfeckt, dann wieder Experimente mit dem Kalibrieren.

Hallo Wolfgang,

Hehe, Du bist mit 2006 Deiner Zeit aber weit voraus :cheesy:

Na dann viel Erfolg mit deinem Roboter.

Gruß
m.artmann

pebisoft
01.01.2005, 19:09
hallo, das kompassmodul läuft jetzt zu 99% genauigkeit.
am besten ist wenn man den vorgeschlagenen druckschalter zwischen anschluss 6 und masse 9
legt. ich habe den druckschalter zwischen gelassen, wenn mal wieder kalibriert werden
muss. diese kalibrierung ist einfacher als über i2c, kann während der laufenden abfrage
des moduls gemacht werden. ich gebe jetzt über das easy-radiomodul vom arbeitsplatz
eine gradzahl vor und der robby hält gemäss programm die richtung innerhalb der vorgabe
(+-5, ist ca +- 0.5 grad). macht richtig spass. unter "album" roboterbilder" ist ein bild
vom küchenbrettroboter. wer fragen hat, soll fragen.


Declare Sub K_werte(byval Ee_adresse As Byte)

$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200

Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , Rs = Portc.5 , E = Portc.4
Config Lcd = 16 * 2

Config Scl = Portb.3
Config Sda = Portb.4

Dim Daten As Byte , Temp As Byte
Dim Ausgabe As Word
Dim Adresse As Byte
Adresse = 2

Do

Call K_werte(adresse)
Print Ausgabe
Waitms 500

Loop

End

Function K_werte(byval Ee_adresse As Byte)
Disable Interrupts
I2cstart
I2cwbyte &B11000000 , Ack
I2cwbyte Ee_adresse
Waitms 10
I2cstart
I2cwbyte &B11000001 , Ack
I2crbyte Daten , Ack
I2crbyte Temp , Nack
Ausgabe = Daten * 256
Ausgabe = Ausgabe + Temp
I2cstop
Waitms 10
Enable Interrupts
End Function
mfg pebisoft

veloxid
02.01.2005, 13:48
hi
also wir haben derbe probleme, was der ausgeibt nachdem wir ihn über den druckschalter kalibriert ahaben ist reinster scheiß.
ich denke dass es daran leigt das man nicht sieht wie weit er bei der kalibrierung ist und das man beim drücken dann den kontakt zu lange drückt und daher dann direkt N und ost den fast gleichen wert erhält.....
was sagt ihr dazu?

gruss veloxid

veloxid
02.01.2005, 14:46
Hi
wir haben ein Problem!!!!

unser kompassmodul CMPS 03 zeigt scheiße an.....
nach der kalibrierung startet er bei 170 geht auf 0 runter geht wieder hoch bis 170 geht wieder auf 0 runter und springt dann auf 3600 geht bis ca 3500 runter und srpingt dann auf 170....

Kann mri jemand helfen?

pebisoft
02.01.2005, 17:00
ihr müsst das modul auf norden stellen, dann den schalter von pin6 nach pin9 schnell drücken/loslassen, dann das modul weiterdrehen osten/süden/westen. danach zeigt er bei der i2c-abnahme 0-3600 an.
wichtig ist, die daten ab adresse 2 und 3 rauslesen und dann in einem word umwandeln. natürlich könnt ihr die werte diekt auslesen. einfach die werte mit print auf den pc geben oder auf einem lcd-display, danach könnt ihr auf dem bildschim sehen, wie sich das modul beim drücken des schalters verhält.
mfg pebisoft

veloxid
02.01.2005, 17:13
hat sich irgendwei von allein geklärt.
wir hatten immer 6/9 verbunden und dennoch kam es zu dem problem.
aber hat sich ja jetztz erledigt.

gruss veloxid

ACU
02.01.2005, 18:23
Gibt es eigentlich auch günstigere Kompassmodule?
Ist klar, dass die Genauigkeit dann nicht so groß ist.

Ich stelle mir die Frage deshalb, weil es einen Spielzeugkreisel gibt (für 13€ oder so), der einen integrierten Digitalen Kompass verwendet.

Aber vielleicht liegt das auch an der Menge.


MfG ACU

pebisoft
04.01.2005, 18:45
woran lag euer problem beim kompasskalibrieren?
mfg pebisoft

pebisoft
04.01.2005, 22:07
was heisst beim cpms03-kompassmodul "power-up-reset".
mfg pebisoft

Joerg
05.01.2005, 12:20
Hallo,

da hier bezüglich dem kalibrieren vom CMPS03 ein paar Fragen auftraten, noch mal kurz das wichtigste zusammengefasst.

Wichtig sind exakte Himmelsrichtungen als Vorgabe (N, O, S, W) also nicht schätzen, sondern Vergleichskompass benutzen!
Beim Kalibrieren über Schalter muss dieser prellfrei sein. Kommt sonst auch Brühe raus.

Dann beim eigentlichen Kalibrieren das Modul waagerecht ausrichten (wichtig!) auf Nord drehen und Schalter kurz betätigen. Modul auf Ost drehen, Schalter betätigen usw. Insgesamt muss der Schalter für jede Himmelsrichtung genau einmal betätigt werden. Alternativ geht das auch mit I2C, da das Modul aber ohnehin genau ausgerichtet werden muss, ist das wahrscheinlich nur im Ausnahmefall sinnvoll.

Hat man sich verzählt oder will den Vorgang nochmal neu starten, nach dem Einschalten (Power-Up-Reset) kann man wieder von vorn anfangen.

Viele Grüße
Jörg

pebisoft
05.01.2005, 17:37
wie kann man einen taster prellfrei machen .
mf gpebisoft

Manf
05.01.2005, 17:42
mit Tiefpass und Schmitt-Trigger
(grundsätzlich, oder ganz anders z.B. mit Software)
Manfred

Joerg
05.01.2005, 20:33
Hallo,

ein Kurzhubtaster reicht für den Zweck aus. Ich habe nur prellfrei geschrieben, da ich schon mal jemanden hatte, der den Job mit einem Schraubenzieher erledigte und sich wunderte, dass es nicht klappte.

Viele Grüße
Jörg

m.artmann
05.01.2005, 20:45
Um mal wieder zur Eingangsfrage zu kommen

@ACU
Welche Kreisel meinst Du denn? Hast Du einen Link dazu?
Ich denke ein billiges Kompassmodul wäre doch für viele hier interessant.

Gruß
m.artmann

18.01.2005, 23:58
Kompassmodule mal bei Sander Elektronik, Berlin erfragen. Der hat, glaube ich, auch ne Internetseite.