Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe mir mal das BeispielVI "Multi-Function-Synch AI-AO" in LV2011 angeschaut: das entspricht so ziemlich genau dem von Lucki gezeigten!
Ich gehe davon aus, das NI BeispielVIs bereitstellt, die auch funktionieren…
Was du bisher leider immer noch nicht mitgeteilt hast, ist die Bezeichnung deiner Hardware!
das Beispiel-VI funktioniert natürlich, aber beim Übertragen auf mein Programm hat etwas anscheinend nicht gepasst. Meinen Versuch habe ich im letzten Post angehängt. Das ganze läuft ohne Probleme, wenn ich Input und Output unsynchronisiert starte.. Verbinde ich die beiden Stränge, so startet der AI-Task anscheinend gar nicht, denn ich erhalte keine Messwerte, obwohl die Schleife durchlaufen wird.
Als Hardware steht mir mittlerweile ein NI cRIO-9074 mit dem AI- NI9234 und AO-Modul Ni9260 zur Verfügung.
ich hab das Gerät bisher nicht benutzt, sondern mit einem cDAQ-9188 getestet. Das war verfügbar und hat eine IEPE-Speisung, also für meine Schalldruckmessung geeignet.
Wenn du so fragst, vermute ich mal, dass das nicht kompatibel ist..
soo.. ich habe mit dem cDAQ-9188 und Ni 9234 weitergearbeitet. Anstatt die Laufzeit mit Mikrofon und Lautsprecher zu bestimmen, habe ich versuchsweise zwei Mikrofone verwendet.
Die Bestimmung der Laufzeit soll über die Anzahl der Samples erfolgen, die zwischen dem Überschreiten eines Schwellwertes bei den beiden Mikrofonen erstellt werden.
Das VI funktioniert zwar, aber die Abweichungen in den Ergebnissen sind sehr groß..
Welche Alternative kommt neben dem Abwarten eines Schwellwertes in Frage, wenn die Hardware keinen Analogtrigger unterstützt?
Der Ultraschallsensor an meinem Raspberry Pi gibt konstante Ergebnisse und kostet dabei nur einen Bruchteil der Hardware, die mir hier zur Verfügung steht... Wäre ich mit dem cRIO-9074 besser beraten?
Zitat:Das VI funktioniert zwar, aber die Abweichungen in den Ergebnissen sind sehr groß..
Was bedeutet "sehr groß"?
Zu deinem VI:
- ein Schieberegister ist nicht initialisiert
- ein Outputtunnel einer Case-Struktur ist "default if unwired"
Beides kann Einfluss auf die Ergebnisse deiner Rechnung haben.
Kannst du mal erläutern, was du da berechnest?
Wofür sind die beiden Schieberegister da? (Es soll ja im Allgemeinen als "gut" gelten, wenn man in Programmen Kommentare hinterlässt…)
Zitat:Der Ultraschallsensor an meinem Raspberry Pi gibt konstante Ergebnisse und kostet dabei nur einen Bruchteil der Hardware, die mir hier zur Verfügung steht...
Warum verwendest du den dannnicht, wenn du damit zufrieden bist?
Zitat:Wäre ich mit dem cRIO-9074 besser beraten?
Das cRIO-Chassis ändert nichts an der Messhardware - nur die Programmierung ändert sich von DAQmx zu Realtime/ScanEngine/FPGA…
die Ergebnisse variieren in einem Bereich +-50% vom erwarteten Wert..
Der untere Strang (Element 3, Signalverlaufsgraph 3) stellt das zweite Mikrofon dar. Sobald ein gewisser Schwellwert überstiegen wird, soll die Schleife verlassen und die Zahl des Samples weitergegeben werden. Schleifeniteration * Samples pro Schleife + Index des ersten Elements, welches den Schwellwert erreicht. Als Bsp.: 8 Schleifendurchgänge * 100 Samples pro Schleife + Sample Nr. 60 = 860. Dadurch erfahre ich, welches Sample die Schwelle als erstes überschreitet.
Die Berechnung für das erste Mikrofon läuft gleich ab, nur dass die case-Strukturen in der Schleife dafür sorgen, dass die Sampleanzahl nur beim ersten Überschreiten der Schwelle berechnet wird. Das hat den Grund, dass die Messung so lange weiterläuft, bis das zweite Mikrofon den Impuls erfasst hat.. Folglich würden die Werte am ersten fortlaufend überschrieben werden.
Nach der Schleife wird nur noch die Differenz der beiden Sampleanzahlen gebildet und mit delta T multipliziert.
Das berechnete v ist lediglich ein Test, die Schallgeschwindigkeit über eine Teststrecke von 1m zu bestimmen.
Das mit dem Wert 0 initialisierte Schieberegister wird beim Durchlaufen des case mit 1 addiert, und dient dann nur dazu, dass der case nicht erneut durchlaufen wird. Das nicht initialisierte Schieberegister habe ich dazu verwendet, die berechnete Sampleanzahl aus der Schleife weiterzugeben. Ohne würde schließlich der Wert 0 ausgegeben werden.
Grüße
03.05.2017, 10:34 (Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2017 10:35 von GerdW.)
ich habe das VI noch etwas überarbeitet und auch deine Verbesserung übernommen, das macht es doch etwas übersichtlicher.
Die Messwerte an sich sind stimmig. Ein Problem ist wohl der sehr improvisierte Versuchsaufbau auf dem Schreibtisch und die kurze Messstrecke.
Zudem ist es wohl problematisch den gleichen Schwellwert an beiden Mikrofonen zu setzen. Den Aufzeichnungen nach ist der Schallpegel an Mikrofon Nr.2 deutlich niedriger, als bei Mikrofon Nr.1.
Besonders bei geringen Lautstärken löst das erste Mikrofon bereits bei der Steigung eines Peaks aus, während das zweite erst kurz vor dem Maximum reagiert. Die Schwellwerterkennung muss also noch angepasst werden, bzw. durch eine Alternative ersetzt werden.. Vlt die Steigung?