Hallo,
ich arbeite momentan mit einer Drehmomentmesswelle, die auch die Drehzahl ausgibt. Dabei werden 60 Impulse pro Umdrehung ausgegeben. Ich kann schon die Drehzahl die durchschnittlich in einer Sekunde(100000 Samples) vorhanden ist durch zählen der Impulse ausgeben. Dadurch habe ich jede Sekunde eine Information über die Drehzahl der Welle. Ich möchte aber gerne zum Beispiel jede Millisekunde oder in noch kleineren Zeitabständen die Drehzahl ausgegeben haben. Ist das mit der Methode möglich? Wie könnte das anders gehen?
Gruß
Hallo Stephan,
Zitat:Dabei werden 60 Impulse pro Umdrehung ausgegeben.
Bei einer Drehzahl von 1000rpm bekommst du jede 1ms einen Puls.
Zitat:Ich möchte aber gerne zum Beispiel jede Millisekunde oder in noch kleineren Zeitabständen die Drehzahl ausgegeben haben. Ist das mit der Methode möglich?
Es wäre möglich, aber kaum sinnvoll…
1. Wie oben in der Beispielrechnung gezeigt, bekommst du bei Drehzahlen unter 1000rpm nicht einmal einen Puls pro ms…
2. Es handelt sich hier um eine quantifizierte Messgröße: du hast entweder N Pulse oder N+1 Pulse. Du kannst also nur quantifizierte Drehzahlen berechnen…
Was ich hier gern mache:
1. Nutze den Counter-Eingang deiner DAQ-Karte, um die Pulse zu zählen. Ist viel einfacher, als ein analoges Signal auszuwerten.
2. Hole den Counter-Stand alle 100ms und berechne anhand dCount/dt die Drehzahl.
3. Mittele die berechnete Drehzahl über einen beliebigen Zeitraum, um eben diese Quantifizierung zu verfeinern.
4. Bei sehr langsamen Drehzahlen (oder wenig Pulsen pro Zeiteinheit) kann man auch einen Digitaleingang verwewnden und die Zeit zwischen den Pulsen messen. Dann wird (für diesen Fall) die Drehzahlberechnung etwas genauer…
Hi Gerd,
danke für die zügige Antwort.
Angenommen ich würde den Countereingang benutzen, dann hätte ich doch das selbe Problem, oder nicht?
Dann bekomme ich die mittlere Drehzahl, die in diesen 100ms auftritt. Wenn diese sich aber dort schlagartig von zum Beispiel 600 U/min auf 0 U/min ändert (gebremst wird), bekomme ich ja trotzdem keine Information darüber, wie sich die Drehzahl zum Beispiel während des Bremsvorganges verhält. Das sehe ich doch richtig, oder nicht? Dafür sind 60 Impulse rein theoretisch zu wenig...
Zu deinem Punkt 4: Ich habe das mit dem Analogeingang in Verbindung mit der Sampleanzahl schon versucht. Das macht rein theoretisch ja Sinn, funktioniert aber noch nicht. Vielleicht geht es ja mit einen Digitaleingang.
Guten Gruß,
Stephan
Hallo Stephan,
Zitat:Angenommen ich würde den Countereingang benutzen, dann hätte ich doch das selbe Problem, oder nicht? Dann bekomme ich die mittlere Drehzahl, die in diesen 100ms auftritt.
Ja, das stimmt.
Aber: du hast ein quantifiziertes Messsignal, welches deine Auflösung begrenzt. Wenn du jetzt die Messzeit verkürzt, reduzierst du deine Auflösung noch weiter. Du musst also einen Kompromiss eingehen zwischen Messdauer und Auflösung…
Zitat:Wenn diese sich aber dort schlagartig von zum Beispiel 600 U/min auf 0 U/min ändert (gebremst wird), bekomme ich ja trotzdem keine Information darüber, wie sich die Drehzahl zum Beispiel während des Bremsvorganges verhält. Das sehe ich doch richtig, oder nicht? Dafür sind 60 Impulse rein theoretisch zu wenig...
Bei 600rpm bekommst du 600 Pulse/s oder 60 Pulse/100ms. Du könntest jetzt einen AI mit 100kHz oder mehr einlesen und die Pulsdauern/-abstände auswerten, um die Drehzahl zu bestimmen. Falls möglich, kannst du auch einen DI einlesen, die erlauben gern mal 1MHz Abtastrate mit passender Hardware; dann bekommst du schonmal 1µs zeitliche Auflösung bei der Pulsauswertung…
Evtl. kann man den Countereingängen noch mehr Informationen entlocken, aber damit habe ich mich bisher nicht ausreichend beschäftigt (mangels Anlass). Bei mir geht es eher um Drehzahlen bis 5000rpm bei 360ppr. Und die bewegte Masse ist so groß, dass ein Abbremsen innerhalb 100ms eigentlich immer nur einen Schadensfall darstellt…
Die Messung der Impulsabstände ist bei Dir in jedem Fall zu empfehlen. Die Basisfrequenz, mit der dies Abstände gemessen werden, hängt von der Messkarte ab. Ich glaube bei den meisten Messkarten ist sie 2,5 MHz, mindestens aber 1 MHz. Die Abstände werden im DAQmx Empfangspuffer fortlaufend als Array gespeichert.
Angnommen du möchtest alle 1ms die Drehzahl aktualisieren. Dann gehe so vor: Lies alle 1 ms die Impulsabstände aus dem Puffer aus. Wie viele Impulsabstände das sind, hängt von der Drehzahl ab.
Bei mehr als 1000 U/min ist mehr als 1 Zeitdauer im Puffer. Die Zeitdauern werden alle summiert und durch die Anzahl der Impulse geteilt (also gemittelt), so dass die relative Genauigkeit von 0.1% (bzw. 0.04 % bei 2.5 MHz Basisfrequenz) auch bei beliebig hohen Drehzahlen erhalten bleibt.
Bei weniger als 1000 U/min ist die Impulsfrequenz weniger als 1000 Hz; es ist dann prinzipiell nicht möglich, alle 1 ms einen Messwert zu bekommen. Das Programm muß aber deswegen nicht geändert werde. DAQmx Read wartet dann automatisch, bis eine Impulsdauer im Empfangspuffer ist. Die Erfassungsschleife mit 1ms Wait wird dann automatisch langsamer.
NB: Eine so hohe Aktualisierungsrate von 1000Hz macht nur Sinn. wenn Du den Wert für Regelzwecke oder für eine nachträgliche Offline-Auwertung brauchst. Für die Visualisierung am Bildschirm würden 50Hz mehr als ausreichen
Moin Gerd,
kann es denn sein, dass diese Drehzahlsignale überhaupt nicht für meine Anwendung gedacht sind?
Ich versuche das oben genannte nochmal.
Gruß,
Stephan
Hallo Stephan,
Zitat:kann es denn sein, dass diese Drehzahlsignale überhaupt nicht für meine Anwendung gedacht sind?
Da ich deine Anwendung nicht (wirklich) kenne, kann ich diese Frage nicht beantworten.
Üblicherweise überlegt man sich ja zuerst, was (und wie) man etwas messen will und besorgt sich danach die passende Messtechnik…
Die Pulse selbst sind dafür gedacht, Drehzahlen und Winkelpositionen bestimmen zu können: meist bekommt man hier ABZ-Quadratursignale geliefert. Zumindest bei den Drehmomentmessnaben, die wir in unseren Prüfständen benutzen!