PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Normalisierung von Daten eines Beschl.sensors



Snaper
17.07.2011, 15:50
Hallo zusammen,

ich habe folgendes Problem. Wenn ich meinen 3 Achsen Beschleuningssensor auslese, dass schwanken die Werte obwohl der Sensor nicht bewegt wird. Nun ist die Frage wie ich diese Schwankungen ausgleichen kann, denn wenn ich zb die Daten eines Wii-Nunchucks auslese und dieser auf dem Tisch liegt dann ändern sich die Werte nicht im geringsten. Also wie gehe ich so etwas am besten an?

Richard
17.07.2011, 17:24
Hallo zusammen,

ich habe folgendes Problem. Wenn ich meinen 3 Achsen Beschleuningssensor auslese, dass schwanken die Werte obwohl der Sensor nicht bewegt wird. Nun ist die Frage wie ich diese Schwankungen ausgleichen kann, denn wenn ich zb die Daten eines Wii-Nunchucks auslese und dieser auf dem Tisch liegt dann ändern sich die Werte nicht im geringsten. Also wie gehe ich so etwas am besten an?

Macht man in dem z.B. 50 Messungen addiert und das Ergebnis durch 50 geteilt wird Mittelwert Bildung,(Tiefpass). Ob 50 Messungen reichen muss man testen.

Gruß Richard

Snaper
17.07.2011, 17:51
Mittelwertbildung ist mir auch als erstes in den Sinn gekommen aber hab dann befürchtet, dass das die ganze Sache schlicht und ergreifend zu ungenau macht. Da es ja immer etwas dauert bis man die Messungen durch hat und bei einer starken Änderung der G-Werte würde das natürlich auch etwas suboptimal ablaufen oder?

Richard
17.07.2011, 19:52
Mittelwertbildung ist mir auch als erstes in den Sinn gekommen aber hab dann befürchtet, dass das die ganze Sache schlicht und ergreifend zu ungenau macht. Da es ja immer etwas dauert bis man die Messungen durch hat und bei einer starken Änderung der G-Werte würde das natürlich auch etwas suboptimal ablaufen oder?

Klar, aber mit einer Schnellen (Taktrate) µC......Kommt halt auf die Anwendung selber an. "Echtzeit" bezieht sich immer auf die benötigte Zeit, nicht auf die maximal erreichbare kürzeste Zeit.

Gruß Richard

Snaper
18.07.2011, 22:26
Hmm okay das ist schon klar, dass die AD Wandlung ziemlich flott geht aber dennoch scheint mir das etwas zu einfach. Ist das wirklich die übliche Methode vorzugehen wie sie auch zb eine Wii nutzen?

DanielSan
18.07.2011, 23:33
Du kannst den Tiefpass auch per Hardware realisieren. Indem du einen Widerstand und einen Kondensator anschliesst. Wie genau das geht weiss die Suchmaschine die Chuck Norris nicht findet (jedenfalls die US Version davon).

Gruß Daniel

RP6conrad
19.07.2011, 09:19
Man darf nicht vergessen das ein "Tieffpass", hard oder software, nicht nur das Rauschen, aber auch die Bandbreite von das Signal verringert. Beim schnelle G-Aenderungen, kommt dan die Messwerte fiel spater dan die G-Aenderung. Beispiel : ein Balance Roboter. Die Messwerte von Winkelposition darf keine Sekunde hinterlaufen von die Ist-Position, dan ist das Ding lange gecrasht.
Ich sollte erst das Datenblatt von den Sensor ansehen, da gibt schon eine Aussage von Bandbreite und rauschen. Danach kan menn entscheiden welche Bandbreite wirklich notwendig ist, und entsprechend Sample Rate / Mittelwerte einstellen, oder eine Teifpass HW machen.
Da git noch eine einfache SW filter, das ohne grosse Daten Arrays functioniert : Neue Sensorwerte = ADC_Messung* 0.1 + Alte Sensorwerte*0.9. Ist nicht exact einen Mittelwerte Bildung, aber das Ergebnis ist recht gut.

Richard
19.07.2011, 10:03
Man darf nicht vergessen das ein "Tieffpass", hard oder software, nicht nur das Rauschen, aber auch die Bandbreite von das Signal verringert. Beim schnelle G-Aenderungen, kommt dan die Messwerte fiel spater dan die G-Aenderung.

Stimmt natürlich, aber Kompromisse wird man eingehen müssen und bei den Trikoptern die auch mit gleitendem Mittelwert arbeiten, klappt das doch schon ganz gut. Es kommt halt auch auf die Abtastrate und den Rest das Programm Ablaufes an ob schnell genug reagiert wird. Dazu wird auch ein PID Regelkreis gehören, da die Sensoren leider alle einen gewissen Drift haben bleibt auch keine andere Wahl als zu "tricksen". :-(

Gruß Richard

tr7
05.08.2011, 19:22
Hmm okay das ist schon klar, dass die AD Wandlung ziemlich flott geht aber dennoch scheint mir das etwas zu einfach. Ist das wirklich die übliche Methode vorzugehen wie sie auch zb eine Wii nutzen?

Du könntest ein Kalman-Filter verwenden. Hier gibts evtl. sogar Code, den du mal leicht modifiziert testen könntest:
http://forum.mikrokopter.de/topic-5875.html

Im Nao (Aldebaran-Robotics) verwenden wir zur Filterung von verschiedenen Sensordaten auch nen Kalman-Filter. Reagiert immer noch recht schnell auf Änderungen aber eliminiert das Rauschen der Sensorwerte recht gut.

Cheers,
Thomas