PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : compas cmps03 mit pwm



roboterheld
27.11.2007, 08:14
hallo, wer kennt den compass cmps03?
in der beschreibung steht , das man ihn mit i2c und pwm benutzen kann.
i2c funktioniert. nun möchte ich gerne wissen, wie er mit pwm
funktioniert. in der beschreibung steht nur das vom 0-30ms die gradzahl
0-360 angegeben wird. der pwm-anschluss ist da. aber irgendwann muss
doch die messung anfangen bzw angestossen werden und darüber kann auch
die verkaufsstelle robotik-hardware keine auskunft geben, sie sagt man
solle eh i2c benutzen ist schneller. bloss das interessiert mich einmal,
wenn das schon eingebaut ist,wollte ich es auch benutzen.

mfg

robo junior
27.11.2007, 14:08
Die Messung wird nicht angestossen, sondern läuft ständig. Am Ausgangspin liegt also ständig ein Rechtecksignal mit dem aktuellen Wert an.
Zum auswerten kannst du den Ausgangspin z.B. an einen Interruptport des uC hängen. Dann wartest du auf eine Flanke (von 0 auf 1) und zählst dann (mit einem genügend genauen Timer, da musst du halt ein bisschen rechnen, wie du den einstellen musst) die Zeit, bis das Signal wieder abfällt (fallende Flanke von 1 auf 0) die Zeit, die du dann gemessen hast kannst du dann direkt in Gradwerte umrechnen (ist eine lineare Funktion, weiß jetzt nicht mehr genau, wie viele ms wie viel Grad sind, das steht aber auch im Datenblatt).

roboterheld
27.11.2007, 18:18
37ms sind 360grad steht in der beschreibung.

Dirk
28.11.2007, 17:40
... der pwm-anschluss ist da. aber irgendwann muss
doch die messung anfangen bzw angestossen werden ... bloss das interessiert mich einmal, wenn das schon eingebaut ist,wollte ich es auch benutzen.

Ich habe alle Ausgabevarianten des CMPS03 getestet und klappt auch. Die PWM-Impulslängen habe ich in Bascom mit Pulsein gemessen.

Zusätzlich habe ich noch eine Variante mit ADC probiert: An den PWM-Ausgang ein RC-Glied aus 47kOhm und 10uF. Die Spannung am 10uF habe ich direkt an einen ADC-Eingang gelegt. Auch diese Variante klappt gut, aber natürlich mit den größten Fehlern.

Im Anhang die Excel-Tabelle, die beweist, dass es auch mit geglätteter PWM geht!

Gruß Dirk

Ceos
11.12.2007, 10:19
hallo erstmal, ich bin völlig neu hier, also bitte nicht schlagen :p

ich wollte mal anfragen, da ich kein elektroniker/elektriker bin ob jemand eine bauanleitung für den anschluss/kalibrierung des cmps03 an einem atmega8 hat und eventuell einige hinweise ... im forum hab ich mehrere hinweise auf dieses thema bekommen und die ergebnisse beeindrucken mich!
es geht darum das ich einen asuro roboter habe, dem ich beibringen will mittels funkmodul (schon eingebaut) und einem PocketPC innerhalb eines feldes zu einer bstimmten position (durch zeigen auf dem PPC) zu fahren ... eine ortsbestimmung (vor allem die orientierung) mit reiner odometrie scheitert schon am schlupf der räder und bei einer kollision mit einem objekt.

deshalb wollte ich dieses modul einbauen, habe aber leider 0,0 ahnung was den anschluss angeht (es dient einem privaten zweck und ist keine hausaufgabe, nur um eventuellen behauptungen vorzubeugen)

MfG und danke im voraus
Ceos

Ceos
11.12.2007, 11:22
kann ich das auslesen auch per c-code machen? ich bin kein freund von basic :p (in anspielung auf bascom) da bräuchte ich nämlich auch ne hilfe weil ich nciht weis wie ich mit einem atmega8 die daten auswerten soll Q_Q

EDIT: verzeihung habe den editbutton übersehen -.-

Dirk
11.12.2007, 16:45
Hallo Ceos,

... eine bauanleitung für den anschluss/kalibrierung des cmps03 an einem atmega8 ...
Im Anhang zwar keine "Bauanleitung", aber ein einfacher Schaltplan. Die beiden Stecker rechts unten (I2C-Bus1/2) sind 2 I2C-Anschlüsse (2x5 Pfosten-/Wannenstecker) nach der RN-Norm. Davon brauchst du für den Asuro z.B. nur die beiden I2C-Kontakte.
Der PWM-Ausgang kann ebenfalls benutzt werden und je nach Jumper (JP5/JP6) auch eine geglättete PWM zur Auswertung durch einen ADC.


... kann ich das auslesen auch per c-code machen?
Ja, klar.

Gruß Dirk

Ceos
11.12.2007, 16:58
das heisst wenn ich jp6 setze ist das signal "geglättet" und ich kanns AD auslesen ? das ja geil und sogar mit wertangaben(für den widerstand und den kondensator), genau DAS was ich gesucht habe ^_^

Dirk
11.12.2007, 17:03
... das heisst wenn ich jp6 setze ist das signal "geglättet" und ich kanns AD auslesen?

Ja, so isses.
Zu beachten:
JP5 muss offen (abgezogen sein).
Zum Messen mit ADC solltest du 50 Messungen über 100ms durchführen und mitteln (alle 2ms ein Wert).

Gruß Dirk

P.S.: Besser ist natürlich das Auslesen über I2C oder über die PWM!

Ceos
11.12.2007, 17:18
P.S.: Besser ist natürlich das Auslesen über I2C oder über die PWM!
haste ne idee wie ich das bei einem fertig zusammengebauten asuro bewerkstelligen kann ? zu PWM ich hab schon im elektronik forum feststellen lassen, das ich eine leiterbahn durchstrennen m,üsste und eine LED z.T. ausser betrieb nehmen muss.
zu I2C auch hier hab ich bedenken das es nicht mit dem anlöten von 2 pins getan ist sondern andere sensoren/leds/usw. darunter leiden müssen -.-

https://www.roboternetz.de/phpBB2/viewtopic.php?p=334410#334410
da habsch meinen topic laufen

roboterheld
14.12.2007, 17:10
der cmps03 zieht zuviel strom vom asuro oder musst noch eine batteriepack druff setzen.

Ceos
14.12.2007, 21:31
von der spannung her sollte es aber stimmen O_o
also wenn cih battrien und keine akkus benutze

by the way, ich habs nu mit echter pwm auswertung hinbekommen .... nu warte ich nur auf das modul

hab den interrupt0 zum laufen bekommen, zu kosten des rotanteil der status LED ... aber ich musste keine eingirffe in der hardware machen .... zum Glück

roboterheld
15.12.2007, 10:45
....von der spannung her sollte es aber stimmen O_o ....

ich rede nicht von der spannung sondern vom strom!!!!

Ceos
15.12.2007, 13:18
also meinen informationen nach zieht das modul 20-30mA