Guía definitiva para cambiar el rebote (Parte 2)

Blog

HogarHogar / Blog / Guía definitiva para cambiar el rebote (Parte 2)

Oct 01, 2023

Guía definitiva para cambiar el rebote (Parte 2)

Como discutimos en la Parte 1 de esta miniserie, cuando operamos un interruptor, puede

Como discutimos en la Parte 1 de esta miniserie, cuando operamos un interruptor, puede rebotar varias veces antes de detenerse en su nuevo estado (vea también mis columnas Tipos de interruptores y Terminología de interruptores). Esto se debe al hecho de que los contactos de los interruptores suelen estar hechos de metales elásticos. Cuando golpean juntos, su impulso y elasticidad pueden hacer que reboten una o más veces antes de establecer un contacto estable. Dependiendo de con quién esté hablando, esto puede conocerse como "rebote de cambio", "rebote de contacto" o "charla".

El resultado es una corriente eléctrica pulsada rápidamente en lugar de una transición limpia de cero a corriente completa cuando se enciende el interruptor, y viceversa cuando se apaga el interruptor. El rebote del interruptor no es un problema en algunas aplicaciones como los circuitos de alimentación (por ejemplo, un interruptor de luz montado en la pared), pero puede causar problemas en los circuitos lógicos y los sistemas basados ​​en microcontroladores que responden lo suficientemente rápido como para malinterpretar los pulsos de encendido y apagado como un flujo de datos. .

hinchable hinchable

El rebote del interruptor ocurre en todos los interruptores que usamos comúnmente, como interruptores de palanca, interruptores basculantes e interruptores de botón (paradójicamente, los únicos interruptores que no se ven afectados son los que rara vez usamos, como los interruptores de inclinación de mercurio, por ejemplo). También ocurre tanto cuando el interruptor está cerrado como cuando se abre de nuevo. Comencemos con un interruptor de palanca SPST-NO (un polo, un tiro, normalmente abierto) como se ilustra a continuación.

Cambie el rebote en un interruptor de palanca SPST-NO (Fuente de la imagen: Max Maxfield)

A veces, los rebotes van hasta el final entre +ve y 0V. Llamemos a estos rebotes "limpios".

A veces, la señal no hace una transición completa, sino que oscila de un lado a otro entre el valor inicial y algún voltaje intermedio. Aunque esta no es la terminología oficial, llamemos a estos rebotes "sucios". Y a veces tenemos una mezcla aleatoria de tipos de rebote.

La única constante es el cambio, porque cada interruptor se comporta de manera única. Peor aún, como señalé en mi columna anterior, "un mismo interruptor puede variar sus características según la temperatura, la humedad, la hora del día, la dirección del viento dominante y el color de su pantalón de golf de poliéster a cuadros".

A continuación, consideremos un interruptor de palanca SPDT (un polo, doble tiro) como se ilustra a continuación (solo mostraremos rebotes limpios por simplicidad).

Cambie el rebote en un interruptor de palanca SPDT (Fuente de la imagen: Max Maxfield)

Tenga en cuenta que asumimos que nuestro interruptor es de la categoría Break-Before-Make (BBM), también conocido como "interruptor sin cortocircuito", que es el tipo más común. Como se discutió en mi columna Terminología de interruptores, esto significa que el contacto en movimiento rompe la conexión existente con el tiro actual antes de hacer una nueva conexión con el otro tiro.

En el caso del rebote del interruptor, esto significa que primero vemos el rebote en cualquier terminal que se esté interrumpiendo (apertura), seguido de un breve retraso, seguido de un rebote en el terminal que esté haciendo (cerrando).

Con respecto al circuito que se muestra arriba, y suponiendo que 0 lógico = 0V y 1 lógico = +ve, esto significa que los terminales NO y NC son 10 y 01 cuando el interruptor está en un estado estable, y (potencialmente) 11 en el estado estable. caso de rebotes "limpios" cuando está en transición entre estados, pero nunca 00. ¿Es esto significativo? Bueno, podría serlo si decide realizar un rebote en el software en un interruptor SPDT (lo cual, francamente, no es probable, porque usaría dos de los pines de su microcontrolador por interruptor, pero vivimos en un mundo incierto, y todo es posible).

