INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Drehzahlmessung ohne Counter (Analoge Flankenzählung)



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!

20.07.2016, 14:55
Beitrag #1

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo LabView-Gemeinde,

Ich möchte mit einer NI-USB 6210 und LV-Version 2011 die TTL-Signale von Hall-Sensoren zur Drehzahlmessung auswerten.
Zu dem Thema gibt es hier im Forum ja auch schon jede Menge Input. Meist jedoch in Verbindung mit Nutzung der onboard-counter.
Die 6210er hat davon bekanntermaßen 2 Stück. Diese kann ich aus den folgenden Gründen nicht nutzen:

- beide Counter können nicht gleichzeitig genutzt werden; ich müsste also per Software zwischen beiden hin und her schalten (!?)
- ich muss am Ende 3 Sensoren parallel auswerten; die beiden Counter reichen also auch nicht

Da meine Anzahl an Impulsen pro Minute nicht besonders hoch ist (0-600) sollte die analoge Flankenauswertung reichen.
Zu diesem Zweck habe ich das entsprechende Counter_with_AI Beispiel von NI für meine Zwecke angepasst.
Flankenzählung funktioniert problemlos. Bei der Bestimmung der Drehzahlen klemmt es noch ein wenig.

Den bisherigen Stand habe ich als VI angefügt. Ich schicke den Zählerstand durch ein Schieberegister mit Array und vergleiche
den ersten und letzten Eintrag. Das ganze funktioniert im Prinzip. Allerdings bin ich damit aus folgenden Gründen unzufrieden:

- bei 1 Puls/U kann ich nur Drehzahlen in 60er Schritten ermitteln (2 sensoren werden nachher mit 4 Pulsen/ U gefüttert; 1 Sensor weiterhin mit 1 Puls/U)
- ich muss mit Samplingrate, Anzahl der Samples und Arraygröße jonglieren um die Berechnung ordentlich einzustellen

Bei meinen niedrigen Drehzahlen bzw. Impulsanzahlen würde sich also eher die Messung der Zeit zwischen den Impulsen anbieten.
Die oft im Forum geposteten Varianten mit parallel laufendem Timer (s. Anhang) habe ich für meinen Fall nicht zum laufen gebracht.
Da klemmt es dann bei den Schleifen. Ich müsste das jedoch noch weiter untersuchen, um genauere Angaben machen zu können.
Eine andere Idee von mir war es, die Zeit zwischen den Boolean-Wechseln (s. VI) zu messen. Aber das fühlt sich nach Rube Goldberg Code an...

Für weitere Ideen oder Anregungen wäre ich sehr dankbar!

Viele Grüße


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  Counter_with_AI_Drehzahlmessung.vi (Größe: 34,94 KB / Downloads: 243)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2016, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2016 15:41 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo PeWo,

Zitat:bei 1 Puls/U kann ich nur Drehzahlen in 60er Schritten ermitteln
Ja. Ist halt so… Big Grin

Du liest die Werte im 10Hz-Takt ein (100 Samples bei 1kS/s Samplerate). Damit bestimmst du den Zählerstand und bildest die Differenz über die letzten 10 Zählerstände, d.h. im Abstand von 1s. Da du mit diskreten Pulsen arbeitest, ergibt deine einfache Rechnung eben Schritte von 60rpm bei der Drehzahlbestimmung: du hast entweder keinen oder einen Puls pro Sekunde und das ergibt 0rpm oder 60rpm! (Diskrete Messignale ergeben diskrete Auswertungen/Rechenwerte!)
Lösung: über einen größeren Zeitraum auswerten. Nachteil: du hast dadurch mehr Mittelwertbildung, d.h. Tiefpassverhalten…

Zitat:ich muss mit Samplingrate, Anzahl der Samples und Arraygröße jonglieren um die Berechnung ordentlich einzustellen
Ja. Ist halt so.
Was hast du gegen einfache Mathematik einzuwenden?

Zitat:Bei meinen niedrigen Drehzahlen bzw. Impulsanzahlen würde sich also eher die Messung der Zeit zwischen den Impulsen anbieten.
Unbedingt!

Zitat:Da klemmt es dann bei den Schleifen. Ich müsste das jedoch noch weiter untersuchen, um genauere Angaben machen zu können.
Tu das…

