LabVIEWForum.de
Korrekte Berechnung des Winkels über einen Drehratensensor - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Korrekte Berechnung des Winkels über einen Drehratensensor (/Thread-Korrekte-Berechnung-des-Winkels-ueber-einen-Drehratensensor)

Seiten: 1 2


Korrekte Berechnung des Winkels über einen Drehratensensor - LVAnfaenger - 12.11.2009 03:23

Hallo!

Habe gegruebelt, in welchen Bereich das hier passt. Da ich aber noch nicht fuer den Professionals Bereich freigeschaltet bin, moechte ich hier fragen. Folgendes Problem:
Ich habe vor mir ein Board, das einen Gyro drauf hat. Ein Gyro misst bekannterweise die Drehrate somit erhaelt man die absolute Winkelaenderung vom Ursprung aus gesehen durch Integration.
Ich habe es bereits geschafft sowas in die existierende VI zu integrieren, jedoch ist aus aus irgendwelchen Gruenden nicht genau genug. Am Sensor selber kann es jedoch nicht liegen, da quasi kein Rauschen vorhanden ist (stammt aus dem Automotivebereich). Um das existierende Signal zu integrieren verwende ich das Time Domain Math module und darin die Funktion Integral(Sum[Xdt]). Mit Sum(X) geht es zwar auch, aber beides ist nicht genau. Mit nicht genau reden wir hier von Abweichungen von bis zu 20 Grad bei einer Veraenderung von 90, also ca. 20 Prozent. Das ist eindeutig zu viel...
Der besseren Vorstellung, hier mal der Ausschnit der betreffenden VI.
Es gibt ja noch ein paar andere Methoden, das Integral zu bilden, aber irgenwie versteh ich deren Handhabung nicht...

Ich hoffe ihr koennt mir ein paar Tipps geben.


Korrekte Berechnung des Winkels über einen Drehratensensor - Y-P - 12.11.2009 07:52

Bahn, aber was ich Dir sagen kann ist, dass Du so viele ExpressVIs und lokale Variabeln bei einem "Professional" nicht finden wirst. Wink
Außerdem ist LabVIEW Allgemein -> Application Builder auch nicht der richtige Bereich, darum verschiebe ich Dir jetzt das Thema.
Lad' doch mal Dein VI hoch.

Gruß Markus


Korrekte Berechnung des Winkels über einen Drehratensensor - LVAnfaenger - 16.11.2009 03:38

Hi!

Erstmal Danke fuer deine Antwort! Die VI die ich als PNG geschickt habe, ist eigentlich komplett drauf. Es fehlt lediglich das Ausgaberegister rechts und die Inputs links.
Die Signale werden zuerst Offset und Gain korrigiert und dann ausgegeben. Zusaetzlich zu der ausgabe wollte ich noch den absoluten Aenderungswinkel angeben, da der Output des Sensors Grad/s ist. Also muss dieses Signal integriert werden. Ich wundere mich halt, warum da ein so grosser Fehler entsteht. Theoretisch duerfte das korrekte Ergebnis rauskommen... Hat jemand vielleicht nen Tipp?
Bzw. kann mir jemand kurz die Verwendung der unterschiedlichen Integrationsfunktionen in LabVIEW erlaeutern. Mir wird das durch die Beschreibung in der Hilfe nicht klar...
Die drei Funktionen, die in Frage kommen sind:
- Numeric Integration
- Uneven Numeric Integration
- Integral x(t)

Vielen Dank schon mal!


Korrekte Berechnung des Winkels über einen Drehratensensor - IchSelbst - 16.11.2009 09:28

' schrieb:Mit nicht genau reden wir hier von Abweichungen von bis zu 20 Grad bei einer Veraenderung von 90, also ca. 20 Prozent. Das ist eindeutig zu viel...
Abweichung nach nur unten oder auch noch oben?
Bei nur nach unten tippe ich mal, dass da einfach zu wenige Abtastwerte zur Verfügung stehen. Oder ungleich verteile Zeiten? (Ansonsten hab ich mit Integral nichts zu tun. Muss ich selbst erstmal nachlesen.)


Korrekte Berechnung des Winkels über einen Drehratensensor - LVAnfaenger - 16.11.2009 09:31

Unterschiedlich... auf einer Achse mehr auf der anderen weniger... kann man die Anzahl der Abtastwerte erhoehen?


Korrekte Berechnung des Winkels über einen Drehratensensor - IchSelbst - 16.11.2009 12:05

' schrieb:Unterschiedlich... auf einer Achse mehr auf der anderen weniger...
Naja.

Zitat:kann man die Anzahl der Abtastwerte erhoehen?
Im Prinzip ja. Wenn ich dein Bild richtig interpretiere, ist die Abtastzeit 20ms.

Erstens:
Sind 20ms nicht ein bischen wenig für ein Integral (respektive eine Abtastung)? Wie schnell ändert sich denn dein Signal?

Zweitens:
Ein Integral kann berechnet werden als Summe aus dX*Y. Wobei dX möglichst klein sein sollte. Je größer dX ist, um so treppenförmiger sieht die integrierte Kurve aus - sprich es fehlen Flächenstücke (je nach Integrationsart).

