Hasst du vielleicht irgendwo in der Nähe einen Motor, Kabel mit höherem Strom/Spannung oder ähnliches? Dieses Phänomen kenne ich nur von solchen Störquellen.
jon
Hallo!
Heute habe ich ein kleines Programm geschrieben, was die Daten vom Kompass CMPS03 ausliest, und übers UART an den PC weietersendet. Dabei ist mir aufgefallen, dass egal, wie ich den Kompass drehe, nur Werte zwischen 128 und 255 am PC ankommen. Wenn ich ihn drehe, gibt es ein Bereich um 255, wo sich trotz Drehung sich garnichts tut, und danach sprint der Wert auf 128 und steigt normal weiter.
Weiss jemand da Rat? Hab ein Atmega8, programmiert in C, I2Clib von Peter Fleury, UART zusammengeschnipselt vom AVR-GCC Tutorial, das funktioniert aber mit unterschiedlichen Strings, also daran liegts nicht.
Danke schon im Voraus!
pongi
Hasst du vielleicht irgendwo in der Nähe einen Motor, Kabel mit höherem Strom/Spannung oder ähnliches? Dieses Phänomen kenne ich nur von solchen Störquellen.
jon
Nice to be back after two years
www.roboterfreak.de
Nein, darauf hab ich extra geachtet. Ausserdem ist es komisch, dass die Werte genau 128 und 255 sind. Also nie 127 und so. Irgendwie also ob die eine Hälfte der Skala abgeschnitten wäre....
Eine Idee von mir: die Werte gebe ich als ein Byte aus. Das wird dann als char interpretiert, deshalb kommen komische Zeichen in Hyperterminal heraus. Daher habe ich ein kurzes LabVIEW Programm geschrieben, was die Daten vom COM-Port des PCs liest, und dann die chars in uints umwandelt udn anzeigt. Mein Prblem kann aber nicht an der Konversion zwischen char und uint liegen oder?
Hallo,
ich kenn jetzt den Sensor nicht, aber kann es sein, dass das ergebnis bei der übertragung in 2 teile zerlegt wird, und ein teil nicht richtig ausgelesen wird.
mfg jeffrey
Nein, das Ergebnis vom Sensor ist ein Byte, 0-255 entsprechend 0-360°.
Man kann aber das Ergebnis auch als ein Word empfangen, vielleicht versuche ich das mal... Obwohl ich nicht genau weiss, wie ich sie dann zusammensetzen muss.
Du bekommst normalerweise ein Word gesendet. Das Word musst du dann durch 10 teilen. Nun hast du die Ausrichtung mit einer Auflösung von 0,1°.
Es kann passieren, dass es noch mehr Stellen nach dem Komma gibt, die sind aber nicht mehr genau.
jon
Nice to be back after two years
www.roboterfreak.de
Nein, wenn man Register 1 liest, bekommt man nur ein Byte, siehe CMPS03 doku: http://www.robot-electronics.co.uk/htm/cmps3doc.shtml
Jetzt hab ich noch folgendes gemacht: ich lass den Atmega die Zahl in eine ASCII Zeichenkette umwandeln, und das wird an den Laptop gesandt. Leider hat das auch keine Änderung ergeben... Es scheint mir so, also ob der Kompass nur 128 "Schritte" für eine volle Umdrehung machen würde...
Nice to be back after two years
www.roboterfreak.de
@Jon: erstmals vielen Dank für deinen Einsatz
Ich zitiere: "1 Compass Bearing as a byte, i.e. 0-255 for a full circle"
Man kann auch als Word auslesen, wenn man Register 2,3 liest, mach ich aber nicht, da ich mit einem Byte mit dem Atmega8 besser arbeiten kann, und die Genauigkeit der letzten Stellen sowieso ziemlich unsicher ist.
Leider hab ich kein Bascom Compiler, womit ich es testen könnte, ich tendiere aber auch langsam dazu, dass mit dem Kompass was nicht stimmt.... Hab auch schon an Devantech geschrieben, aber leider noch keine Antwort erhalten.
Achso. Hab ich mir nicht alles durchgelesen.Zitat von pongi
Ich lese Register 2 aus.Zitat von pongi
Stimmt auch wieder...Zitat von pongi
Kann man hier kostenlos als DEMO runterladen.Zitat von pongi
Mal schauen, was die zurückschreiben.Zitat von pongi
jon
Nice to be back after two years
www.roboterfreak.de
Lesezeichen