¿Se debe rebotar un interruptor cuando se abre?

8

Supongamos que una entrada en un microcontrolador tiene una resistencia de extracción a 5 V y un interruptor a tierra (normalmente abierto) conectado a él. Sé que un interruptor debe ser abonado (en mi caso, en el software) cuando está cerrado, pero ¿es necesario hacer un rebote cuando se abre un interruptor?

    
pregunta Nate

4 respuestas

10

Sí, el rebote en ambas direcciones es necesario si desea una ventaja única garantizada cada vez que el interruptor cambie de estado.

Afortunadamente, no necesita ningún hardware adicional para realizar el desglose si el conmutador está conectado a un microcontrolador. Si el micro tiene un pullup interno, lo que muchos hacen, no necesita nada más externo que el interruptor entre el micro pin y la tierra.

Encuentro que 50 ms es un buen tiempo de rebote. La mayoría de los interruptores rebotan por mucho menos que eso, pero algunos pueden ser casi tan largos. Sin embargo, 50 ms aún se sentirá instantáneo para un usuario humano, por lo que también podría ser más confiable. La única diferencia es el número con el que cuenta en el firmware, por lo que no hay costos adicionales allí. De todos modos, normalmente tengo una interrupción periódica de 1 ms por otras razones, por lo que si el conmutador se encuentra en el mismo estado 50 veces seguidas en esa interrupción, declara que ha sido devuelto al nuevo estado.

Detalles sobre la lógica de rebote en respuesta al comentario:

En general, tendrá un bit global que indica el estado oficial del conmutador. Esto es lo que utiliza cualquier lógica que necesite saber de qué manera se establece el interruptor. El único estado adicional que necesita es un contador, generalmente un solo byte, en la rutina de interrupción. Digamos que la interrupción es cada 1 ms y el tiempo de rebote es de 50 ms. Para cada interrupción:

If instananeous state matches debounced state:
  Reset counter to 50
  Done

If instantaneous state differs from debounced state:
  Decrement counter
  If counter reaches 0:
    Declare the new debounced state
    Reset counter to 50
  Done
    
respondido por el Olin Lathrop
2

Sí, usaría uno, el mecanismo es básicamente el mismo. A medida que rompe el contacto, tendrá puntos en el tiempo en los que el interruptor está haciendo un buen contacto eléctrico y no está haciendo un buen contacto eléctrico. Lo mismo que cuando estás haciendo el contacto.

    
respondido por el Some Hardware Guy
1

En general, sí. Los interruptores mecánicos pueden producir ruido eléctrico (rebote) tanto al cerrar como al abrir.

    
respondido por el Dave Tweed
1

En general, sí, pero siempre depende de lo que esté haciendo con la entrada digital. He tenido algunos sistemas que no tenían ninguna necesidad de ser denunciados en ninguna dirección.

Sin embargo, si está conduciendo una interrupción, lo más probable es que deba rebotar.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas