Hallo zusammen,
ich erfasse über NImyDAQ ein Signal, welches anschließend gefiltert wird.
Anschließend benutze ich das Peak Detector.vi um die Spannungsspitzen zu extrahieren.
Nun möchte ich die Frequenz wissen, also wie oft die Peaks auftauchen, bzw. die Zeitdauer zwischen zweier Peaks ermitteln.
Ich habe zwar ähnliche VI's gefunden, welche mit dem DAQmx Counter realisiert worden sind.
Ich suche hier allerdings nach einem Weg ohne dieses VI.
Wäre nett wenn ihr mir weiterhelfen könntet!
Viele Grüße,
Lars
Hallo lars,
Zitat:Anschließend benutze ich das Peak Detector.vi um die Spannungsspitzen zu extrahieren.
Nun möchte ich die Frequenz wissen, also wie oft die Peaks auftauchen, bzw. die Zeitdauer zwischen zweier Peaks ermitteln.
Der PeakDetector gibt die Position und Amplituden der Peaks sowie eine Trefferanzahl aus.
Das sollte doch ausreichen, um zu wissen, "wie oft die Peaks auftauchen" und die "Zeitdauer zwischen zwei Peaks" zu berechnen…
Guten Rutsch!
Hi,
mir fehlt dazu ein Beispiel.
Ich bin schon ganze 2 Tage am recherchieren, aber leider nicht fündig geworden.
Hat hier jemand ein Beispiel bei welchem Peaks gezählt werden?
Grüße, Lars
Hallo Lars,
Kontexthilfe aufmachen, Maus auf die PeakDetector-Funktion und dann den Ausgang Trefferanzahl mit einem Inidcator verbinden…
Ansonsten:
VI mit einem Beispiel-Signal erstellen (Signal in einem Graphen darstellen lassen, Rechtklick auf den Graph: Werte als Standard verwenden, VI speichern) und hier anhängen. Und uns das gewünschte Ergebnis bei diesem Signal mitteilen…
Ein glückliches neues Jahr!
Hallo zusammen und ein gutes neues Jahr!
Habe nun mal ein VI angehängt.
Am Eingang wird über myDAQ eine Spannung erfasst, dann gefiltert und im Chart dargestellt.
Nochmal zur Info, ich will ich wissen, wie viele
Peaks insgesamt und in X Sekunden gefunden
werden. X soll man dabei selbst auswählen können.
Viele Grüße,
Lars
Hallo Lars,
das mit dem typischen Signal hat zwar nicht geklappt, aber man kann auch so helfen:
Zitat:wie viele Peaks insgesamt
Du musst dir die bisher aufgetretenen Peaks merken und die neu gefundenen hinzuaddieren.
Wie merkt man sich Werte in einer Schleife? Richtig: Schieberegister…
Zitat:in X Sekunden gefunden werden. X soll man dabei selbst auswählen können.
Du musst dir die Peaks der letzten X Sekunden merken.
Wie merkt man sich Werte in einer Schleife? Richtig: Schieberegister…
Besonderheit hier: Dein DAQAssi (den ich mir mangels DAQmx nicht anschauen kann) wartet Y Sekunden pro Aufruf. Um also die Werte für X Sekunden zu addieren, musst du dir die letzten X/Y Werte in einem Array merken - ein Ringbuffer ist da das passende Konzept. Und LabVIEW bietet dir dafür auch eine fertige Funktion namens DataQueuePtByPt…
Hallo,
ja das mit dem Schieberegister hab ich mir schon gedacht.
Von der Logik her, hätte ich mir das halt so gedacht:
Variable a = true
Variable b = 0
wenn Signal != 0 dann a = true (hier evtl. eine Zeitverzögerung)
immer wenn a von false auf true springt erhöhe b um 1
Ich muss mal schauen was der DataQueuePtByPt macht. Sagt mir nichts.
Viele Grüße,
Lars
Hallo Lars,
Zitat:immer wenn a von false auf true springt erhöhe b um 1
Auch dafür gibt es schon was:
PtByPt-BooleanCrossing!
Auch wenn ich nicht weiß, was du mit a und b vor hast…
(Hier noch
die DataQueue)
Zitat:das mit dem Schieberegister hab ich mir schon gedacht.
Warum nutzt du es dann nicht gleich?
Hi,
gibt es irgendwo ein gescheites Beispiel?
Ringbuffer sagt mir nichts und mit dem Beispiel aus Labview kann ich nichts anfangen.
Hab nochmal ein aktuelles VI drangehängt.
Aber ich weiß echt nicht wie das funktioniert.
Hallo Lars,
Zitat:Ringbuffer sagt mir nichts
Zum Glück gibt es ja
Wikipedia…
Zitat:Hab nochmal ein aktuelles VI drangehängt. Aber ich weiß echt nicht wie das funktioniert.
Du hast es doch programmiert, da solltest du schon wissen, wie es funktioniert (oder zumindest wie es funktionieren sollte)…
Das, was du da programmiert hast, geht jedenfalls voll am THINK DATAFLOW vorbei und wird ganz bestimmt nicht das tun, was du erreichen willst!