PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompass Sensoren liefern unzuverlässige Werte ... Warum



zerebrator
09.11.2017, 14:35
Hallo zusammen,

Ich muss die Frage stellen... Wie verhalten sich eure Kompass Sensoren ?
Es kann nicht sein, dass meine beiden: zunächst der CMPS 10 ( Tilt compensated) und ein LSM 303, solche wirren Werte liefern.
Mein Problem ist folgender Natur:

An einem Punkt nur für testzwecke spiele ich mein Kompassprogramm ein. Auf der Stelle bewegt, zeigt er rel. zuverlässig die Werte an, Abweichung (+-) 1 - 2 ° , so weit so gut.
Lasse ich meinen Robi fahren, springen die Werte auf der gesamter Scala umher dh. von 0 -- 360° .
Mal ist beim gerade aus fahren ( die selbe Strecke!!!! ) der Winkel bei 120° dann bei 300° .. 2° usw.

Dies hat mit einem Abstand zum Motor bzw. einen anderen "magnetischen" Gegenstand nichts zu tun. Denn sogar eine 0,5 m lange Stange hat diesbezüglich nichts gebracht.

Entweder mach ich was falsch oder sind die Sensoren derart empfindlich, dass ich damit keine vernünftigen Werte bekommen kann.

Mich wundert es aber sehr, denn in jeden billigen Smartphone sind Kompasssensoren verbaut und dort trotz der WLAN Antenne und GPS Antenne scheinen diese zuverlässig zu arbeiten .... Warum nicht auch die oben genannten Sensoren bei Arduino ???


Zusatzfrage :

Würde hier evtl. ein GPS Sensor ( Indor gebrauch) einen Kompass bzw. Winkel Wert liefern ? Falls ja welchen GPS Sensor würdet Ihr empfehlen ?

Danke vorab für Anregungen

SG

Christoph

Ceos
09.11.2017, 15:25
Dies hat mit einem Abstand zum Motor bzw. einen anderen "magnetischen" Gegenstand nichts zu tun. Denn sogar eine 0,5 m lange Stange hat diesbezüglich nichts gebracht.

das ist mal eine mutige behauptung .... dir ist schon klar, dass der motor einen stator mit magneten hat die eine gewisse stärke X besitzen ... damit der motor sich dreht wird in einer spule eine elektronmagnetisches feld erzeugt das um mehrere X stärker ist als das magnetfeld der permanentmagneten!

ansonsten würde ich mal ne Frage zur Versorgung stellen! Welche Spannung servierst du ihm auf deinem Roboter? Hast du einen ausreichend dimensionierten Pufferkondensator am Sensor bzw. könntest du vll. eine höhere Spannung liefern und dann über einen Spannungsregler eine sauberere Spannung liefern?

der CMPS ist meines Wissen nach ein sehr empfindlicher Hall Effekt Sensor, da wird der Strom gemessen der durch den Hallsensor fließt ... wenn die Versorgung dreckig ist, bekommst du dann natürlich keine Anständige Messung zu stande.

Ich habe es damals mit einem Asuro probiert und den Sensor ca. 1cm über dem Batteriefach montiert, ich war also runde 4cm von den Motoren entfernt. Allerdings habe ich einen relativ dicken Kondensator und eine Diode in die Versorgung gelegt, damit der SEnsor bei unterversorgung aus dem Kondensator zieht und die restliche Elektronik nicht ebenfalls den Kondensator belastet (Achtung auch die Datenpins brauchen Antiparallel Dioden sonst könnte die leicht höhere Spannung evtl. Schäden anrichten)

PS: Die wirksamste Änderung die ich nachträglich eingebaut habe, waren ein separater Spannungsregler für die gesamte Elektronik und die Motoren direkt von der Batterie ... solange die Batteriespannung nicht einbrach lief alles bestens und stabil

shedepe
09.11.2017, 16:33
Ich schließe mich dabei Ceos an. Dass es bei dem Asuro kein Problem mit der Nähe zu den Motoren gegeben hat muss aber für deinen Fall noch lange nichts heißen. Unterschiedliche Motoren stören unterschiedlich stark. Als Beispiel. Wenn du einen guten Industriemotor nimmst, wirst du selbst mal direkt am Gehäuse keine Störung feststellen bzw. die Störung geht im Grundrauschen unter. (Hängt natürlich auch von der Motorgröße usw ab - Bei einem 100 kW Motor wirst du auch bei guten Motoren noch ein externes Feld messen).

Trotzdem gilt -> Check die Versorgung!. Es empfiehlt sich dabei eine Kombination aus einen relativ großen Elko und einen kleinen Keramikkondensator möglichst nah an den Sensor zu setzen. Wenn der Sensor ein analog Signal ausgibt sollte man auch schauen, dass diese Leitung möglichst weit weg von den Motoren geführt wird.

Du kannst auch einen Sensor ausprobieren der Kompassdaten mit Beschleunigungs und Gyrowerten fusioniert (oder die Fusion selber machen - würde ich aber nicht machen ;). Ich kann da den BNO055 empfehlen (Wird in seeehr viel Smartphones verbaut), aber ich wette HaWe wird dir noch schreiben wie schlecht und schlimm er diesen Sensor findet und einen anderen vorschlagen...

