Hallo
Ich bräuchte ein kompaktes modul, das ich leicht mit einem ATMEGA
ansprechen kann (also I2C, RS232, Analoge ausgänge)
womit ich die neigung und die aktuelle ausrichtung (Kompass) messen kann
Das teil sollte genau sein, wobei es hier nur um Änderungen geht
Sprich ich habe eine gewisse neigung, und eine einstellung am kompass,
die cih mir dann im Atmel merken möchte und dann soll angezeigt werden
wie weit ich drehen muß um wieder an diese position zu kommen.
Hat wer ideen oder schon mal so was gelöst?
Naja, klassisches IMU - Initial Measurement Unit.
Besteht mind. aus Gyro und ACC, kann mit GPS und Kompass erweitert
werden.
Gyro allein bringt dir den Drehwinkel aus integration, läuft dir aber
mit der Zeit weg. ACC allein kann dir auch den Drehwinkel geben
(ausrechnen, Trigonometrie) funktioniert aber nur im Stationären Zustand
und orthogonal zur Erde (wenn ich da richtig liege).
Eine Kombination aus beidem bringt dir dann einen stabile Info über den
Winkel. Sensorfusion muss man schauen da gibts verschiedenste Ansätze.
Der angeblich beste und komplizierteste ist der Kalman Filter.
Findet sich auch einiges im Forum.
Achja, für die Reine Neigung könnte es auch Sensoren,google hilft
http://www.hy-line.de/fileadmin/hy-line/sensorik/hersteller/VTI/dokumente/vti_neigung.pdf
Hi,
in einem "wenig" bewegten System reicht dir die Kombination aus
Magnetfeldsensor und Beschleunigungssensor. Bei ST bekommt man das auf
einem einzigen Chip:
http://www.st.com/internet/analog/product/251902.jsp
Falls eine gewisse Dynamik ins Spiel kommt, z.B. Modellflug, brauchst du
eine IMU, wie mein Vorredner schon geschrieben hat.
Reinhard
Also der MK3Mag sieht eigetnlich eh sehr gut aus, und ist auch preislich
noch interessant ...
Kann der nun auch neigung?
was bedeutet diese "3-achsen Magnetfeldsensor" so ganz schlau werde ich
nicht draus ;)
Auch sehe ich nicht genau raus wie man den dann ansrpechen kann von
einem µC
Hab auch noch den 3D Sensorboard CHR-6D gefunden, aber der kostet
gleich das doppelte ... :(
Ein Raum ist 3D. Drei Dimensional. 3 Achsen. 3 = Drei = 3.
Heißt: Ein Sensor der in 3 Achsen misst misst in jeder Raumachse (x, y,
z).
Sparcfun hat auch noch IMUs in allen möglichen Arten.
Eine IMU aus Beschleunigungssensoren und Gyroskopen zeigt dir nur
fehlerbehaftete Werte, schau Dir deswegen mal "Einführung in den
Kalman-Filter" an.
Und lies mal die Artikel über UAVs, z.B. Quadcopter, so ganz ohne ist
das Vorhaben nicht und ob nur Magnetsensor reich fraglich.
Alternativ hol Dir doch einen Nunchuck bei Ebay, ich hab mal einen für 5
Euro bekommen, an einen Arduino gehangen und als Presenter mishandelt.
>Alternativ hol Dir doch einen Nunchuck
Ist auch nur ein Beschleunigungssensor drin. Also auch keine dynamische
Winkelerfassung möglich.
Wenn es ein dynamisches System ist, dann ist Beschleunigungssensor +
Gyroskop + Kalmanfilter ziemlich gut.
Allerdings auch mit gewissem Aufwand verbunden.
Auch der Steady-State-Kalmanfilter erziehlte bei mir gute Ergebnisse und
reichte für meine Anwendung aus.
Grüße
> Ist auch nur ein Beschleunigungssensor drin.
Stimmt,
aber aus den Thread oben klingt ein Stück heraus, das der TS eigentlich
noch am suchen ist und den Aufwand noch noicht anschätzen kann.
Und da sind 5 Euro für einen Test noch recht günstig.
Um den Kalmanfilter
http://letsmakerobots.com/node/15688
oder Diskrete Cosinusmatrix
http://code.google.com/p/ardu-imu/
wird er wahrscheinlich nicht rumkommen.
Ano Nym schrieb:> Ein Raum ist 3D. Drei Dimensional. 3 Achsen. 3 = Drei = 3.>> Heißt: Ein Sensor der in 3 Achsen misst misst in jeder Raumachse (x, y,> z).>> Sparcfun hat auch noch IMUs in allen möglichen Arten.
Ja, das würde dann ja heissen das es der MK3Mag ja kann ... das er in
alle 3 Achsen messen kann
Tom schrieb:> Und da sind 5 Euro für einen Test noch recht günstig.
Stimmt schon, so ein Teil ist mal schön um es zu testen. Wollte ja nur
anmerken dass damit eine zuverlässige Winkelerfassung auch nur im
statischen Fall möglich ist.
Grüße
HMC6343
Man kann aus dem Register nacheinander die Neigung (von den
Beschleunigungssensoren) und die Ausrichtung (direkt in °) auslesen.
Anbindung über I2C mit 100kHz und 10Hz Updaterate.
JA sollte schon genau sein,auf 0.5° aber eben nur realtiv gemessen
Sprich es soll eine position gemerkt werden, und später dnan angezeigt
werden wie genau wir niun wieder dort sind.
Ich werde es am anfang mit diesem board mal testen
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=221
ich hoffe das ist genau genug ;)
140 Tacken...heftig!
Die Sensoren sehen noch nicht mal so schlecht aus und ein STM32 ist auch
noch mit drauf.
Wenn man an den ran kommt Softwaretechnisch...kannste Deinen ATMEGA
entsorgen und gleich den Onboard STM32 nehmen.
Hier wäre das gleiche Board etwas günstiger gewesen:
http://www.watterott.com/de/CHR-6d-IMU
Ein evtl. weiterer Vorteil ist die anscheinend implementierte
Kalibrierung bzw. Schätzung der Bias-Werte (wenn sie gut und zuverlässig
funktioniert).
Nachteilig könnte sein, dass wenn dies nicht richtig geschieht man nur
schwer Einfluss darauf hat. Man kann zwar anscheinend auch manuell
Bias-Werte setzen für die Sensoren, allerdings müsste man die dann im
angeschlossenen ATMEGA schätzen und dann zum STM32 übertragen. Dies
passt natrürlich nur bei einer sauberen zyklischen Erfassung der
Sensordaten. Ansonsten läuft Dir auch der Kalmanfilter davon.
Fast die gleichen Sensoren (außer Gyro mit +- 300°/sek und +-1200°/sek)
und ohne STM32 gäbe es auf diesem Board für 55 Euro:
http://www.watterott.com/de/IMU-6DOF-Razor-Ultra-Thin-IMU1
Die Signale werden hierbei Analog ausgegeben, eine Auswertung müsste
dann im uC erfolgen (dies übernimmt im anderen Board der STM32).
Grüße
P.S: Du hast schon gesehen dass auf den Boards kein Kompass drauf ist,
oder?
Ja musste leider familienbedingt wegfahren .... Und die SIM im iPad geht
leider nicht im Ausland ... Tschuldigung, das ich mich nicht abgemeldet
habe.... ;)
Hmmmm kein Kompass .... Aber die Drehung erkennt er trotzdem oder?
Ich muss nur die Drehung und die Neigung erkennen. ... Und das nur
relativ
Sprich der Sensor wird auf einer beweglichen Latte montiert diese zeigt
in den Raum und kann dann irgendwo hinzeigen
Diese position wird dann gespeichert und sollte später wieder gefunden
werden ....
Sn00py schrieb:> Hmmmm kein Kompass ....
Kompass wird sowieso IMHO überbewertet.
Jeder Fernseher, jeder Trafo, jeder Motor in der näheren Umgebung lenkt
den ab.
Ausgangsposition speichern, Latte drehen und anschließend wieder zur
Ausgangsposition zurückfinden sollte gehen. Wie gesagt, wenn das mit der
Kalibrierung gut funktioniert hast Du sogar die absolute Position der
"Latte".
Wenn Du die Sensordatenauswertung und Sensordatenfusion selber berechnen
muss (und dazu gehört eben nun mal auch die Bias-Schätzung) dann wirds
etwas bist etwas viel aufwändiger.
Grüße
sn00py schrieb:> Ich bräuchte ein kompaktes modul, das ich leicht mit einem ATMEGA> ansprechen kann (also I2C, RS232, Analoge ausgänge)>> womit ich die neigung und die aktuelle ausrichtung (Kompass) messen kann> Das teil sollte genau sein, wobei es hier nur um Änderungen geht
Hi, sn00py,
Honeywells HMC6343 macht das in etwa: Geomagnetisches Feld in X, Y, und
Z. Dazu Beschleunigung in X, Y und Z.
Prima für tragbare Geräte, aber unmöglich für Motorräder, Pkw, Lkw,
Boote. Weil der eingebaute Kalibrieralgorithmus ein Überschlagen
erfordert, eine Drehung um eine horizontale Achse.
Weil Kalibrierung die Mitdrehung der Plattform erfordert, müsste das
Motorrad sich auch entsprechend mitdrehen, was man nicht jedem Fahrer
zumuten kann.
Die Kalibrierung ist unverzichtbar, weil der vertikale Komponente des
geomagnetischen Feldes in unseren Breiten deutlich stärker ist als die
horizontale Komponente.
Den Sensor um ein Grad aus der Horizontalen heraus zu kippen verursacht
einen Nordfehler von mehr als ein Grad.
Und bei Montage im Fahrzeug weißt Du erst mal nicht, ob Dein Fahrzeug
gekippt wird oder sich beschleunigt.
Da lobe ich mir meinen Marschkompass mit der spitzengelagerten Nadel.
Zur Nordbestimmung bleibe ich damit halt stehen.
Ciao
Wolfgang Horn
Auf jeden Fall mal danke an alle :)
und auch an den link mit dem günstigeren Preis, habe ich irgendwie
übersehen ...
Ich werde dann bereichten ob das teil für meine Zwecke taugt oder nicht
...
Sooooo ....
ich habe nun das Teil hier den CHR-6d
aber irgendwie siehts aus, wie wenn das Teil das gar nicht kann :(
der kann die rotierung um die z-Achse niocht, zumindest passt kein
ausschlag der Sensoren dazu wenn ich den drehe ... wenn ich den langsam
um die z-Achse drehe, dann sehe ich niergends einen Ausschlag
nur die Gyro werte ändern sich, aber die gehen dann immer wieder zurück
auf 0
.... ich fürchte ich habe nun einen sensor hier, der das gar nicht kann,
was ich brauche?
Was sagt ihr dazu?
Kennt wer diesen CHR-6d?
Hat wer eine empfehlung, welchen sensor ich stattdessen verwenden
sollte?
danke
sn00py
Hi,
das Bauteil dass du hast kann das nur indirekt. Gyros zeigen direkt nur
die Drehrate an, wenn sie still stehen ist ihr Signal 0. Dein Board
funktioniert im Rahmen seiner Möglichkeiten normal. Wenn du jetzt
anstatt der Drehrate einen Winkel haben willst, musst du das Signal
numerisch integrieren. Ein simples Beispiel: Der Sensor zeigt für 2
Sekunden eine Drehrate von 25°/s an. Dann weißt du, dass sich der Winkel
um 50° gegenüber deinem vorherigen Wert geändert hat. Wenn du deinen
Ausgangswinkel kennst, kennst du damit auch deinen neuen Winkel.
Die Sache hat zwei Probleme. Zuerst einmal wird die Sache im
dreidimensionalen Raum deutlich komplizierter, da man die Achsen nicht
unabhängig voneinander betrachten kann (mathematisch gesehen kommutieren
Rotationen nicht). Dazu kommt noch das Problem der Drift. Normalerweise
ist es kein Problem wenn der Messwert ein klein wenig daneben liegt.
Durch die numerische Integration summiert sich dieser Fehler aber auf.
Stell dir vor das Gerät liegt ruhig am Tisch, aber der Sensor hat einen
kleinen Offset von 0.1°/s. Nach einer Stunde wird das Ding glauben dass
es sich einmal im Kreis gedreht hat, obwohl es sich nicht bewegt hat.
So lange du nicht relativ dynamisch unterwegs bist (z.B. in einem
Flugzeug), musst du dich nicht mit den Eigenarten von Gyroskopen
beschäftigen. Ein dreiachsiger Beschleunigungssensr kombiniert mit einem
dreiachsigen Magnetometer reicht dazu vollkommen aus. Weiter oben habe
ich schon einmal einen Link auf den LMS303 gepostet. Den kannst du auch
als kleines Modul bei Sparkfun kaufen (oder einem europäischem
Distributor).
http://www.sparkfun.com/products/9810http://elmicro.com/de/sfe-sensoren.html
Da du schon den Beschleunigungssensor hast, kannst du auch ein reines
Magnetometer nehmen und mit dem CHR-6d kombinieren.
Reinhard
@Reinhard
Danke für die Erklärung.
Dann ist der Sensor mal nichts für mich ... :(
Ich will auch nicht zwei Sensorboards verbauen, das muß schon einer
alleine sein.
der größere Bruder vom CHR-6d also der CHR-6dm wird das dann mal richten
können vermute ich mal.
Also alles was Gyro sensoren und Beschleunigungssensoren sind, können
die Richtung im 3D Raum nur per Integration ermitteln stimmt das mal?
Warum reicht dann kein einfacher Sensor mit "nur" magnetisch nicht aus?
Du schreibst oben ja komibiniert mit einem 3 Achs Magnetometer
Sorry, aber wenn solche Dinge schon zu schwer sind...san wird das gar
nichts!
Du kannst über den integrierten Beschleunigungssensor den Winkel über
Pythagoras bestimmen...aber eben nur im statischen Fall (bei
Stillstand).
Du hast ja dann einen absoluten Bezugspunkt (die Erdbeschleunigung).
Soll es auch für den dynamischen Fall funktionieren, brauchst Du eben
noch die Gyroskope um die schnellen Änderungen ohne fremde
Beschleunigungen zu erfassen.
Jede IMU (Inertialsensorik) macht das so!
Stichwort Segway oder Quadcopter.
Gruß
sn00py schrieb:> Also alles was Gyro sensoren und Beschleunigungssensoren sind, können> die Richtung im 3D Raum nur per Integration ermitteln stimmt das mal?
Was verstehst du jetzt unter "nur". Bevor es Funknavigation wie z.B. GPS
oder LORAN gab, sind die Flieger damit über den Atlantik geflogen.
Ergänzung von S.7 Kapitel 6.2. Extended Kalman Filter:
1
As of February 26, 2010, all CHR-6d units shipped from CH Robotics come with a built-in Extended
2
Kalman Filter for pitch and roll angle estimation. To maintain compatibility with older devices, pitch
3
and roll angles estimates are not transmitted by default. Pitch and roll angle outputs can be
4
enabled by sending a SET_ACTIVE_CHANNELS packet to the IMU.
Es ist also schon möglich die absoluten Winkel direkt auszugeben.
Man muss es nur vorher einstellen!
Also mit Kommando SET_ACTIVE_CHANNELS die Bits 6 & 7 setzen für Pitch
und Roll-Winkel und das Ding sollte dir die beiden Winkel des Extended
Kalmanfilters rauswerfen. (siehe S.11 chr6d-Datasheet).
Grüße
Ah ok für mich hat sich das mit dem aufsummieren (Integrieren) angehört
als ob das etwas sehr ungenaues wäre ... :)
Also das mit dne Bits 6 & 7 hat funktioniert .... Allerdings hilft mir
ja das Pitch und Roll auch nicht weiter, da mir ja der winkel der z
Achse abgeht (also der Kompass sozusagen) .... ist einfach das falsche
Modul.
Ich werde mir mal den großen Bruder anschauen ...
sn00py schrieb:> der größere Bruder vom CHR-6d also der CHR-6dm wird das dann mal richten> können vermute ich mal.
Der sieht auf den ersten Blick ganz gut aus. Vor allem hat der auch,
genauso wie der CHR-6d, einen integrierten Controller der dir einen Teil
der Arbeit abnimmt.
> Also alles was Gyro sensoren und Beschleunigungssensoren sind, können> die Richtung im 3D Raum nur per Integration ermitteln stimmt das mal?
So in der Art. Gyros muss man eigentlich fast immer integrieren, da man
sich selten für die Winkelgeschwindigkeiten an sich interessiert. Bei
Beschleunigungssensoren hängt das ein wenig davon ab was man damit vor
hat. Für eine Neigungserkennung reichen die Messwerte aus. Falls man
damit aber Trägheitsnavigation betreiben will, muss man die Daten
zweimal integrieren (1* für die Geschwindigkeit, 2* für die Position).
> Warum reicht dann kein einfacher Sensor mit "nur" magnetisch nicht aus?>> Du schreibst oben ja komibiniert mit einem 3 Achs Magnetometer
Das Magnetfeld ist nicht, wie man vielleicht glauben möchte, waagrecht.
Hierzulande ist die vertikale Komponente sogar größer als die
Horizontale (ca. 60° von der Waagrechten). Deshalb muss man die Neigung
kennen, um sie bei der Berechnung kompensieren zu können. Dafür sind die
Beschleunigungssensoren da.
Gruß,
Reinhard
Ok danke nochmal an alle (vorallem Reinhard für die Geduld ;) einem wie
mir das zu erklären )
Ich habe mal den großen Bruder bestellt, und hoffe das damit dann alles
funkt ..
danke noch mal an alle