Zitat:Eine andere Idee von mir war es, die Zeit zwischen den Boolean-Wechseln (s. VI) zu messen. Aber das fühlt sich nach Rube Goldberg Code an...
Wo misst du da eine Zeit? Ich kann das nirgends im VI sehen…
Du solltest in diesem DBL-Array nicht die Zählerstände speichern, sondern stattdessen die Zeitpunkte der Flanken. Und die wiederum ergeben sich, bedingt durch die feste Samplerate, einfach aus dem Sample-Index: wenn du einen Puls bei Sample 333 hast und einen bei Sample 789, dann liegen dazwischen 789-333=456 Samples. Das ergibt bei einer Samplerate von 1kS/s eben 0.456s oder eine Drehzahl von 131.58rpm. (In diesem Fall wird deine Messgenauigkeit durch die Samplerate limitiert, mit 1kHz kannst du eben nur Pulse bis (theoretisch) max. 500Hz bzw. 30000rpm bestimmen…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2016, 18:01
Beitrag #3

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Die Zeitmessung der Boolean-Wechsel habe ich noch nicht umgesetzt.
War nur so eine Idee, die ich verfolgt hätte wenn es vielversprechend wäre.

Ich werde deine übrigen Hinweise versuchen umzusetzen.

Vielen Dank schon mal!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 10:19
Beitrag #4

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo GerdW (und natürlich alle anderen Mitleser!),

die Entscheidung, ob ein Puls vorhanden ist oder nicht, findet in der For-Schleife und den Case-Strukturen statt.
Wie könnte ich dort den Sample-Index eines Pulses abgreifen? Einen Timer im Tempo der Samplerate parallel laufen lassen und das ganze dann verknüpfen?

Viele Grüße!

PeWo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 10:32 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 10:35 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo PeWo,

Zitat:Wie könnte ich dort den Sample-Index eines Pulses abgreifen?
Nix "abgreifen", einfach "zählen"…

Zitat:Einen Timer im Tempo der Samplerate parallel laufen lassen und das ganze dann verknüpfen?
Wozu einen Timer, wenn du im DAQmx schon einen verwendest?
Du hast deinen DAQmxTask mit 1kHz Samplerate eingerichtet: zwischen 2 Samples liegen also exakt 1ms.
Du fragst pro DAQmxRead genau 100 Werte ab: jeder Datenblock ist also 100ms lang.
Du musst dir also nur merken, wieviele Datenblöcke (zu je 100 Samples oder 100ms) du schon abgefragt hast und das wievielte Sample im aktuellen Block eine Flanke markiert…
Einfach nur "Samples zählen"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 11:04
Beitrag #6

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo GerdW,

danke für die schnelle Antwort!

Die Anzahl der bisher abgerufenen Samples lässt sich ja über die Anzahl der Schleifendurchläufe bestimmen.
10 Durchläufe pro Sekunde mit jeweils 100 Samples. Das passt also soweit.

Beim Zählen der Samples im aktuellen Block stehe ich gerade auf dem Schlauch.

Für Denkanstöße bin ich wie immer dankbar.

Viele Grüße!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 11:13
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo PeWo,

Zitat:Beim Zählen der Samples im aktuellen Block stehe ich gerade auf dem Schlauch.
Du hast da eine (innere) FOR-Loop, mit der du die Samples eines nach dem anderen überprüfst. Und in dieser Schleife gibt es einen "i"-Anschluss…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 11:19
Beitrag #8

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
"i" für "ich habe verstanden" Smile

Danke GerdW!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 15:52
Beitrag #9

PeWo Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jul 2016

2011
2012
DE

10xxx
Deutschland
RE: Drehzahlmessung ohne Counter (Analoge Flankenzählung)
Hallo GerdW,

ich habe deine Hinweise gut umsetzen können.

Der Puls-Index wird bestimmt und aus der Differenz der Indizes die Drehzahl berechnet.

Es ist natürlich der Situation geschuldet, dass die Anzeige zwischenzeitlich immer wieder auf "Null" springt, wenn kein neuer Puls kommt.
Schieberegister (und damit den Auswertezeitraum) vergrößern ergibt das von dir eingangs beschriebene Tiefpassverhalten.

Damit werde ich mich abfinden müssen. Oder etwa doch nicht?

Ich habe das VI mal angefügt und bin für Hinweise jeder Art dankbar.

Vielen Dank im Voraus!

Gruß
PeWo


Angehängte Datei(en)
11.0 .vi  Counter_with_AI_Drehzahlmessung_2.vi (Größe: 34,65 KB / Downloads: 301)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  NI-9361 Flankenzählung; doppelte Zählerstände FranziD 10 8.686 27.11.2018 11:59
Letzter Beitrag: FranziD
  Simulieren einer Flankenzählung in MAX (NI 9401) BenutzernameNO 1 3.865 30.07.2016 00:53
Letzter Beitrag: jg
  Flankenzählung in einer bestimmten Zeit knq 1 3.308 11.11.2014 12:08
Letzter Beitrag: knq
  Drehzahlmessung mit NiDaq6341 knq 0 2.988 10.11.2014 10:21
Letzter Beitrag: knq
  Error 50103 bei Flankenzählung pvil 3 4.366 26.05.2014 08:01
Letzter Beitrag: GerdW
Smile NI cDAQ9174 + NI9401 - Drehzahlmessung mit Hall-Sensor vescon 4 8.294 16.01.2014 20:59
Letzter Beitrag: GerdW

Gehe zu: