Tengo un contacto giratorio (disyuntor de contacto de un ICE) que cambia entre no estar conectado a nada (flotante) y estar conectado a la caja del ICE. La carcasa del motor está conectada a tierra (la misma tierra que el Arduino). Por lo tanto, la señal cambia entre tiempos cortos de estar en BAJO (conectado a tierra) y en su mayoría flotando. Ambos intervalos son mucho más altos que la resolución de hardware habitual para las interrupciones en el Arduino: piense en varios microsegundos de BAJO frente a algunos milisegundos de flotación.
Dado que el estado "ENCENDIDO" del interruptor se conecta a tierra, estaba pensando que podría usar la función de interrupción del Arduino para recibir información cada vez que el estado cambia a BAJO, para contar cuántas veces gira el motor. Sin embargo, solo he visto que esto se usa en combinación con una señal ALTA y no con una señal flotante. Me preguntaba si esto también funcionaría y la interrupción se activaría cuando la señal cambiara de flotante a BAJA.
¿Cuáles son mis opciones para contar una señal que cambia entre flotante y la misma señal de tierra que el Arduino?
Puede elevar débilmente la señal cuando el interruptor no está cerrado usando una resistencia pull-up. Los puertos GPIO en la mayoría de los microcontroladores tienen resistencias pull-up integradas que puede controlar desde el software.
Ninguna MCU puede detectar directamente un pin flotante, requiere componentes externos, trucos de software inteligentes o al menos configurar el pin GPIO correctamente
Es por eso que usa resistencias para elevar la señal para que no flote y pueda leerse como alta.
La resistencia pull up puede ser una resistencia física externa, o también puede usar pull ups incorporados de MCU si son adecuados para su aplicación.
Yanick Salzmann
Florian Ragwitz
Yanick Salzmann
Mástil
dormilón