Ich habe einen rotierenden Kontakt (Kontaktunterbrecher eines ICE), der umschaltet, ob er mit nichts verbunden ist (schwebend) oder mit dem Gehäuse des ICE verbunden ist. Das Motorgehäuse ist mit Masse verbunden (gleiche Masse wie der Arduino). Somit wechselt das Signal zwischen kurzen Zeiten auf LOW (mit Masse verbunden) und meistens schwebend. Beide Intervalle sind viel höher als die übliche Hardwareauflösung für Interrupts auf dem Arduino - denken Sie an mehrere Mikrosekunden LOW gegenüber einigen Millisekunden Floating.
Da der "ON" -Zustand des Schalters mit Masse verbunden ist, dachte ich, dass ich die Interrupt-Funktion des Arduino verwenden könnte, um informiert zu werden, wenn der Zustand auf LOW wechselt, um zu zählen, wie oft sich der Motor dreht. Ich habe dies jedoch nur in Kombination mit einem HIGH-Signal und nicht mit einem schwebenden Signal gesehen. Ich habe mich gefragt, ob dies auch funktionieren würde und der Interrupt ausgelöst würde, wenn das Signal von Floating auf LOW wechselt.
Welche Möglichkeiten habe ich, ein Signal zu zählen, das zwischen Floating und dem gleichen Massesignal wie das Arduino umschaltet?
Sie können das Signal mit einem Pull-up-Widerstand schwach hochziehen, wenn der Schalter nicht geschlossen ist. GPIO-Ports auf den meisten Mikrocontrollern haben eingebaute Pull-up-Widerstände, die Sie per Software steuern können.
Keine MCU kann einen Floating-Pin direkt erkennen, es erfordert externe Komponenten, clevere Software-Tricks oder zumindest die richtige Einrichtung des GPIO-Pins
Deshalb verwenden Sie Widerstände, um das Signal hochzuziehen, damit es nicht schwebt und als hoch gelesen werden kann.
Der Pull-up-Widerstand kann ein externer physikalischer Widerstand sein, oder Sie können möglicherweise auch eingebaute MCU-Pull-ups verwenden, wenn sie für Ihre Anwendung geeignet sind.
Yanik Salzmann
Florian Ragwitz
Yanik Salzmann
Mast
Schlafmann