PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cmps03 kompassmodul



pebisoft
28.12.2004, 22:27
hallo, ich suche in bascom eine routine für das compassmodul cmps03 .
ich möchte es mit pwm auslesen.
mfg pebisoft

BlueNature
29.12.2004, 13:29
Hallo pebisoft!

Das PWM-Signal genau zu lesen ist relativ aufwendig. Müsstest die positive Flanke des Signals als Trigger nehmen und bei der negativen Flanke die Zeit ermitteln und diese als Wert verwenden. Dazu muss man mit dem internen Timer programmieren.

Ich würde ein RC-Glied nehmen zur Analogwertbildung und das an einen AD-Input legen. Dann muss man nur einfach den AD-Wert lesen lassen was sehr einfach ist.

Grüsse Wolfgang

RCO
29.12.2004, 15:33
Warum willst du es nciht per I2C versuchen, wenn das Modul schon eine so hohe Genauigkeit aufweist, sollte man doch versuchen diese zu nutzen.

MFG Moritz

BlueNature
29.12.2004, 17:10
Warum willst du es nciht per I2C versuchen, wenn das Modul schon eine so hohe Genauigkeit aufweist, sollte man doch versuchen diese zu nutzen.

MFG Moritz

Das verstehe ich auch nicht, PWM ist ja im Grunde maximal 8-Bit, I2C kann 16-Bit (3600 Stufen). Schade um das Teil, aber vieleicht genügt es ja oder es gibt keien Möglichkeit das mit dm I2C irgendwie zu realisieren weils der Controller nicht zulässt ;)

Grüsse Wolfgang

pebisoft
29.12.2004, 17:30
hallo, habe euch verstanden. wie kann ich dieses modul mit i2c in bascom betreiben. weiss zur zeit aber keine rouitne, wer weiss, wie es weitergeht, für einen lösungsansatz wäre ich dankbar. muss ich hier auch wie beim i2c eeprom 24c256 ein pullups von 10k zwischen scl sca anklemmen.
mf gpebisoft

BlueNature
29.12.2004, 17:44
hallo, habe euch verstanden. wie kann ich dieses modul mit i2c in bascom betreiben. weiss zur zeit aber keine rouitne, wer weiss, wie es weitergeht, für einen lösungsansatz wäre ich dankbar. muss ich hier auch wie beim i2c eeprom 24c256 ein pullups von 10k zwischen scl sca anklemmen.
mf gpebisoft

Zum einen, mit BASCOM kenne ich mich direkt nicht aus da ich nicht damit arbeite. Aber ich weis das es da fertige Bibliotheken gibt. Vieleicht kann dir da ein anderer BASCOM-User weiterhelfen. Die Pull-Up's brauchst du jedenfalls immer im I2C-Bus. Ohne die wird das ACK nie funktionieren.

Grüsse Wolfgang

pebisoft
01.01.2005, 20:16
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

01.01.2005, 20:32
wer fragen hat, soll fragen.
Das sieht gut aus, da scheint jemand ziemlich am gleichen Thema zu arbeiten siehe hier:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=50294#50294

mfG
Lance

Lance
01.01.2005, 21:40
Das sieht gut aus, da scheint jemand ziemlich am gleichen Thema zu arbeiten siehe hier:

Nein, ich habe es gemerkt, das ist ja das gleiche, ich bin nur durcheinander gekommen, weil die gleiche Nachricht an verschiedenen Stellen steht.
Lance

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=50296#50296

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=50297#50297

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=50294#50294