Was deine Zusatzfrage angeht:
Nein GPS ist dafür gerade im Indoor bereich komplett ungeeignet. Auch im Außenbereich musst du erst einige Meter fahren um eine Information über die Ausrichtung zu bekommen. Dein Handy fusioniert an dieser Stelle Kompass mit GPS.

HaWe
09.11.2017, 16:58
Du kannst auch einen Sensor ausprobieren der Kompassdaten mit Beschleunigungs und Gyrowerten fusioniert (oder die Fusion selber machen - würde ich aber nicht machen . Ich kann da den BNO055 empfehlen (Wird in seeehr viel Smartphones verbaut), aber ich wette HaWe wird dir noch schreiben wie schlecht und schlimm er diesen Sensor findet und einen anderen vorschlagen...


der CMPS11 (+ CMPS10) macht doch genau das: er ist ein 9D IMU mit eigenem Signalprozessor zur Sensorfusion per integriertem Kalmanfilter!
Er ist ein digitaler Sensor (UART + I2C), und die Versorgungsspannung über Arduino-Vc (5V oder 3.3V) ist doch auch äußerst stabil. Motoren sollen aber schon über externe Batterien versorgt werden.

Aber Kompass ist indoors eben schlecht, und externe Magnetfelder stören extrem, das habe ich ja nun schon oft genug ausführlich beschrieben. Schaltet man alle Störungen aus, ist er extrem genau, bei mir sogar ohne Kondensator, sowohl an Arduino Due + Mega als auch am Raspi.

Indoors und in Magnetfeld-Nähe ist mE höchstens ein Tinkerforge IMU Brick 2 geeignet, ebenfalls bereits häufig angemerkt. Er ist ein Kompass- und Acc-stabiisierter Gyro, kein kompensierter Kompass.

Tido
09.11.2017, 17:04
Was passiert denn, wenn du den Kompass durch den Raum trägst? Schwanken dann die Werte genauso?

zerebrator
09.11.2017, 17:42
Hi Ceos hallo auch an die anderen,

Das ist keine Behauptung, dass ist was ich bereits gemacht / ausprobiert habe. Auch ohne Motoren schwanken die werte. Dies dürfte deine Frage @Tido beantworten.

Kannst du mir bitte eine schematische Darstellung deiner Lösung zuschicken?
Wo hast du die Kondensatoren genau angebracht wie ist das mit der Data Leitungen bei dir gelöst ?

@ Ceos Ich glaube das mein Problem genau hier liegt.

Zwar versorge ich meinen Robi aus einer 12 Volt Batterie ( für die Antriebe) die über einen DC/DC Wandler auf exakt 5,2 Volt für die Sensorik heruntergeregelt ist doch ich denke dass ich hier keine Spitzen abfangen kann.

Wäre dir dafür sehr dankbar.

VG
Chris

HaWe
09.11.2017, 17:49
Hi Ceos hallo auch an die anderen,

Das ist keine Behauptung, dass ist was ich bereits gemacht / ausprobiert habe. Auch ohne Motoren schwanken die werte. Dies dürfte deine Frage @Tido beantworten.

Kannst du mir bitte eine schematische Darstellung deiner Lösung zuschicken?
Wo hast du die Kondensatoren genau angebracht wie ist das mit der Data Leitungen bei dir gelöst ?

@ Ceos Ich glaube das mein Problem genau hier liegt.

Zwar versorge ich meinen Robi aus einer 12 Volt Batterie ( für die Antriebe) die über einen DC/DC Wandler auf exakt 5,2 Volt für die Sensorik heruntergeregelt ist doch ich denke dass ich hier keine Spitzen abfangen kann.

Wäre dir dafür sehr dankbar.

VG
Chris

das halte ich für keine gute Schaltung:

Arduinos können über den eingebauten Spannungsregler versorgt werden, sie liefern dann eine stabilisierte Bordspannung auch für die Sensoren.
Du kannst die 12V auf 7-9V runter regeln, damit der Regler vom Arduino nicht zu viel verheizt.
Die H-Brücken für die Motoren werden dann direkt über 12V angesteuert.

zerebrator
09.11.2017, 18:12
Sorry HaWe aber das verstehe ich nicht.

Der Arduino wird über einen anderen DC/DC Wandler mit 9 Volt versorgt.
Ich habe an die 10 Verbraucher die 5 Volt benötigen da hängt auch der Kompass mit drauf ich kann doch nicht alles über den Arduino laufenlassen ...

Es gibt Anwendungen mit 24 Volt Antrieben und noch höher hier muss ich es trennen. Was kann ardunio was die DC/DC Wandler nicht können ?

Ich lasse mich gerne des besseren belehren doch ich sehe wirklich keinen Vorteil darin 10 oder mehr Verbraucher über arduion zu versorgen ich kann mit den Wandler doch höhere Störme fahren oder nicht ??

Gruß

Chr

HaWe
09.11.2017, 18:27
der Vorteil wäre, dass Arduino und alle Sensoren immer exakt dasselbe Spannungslevel hätten, was wichtig ist, sobald einzelne Sensoren gegen das Aduino-VC-Level gemessen werden.
Dass du derart viele Sensorren hast, hätte ich nicht vermutet, aber dann wäre es besser, sowohl Sensoren als auch Arduino über denselben 5V DC Wandler (und den Arduino über seinen GPIO+5V pin) zu versorgen.

zerebrator
09.11.2017, 19:01
Werde es trotzdem so versuchen wie du es mir empfohlen hast. Zumindest versuche ich den Kompass über Arduino laufen zu lassen

Sollte sich Ceos mit seinen Daten noch melden werde ich auch seine Alternative gerne probieren.

Gruß
Chr

RP6conrad
09.11.2017, 20:01
Wie hasst du das compass kalibriert ?

HaWe
09.11.2017, 20:04
den CMPS10/11 muss man nicht kalibrieren!

RP6conrad
09.11.2017, 20:15
Hier http://www.hobbytronics.co.uk/cmps10-tilt-compass wird etwas anderes gesagt :
Calibration the CMPS10
I would recommend evaluating the CMPS10 performance first before implementing this function. Its purpose is to remove offsets caused by constant magnetic sources around the CMPS10. First of all you need to determine North and align the CMPS10 with it, then enter the calibration mode by writing 0xF0 to the command register (22). To calibrate the first point write 0xF5 to the command register, this should also light the LED, then move the object through 90° and write 0xF5 to the command register. Repeat this twice more so four points are calibrated and the LED should also turn off to confirm calibration completion. Please make sure that the CMPS10 is not located near to ferrous objects as this will distort the magnetic field and induce errors in the reading.

HaWe
09.11.2017, 20:33
ok, ich gebe mich geschlagen (hatte es beim CMPS11 noch nie machen müssen) - aber du hast offenbar recht und ich behaupte das Gegenteil ! :P

Ceos
10.11.2017, 06:33
ich hatte ihm zwar schon auf seine PM geantwortet aber ich machs nochmal öffentlich:

ihc hab jetzt keinen gezeichneten schaltplan zur hand, daher muss ich es mal mit worten versuchen

ich habe in die VCC leitung eine diode gehängt, damit strom nur aus der versorgung zum sensor fließen kann und dann auf der sensorseite der diode 2 relativ dicke 10uF dran gehangen (später durch einen low drop spannungsregler ersetzt) an die anderen pins, außer GND selbstverständlich, habe cih jeweils 2 dioden anti-parallel gehangen (also parallel aber jeweils eine diode in die andere richtung) damit auch an den Pins eine vergleichbare spannung abfällt wie in der Versorgung um die elektronik zu schützen

zerebrator
10.11.2017, 08:25
Also ich stimme HaWe zu es bedarf keiner kalibrierung bei cmps 10 doch bei LSM 303 sehr wohl.
Das hat aber leider gar nichts gebracht. Die Schwankungen sind leider immer noch da.

Ich Probiere die Version vom Ceos mal sehen was das bringt . Allerdings verstehe ich nicht warum du die IO 's mit Dioden abgesichert hast ...

Gruß
Chris

Ceos
10.11.2017, 08:47
nicht abgesichert, ich habe durch die diode im VCC einen spannungsabfall von ca. 0.7V oder 0.3V wenn du eine Shottky nimmst

das heißt, wenn ich jetzt vom Controller irgendein Signal bekommen sollte ist es in der regel VCC ... da aber die logik im CMPS VCC-0.7V ist, habe ich 0.7V überspannung an den IO Pins und das ist (manchmal) schädlich für die elektronik, also eine reine sicherheitsmaßnahme um die überspannung zu vermeiden schalte ich halt eine diode in reihe mit jedem pin ... wenn man genau weis welcher pin was macht und wie die toleranzen sind braucht man die dioden nicht, da ich aber nicht weis wie der sensor ausgelesen wird war das nur ein sicherheitshinweis


wenn man den sensor analog ausließt ist es eh egal, aber man sollte wenn möglich VREF für den analogeingang auf VCC des sensor legen um saubere werte zu bekommen .... aber vorsicht auch dabei, es kann sein, dass andere analoge eingänge benutzt werden die größer sind als VCC am sensor und das ist schädlich für den ADC

HaWe
10.11.2017, 09:06
nicht abgesichert, ich habe durch die diode im VCC einen spannungsabfall von ca. 0.7V oder 0.3V wenn du eine Shottky nimmst

das heißt, wenn ich jetzt vom Controller irgendein Signal bekommen sollte ist es in der regel VCC ... da aber die logik im CMPS VCC-0.7V ist, habe ich 0.7V überspannung an den IO Pins und das ist (manchmal) schädlich für die elektronik, also eine reine sicherheitsmaßnahme um die überspannung zu vermeiden schalte ich halt eine diode in reihe mit jedem pin ... wenn man genau weis welcher pin was macht und wie die toleranzen sind braucht man die dioden nicht, da ich aber nicht weis wie der sensor ausgelesen wird war das nur ein sicherheitshinweis


wenn man den sensor analog ausließt ist es eh egal, aber man sollte wenn möglich VREF für den analogeingang auf VCC des sensor legen um saubere werte zu bekommen .... aber vorsicht auch dabei, es kann sein, dass andere analoge eingänge benutzt werden die größer sind als VCC am sensor und das ist schädlich für den ADC

wieso analog? der CMPS10/11 ist digital (wahlweise i2c, UART). Ich würde hier niemals andere Spannungen verwenden als genau die, die auch der Bus benutzt, und so ist es für dieses CMPS Sensoren auch vorgesehen...! Und sollte er wirklich intern analoge Hilfsschaltungen benutzen, so ist das intern bereits berücksichtigt!
Dioden sind NICHT vorgesehen!
und das heißt: für Spannungsversorgung vom CMPS genau die Spannung, wie sie aus dem Arduino Bordnetz kommt!
SDA+SCL bzw. RX+TX wie sonst üblich.

Hersteller-Seite:
http://www.robot-electronics.co.uk/htm/cmps11doc.htm

Ceos
10.11.2017, 09:34
für Spannungsversorgung vom CMPS genau die Spannung, wie sie aus dem Arduino Bordnetz kommt!
SDA+SCL bzw. RX+TX wie sonst üblich.

meine vermutung war eine verseuchte und instabile versorgung daher eine diode + kondensatoren als "backup" ohne strom rückfluss in die schaltung

wenn es I2C ist isses eh egal, da brauchst dann nur pull-ups an SDA und SCL nach VCC hinter der diode ... 0.7V weniger sollten auf der controller seite überhaupt kein problem darstellen, aber wenn ich pullups vor die diode hänge, liegen mal beispielhaft gerechnet 5V and SDA und SCL aber die VCC des Sesnsor ist nur 4.3V und das könnte schädlich sei für die elektronik

shedepe
10.11.2017, 09:36
Die Diode würde ich auch weglassen. Die Bringt nämlich außer Verpolungsschutz gegen Störungen ziemlich wenig.

Wenn man seine Versorungsspannung stabilisieren will ist ein oder mehrere Elko in Kombination mit einem Keramikkondensator eine gute Wahl. So zur Größen Wahl würde ich so 100 bis 470uF beim Elko und 100nF beim Keramikkondensator vorschlagen.

Um trotzdem noch mal die Dioden Problematik zu diskutieren:
Das ist mit heutigen ICs eigentlich kein Problem solche Spannungsdifferenzen auf Logikleitungen zu haben. Wenn der Sensor zum Mikrocontroller sendet dann hat er eben ein Signal mit 4,3 - 4,7V statt 5V -> Wird als High erkannt alles gut. Die andere Richtung legt der Mc 5V an. Kann je nach Empfänger ICs Problematisch sein. Fast alle Konsumer ICs die man heutzutage aber kaufen kann, haben Protection Dioden am Eingang. Die Leiten das nach VCC ab. Wenn man auf Nummer sicher gehen will, packt man einen Widerstand ins Serie um den Strom zu begrenzen.
Man benutzt das auch gerne um sich Pegelwandler zwischen 3,3V und 5V ICs bei Uart zu sparen.

Könntest du bitte mal in Zahlenwerten sagen wie groß die Schwankungen sind, wenn Motoren und andere Leistungselektronik in der Nähe ausgeschaltet sind?

Ceos
10.11.2017, 09:48
Die Diode würde ich auch weglassen. Die Bringt nämlich außer Verpolungsschutz gegen Störungen ziemlich wenig.

wenn irgend ein starker verbraucher in der schaltung VOr dem sensor steckt, arbeiter der kondensator hinter der diode wie eine mini notstrom batterie, würde ich die diode weglassen, würde der verbaucher in der schaltung vor der diode den kondensator ebenfalls runterziehen und die versorgung wäre im eimer! ich denke sehr wohl dass die diode sinn macht!



Wenn man seine Versorungsspannung stabilisieren will ist ein oder mehrere Elko in Kombination mit einem Keramikkondensator eine gute Wahl. So zur Größen Wahl würde ich so 100 bis 470uF beim Elko und 100nF beim Keramikkondensator vorschlagen.

das ist zwar gegerell eine gute idee im kontext der problemfindung allerdings eher unsinnig

das ist ungefähr so als ob du in die werkstatt fährst und sagst dein auto bringt keine leistung und du kommst den berg nicht hoch und die werkstatt dir sagt "hol halt mehr schwung vorher"


Das ist mit heutigen ICs eigentlich kein Problem solche Spannungsdifferenzen auf Logikleitungen zu haben. Wenn der Sensor zum Mikrocontroller sendet dann hat er eben ein Signal mit 4,3 - 4,7V statt 5V -> Wird als High erkannt alles gut

ja in dieser richtung passt das, aber ich habe extra ausführlich geschrieben dass spannung > VCC an IO Pins die elektronik beschädigen KÖNNTE .... ich habe auch mehrfach gechrieben dass es eine reine SICHERHEITMASSNAHME ist um MÖGLICHE schäden zu vermeiden

einen widerstand zur strombegrenzung ist eine praktische lösung aber sie ändert nichts daran dass die spannung dennoch höher sein könnte als die elektronik es mag ... solange china immernoch elektronik nach standards von vorgestern fertigt, würde ich mich eher auf den kontanten spannungsabfall über eine gleichwertige diode absichern als den fehlerstrom nur zu begrenzen

ich versuche schäden die durch meinen vorschlag entstehen KÖNNTEN zu minimieren, aber warum diskutieren wir schon wieder randbedingungen? lasst den herren mit deinem sensor doch erstmal ausprobieren ob es so besser wird!

damfino
10.11.2017, 17:11
Kleiner Hinweis: der Kompass wird von allen möglichen Metallteilen und elektrischen Feldern beeinflusst.
Also vom Roboter selbst, vom PC falls der in der Nähe ist, vom Heizkörper usw.

Auch testen wo der Kompass von den Motoren am wenigsten gestört wird. Das kann auch direkt über einem Motor sein, oder ganz am anderen Ende vom Roboter
Such dir einen Raum wo in mindestens 1m Umkreis nichts stört, dort kalibrieren, und dann werden vernünftige Ergebnisse herauskommen.

Die Ergebnisse waren bei mir immer reproduzierbar, aber auch immer mit Abweichung wenn in der Nähe von Eisenteilen.

zerebrator
11.11.2017, 17:50
Hallo zusammen,

Hier ein kleines Update
@ Ceos - Auch mit Kondensatoren und Drop down Schaltungen keine Verbesserung.
Das ding ist so empfindlich dass ich beim geradeausfahren beim überfahren einer Wasserleitung unterschiedliche Werte erhalte geschweige denn wenn ich in der nähe einer Stromleitung fahre.

Wieso sind die teile so empfindlich das begreife ich nicht !
Wie gesagt wie machen das die Smartphones ???

Gruß

chris

RP6conrad
11.11.2017, 18:02
Können sie die 3 magnetische Achsen separat auslesen ? So ja, dan musst du mal eine Messung machen wo den Sensor sich 360° dreht, so das N, S, O und W gemessen werden. Jetzt machen sie in ein spreadsheet ein X-Y, X-Z und Y-Z plot von alle 3 achsen. Wen der sensor gut kalibriert ist, muss den X-Y plot einen cirkel bilden. Wen das mittelpunt von diesen cirkel nicht in die ursprung ist, haben sie einn kalibrier problem. (X-Z und Y-Z unwichtig, mussen sie erst ueber die horizontal achse drehen). Siehe auch : http://www.sensorsmag.com/components/compensating-for-tilt-hard-iron-and-soft-iron-effects

HaWe
11.11.2017, 18:19
Hallo zusammen,

Hier ein kleines Update
@ Ceos - Auch mit Kondensatoren und Drop down Schaltungen keine Verbesserung.
Das ding ist so empfindlich dass ich beim geradeausfahren beim überfahren einer Wasserleitung unterschiedliche Werte erhalte geschweige denn wenn ich in der nähe einer Stromleitung fahre.

Wieso sind die teile so empfindlich das begreife ich nicht !
Wie gesagt wie machen das die Smartphones ???

Gruß

chris

dass ein Kompass wie der CMPS10/11in der Nähe von elktromagnetischen und ferromagnetischen Gegenständen empfindlich reagiert, haben dir doch nun alle ausgiebigst bestätigt, die ihn kennen. Magnetische Störfelder beeinflussen nun mal die Messung des Erdmagnetfelds, es wäre eher überraschend, wenn sie es nicht täten.

Hast du denn den Rat befolgt, deinen Kompass ohne Fahrzeug zu testen, einfach in der Hand halten und damit gezielt mit Peilung durchs Zimmer laufen?
Hast du ein Handy, dass wirklich den Magnetkurs als Zahlenwert ausgeben kann, und hast du es dann mal auf/in dein Fahrzeug gelegt?

Aber wie ich bereits öfters betont habe: du brauchst keinen Kompass in der Nähe von Magnetteilen, sondern einen Gyro, der nur durch Accelerometer- und ggf. Kompasswerte gegen Drift stabilisiert ist. Und genau das macht der IMU Brick 2 von Tinkerforge.


https://www.youtube.com/watch?v=Aq3SqVen5AQ

Auch die Tinkerforge Leute haben da kein Hexenwerk am Laufen, es ist eben nur ein ungeheuer gut arbeitendes IMU System mit unglaublich perfekter statistischer und stochastischer Sensorfusion. Das kannst du ntl theoretisch ebenso selber programmieren bei hinreichenden Mathekenntnissen (ich z.B. hätte die nicht...)

Aber mach doch mal die angesprochenen Tests:
den CMPS per Hand transportieren und damit peilen,
und deinen Handykompass im Fahrzeug durch die Gegend fahren und mit deinem CMPS10 vergleichen.
Und dann berichte mal... 8)

