Forum: Mikrocontroller und Digitale Elektronik Beschleunigungssensor


von jlange (Gast)


Lesenswert?

Hallo liebe Community,

Erstmal zu meinem Wissenstand,

ich hab Grundkenntnisse in C und im Zusammenhang damit grundlegende 
Erfahrung mit Sensoren.

D.h. Ich habe mal leds Blinken lassen, 7Seg Anzeigen- und LCDs 
beschriftet, Temperaur Sensoren ausgelesen und den ein oder anderen 
Taster verwendet. Allerdings stehe ich momentan in meinem Praktikum vor 
einer Aufgabe die mich zur weißglut bringt.

Und damit kommen wir zu meinem Problem: Ich habe ein hübsches kleines 
9DOF Razor IMU (Arduino). Ich würde jetzt gerne eine Beschleunigung 
auslesen. Das Heisst für mich, wnn ich das Board bewege soll die 
Beschleunigung zu sehen sein un wenn es wieder da liegt soll der Wert 
wieder Richtung 0 gehen.

Ich bin mir nicht sicher ob mein Grundverständnis für 
Beschleunigungssensoren richtig ist denn momentan sehe ich nur Werte die 
der jeweiligen Rotation der Achse ensprechen(Eine Test Firmware ist 
aufgespielt).

Mir geht es hier jetzt garnicht um Codebeispiele oder ähnliches, eher 
darum das ich eine Vorstellung habe wie es funktionieren sollte.

Muss ich den Beschleunigungssensor mit zb Gyro in irgendeiner Art 
"koppeln" oder ... ich bin einfach ein bisschen verzweifelt....

Ich hoffe ihr lest das hier auch wenn es recht viel Text ist und ich 
hoffe, dass ich mein Problem verständlich formuliert habe.

Viele Grüße
jlange

ps.: ich bin auch froh über Stichwörte mit denen ich über Google weiter 
komme.

pps/pss.: Das alles soll später mal zur Positionsbestimmung dienen 
ähnlich wie hier http://www.youtube.com/watch?v=6ijArKE8vKU (ich hoffe 
links sind erlaubt.)

von Jonny O. (-geo-)


Lesenswert?

> denn momentan sehe ich nur Werte die
> der jeweiligen Rotation der Achse ensprechen

bist du sicher, dass du da nicht den Gyro ausliest? Der Gyro gibt dir 
Drehraten zurück.

Gruß

von Jan L. (jan_l)


Lesenswert?

ja soweit die Test Firmware nicht völliger mist ist Sollte es nicht das 
gyroskop sein... Das gibt nochmal Andere Werte.

Und das ist ja auch was ich nicht verstehe, ich dachte der 
Beschleunigungs Sensor sollte standartmäßig Werte zurück geben wie ich 
sie haben möchte.


Vielleicht muss ich in den sauren Apfel beissen und es mal selber 
Programmieren...


Ps.: nicht dass es zu verwirrungen kommt ich hab mich hier angemeldet =)

Viele Grüße

von Ersi (cell85)


Lesenswert?

also  nur für dein Verstädnnis

Beschleunigungssensor (G in m/s²) X Y Z    ... im ideal Fall 0 0 -1G 
wenn du jetzt in die jeweilige Achse wackelst siehst du den Ausschlag 
der einwirkenden Karft.  (-1g weil auf die Richtung Boden 
gerichtete/entgegengerichtete Achse die Erdbschleunigung von 9,81m/sec 
wirkt)

wenn du das Board seitlich hinstellst hast du dann 0 -1G 0
wenn du es schräg hinstellst dann wirkt die Kraft auf mehreren Achsen 
und du musst dir ein Raumzeigermodell vorstellen.

Gyroskope messen die Drehrahte (DPS °/sec - degree per second)... also 
die Geschwindigkeit der Drehung.

wenn du jetzt das Board kurz umd 90 drehst und dann stehen bleibst, dann 
gibts ein ausschlag von bis zu 2000°/s abhängig von deiner in dieser 
Bewegung ausgeführten Drehgeschwindgkeit.


ROLL PITCH und YAW  sind die Winkel des Körpers, die errechnest du mit 
hilfe eines AHRS Algorithmus der entweder das Magnetometer einbezieht 
oder nicht.


Was du beschreibst:

>Das Heisst für mich, wnn ich das Board bewege soll die
>Beschleunigung zu sehen sein un wenn es wieder da liegt soll der Wert
>wieder Richtung 0 gehen.

ist wenn du das board in die hand nimmst und wieder hinlegst so wie es 
war, dann müsstee der ausgangszustand normalerweise wieder dargestellt 
werden.

Wenn du es aber immernoch in der hand hälst, dann ist ja logisch das die 
G-Kraft der Erde immer noch auf die Achsen einwirkt.

wenn du nicht die statische Erdbeschleunigung in deiner Messung haben 
willst, kannst du diese rausrechnen (leichte Vektorrechnung). Dann misst 
du nur die relative Beschleunigung.



PS. ich hab noch ein razor 9dof Board das ich gerne verkaufen würde :D

von Ersi (cell85)


Lesenswert?

www.ccass.h-da.de (ein institut für Inertialnavigation , speziell für 
das was du da vor hast. Die helfen dir sicherlich auch kostenlos weiter 
bei fragen.) ... ich arbeite ja da :D
schau:
http://www.youtube.com/watch?v=v2h0ySEWCy0

von Jan L. (jan_l)


Lesenswert?

Sven ...

einfach danke scon mal =) deine Definitionen waren super und haben mir 
auf jeden fall geholfen. Werd mich morgen mal auf der Seite umschaun =)

vielen dank

edit: eine frage fällt mir da grad noch ein...
in der Arduino Entwicklungsumgebung kann man ja nur .ino und pde oder so 
ähnlich öffnen ....

aber es gibt ein par beispiele die sind in .c datein ... wie bring ich 
die denn auf das board.....

von Pete K. (pete77)


Lesenswert?

Schon mal in das Datenblatt geschaut?

von Jan L. (jan_l)


Lesenswert?

1
The board comes programmed with the 8MHz Arduino bootloader (stk500v1)
2
and some example firmware that demos the outputs of all the sensors. Simply
3
connect to the serial TX and RX pins with a 3.3V FTDI Basic Breakout, open a
4
terminal program to 57600bps and a menu will guide you through testing the
5
sensors. You can use the Arduino IDE to program your code onto the 9DOF, just
6
select the 'Arduino Pro or Pro Mini  (3.3v, 8mhz) w/ATmega328' as your board.

das ist dass einzige was mir sagen könnte wie das geht allerdings weiß 
ichn icht, was sie mit dem terminal programm meinen .... also doch 
vielleicht die cmd aber ich weiß nicht wie ich das dann hoch laden 
kann....

von amateur (Gast)


Lesenswert?

>... im ideal Fall 0 0 -1G

Wir haben hier mal mit einem I²C Beschleunigungssensor gespielt. Der hat 
aber nur auf "echte" Beschleunigungen reagiert. Also in Ruhe auf dem 
Tisch:
0, 0, 0 und nicht 0, 0, -1. Irgendwie stand der auf Delta.

von Ersi (cell85)


Lesenswert?

dieser war dann wohl g-kompensiert also die erdbeschleunigung 
rausgerechnet.

Das macht man folgendermaßen (vereinfacht erklärt)

Man hat eine G-Matrix  3x3

es wird ein Vektor errechnet welcher die einwirkende G-Kraft auf die 
einzelnen Achsen darstellt also ohne relativbeschl..
bspw:
0 0 1
0 1 0
1 0 0

Dann eine zweite Matrix wo die Messwerte reinkommen.

G G G
G G G
G G G

Dann wird der Messwertmatrix die Erdbeschleunigungsmatrix rausgerechnet,
so erhält man dann im groben die G-Kompensierte Matrix.

Ich kann für das Tehema folgende Literatur empfehlen :

1) Der Vater der inertial-sensorik:
http://www.verlag.fraunhofer.de/bookshop/artikel.jsp?v=220250
In dem buch sind alle Algorithmen und verfahrensweisen einfach erklärt! 
Auch wenn es sich kompliziert anhört :) ... Ein muss für jeden der eine 
IMU bauen will und den Algorithmus schreiben möchte samt Kompensierung, 
Offset etc...


