Ich möchte gerne die Drehzahl eines Motors darstellen. Wenn der Motor allerdings stehenbleibt, bekomme ich immer die letzte gemessene Frequenz angezeigt. Ich möchte aber dass beim Stillstand auch die Frequenz Null angezeigt wird. Mein gedankengang war folgender: Ich vergleiche mit einem Schieberegister den aktuellen mit der aus der vorherigen Interation. Dann sind allerdings beide werte mal gleich und mal nicht. Die Anzeige springt dann willkürlich mal auf Null und mal auf die gemessene Frequenz. Ich habe dann noch eine Sequenz eingefügt mit der ich eine Sekunde warte und dann den Wert der alten Iteration weitergebe. Dann wird allerdings die Anzeige auch nur jede Sekunde aktualisiert.
Hat jemand eine Idee???
Klingt konfus was Du da schreibst....
Wie wäre es mit einer "oder" Verknüpfung???
' schrieb:Hat jemand eine Idee???
Ja, sorg dafür das bei Stillstand die Frequenz "Null" ausgegeben wird.
Gruß SeBa
@seBa ist dir langweilig?? hoffe deine beiträge sind nicht alle so geistreich...
@echtzeit vielleicht ist meine schreibweise etwas verwirrend gewesen. also nochmal
- frequenzmessung eines motors
- bei stillstand wird letzte erfasste frequenz angezeigt
- möglichkeit zum "nullen der anzeige"
' schrieb:@seBa ist dir langweilig?? hoffe deine beiträge sind nicht alle so geistreich...
Nein. Ich hab das ernst gemeint...
Warum wird die letzte erfasste Frequenz angezeigt und die ist nicht 0 wenn der Motor steht?
Da du nichts darüber sagtest woher du die Frequenz bekommst, ging ich davon aus, dass du das selbst programmiert hast.
Gruß SeBa
der motor hat einen ausgang in dem abhängig von der drehzahl ein sinus dargestellt wird. je höher die drehzahl desto höher die sinusfrequenz.
mit hilfe eines schieberegisters messe ich die zeitdifferenz zwischen den nulldurchgängen (bzw wegen rauschen im stillstand bei 0,25V).
zum verständnis füge die frequenzmessung bei. da die periodendauer im case(true) berechnet wird und im stillstand der casestruktur nicht mehr in true wechelt, wird immer der letzte wert im true angezeigt.
Hi,
wie wäre es damit, einen "Timeout" beim Einlesen Deines Analogen Wertes zu generieren? Wenn der vorbei ist, also kein Sinussignal nach einer gewissen Zeit mehr kommt, weißt Du, dass Du im Stillstand bist...
Die Sequenz ist übrigens Überflüssig, der Schleifentimer m.E. auch, da der nur Einfluss auf die äußere Schleife hat und die innere ja unendlich weiter läuft...
Hast Du Dir mal die Beispiele von NI zur Frequenzerfassung auf RT-Targets angeschaut? Prinzipiell machst Du ja genau das und da ist das glaub ich ein bisschen eleganter gelöst.
Wenn Du außerdem noch Platz für Hardware hast: Bau einen Schmitt-Trigger zwischen den Ausgang und einen digitalen Eingangskanal der Karte - dann kannst Du einfach bei einer steigenden Flanke einen Counter inkrementieren und in einer parallelen Schleife definiert den Counter auslesen, Rücksetzen etc. Führt zur höchstmöglichen Genauigkeit (die Hysterese vom Trigger mal abgesehen) und gleichzeitig einer Aktualisierungsrate der Anzeige, die frei einstellbar ist...
Grüße,
ch
' schrieb:mit hilfe eines schieberegisters messe ich die zeitdifferenz zwischen den nulldurchgängen (bzw wegen rauschen im stillstand bei 0,25V).
Alleine durch diesen Algorithmus ist es möglich auch Stillstand festzustellen. Nämlich dann, wenn die Zeitdifferenz zwischen zwei Nulldurchgängen größer als eine Sekunde werden würde.
Zitat:zum verständnis füge die frequenzmessung bei. da die periodendauer im case(true) berechnet wird und im stillstand der casestruktur nicht mehr in true wechelt, wird immer der letzte wert im true angezeigt.
Warum verwendest du dann nicht den False-Case als Timeout?
Lass im False-Case einen (nachtriggerbaren) Timer laufen, der den ganzen Messvorgang abbricht, wenn für mindestens eine Sekunde kein neuer Nulldurchgang erkannt wurde.
Hinweis:
Das "Grundrauschen" im Nulldurchgang, das zu Problem beim Erkennen des Timeout führen würde, hast du ja bereits beachtet.
ok, wenn du mir erklärst wie ich einen "nachtriggerbaren timer" erstelle kann ich dies gerne machen
' schrieb:ok, wenn du mir erklärst wie ich einen "nachtriggerbaren timer" erstelle kann ich dies gerne machen
Programmieren?