Estoy teniendo el clásico dolor de cabeza por el desbaratamiento con el Arduino. El interruptor está pensado para encender y apagar un led. Así que si utilizo un botón de palanca (SPDT) ¿todavía rebota? Tal vez no, ya que no es un pulsador. ¿Cuánto más costaría usar un pulsador de palanca? Es que es un proyecto que me han pedido para mi laboratorio de fabricación local.
Respuestas
¿Demasiados anuncios?La mayoría de los interruptores o pulsadores SPST rebotan, porque sólo hay dos estados: contacto cerrado (por ejemplo, nivel bajo) y contacto abierto (nivel alto a través de una resistencia de pull-up). Esto puede parecer obvio, pero es esa vacilación al abrir/cerrar lo que provoca el rebote; basta con una sola vez para que un conmutador no funcione.
Puedes rebotar el interruptor con un condensador, pero como lo estás usando con un microcontrolador es más barato hacerlo por software. Yo suelo tener un temporizador de 32 ms (por software) para los escaneos del teclado, y sólo acepto un cambio de estado si persiste durante dos escaneos consecutivos. Eso significa que tendrás un retardo de máximo 64 ms, pero como el botón será operado manualmente no notarás un retardo tan corto.
Mencionas un botón SPDT, y esa es la mejor solución si quieres hacerlo en hardware.
Pero francamente, no veo ninguna razón para no hacerlo en el software, y tendrás muchas más opciones en botones SPST que en botones SPDT.
Si quieres un botón que apenas rebote, te recomiendo el Alps Interruptor táctil SKQG
que con los dispositivos que probé tenía un rebote inicial de menos de 10 ns.
El Grupo Ganssle ha redactado un informe muy completo titulado Guía para el desguace . En él, el autor, Jack Ganssle, tomó 18 interruptores diferentes y pulsó cada uno 300 veces. Registró los resultados utilizando un osciloscopio MSO para observar la señal analógica real, así como la representación digital para simular lo que vería un microcontrolador.
Todos los interruptores probados rebotaban de forma diferente. Algunos tipos son peores que otros. Otros no. Pero incluso interruptores idénticos del mismo tipo rebotaban de forma diferente.
Los interruptores idénticos no eran particularmente idénticos. Se probaron dos pares coincidentes; cada gemelo difería de su hermano en un factor de dos.
Por lo tanto, si vas a usar un interruptor, tener que desbaratarlo es simplemente un hecho de la vida.
Parte 2 de la guía ofrece numerosos métodos para manejar el problema de la desbordamiento.
Se discute el latch Set-Reset (SR) mencionado por stevenvh:
Así como el método RC más barato:
Pero, como se menciona en los comentarios y otras respuestas, si tienes un microcontrolador, probablemente sea mejor que lo hagas por software. La guía también habla de varios algoritmos que se pueden implementar.
De un ISR muy simple:
A una versión ampliada para manejar todo un puerto de interruptores:
Lea el informe completo. Cómo desbaratar un interruptor es una habilidad que vale la pena tener y que utilizarás a lo largo de tu carrera.
Todos los interruptores de contacto mecánico seco* rebotan. Un interruptor SPDT casi siempre se rompe antes de hacer, por lo que las etapas son baja / opemn / alta.
Usted puede conseguir hacer antes de romper los interruptores SPDT, pero incluso los que pueden rebotar.
*La humectación con mercurio se utiliza en algunos relés para mejorar la capacidad de manejo de la corriente. Creo que estos pueden tender a ser libre de rebotes, pero no he tenido ninguna experiencia en el mundo real de ellos, y son raros y humectación de mercurio no se encuentra en había operado interruptores.
El software desbarata cualquier cosa - el tiempo que toma depende de lo ultraviolento y continuo que sea el rebote.
Una entrada de disparo Schmitt con un retardo RC adecuado suele hacer un buen trabajo de rebote. El rebote es posible si el retardo es demasiado corto en relación con los tiempos de rebote del peor caso.