Archiv verlassen und diese Seite im Standarddesign anzeigen : RN Control + 3 Achsen Accelerometer + Echtzeit
dirtyklaus
22.08.2009, 00:58
Hallo,
habe den Control RN-Contro AVR32 - und den 3 Achsen Accelerometer.
Wenn ich die 3 Achsen über die AD Wandler einlese, dann dauert es sehr lange - zumindest für Echtzeit - bis die 3 Werte im Mega32 umgewandelt sind. Das liegt sicher an der approximativen Wandlung, die dauert halt.
Das ist mir aber zu langsam, denn je größer die Voltzahlen werden umso länger dauert die Wandlung.
Ich möchte über einen angesteuerten Servo - und die echtzeit Lagererkennung des Sensors eine Kamera immer in die gleiche Richtung zeigen lassen - und das nützt nichts wenn die Messung dann 1/2 Sekunde später erst beim Servo ankommt und dieser reagiert.
Gibt es eine Möglichkeit die Wandlung viel schneller vorzunehmen - wer weiß da einen Trick?
LG
Klaus
Suggarman
22.08.2009, 08:54
Wenn das eine halbe Sekunde dauert, hängt etwas anderes. Die Wandlung geht doch viel schneller.
mfg
Stefan
radbruch
22.08.2009, 09:56
Hallo
Ich bin auch der Meinung, dass bei 1/2 Sekunde Wartezeit nicht nur das Wandeln der analogen Werte bremst.
Zum Thema "schnelle Wandelzeiten mit dem ADC" hatte ich früher schon mal etwas geforscht. Der "Trick" ist ein gnadenlos kleiner Prescaler. Vielleicht hilft das allgemein beim Auslesen von Lage- und Beschleunigungssensoren in schnellen Regelkreisen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=33070
Meine Anwendung war die Kamera am AVR:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33228
Gruß
mic
dirtyklaus
23.08.2009, 19:20
Danke für die schnelle Hilfe, werde es mal probieren.
Gruß
Klaus
dirtyklaus
09.09.2009, 00:29
Hi,
habe mal ein Video gedreht wie es jetzt funktioniert. Alle Werte werden korrekt übertragen und auch empfangen. Hier der Link zum Video:
http://www.youtube.com/watch?v=vkqEk1hFiYE
Gruß - Klaus
Guten Morgen Klaus,
das sieht wirklich gut aus. Jedenfalls um einiges besser als bei mir.
http://www.youtube.com/watch?v=It1FpnNcyvc
Könntest Du Deinen Code hier zur Verfügung stellen?
Gruß Peter
dirtyklaus
09.09.2009, 19:48
Hi,
Der mega32 liest die Daten vom XYZ Chip und gibt sie ohne veränderung am RS232 aus (3 Werte, je von 0..360)
Am PC lese ich die RS232 Daten mit PureBasic wieder ein, und die drei Werte landen in x_in, y_in, z_in - noch ungefiltert, also sehr hackelig - wie bei dir auf dem Video.
In PureBasic filtere ich dann die 3 Daten mit einem Tiefpassfilter - das ist nichts anderes als eine Samplekette durch die alle werte durchgeschoben werden. Z.B in einem Array von 10 Samples stehen nun die letzten 10 eingelesenen Werte von X. Wenn ich die 10 Samples addiere und durch 10 Teile erhalte ich den Mittelwert.
Die Anzahl der Samples ist als Variable, da ich damit die Steilheit des Filters einstellen kann. Probier mal 100 als "Tiefpass".
Hier der Code des Tiefpass - in PureBasic, solte aber verständlich sein:
_________________________________
dim count as byte ; Hilfsvar
dim tiefpass as byte ; die Anzahl der Samples
; die Länge/Steilheit des Filters
tiefpass = 10
; jetzt die Arrays in denen die Samples landen
dim array filter_x.w(tiefpass) as word
dim array filter_y.w(Tiefpass) as word
dim array filter_z.w(Tiefpass) as word
; ---------- FILTER 1 ------------------
; alle einen nach links schieben
; ich benutze vom Array die Stelle 0 nicht
; der letzte Werte wird später der neue
For count = 2 To tiefpass
filter_x.w(count-1)=filter_x.w(count)
filter_y.w(count-1)=filter_y.w(count)
filter_z.w(count-1)=filter_z.w(count)
Next count
; den letzten Sample mit dem aktuell eingelesenen wert füllen
filter_x.w(tiefpass)=x_in
filter_y.w(tiefpass)=y_in
filter_z.w(tiefpass)=z_in
; die Summe löschen
sum_x.w=0
sum_y.w=0
sum_z.w=0
; und den Mittelwert bilden
For count= 1 To tiefpass
sum_x.w = sum_x.w+filter_x.w(count)
sum_y.w = sum_y.w+filter_y.w(count)
sum_z.w = sum_z.w+filter_z.w(count)
Next count
; und noch durch die Anzahl der Samples teilen
; und das Ergebnis steht in den folgende Vars:
x_smooth = Abs(sum_x.w / tiefpass)
y_smooth = Abs(sum_y.w / tiefpass)
z_smooth = Abs(sum_z.w / tiefpass)
; voila
_______________________________
Der Nachteil dieses Tiefpasses: Es dauert natürlich bis die BErechnung getätigt ist, und zwar solange wie die Länge des Arrays (tiefpass).
Habe in meinem Code 3 kleine Filter hintereinandergeschaltet - das kannst du auch mal versuchen.
gruß - Klaus
Hallo Klaus,
ich habe mir nun auch einen Tiefpassfilter in meine Software eingebaut. Dabei handelt es sich um eine gleitende Mittelwertbildung über 10 Messwerte. Siehe da, nun ist die Anzeige wirklich OK. Wobei ich die Z-Werte zur Veranschaulichung nicht über einen Tiefpassfilter gebe. Der Unterschied ist klar ersichtlich.
http://www.youtube.com/watch?v=-retG343Vbk
Danke für Deinen Tip
Gruss Peter
dirtyklaus
12.09.2009, 23:12
Das sieht doch super aus. Auch das Z nicht gefiltert ist - ist nicht schlecht. Vielleicht kannst du ja dort einen kleiner Filter nehmen (also nur ein bisschen beruhigen 2-3 Samples).
3 Fragen habe ich noch:
1) Was ist das denn für eine Software in der du das auf dem Monitor anzeigst? Sieht aus wie ein Flugsimulator???
2) Was ich nicht ganz verstehe sind die Werte, die der XYZ Chip ausgibt. Was passiert denn, wenn ich mich um meine Achse drehe? Eigendlich gar nichts - oder?
X und Y sind mir klar - aber was zeigt Z an?
3) wie bekommst du so eine Superqualität auf youtube? Das sieht ja echt scharf aus. Welche Auflösung hat dein Originalvideo und welchen Codec?
Gruß - Klaus
Frage 4) was willst du denn mit den XYZ Daten anfangen?
Guten Morgen Klaus,
die Z-Achse brauche ich nicht. Ich habe sie nur zur Veranschaulichung ungefiltert momentan im Testprogramm gelassen, damit die Filterung klar zu erkennen ist.
Zur Software: Sie ist von mir komplett selber geschrieben. Schau Dir mal meine Web-Seite an, dann weisst Du, um was es da geht.
Die Kamera ist eine normale WEB-Cam, die ich als Werbung geschenkt bekommen habe. Ich erstell den Film dann mit Camtasia. Also wirklich nichts besonderes. Ich muss gestehen, die Auflösung weiss ich gar nicht. Muss ich mal nachschauen.
Gruss Peter
dirtyklaus
13.09.2009, 14:31
Ich glaube die z Achse brauche ich auch nicht - finde ich eher verwirrend - die Daten.
Die Web Site ist ja cool. Da hats du dir ja was vorgenommen. Wow.
Was erzeugt den Campasia für eine Datei? Eine WMV oder eine MOV datei?
Gruss Klaus
Das kannst Du Dir einstellen. Ich erzeuge mir eine AVI. Einzustellen ist auch Bildschirminhalt mit oder ohne Kamera gleichzeitig.
Gruss Peter
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.