Ceos
11.11.2017, 18:22
@ Ceos - Auch mit Kondensatoren und Drop down Schaltungen keine Verbesserung.
Das ding ist so empfindlich dass ich beim geradeausfahren beim überfahren einer Wasserleitung unterschiedliche Werte erhalte geschweige denn wenn ich in der nähe einer Stromleitung fahre.


dass ein Kompass wie der CMPS10/11in der Nähe von elktromagnetischen und ferromagnetischen Gegenständen empfindlich reagiert, haben dir doch nun alle ausgiebigst bestätigt, die ihn kennen.

ich habe den sensor in einem schulungsraum auf einem asuro auf dem erdboden benutzt, da waren defintiv einige "abweichungen" die ich mal stahl-armierung im beton-fussboden zuschreibe, aber ich hatte damit zumindest keine "extremen" abweichungen, aber es war jedenfalls eine störung

PS: mein CMPS war vll. auch ein paar generationen älter :D das war immerhin vor fast 10 jahren dass ich damit gearbeitet habe XD vll. sind die jetzt echt viel empflindlicher

HaWe
11.11.2017, 18:42
ich habe den sensor in einem schulungsraum auf einem asuro auf dem erdboden benutzt, da waren defintiv einige "abweichungen" die ich mal stahl-armierung im beton-fussboden zuschreibe, aber ich hatte damit zumindest keine "extremen" abweichungen, aber es war jedenfalls eine störung

