LabVIEWForum.de
Frequenzteiler mit Counter - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Frequenzteiler mit Counter (/Thread-Frequenzteiler-mit-Counter)



Frequenzteiler mit Counter - Malavie - 29.02.2012 08:28

Hallo zusammen,

ich versuche, mit einer PCIe-6259 (zwei Counter) durch eine einzige Zeitmessung eine gemittelte Frequenz zu messen. Da die Einzelpulsdauer meines Signals von Puls zu Puls leich variiert möchte ich z.B. die Zeit bestimmen, die 1000 Pulse benötigen. Dabei ist es jedoch wichtig, dass ich genau die Zeit zwischen der ersten ansteigenden Flanke und der 1000stren steigenden Flanke messe.

Eine einfache Möglichkeit sehe ich darin, mit einem Counter einen 1:1000-Teiler zu realisieren und dann nur noch die Pulsweite des Ausgangs zu messen (z.B. mit dem CI-Pulse Width.vi).

Nun möchte ich erst einmal wissen, wie ich den Teiler realisieren kann!

Das zweite Problem für mich ist, wie richte ich den Teiler ein, so dass er mit dem Zustand "low" startet, dann nach der ersten ansteigenden Flanke meines Messignals auf "high" wechselt und nach der 1000sten ansteigenden Flanke wieder auf "low" fällt.

Für die Frequenzbestimmung ist es natürlich egal, wann und wie das geteilte Signal losläuft, da es ja periodisch ist und jede Periode zur Messung geeignet ist. Ich möchte meine Routine jedoch so flexibel gestalten, dass ich auch sehr niederfrequente Signale ohne große Zeitverzögerung messen kann. Hier könnte es passieren, das die Periodendauer des geteilten Signals viele Minuten dauern kann und wenn die Messung jetzt erst bei der zweiten Periode des geteilten Signals beginnt dann habe ich eben einige Minuten ungenutzte Wartezeit.

Vielen Dank schonmal für Eure Hilfe


RE: Frequenzteiler mit Counter - Achim - 29.02.2012 09:34

(29.02.2012 08:28 )Malavie schrieb:  Da die Einzelpulsdauer meines Signals von Puls zu Puls leich variiert möchte ich z.B. die Zeit bestimmen, die 1000 Pulse benötigen.

Ich glaube, ich verstehe dein Problem nicht ganz...warum misst du denn nicht einfach die 1000 Pulse ("number of samples") und ermittelst dann die Zeit?
[attachment=38868]

Und egal wie du es angehst, bei niederfrequenten Signalen kann es so aussehen, als ob deine Anwendung "steht", d.h. das sollte dem Anwender irgendwie mitgeteilt werden!

A.


RE: Frequenzteiler mit Counter - Malavie - 29.02.2012 12:15

(29.02.2012 09:34 )Achim schrieb:  Ich glaube, ich verstehe dein Problem nicht ganz...warum misst du denn nicht einfach die 1000 Pulse ("number of samples") und ermittelst dann die Zeit?

Wahrscheinlich sollte ich mein Ziel genauer erläutern:
Ich möchte den Mittelwert einer Signalfrequenz bestimmen. Das Signal ist digital (TTL) und seine Frequenz schwankt ein wenig. D.h. jede einzele Periodendauer t ist nicht genau t = 1 / f , sondern mal ein bischen größer und mal ein bischen kleiner. Mit "Mittelwert der Frequenz" meine ich jetzt, dass ich nicht die Periodendauer eines Pulses messe sonderen eben gleich die von n Pulsen, z.B. 1000 Pulsen. Die Frequenz berechne ich dann aus f = n / t.

Wenn ich die VIs zur Frequenzmessung richtig verstanden habe messen die immer nur einen Puls aus und berechnen mit der Genauigkeit der vorhandenen Zeitbasis die Frequenz. Ich kann nun mehrere Samples davon erstellen und nachher selber alle Einzelzeiten aufaddieren. Dann mache ich allerdings einen erheblich größeren Messfehler als wenn ich gleich die Zeit zwischen dem ersten und dem 1000sten Puls mit der internen Zeitbasis ausmesse.

Dass während der Messung nichts am Frontpanel passiert kann ich dem Bediener schon vermitteln, das ist nicht mein Problem.

Vielen Dank für die schnelle Antwort


RE: Frequenzteiler mit Counter - Achim - 29.02.2012 13:05

(29.02.2012 12:15 )Malavie schrieb:  Dann mache ich allerdings einen erheblich größeren Messfehler als wenn ich gleich die Zeit zwischen dem ersten und dem 1000sten Puls mit der internen Zeitbasis ausmesse.

Hm...du willst sehr genau messen...dann aber eine Mittelung machen. Dann kann man sich das genaue Messen doch auch schenken, oder?

Zum eigentlichen Thema:
Wenn ich dich richtig interpretiere, willst du den Teiler auch mit der Karte realisieren. Dann stützt sich der Teiler auf die gleiche Zeitbasis wie die von mir vorgeschlagene Methode. Unterscheidet sich der Fehler der "addierten Einzelmessungen" vom Fehler einer "Gesamtmessung" so sehr? Und wie groß sind deine Frequenzen? Lohnt sich der Gewinn an "weniger Fehler" in Bezug auf die Zeitbasis (20MHz bzw. 80MHz) überhaupt?

