Da ich am Anfang mal eine nebensächliche Bemerkung in diesem Threat gemacht habe, werde ich seit Wochen mit Mails "Sie haben eine neue Nachricht.." zu diesem Thread malträtiert. Das Bemerkenswerte an diesem Thread ist ja, daß bei den 29 Beiträgen kein einziges richtiges VI dabei ist, also vor allem nicht von johannes selbst, und deshalb zieht sich alles in unendliche Länge.
Also will ich es mal mit einem VI versuchen. Dazu eine Vorbemerkung.
Es gibt zwei Arten, die Impulsfrequenz zumessen:[list=1]
[*]Zählen der Impulse über ein definierte Zeit<>
[*]Messung der Periodendauer zwischen den Impulsen<>
[st]Bei Methode 1 brauche ich innerhalb der Messzeit 100 Impulse, um die Frequenz auf 1% genau zu ermitteln. Hier beträgt die Messzeit 10ms, die Encoder-Messfrequenz ca. 36 kHz. D.h. es fallen ca. 360 Impuse an, der Messfehler ist ca. 0.3%
Bei Methode 2 stehen mir ebenfalls 10ms Messzeit zur Verfügung, obwohl eine Messzeit von ca. 1/36kHz bereits ausreichen würde. Es liegt deshalb nahe, die gesamte Messzeit zu nutzen und von allen ca. 360 gemessenen Periodendauern (innerhalb der 10ms) den Mittelwert zu bilden, so daß ich eine wesentlich größere Genauigkeit erhalte. Bei einem Masterclock von 20MHz ist die dann erreichbare Genauigkeit ca. 2 Zehnerpotenzen besser als mit der Zählmethode.
Hinzu kommt noch, daß das Erfassen der Peridendauern extrem enfach ist. Es ist die ungleich bessere Methode, ohne Routing- und Synchronisations-Komplikationen.
Hier ein ungestetes und betimmt mit etlichen Fehlern behaftetes VI, aber die Richtung müßte stimmen.
Erläuterungen zum VI:
Die Daten werden normal gelesen, Samplerate 20kHz kontinuierlich, Auslesen aus dem Puffer immer 100 Stückweise, wobei von diese Werten sofort der Mittelwert gebildet wird. Die Lesefrate in der Schleife ist 100Hz. Das VI Lesen wartet immer so lange, bis wieder 100 daten im Puffer sind.
Nach jedem Datenlesen werden
Alle Daten aus dem Lesebuffer mit den Periodendauern geholt. Das ist ein Array mit ca. 360 Peridendauern. Mittelwertbildung und Umrechnung in U/min setzte ich als Verständlich voraus. Dieses VI Lesen stört die Datenerfassung der Analogen Messwerte überhaupt nicht, denn es wartet nicht. Entweder es sind Periodendauern im Buffer, dann liest es aus was drin ist ohne zu warten, oder es ist nichts im Buffer, dann wartet es bis zum Timeout. Da dieser aber Null ist, wartet es ebenfalls nicht. Der Timeout-Fehler ist abzufangen, die Impulsperiode habe ich in diesem Fall auf Inf gesetzt, d.h die angezeigte Drehzahl ist dann Null.
Drehzahlmessung.vi (Größe: 18,85 KB / Downloads: 239)