PS: mein CMPS war vll. auch ein paar generationen älter :D das war immerhin vor fast 10 jahren dass ich damit gearbeitet habe XD vll. sind die jetzt echt viel empflindlicher

die Kompass- "Empfindlichkeit" im Sinne von "Ablenkbarkeit" kann sich ja bei Störfeldern messtechnisch nur auf die relativen Stärken von Erd- und Stör-Magnetfeldern beziehen.
Ansonsten gibt die Empfindlchkeit nur quasi die Auflösung an, ob 10°- 1°- 0,5°- oder 0,1° Auflösungs-Empfindlichkeit (=Sensitivität).
Wenn ein Störfeld ebenso stark ist wie das Erdmagnetfeld, und in eine andere Richtung zeigt, dann ist die Fehl- oder Missweisung ziemlich unabhängig von der Kompassempfindlichkeit, sondern nur abhängig von Richtung und Stärke der Magnetfeld-Resultierenden aus den Einzel Magnetfeldvektoren im Kraftfeld-Parallelogramm 8)

aber @TO:

Aber mach doch mal die angesprochenen Tests:
den CMPS per Hand transportieren und damit peilen,
und deinen Handykompass im Fahrzeug durch die Gegend fahren und mit deinem CMPS10 vergleichen.
Und dann berichte mal... 8)