ruidoso ruidoso

En un futuro no muy lejano, discutiremos diferentes técnicas para abordar el rebote del interruptor. Una cosa que debemos tener en cuenta es el potencial de ruido, que puede originarse en una variedad de fuentes, incluida la diafonía (de otros cables en el sistema), EMI (interferencia electromagnética) de las corrientes en los cables, RFI (interferencia de radiofrecuencia) de sistemas de radio que emiten señales, ESD (descarga electrostática) de, por ejemplo, alguien que toca el sistema (consulte también Aventuras en ESD) y causas naturales como interferencias electrostáticas y rayos.

La solución de rebote del interruptor no debe dejarse engañar por el ruido (Fuente de la imagen: Max Maxfield)

A menos que los diseñadores hayan tenido esto en cuenta, las señales de reinicio son particularmente propensas a problemas porque tienden a serpentear por todos lados. En el caso de un sistema basado en Arduino, por ejemplo, la señal de reinicio en la placa base se despliega a cualquier tarjeta secundaria (escudos).

Aparte, si desea obtener más información sobre RFI, EMI y EMC (compatibilidad electromagnética), es posible que desee ponerse en contacto con Ken Wyatt de Wyatt Technical Services y ver sus ofertas de seminarios y presentaciones, pero estamos divagando...

Es importante que cualquiera que sea la técnica que utilicemos para abordar el rebote del interruptor (procesamiento previo de la señal en el hardware o procesamiento posterior en el software), esa técnica no se deje engañar por el "fallo" o "pico" ocasional del ruido. Sería desafortunado que alguien activara una aspiradora, por ejemplo, desencadenara una secuencia de "autodestrucción" (en el lado positivo, al menos el fin del mundo estaría acompañado de alfombras limpias).

Datos empiricos

¿Cuánto tiempo persiste el rebote del interruptor? ¿Qué amplitud tienen los pulsos de rebote del interruptor individual? ¿Cuántos pulsos podríamos esperar ver? Bueno, me alegra que hayas preguntado. Los datos más confiables que tengo provienen de dos de mis amigos: Jack Ganssle, que es una leyenda en el continuo del espacio-tiempo de los sistemas integrados, y David Ashton, que proviene de Down Under, y que es una leyenda en su propio continuo del almuerzo.

Hace mucho tiempo, en la noche de los tiempos, Jack creó su propia Guía para la eliminación de rebotes. Cuando escribí la Parte 1 de esta miniserie, dije cosas como "el problema del rebote del interruptor es rampante" y "ahora hay tantas soluciones dispersas por Internet, donde la mayoría de los ingenieros jóvenes van a saciar su ansia de conocimiento, que hace que tu cabeza dé vueltas. En el lado positivo, algunas de estas ofertas realmente funcionan; en el lado negativo, su funcionamiento puede deberse al azar en lugar del diseño".

Felizmente, Jack tiene una mente similar. En su guía, dice: "Navegue por la red para probar varios enfoques de antirrebote. La mayoría son bastante tontos. Pocos se basan en parámetros de rebote experimentales. Una mezcla de historias anecdóticas que se transmiten en los grupos de noticias sustituyen a la evidencia empírica".

Entonces, lo que hizo Jack fue tomar 18 tipos diferentes de interruptores, construir una plataforma de prueba similar a nuestros circuitos anteriores con un suministro de 5 V y una resistencia pull-up de 1 kΩ, y luego presionar cada interruptor 300 veces, registrando la cantidad mínima y máxima de rebotes tanto para la apertura como para el cierre de los contactos. Después de descartar dos valores atípicos, los interruptores restantes exhibieron un promedio de 1557 usec de rebote y un máximo de 6200 usec de rebote. Jack también observa que el ancho de los pulsos de rebote individuales varía entre menos de 1 usec y cientos de usecs.

