Drehzahlsensor über DIO Modul und Induktivgeber
Posted: 02 Oct 2019, 16:53
Hallo zusammen,
ich implementiere gerade einen Drehzahlsensor mit einem Induktivgeber (von einer bekannten Firma in Orange) und dem RevPi DIO-Modul. Es handelt sich um einen Schließer.
Es werden langsame Drehzahlen von ca. 20U/min gemessen, wobei 12 Magnete radial gleichmäßig verteilt auf ca. 1m Durchmesser auf meiner Maschine angebracht sind. Die Umfangsgeschwindigkeit beträgt folglich ca. 1m/s. Da die Magnete einen Durchmesser von 1cm haben, liegt also für rund 10ms ein HIGH-Signal an.
Wenn ich das Ganze jetzt einfach auf einen digitalen Eingang lege, dann werden einige Impulse "übersehen", da meine Taktzeit von dem RevPi Core Modul 20ms beträgt. Abgefangenen wurden die Impulse mit einer einfachen IF-Bedingung.
Was ist die eleganteste Lösung für dieses Problem?
Meine Idee bisher:
Ein Zähler-Eingang (Counter) beim DIO-Modul nehmen? Was mache ich dann, wenn der 32bit-Integer vollgelaufen ist, d.h. bei 4.294.967.296 angekommen ist? Das sind bei 20U/min zwar 4.294.967.296*min/(12*20) = 34 Jahre, aber mich interessiert die Lösung trotzdem.
Abschließend mache ich eine Zeitmessung mit einem Timer (TON-Baustein in logiCAD3) und berechne aus der vergangenen Zeit zwischen zwei Impulsen die Drehzahl.
ich implementiere gerade einen Drehzahlsensor mit einem Induktivgeber (von einer bekannten Firma in Orange) und dem RevPi DIO-Modul. Es handelt sich um einen Schließer.
Es werden langsame Drehzahlen von ca. 20U/min gemessen, wobei 12 Magnete radial gleichmäßig verteilt auf ca. 1m Durchmesser auf meiner Maschine angebracht sind. Die Umfangsgeschwindigkeit beträgt folglich ca. 1m/s. Da die Magnete einen Durchmesser von 1cm haben, liegt also für rund 10ms ein HIGH-Signal an.
Wenn ich das Ganze jetzt einfach auf einen digitalen Eingang lege, dann werden einige Impulse "übersehen", da meine Taktzeit von dem RevPi Core Modul 20ms beträgt. Abgefangenen wurden die Impulse mit einer einfachen IF-Bedingung.
Was ist die eleganteste Lösung für dieses Problem?
Meine Idee bisher:
Ein Zähler-Eingang (Counter) beim DIO-Modul nehmen? Was mache ich dann, wenn der 32bit-Integer vollgelaufen ist, d.h. bei 4.294.967.296 angekommen ist? Das sind bei 20U/min zwar 4.294.967.296*min/(12*20) = 34 Jahre, aber mich interessiert die Lösung trotzdem.
Abschließend mache ich eine Zeitmessung mit einem Timer (TON-Baustein in logiCAD3) und berechne aus der vergangenen Zeit zwischen zwei Impulsen die Drehzahl.