Ceos
12.11.2017, 09:46
Ansonsten gibt die Empfindlchkeit nur quasi die Auflösung an, ob 10°- 1°- 0,5°- oder 0,1° Auflösungs-Empfindlichkeit (=Sensitivität).

du hast gerade äpfel und melonen gleichgestellt

du hast auflösung - auf wievielk grad genau er messen kann
und sensitivität - wie empfindlich es auf magnetfelder reagiert
zum gleichen ding gemacht, das stimmt so nicht

allerdings fällt mir gerade nioch eine entscheidende information ein! ich habe damals sehr viel mittlewertbildung eingebaut, damit ich von kurzen störimpulsen und vor allem 50hz brummen nahe elektroleitungen ausfiltern kann
ich kann mich nur nioocht entsinnen wie genau ich es gemacht habe ... zu lange her .. tut mir leid :(


PS wenn die empfindlichkeit des sensors geringer ist, sind die ausschläge im messwert geringer und der sensor tendiert weniger zum übersteuern, das könnte heißen dass die sensoren vielleicht empfindlicher geworden sind damit sie schneller und präziser das magnetfeld messen können

zerebrator
12.11.2017, 09:59
Hallo HaWe

Die Test Bedingungen die du beschreibst sind sehr Theoretisch.
Natürlich sind die Werte anders wenn ich Das ding in der Hand durch die Gegend trage. Ich bin ca 1,2 m vom Boden weg die Werte sind rel. stabil.
Doch hast du schon mal einen Robi mit einer 1,2 m langen Stange gesehen ?
Ich fahre quasi ca. 6 cm vom Boden entfernt und hier bekomme ich Abweichungen die im Bereich von +- 30 - 40 ° liegen.

Das mit dem Handy ist so ein ding er holt sich die werte über GPS bzw GSM ich glaube nicht das ein Smartphone einen Kompass wie cmps10 inne hat.

Ich muss mich mit deinem Vorschlag IMU Brick mal auseinander setzen vllt ist das die Lösung.

Es muss doch möglich sein ein Fahrzeug um einen bestimmten Winkel zu drehen. Wie sonnst soll ich feststellen, dass ich mich um 180° oder 90° von einem Teil/Wand weg bewege?
Habe bereits ein Programm am laufen, dass die theoretischen werte tatsächlich bearbeiten kann, nur wenn ich während dem dreh Vorgang eine Leitung überfahre sind die 90° plus oder minus 40° ... Schwachsinn !

Gibt es alternativen ( außer IMU BRICK) zu einem Kompass ? Sensorik die bereits die Werte zur Verfügung stellt ?
Was ich nicht begreife wie kann ich mit einem Gyro + Kompass wert die ganze ummünzen ?

Die Mähroboter drehen mit GPS rel genau immer um 90° bzw. 180° und in der nähe liegt meistens die hochfrequente Begrenzung schleife die bei der Nachbarin Störungen im Radio bzw. Fernseher verursacht :-)

Genau die Stabilität hätte ich auch indor gerne ...

Gruß
Chris

Tido
12.11.2017, 10:11
Wenn der Kompass in der Hand in 1,2m Höhe sauber funktioniert, liegt schonmal kein generelles Problem mit der Kompass-HW und der Stromversorgung vor.
Ein Test mit derselben Stromversorgung und ohne Roboter in 6cm Höhe würde jetzt zeigen, wie empfindlich er ist. Tauchen dort die Abweichungen wieder auf, so liegt es an der Empfindlichkeit gegenüber Armierungen, Strom-/Wasserleitungen, etc.. Treten auch dort die Schwankungen nicht auf, so ist der Fehler beim Roboter (Stromversorgung, Störungen durch andere HW) zu suchen.

Ich würde so vorgehen:

Test1: Kompass in 1,2m mit Stromversorgung A -> erledigt, i.O.
Test2: Kompass auf Pappkarton o.ä. in 6cm Höhe mit Stromversorgung A über den Fussboden schieben -> noch zu testen
Test3: Kompass auf Roboter in 6cm Höhe und Stromversorgung A auf kleiner Platte (kein Metall) über den FB schieben -> noch zu testen
Test4: wie Test3 nur mit Stromversorgung des Roboters -> noch zu testen
Test5: Roboter fährt über den Boden -> Schwankungen der Kompasswerte

HaWe
12.11.2017, 11:23
Hallo HaWe

Die Test Bedingungen die du beschreibst sind sehr Theoretisch.
Natürlich sind die Werte anders wenn ich Das ding in der Hand durch die Gegend trage. Ich bin ca 1,2 m vom Boden weg die Werte sind rel. stabil.
Doch hast du schon mal einen Robi mit einer 1,2 m langen Stange gesehen ?
Ich fahre quasi ca. 6 cm vom Boden entfernt und hier bekomme ich Abweichungen die im Bereich von +- 30 - 40 ° liegen.

Das mit dem Handy ist so ein ding er holt sich die werte über GPS bzw GSM ich glaube nicht das ein Smartphone einen Kompass wie cmps10 inne hat.

Ich muss mich mit deinem Vorschlag IMU Brick mal auseinander setzen vllt ist das die Lösung.

Es muss doch möglich sein ein Fahrzeug um einen bestimmten Winkel zu drehen. Wie sonnst soll ich feststellen, dass ich mich um 180° oder 90° von einem Teil/Wand weg bewege?
Habe bereits ein Programm am laufen, dass die theoretischen werte tatsächlich bearbeiten kann, nur wenn ich während dem dreh Vorgang eine Leitung überfahre sind die 90° plus oder minus 40° ... Schwachsinn !

Gibt es alternativen ( außer IMU BRICK) zu einem Kompass ? Sensorik die bereits die Werte zur Verfügung stellt ?
Was ich nicht begreife wie kann ich mit einem Gyro + Kompass wert die ganze ummünzen ?

Die Mähroboter drehen mit GPS rel genau immer um 90° bzw. 180° und in der nähe liegt meistens die hochfrequente Begrenzung schleife die bei der Nachbarin Störungen im Radio bzw. Fernseher verursacht :-)

Genau die Stabilität hätte ich auch indor gerne ...

Gruß
Chris

vorweg zu ceos:
du hast ntl recht, Signal-Empfindlichkeit meinte ich nicht, ich meinte die Empfindlichkeit gegen Drehung bzw. Signal-Wechsel. Letztendlich ist es aber nur eine Frage, wie stark die Störfelder gegenüber dem Erdmagnetfeld sind. Schwache Störungen werden im Erdmagnetfeld untergehen, egal welche Eingangs- oder Auflösungs-Empfindlichkeit der Kompass hat, und starke Störquellen werden sie immer (!) überlagern und überstrahlen. Und wenn deine Magnetstörquellen stark sind und nicht nur momentane Ausreißer ("Spikes"), die sich durch Mittelwert- oder Tiefpassfilter wegmitteln lassen, dann hilft auch kein Signalfilter, ohne dass die Reaktionsgeschwindigkeit auf echte Kursänderungen massiv leided.

Zu Zerebrator:
Wenn du starke und stark schwankende Magnetstörquellen hast, dann kannst du keinen Kompass als primären Sensor benutzen, verstehst du das nicht?
Was du brauchst ist ein Sensor, der primär Drehung misst, und das ist primär ein GYRO.
Gyros haben nun eine unangenehme Eigenschaft, und das ist ein nicht-gausscher Fehler namens Drift, welche sehr langsam ist (wenige Grad pro Minute, ± linear).
Drift lässt sich daher durch Hochpassfilter herausfiltern.
Dafür benutzt man außerdem auch Sensorfusion mit Sensoren, die die Drift nicht haben, und dazu kann man sekundär Accelerometer und Kompass-Sensoren quasi zur Nullpunkt-Stabilisierung verwenden - aber nicht als primäre Sensoren! Auch andere externe Referenzen wie z.B. Baken sind hier hervorragend zur "Nachjustierung" geeignet.

Generell vermute ich daher, insb. nach meinen eigenen Erfahrungen, dass du bei starken lokalen und externen Magnetstörungen mit Gyros ohne Kompass deutlich besser bedient bist als mit Kompass alleine oder fusionierten Kompassen.
Es gibt -zig Beispiele, wie sogar mit simplen, relativ stark driftenden Lego-Gyros ohne Kompass sehr gute Navigations-Ergebnisse erzielt werden (in Verbindung mit Odometrie), zumindest kurzfristig im Minutenbereich.

zerebrator
12.11.2017, 13:20
Zu Zerebrator:
Wenn du starke und stark schwankende Magnetstörquellen hast, dann kannst du keinen Kompass als primären Sensor benutzen, verstehst du das nicht?