Drittens:
Ich würde eher wie folgt vorgehen: Kurve aufnehmen und erst dann integrieren.


Korrekte Berechnung des Winkels über einen Drehratensensor - LVAnfaenger - 17.11.2009 01:21

' schrieb:Im Prinzip ja. Wenn ich dein Bild richtig interpretiere, ist die Abtastzeit 20ms.

Jo sind 20 ms...

' schrieb:Erstens:
Sind 20ms nicht ein bischen wenig für ein Integral (respektive eine Abtastung)? Wie schnell ändert sich denn dein Signal?

und das Signal duerfte auch mit 20 ms oder langsamer laufen. Das Problem ist, dass das nicht mein "Werk" ist, sondern ich die VI vorgestezt bekommen hab und "mach mal" :-|.


' schrieb:Zweitens:
Ein Integral kann berechnet werden als Summe aus dX*Y. Wobei dX möglichst klein sein sollte. Je größer dX ist, um so treppenförmiger sieht die integrierte Kurve aus - sprich es fehlen Flächenstücke (je nach Integrationsart).

Das ist mir schon klar, habe auch schon versucht die Abtastrate zu erhoehen, aber dann ging einfach gar nix mehr...

' schrieb:Drittens:
Ich würde eher wie folgt vorgehen: Kurve aufnehmen und erst dann integrieren.

Wenn ich das machen koennte waere das gut. Leider handelt es sich hier um eine Echtzeitanwendung und ich kann nicht warten, bis die Kurve fertig ist. Dann muesste ich unendlich lang warten ^^...

Also ich versuch mal die Abtastrate zu erhoehen ohne das das Ding stehen bleibt. Aber der Witz ist ja, dass das System auch mit 20 ms laeuft(wenn mich nicht alles tauescht). Das verifizier ich jetzt und melde mich dann wieder.


Korrekte Berechnung des Winkels über einen Drehratensensor - rolfk - 17.11.2009 09:05

Ich kann IchSelbst nur beipflichten. Bei dieser Abtastrate ist die Genauigkeit sicher nicht gewaltig es sei denn Du schaust hier nach einem Signal das qua Werteverlauf einer Temperaturekurve ähnelt. Temperaturen änderen sich typischerweise mit Bruchteilen von Graden pro Sekunde. Ein sich bewegendes Gyroscope wird da viel grössere Variationen haben. Und mit diesen Express VIs wird es wahrscheinlich schwierig werden um die Schlaufenzeit wesentlich zu erhöhen. Ein anderes Problem ist dass durch den internen Softwaretimer die zeitlich Resolution beschränkt ist.

Theoretisch löst der Timer auf 1ms auf, in der Praxis begnügt sich Windows aber oft mit einer Auflösung von 10 ms. Jedenfalls fände ich eine Hardware timed data acquisition viel besser. Wie werden denn die Daten eingelesen?


Korrekte Berechnung des Winkels über einen Drehratensensor - LVAnfaenger - 17.11.2009 09:12

Hi!

Habe die Abtastrate auf 1ms erhoeht. Sieht jetzt schon reaktiver aus, war aber immer noch ungenau. Habe dann einen Tiefpassfilter realisiert um das ganze zu glaetten... immer noch ungenau!
Die Daten kommen erst ueber SPI an einen uC und der schickt es dann per USB an LabVIEW.
Noch irgendwelche Idee, wie man das machen koennte? Machbar ist das ganze ja, aber obs gut mit LabVIEW geht ist ne andere Frage...


Korrekte Berechnung des Winkels über einen Drehratensensor - IchSelbst - 17.11.2009 09:48

' schrieb:Die Daten kommen erst ueber SPI an einen uC und der schickt es dann per USB an LabVIEW.
Oh.

Ich gehe mal davon aus, dass der Gyros-DingsDa (spricht: was das ist - keine Ahnung) ein kontinuierliches, also zeitlich konstantes Signal liefert. z.B. quasi alle 1ms einen Messwert. Wenn du den Messwert aber über USB nach LV weiterleitest, bekommst du Zeitverzögerungen, die auch noch variabel sind und unbekannt! D.h. dein dt, das in dem Express-VI berechnet wird, entspricht nicht dem wahren dt zum Zeitpunkt des Samplens des Messwertes durch den µC - somit kommt es zu Abweichungen. Bei 20ms mehr als bei 1ms.

Was gewährleistet sein muss ist folgendes: t und Y müssen übereinstimmen, sodass dt zu den beiden Y-Werten passt.

Du musst bestimmte Festlegungen treffen: Der µC samplet alle 1ms einen Wert und schickt den zu deiner Applikation. Die weis jetzt, dass die Y-Werte ein dt von 1ms haben. Nun kannst du die Intergartion auch von Hand machen: Einfach Summe = dt*Y. (Ich würde hierzu ein paralleles SubVI machen, das nur die Y-Werte liest und dann z.B. als 100er-Pakete per Queue weitergibt - und das so schnell wie möglich.) Eine zeitunkritische Hauptschleife würde dann die Intergartion mit diesen 100er-Paketen machen.