LabVIEWForum.de - Durch Boolesches Signal Impulsdauer Messen

LabVIEWForum.de

Normale Version: Durch Boolesches Signal Impulsdauer Messen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

Ich hab da mal ein großes Anliegen und hoffe ihr Könnt mir da Helfen. Ich bin Student und arbeite eben an einem Projekt. Bin auch ein neuling in Labview und arbeite damit erst seit 2 Wochen.

Nun, ich versuche seit 4 Tagen eine Lösung für mein Problem zu finden, leider vergebens.

Zunächst einmal zu dem Versuchsaufbau, damit ihr überhaupt wisst worum es geht. Ich habe zwei Gleichstrommotoren, einer wird als Motor und der andere als Generator betrieben. Beide Motoren sind über eine Welle verbunden. Im Grunde ist eine Teilaufgabe von mir das Drehmoment durch die Verdrehung der Welle zu bestimmen. An jedem ende der welle befindet sich eine Lichtschranke mit einer Segmentscheibe. So erfasse ich also 2 Analoge Signale.

Im Grunde muss ich die Signalverschiebung messen.

[Bild: loc_eps_pulsewidth.gif]

Je mehr sich die Welle verdreht so sind also weiter die Signale von einander entfernt.

Ich habe das ganze vorerst Simuliert mit einem Verschiebungswinkel von 90°, damit man alles schön erkennt.
über ein NOR FlipFlop setze ich zu erst das Signal (Boolesches Signal) vom ersten analogen Signal.
Anschließend rücksetze ich den FlipFlop sobald das zweite analoges Signal anliegt. So bekomme ich ein Boolesches Signal. Jetzt ist meine Aufgabe die Länge dieses Impulses zu Messen. Dadurch kann ich den Verdrehwinkel nämlich bestimmen.

Ich habe versucht durch dieses Boolesche Signal zu erst einen Digitalen verlauf zu erstellen, welches ich dann in ein analoges Signal umgewandelt habe um dann die Impulsdauer zu bestimmen. Leider funktioniert das nicht so. Der Timing und Übergangsmesser gibt mir dann einen Fehler aus. Die Amplitude wäre Null. Wie schon erwähnt bin ich seit 4 Tagen nur an diesem Problem am werklen und bin am verzweifeln. Ich hoffe ihr könnt mir da Helfen.

Meine Hardware ist NI USB 6009.

edit: Es wäre für mich vorteilhafter auf positive Flanke alles zu steuern, jedoch habe ich da überhaubt keine Ahnung wie ich das machen soll.
Hallo Vitja,

lt. ni.com verfügt die USB6009 bei den DIOs nur über Softwaretiming, d.h. du kannst nur Einzelwerte abfragen und dies auch nur so schnell und so genau, wie es das Betriebssystem zulässt. Bei Windows wirst du da nicht besser als 1ms werden. Damit dürfte die zur Verfügung stehende Messtechnik einfach nicht genau genug für diese Art Messung zu sein. Du kannst ja mal einfach überschlagsmäßig die geforderte Zeitauflösung berechnen: Drehzahl der Welle * Segmente pro Umdrehung * benötigte Auflösung beim Winkelversatz -da ist man ruck-zuck im höheren kHz-Bereich...

Noch was:
- Du verwendest Lichtschranken (ist üblicherweise so), hast damit also digitale Signale und keine analogen. Selbst wenn du die AIs der USB6009 verwendest, bekommst du maximal 48kS/s, d.h. 24kS/s pro Kanal bei zwei Lichtschranken. Rechne durch, ob dir das ausreicht, bevor du überhaupt anfängst zu programmieren!
- Wenn du zu programmieren anfängst, dann richtig und ohne ExpressVI (für maximale Mess-Geschwindigkeit)...
Hallo GerdW,

Ich bedanke mich für so eine schnelle Antwort. Wie du schon erwähnt hast, ist man ruck-zuck im höheren KHz bereich. Dies wurde mir jedoch erst später bewusst, sodass ich gezwungen war die Drehzahl des Motors so weit runter zu drehen das die Abtastfrequenz eingehalten wird. Leider habe ich dort auch keine andere Hardware zu Verfügung.

Die Eigentlich Aufgabe bei uns an der Uni ist es mit labview zu Arbeiten, Messwerte aufnehmen und verarbeiten, also nur sinngemäß. So habe ich die auch erfüllt, nur für das oben beschriebene Problem fand ich keine Lösung, da wie du schon beschrieben hast liegt es an der Hardware, windows bzw. der geforderte Zeitauflösung.

So wurde ich jetzt bestätigt, das ich diese Messung mit den mitteln die mir zu Verfügung stehen nicht ohne weiteres verwerten kann.

Da ich ja ein Neuling bin, kannst du mir vielleicht nochmal erkläre wie du das meinst

"- Wenn du zu programmieren anfängst, dann richtig und ohne ExpressVI (für maximale Mess-Geschwindigkeit)..."

also wie meinst du das ohne ExpressVI
Hallo vitja,

damit meint Gerd, genau wie er es geschrieben hat, dass man keine ExpressVIs benutzen soll. Diese sind groß und langsam. Darüber hinaus kann man alles, was ein Express VI kann auch durch Zusammenschalten von einzelnen Elementen erstellen. Und dann hat man auch genau die eine Funktion, die man braucht.

ExpressVIs sind deine beiden "Signal simulieren" Blöcke und der eine "Timing und Übergangsmessung" Block. Die kannst du auch durch einfache, kleine, schnelle Elemente ersetzen.

MfG Carsten
Ich bedanke mich für eure Hilfe

MfG
Vitja
Referenz-URLs