Ach sooo :-D
Mal im Ernst - Recht hast du.

Kennst du wirklich konkrete bsp. Wo die Gyros so eingesetzt werden wie du es beschreibst?

Was wirklich faszinierend ist sind die Bricks gibt es hierzu ein Bsp mit Arduino ? oder geht das alles wieder über Raspi bzw. Windows Pc mit zusatzprogrammierung im Python oä?

Gruß
Chris

HaWe
12.11.2017, 14:01
Ach sooo :-D
Mal im Ernst - Recht hast du.

Kennst du wirklich konkrete bsp. Wo die Gyros so eingesetzt werden wie du es beschreibst?

Was wirklich faszinierend ist sind die Bricks gibt es hierzu ein Bsp mit Arduino ? oder geht das alles wieder über Raspi bzw. Windows Pc mit zusatzprogrammierung im Python oä?

Gruß
Chris

Kurssteuerung nur mit Gyro (statt Kompass) plus Odometrie? Klar:


https://www.youtube.com/watch?v=rUs1mz-Qo0A


https://www.youtube.com/watch?v=Rux1bHepDK0


https://www.youtube.com/watch?v=48rVajRV8SU

zerebrator
12.11.2017, 15:10
Und Beispiele mit Arduino ?

Kenne mich mit der ganzen Lego Thematik nicht aus.

Das letzte Beispiel ist sehr gut wenn die Reproduzierbarkeit so gut ist dann kannst du damit sehr viel machen...
Wie gesagt sofern es dies auch für die Arduinos möglich ist ... ???

Gruß
Christoph

HaWe
12.11.2017, 19:54
zäumen wir das Pferd mal von hinten auf, denn du brauchst mindestes 2 zuverlässige Referenzgößen zum Kompass...:
hast du eine ziemlich gut funktionierende Odometrie?
Heißt: kein Schlupf an den Rädern, schmale, gut greifende Reifen mit eindeutiger Auflagefläche von idealerweise 1-3mm Breite, Quadratur-(!)-Radencoder (an den Rädern bzw. Radachsen, nicht am Motor) mit wenigstens 1° Auflösung, besser 0,5° ?

Rabenauge
15.11.2017, 08:49
Vielleicht hilft das weiter-ich hab mir die zugehörigen Links nicht angesehen, sieht aber gut aus: https://www.youtube.com/watch?v=s-8vNAn4Eys

Anmerkung noch: nur billige Piezo-Kreisel haben das Driftproblem.
Kommt daher, dass sich das Kreiselelement im Betrieb erwärmt...
In meinen Helis benutze ich deshalb seit Jahren Kreisel mit SMM-Sensor, die driften _nicht_.
Wüsst allerdings nicht, ob es diese Sensoren einzeln zu kaufen gibt, aber prinzipiell sollte man auch einen fertigen Modellbau-Kreisel nehmen können (der gibt ja auch nur das Servosignal weiter, wär also auswertbar).

HaWe
15.11.2017, 09:13
Vielleicht hilft das weiter-ich hab mir die zugehörigen Links nicht angesehen, sieht aber gut aus: https://www.youtube.com/watch?v=s-8vNAn4Eys

Anmerkung noch: nur billige Piezo-Kreisel haben das Driftproblem.
Kommt daher, dass sich das Kreiselelement im Betrieb erwärmt...
In meinen Helis benutze ich deshalb seit Jahren Kreisel mit SMM-Sensor, die driften _nicht_.
Wüsst allerdings nicht, ob es diese Sensoren einzeln zu kaufen gibt, aber prinzipiell sollte man auch einen fertigen Modellbau-Kreisel nehmen können (der gibt ja auch nur das Servosignal weiter, wär also auswertbar).

stimmt nicht ganz, mit der Gyro-Drift, das haben alle, aber zugegebenermaßen schon in erheblich unterschiedlichem Ausmaß.
Das hängt mit der Erdrotation zusammen: 360° in 24 Stunden, außer am Äquator. Wenn man einen Roboter damit ein paar Stunden herumfahren lässt, wird das doch nennenswert. Da dieser Teil aber bekannt ist, lässt er sich ntl einfach linear subtrahieren.
Aber es stimmt schon, manche Gyros haben 10° pro Minute, im Extremfall. Besonders analoge Gyros sind empfindlich gegen Spannungsschwankungen im Bord-Netz, z.B. wenn Motoren an- und ausgehen.

Wenn man die Drift also raus rechnen kann (mit guten Referenzsignalquellen, am besten extern), dann kann man damit arbeiten. Odometrie und Kompass sind durchaus dafür geeignet, selbst wenn einer davon ab und zu mal spinnt - das wollte ich mit dem OP zusammen mal ausloten.

Man darf nur nicht vergessen, dass wir nicht über wenige Minuten reden, die das System läuft ( wie in manchen Videos), sondern über Dauerbetrieb, und Fehler fallen meist erst dann richtig auf.

- - - Aktualisiert - - -

ps,
der CMPS10/11 hat ja auch einen eingebauten Gyro, dessen raw-Werte man dafür verwenden kann!

Ceos
15.11.2017, 09:26
mit dem CMPS habe ich auch nur eine strecke von vll. 10m geschafft, bis seine abweichung deutlich wurde (1 ausro breit abweichung)