Esto se relaciona vagamente con lo que David encontró en dos columnas que escribió: Switch Bouncing Around y SPDT Switch Debouncing with an SR Latch. En el caso de David, me dijo que el ancho de los picos individuales que observó variaba "entre unos pocos ns y alrededor de 100 usec".

Mientras estamos aquí, probablemente deberíamos tener en cuenta que el ancho de un pulso ESD puede oscilar entre un par de nseg y más de 100 nseg, lo que significa que un pulso ESD podría confundirse fácilmente con un evento de rebote de interruptor individual.

¿Y cuántos rebotes podemos esperar? Bueno, de acuerdo con El arte de la electrónica de Horowitz & Hill (página 506 de la segunda edición), "Cuando el interruptor está cerrado, los dos contactos se separan y se vuelven a conectar, generalmente de 10 a 100 veces durante un período de aproximadamente 1 ms". Esto solo muestra cuán indefinido es este campo, porque muchos ingenieros consideran este libro como la "Biblia de la electrónica", pero su valor de 1 mseg (que es el que me dijeron cuando era un joven ingeniero) es menor que el de Jack. hallazgos promedio, por no hablar de sus hallazgos máximos.

Una última cosa que debemos tener en cuenta cuando se trata de abordar el rebote del interruptor es el perfil general de los pulsos. Creo que la forma en que la mayoría de nosotros esperamos verlos estaría en línea con la siguiente captura de pantalla de la segunda columna de David.

Formas de onda para un interruptor SPDT que alimenta un pestillo SR (Fuente de la imagen: David Ashton).

En este ejemplo, estamos desactivando un interruptor SPDT, por lo que lo primero que vemos es la transición del terminal NC de 0 a 1 con algunos rebotes a medida que se rompe (abre). Después de un retraso, la terminal NO comienza su transición de 1 a 0 con algunos rebotes a medida que se cierra. Es el flanco descendente inicial en la terminal NO lo que hace que el pestillo SR cambie, como lo reflejan sus salidas QA y QB.

El punto de todo esto es que el rebote del interruptor se acumula cerca de las transiciones iniciales en los terminales NC y NO, lo que no parece tan sorprendente. Pero las cosas no siempre son tan limpias y ordenadas. En el artículo de Jack, por ejemplo, señala lo siguiente sobre sus interruptores O y Q (los diagramas a continuación son solo mis interpretaciones baratas y alegres; puede ver los originales en el artículo de Jack).

Patrones de rebote vistos para los interruptores O y Q de Jack (Fuente de la imagen: Max Maxfield del original de Jack)

Como dice Jack en su artículo: "O es un microinterruptor muy bueno y de alta calidad que nunca mostró más de 1,18 mseg de rebote. Pero investigando más a fondo, descubrí que generalmente generaba un tren de pulsos que garantizaba causar estragos con un código de filtro simple. No hay alto -hash de velocidad, solo unos y ceros sólidos difíciles de eliminar. Una actuación produjo 7 niveles de ceros limpios que varían en tiempo de 12 a 86 µseg, y 7 unos lógicos que varían de 6 a 95 µseg. ¿Fácil de filtrar? Seguro. Pero no por código que solo busca un par de lecturas idénticas".

En el caso del interruptor Q, Jack dice: "Q, cuando se suelta, se eleva durante 480 usec antes de generar 840 usec de hash, una forma segura de volver loco a un sistema de interrupción si está mal diseñado".

La próxima vez…

Bueno, creo que hemos preparado adecuadamente la escena; ahora estamos listos para el rock and roll. En mi próxima columna, profundizaremos en las diversas técnicas de hardware y software que podemos usar para convertir nuestras traviesas señales de rebote en equivalentes nítidos y limpios de los que nuestras madres estarían orgullosas.