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!
04.12.2007, 15:41 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2007 20:57 von jg.)
ich als blutiger Anfänger habe folgendes Problem:
Ich möchte den Durchfluss in einer Leitung messen und mein Messgerät besteht aus einer Turbine, die nur ein Signal pro Umdrehung liefert. Nun hab ich das Gerät an den Counter-Eingang von meinem popeligen USB-6008 angeschlossen. Der MAX hat nun automatisch das angehängte VI erstellt, das die Counts sprich Umdrehungen ausgibt. Funktioniert auch soweit alles prima. Ich möchte aber nicht die Ereignisse zählen, sondern wie gesagt den Volumenstrom messen. Ich stell mir das so vor, dass ich die Counts innerhalb einer definierten Zeiteinheit (10s?) zähle und als Ergebnis Counts/s bzw. nach Umrechnung mL/s erhalte. Geht das? Und wenn ja, wie?
Ach ja, ich verwende LV 8.0.
Der MAX hat das erstellt? Sieht mir eher wie ein Standard-Example aus
Das von dir gewünscht Verhalten ist gut umsetzbar, allerdings nicht mit Flankenzählung. Nehme stattdessen den Counter für Frequenzmessung (auch in den LV Examples zu finden). Dann bekommst du gleich die Frequenz des Signales ausgespuckt und brauchst dir keinen Kopf über Zeitmessung zu machen.
' schrieb:Der MAX hat das erstellt? Sieht mir eher wie ein Standard-Example aus
ok, über den MAX bin ich zu dem beispiel gekommen :-)
' schrieb:Das von dir gewünscht Verhalten ist gut umsetzbar, allerdings nicht mit Flankenzählung. Nehme stattdessen den Counter für Frequenzmessung (auch in den LV Examples zu finden). Dann bekommst du gleich die Frequenz des Signales ausgespuckt und brauchst dir keinen Kopf über Zeitmessung zu machen.
der usb 6008 unterstützt aber leider nur flankenzählung (nur falling edges), wenn ich das richtig verstanden habe. geht das auch noch irgendwie anders?
' schrieb:Was? Ein Counter ist doch ein Counter... Schonmal probiert, oder vermutest du nur? Würde mich ja sehr wundern...
Anders wird es mehr als ungenau, weil du die Zeitmessung nicht gebacken kriegst.
Doch, schau mal auf die NI-Seite oder lass dir im NI-ExampleFinder nur Beispiele anzeigen, die auch für die 6008 sind, die 6008/6009 können bei Counter-Messung nicht sonderlich viel!
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Wow, das ist ja ein Ding... Wieso wird der Rest nicht unterstützt? Das ist doch nur ein Verlinken eines Taktes mit dem Counter...
Zurück zum Thema: Was mir dazu einfällt, wäre eigentlich nur, das Signal nicht mit einem Counter zu messen, sondern nur über einen digitalen Input mit entsprechend hoher Rate (Hardwaretiming) abzutasten und das Ergebnis dann auszuwerten. Wenn du die Rate kennst, weißt du auch die Zeitintervalle zwischen den Messpunkten. Oder gleich als Waveform messen, dann hast du die Zeitinfo dabei.
' schrieb:Dann doch wohl eher über Software-gesteuert 10 s zählen, und mit den mgl. Fehlern muss man dann halt leben.
Danke erstmal für eure Einschätzungen. Aber dumm gefragt, wie würde ich das konkret machen... softwaregesteuert, d.h. von der Programmierung her? Hab da keine Beispiele gefunden.
MfG
Markus
05.12.2007, 16:40 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2007 16:41 von monoceros84.)
Also wenn Hardwaretiming nicht geht, bleibt nur eins: Erzeuge eine Sequenz aus 3 Frames. Im ersten Frame startest du den Counter (DAQmx Start), im zweiten Frame fügst du eine Warte-Zeit ein (Wait (ms) aus Programming -> Timing) und im dritten Frame liest du den Counter-Wert (DAQmx Read).
Dann hast du die Pulse in deiner spezifizierten Wartezeit und kannst die Frequenz berechnen. Zumindest so ungefähr
Geht auch mit nur einem oder gar keinen Frames, aber so ist's besser zu erklären und funktioniert mit Sicherheit