2) auch ganz cool, einfacher erklärter systemaufbau:
http://www.diplom.de/Entwicklung-Implementierung-Softwareplattform-referenzlose-Low-cost-Indoornavigation-Basis-modularen-Systemarchitektur/16193.html

von Jan L. (jan_l)


Lesenswert?

so ich hab mir jetzt mal nen schlitte gebau um die beschleunigung besser 
testen zu können und ich glaube ich habs endlich hinbekommen =)

allerdings wir meine erdbeschleunigung leider mit um die 200 angezeigt 
aber das liegt momentan wohl daran dass das die rohdaten sind...

damit bin ich so vorerst zufrieden =)

Damit würde ich hier vorerst schlussmachen und vielleicht auf ein ganz 
neues Problem kommen....

Bei meinem Gyroskop veränderns sich die werte nicht egal wie schnell 
oder langsam ich es auf nur jede erdenkliche art bewege die werte 
bleiben gleich...

gibt es das problem vielleicht heufiger?

von Ersi (cell85)


Lesenswert?

Ich glaub deine IMU ist kaputt.

von Jan L. (jan_l)


Lesenswert?

... gibts ne möglichkeit das zu testen xD?
Also beim gyro bekomm ich immer diesenoutput:

x= -11823, y= -11823, z= -11823

egal was ich mache...

edit: ok habe grade die selftest funktion gefunden... irgendwas stimmt 
mit dem Gyro nicht... muss jetzt mal schaun ob ich rausfinden was...



ps.: hier hab ich mal die werte die ich jeweils bei meinem 
Beschleunigungssensor bekomme (in den 3 positionen)

x=  22, y= -28, z= 196
x=  -1, y=-277, z=  -9
x=-271, y= -13, z= -41

das sieht eigendlich schon gut aus.

von Ersi (cell85)


Lesenswert?

Hmm in ruhe bekommst du diese beschleunigungswerte?

Kann es sein das du die Offsettwerte geändert hast?

Accel_X, Accel_y, Accel_z, Gyro_X, Gyro_Y, Gryo_Z

-161  141  1108  -2  5  -3
-172  151  1087  0  3  -3
-156  151  1087  0  3  -3
-156  151  1116  -1  4  -3
-166  134  1116  -2  4  -2

schau mal so siehts bei mir aus.

von Jan L. (jan_l)


Lesenswert?

also immoment hab ich noch garnichts groß geändert.

Habe einfach diese test Firmware
(https://github.com/a1ronzo/SparkFun-9DOF-Razor-IMU-Test-Firmware)
die Sparkfun da anbietet drauf gemacht und mir die Werte angeschaut...

von Jan L. (jan_l)


Lesenswert?

also das vordere ist dein Beschleunigungssensor?
off set ist nicht in meinem programm... hab jetzt ein bisschen gesucht. 
Das heisst wohl das es auch nicht verändert wurde...

von Ersi (cell85)


Angehängte Dateien:

Lesenswert?

genau..

ich hab dir mal was angehängt fürs verständnis. Aber ich denk deine IMU 
hat nen schuss.

von Jan L. (jan_l)


Lesenswert?

das schöne daran das ich in einem Praktikum bin ist, bein chef hat mir 
heute ein neues Spielzeug bestellt ArduIMU + V3 hat zwar nur 6dof aber 
ist für meine Vorhaben ja völlig ausreichend.

wahrscheinlich melde ich mich dann nochmal ...

von Micha (Gast)


Lesenswert?

bestell die hier: ist besser und auch wireless wenn man mag
http://www.winsense.de/de/product?info=6

von Jan L. (jan_l)


Lesenswert?

der kleine aber feine unterschied sind die 200 dollar mehr die das nette 
teil kostet ... es geht hier ja erst mal um nen prototyp bei dem 
geschwindigkeit und hohe genauigkeit usw erstmal eine nicht so große 
rolle spielen....

von Ersi (cell85)


Lesenswert?

Ähm ... Beitrag "[V] STM32 IMU 9-DoF AHRS (iNEMO V2 Clon aber mit besseren sensoren)"   180€ !

Ich hab die damals selbst dort gekauft für 200€ (uni projekt)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.