Hast du dir im ExampleFinder mal die Beispiele
Meas Dig Freq-Buffered-Finite-Large Range 2 Ctr.vi
und
Meas Dig Frequency-Buffered-Finite-High Freq 2 Ctr.vi
angeschaut?
Bei ersterem kann man auch einen Teiler angeben!
Viel Erfolg!

A.


RE: Frequenzteiler mit Counter - Malavie - 29.02.2012 16:41

(29.02.2012 13:05 )Achim schrieb:  
(29.02.2012 12:15 )Malavie schrieb:  Dann mache ich allerdings einen erheblich größeren Messfehler als wenn ich gleich die Zeit zwischen dem ersten und dem 1000sten Puls mit der internen Zeitbasis ausmesse.

Hm...du willst sehr genau messen...dann aber eine Mittelung machen. Dann kann man sich das genaue Messen doch auch schenken, oder?
Das kann man so einfach nicht sagen! Es gibt Messmethoden, die ein stark rauschbehaftetes Signal liefern aber im statistischen Mittel sehr genaue Werte ermitteln. Ein Beispiel ist die Durchflussmessung mittels Wirbelfrequenzzählung. Die Periodendauer der Wirbelablösung hinter einem Störkörper kann um etliche Prozent schwanken. Wenn man dieses Signal aber über hunderte Perioden mittelt ist der berechnete Durchfluss deutlich besser als 0,5% vom Messwert. Das gleiche macht man sich häufig bei analogen Signalen zunutze, wenn sie digitalisiert werden sollen. Man überlagert einem Signal ein Rauschen, welches deutlich größer als die Auflösung des Wandlers ist (macht es damit also schlechter, als es der Wandler messen könnte) und filtert dieses Rauschen nach der Digitalisierung auf digitale Weise wieder heraus. Damit erhält man z.T. auch deutlich höhere Auflösungen als sie der Wandler direkt hat.

(29.02.2012 13:05 )Achim schrieb:  Zum eigentlichen Thema:
Wenn ich dich richtig interpretiere, willst du den Teiler auch mit der Karte realisieren. Dann stützt sich der Teiler auf die gleiche Zeitbasis wie die von mir vorgeschlagene Methode. Unterscheidet sich der Fehler der "addierten Einzelmessungen" vom Fehler einer "Gesamtmessung" so sehr? Und wie groß sind deine Frequenzen? Lohnt sich der Gewinn an "weniger Fehler" in Bezug auf die Zeitbasis (20MHz bzw. 80MHz) überhaupt?
Das lohnt sich in meinem Fall deshalb, weil ich das Programm sehr flexibel gestalten will. Die Zeitmessung funktioniert ja so, dass innerhalb des gewünschten Zeitintervalls die Zahl der Pulse der Zeitbasis gezählt werden und am Ende mit der Periodendauer der Zeitbasis multipliziert wird. Da die Zeitbasis auf der Messkarte aber asynchron zu dem zu messenden Zeitfenster ist kann man den Anfang und das End je nur auf eine Pulsbreite genau bestimmen. Bei einer Zeitbasis von 20MHz sind das bei jeder Messung am Anfang und am Ende +-0,05us, zusammen also eine Zehntel Mikrosekunde.

Ich möchte nun Pulsweiten von einer Stunde bei Berücksichtigung von nur einem Puls bis hin zu Pulsweiten von 0,1ms und Berücksichtigung von 10^7 Pulsen messen (entspricht einer Messzeit von 1000s) . Im ersten Fall ist die Messung eines Pulses natürlich einfach und wäre so genau, wie es die Karte nur kann. Würde ich im zweien Fall aber 10^7 Messungen mit einer Messunsicherheit von zwei Pulsen der Zeitbasis (0,1us) machen dann hätte ich bereits einen Gesamtunsicherheit von etwa 0,1% (10^7 * 0,1us / 1000s * 100%) nur durch diese Art der Zeitmessung. In der Größenordnung sollte aber bereits der Fehler meiner gesamten Messanlage sein. Mache ich das selbe mit einem Teiler und nur einer Zeitmessung so liegt der Fehler bei 10^-8% (0,1us / 1000s * 100%), was dann getrost vernachlässigt werden kann.

(29.02.2012 13:05 )Achim schrieb:  Hast du dir im ExampleFinder mal die Beispiele
Meas Dig Freq-Buffered-Finite-Large Range 2 Ctr.vi

Super! Das ist genau das VI, das ich suche. Ich habe es zwar heute Morgen beim durchforsten der Hilfe gesehen, aber nicht so recht verstanden, was es macht. Es ist hier zwar für einen anderen Zweck geschrieben, tut aber exakt das, was ich will. Das schöne ist, dass ich mich nicht um die interne Verdrahtung kümmern muss. Der Ausgang des Signalteilers wird ohne mein Dazutun direkt auf das Gate des Zeit-Counters geschaltete und die Zeitbasis wird auch noch nach meinen groben Vorgaben optimal gewählt.

Vielen Dank, Du warst mir eine große Hilfe.


RE: Frequenzteiler mit Counter - Achim - 01.03.2012 06:57

(29.02.2012 16:41 )Malavie schrieb:  Vielen Dank, Du warst mir eine große Hilfe.

Dance Soso...freut mich!

Allerdings war dein kleiner Ausflug in die Betrachtung der Messunsicherheit für mich auch sehr interessant. Du hast da deutlich mehr Ahnung als ich...dass muss ich in einer ruhigen Minute mal verinnerlichen!