Guía definitiva para evitar rebotes en Switch (Parte 2)
HogarHogar > Noticias > Guía definitiva para evitar rebotes en Switch (Parte 2)

Guía definitiva para evitar rebotes en Switch (Parte 2)

Jun 01, 2024

Como comentamos en la Parte 1 de esta miniserie, cuando operamos un interruptor, puede rebotar varias veces antes de detenerse en su nuevo estado (consulte también mis columnas Tipos de interruptores y Terminología de interruptores). Esto se debe a que los contactos de los interruptores suelen estar hechos de metales elásticos. Cuando chocan entre sí, su impulso y elasticidad pueden hacer que reboten una o más veces antes de establecer un contacto firme. 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 total cuando se enciende el interruptor y viceversa cuando se apaga. El rebote del interruptor no es un problema en algunas aplicaciones como circuitos de energía (por ejemplo, un interruptor de luz montado en la pared), pero puede causar problemas en circuitos lógicos y sistemas basados ​​en microcontroladores que responden lo suficientemente rápido como para malinterpretar los pulsos de encendido y apagado como un flujo de datos. .

saltarín saltarín

El rebote del interruptor ocurre en todos los interruptores que usamos comúnmente, como los interruptores de palanca, los interruptores basculantes y los interruptores de botón (paradójicamente, los únicos interruptores que no se ven afectados son los que rara vez usamos, como los interruptores basculantes de mercurio, por ejemplo). También ocurre tanto cuando se cierra el interruptor como cuando se vuelve a abrir. Comencemos con un interruptor de palanca SPST-NO (unipolar, de una vía, 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 entre +ve y 0V. Llamemos a estos rebotes "limpios".

A veces, la señal no realiza una transición completa, sino que oscila entre el valor inicial y algún voltaje intermedio. Aunque esta no es una 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 a su manera. Peor aún, como señalé en mi columna anterior, “un mismo interruptor puede variar sus características dependiendo de la temperatura, la humedad, la hora del día, la dirección del viento predominante y el color de sus pantalones de golf de poliéster a cuadros”.

A continuación, consideremos un interruptor de palanca SPDT (unipolar, de 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 de interrupción antes de establecer (BBM), también conocido como “interruptor sin cortocircuito”, que es el tipo más común. Como se analizó en mi columna Terminología de interruptor, esto significa que el contacto móvil interrumpe la conexión existente con el tiro actual antes de realizar una nueva conexión con el otro tiro.

En el caso del rebote del interruptor, esto significa que primero vemos un rebote en cualquier terminal que se esté rompiendo (abriéndose), seguido de un breve retraso, seguido de un rebote en cualquier terminal que se esté abriendo (cerrando).

Con respecto al circuito mostrado arriba, y asumiendo 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 estado estable, y (potencialmente) 11 en el estado estable. caso de rebotes "limpios" cuando se realiza la 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 no es probable, francamente, porque usaría dos de los pines de su microcontrolador por interruptor, pero vivimos en un mundo incierto y todas las cosas son posible).

ruidoso ruidoso

En un futuro no muy lejano, analizaremos diferentes técnicas para abordar el rebote de conmutadores. Una cosa que debemos tener en cuenta es el potencial de ruido, que puede originarse de una variedad de fuentes, incluida la diafonía (de otros cables del sistema), EMI (interferencia electromagnética) de las corrientes en los cables, RFI (interferencia de radiofrecuencia). de sistemas de radio que irradian 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 tener problemas porque tienden a desviarse por todas partes. En el caso de un sistema basado en Arduino, por ejemplo, la señal de reinicio en la placa base se distribuye en abanico hacia las tarjetas secundarias (blindajes).

Además, 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 consultar sus ofertas de seminarios y presentaciones, pero estamos divagando...

Es importante que cualquier técnica que utilicemos para abordar el rebote del interruptor (preprocesar la señal en hardware o posprocesarla en software) no se deje engañar por el "fallo" o "pico" ocasional de ruido. Sería desafortunado que alguien encendiera una aspiradora, por ejemplo, desencadenara una secuencia de “autodestrucción” (lo bueno es que 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 impulsos de rebote de los interruptores individuales? ¿Cuántos pulsos podríamos esperar ver? Bueno, me alegra que lo hayas preguntado. Los datos más confiables que tengo provienen de dos de mis amigos: Jack Ganssle, que es una leyenda en el continuo espacio-tiempo de los sistemas integrados, y David Ashton, oriundo de Down Under y que es una leyenda en su propio continuo a la hora del almuerzo.

En la noche de los tiempos, Jack creó su propia Guía para evitar rebotes. Cuando escribí la Parte 1 de esta miniserie, dije cosas como que “el problema del rebote del interruptor está muy extendido” y “ahora hay tantas soluciones esparcidas por Internet, donde la mayoría de los ingenieros jóvenes acuden para saciar sus ansias de conocimiento, que te hace girar la cabeza. Lo bueno es que algunas de estas ofertas realmente funcionan; En el lado negativo, su funcionamiento puede deberse más al azar que al diseño”.

Afortunadamente, Jack tiene una opinión similar. En su guía dice: “Navega por la red para probar varios enfoques para evitar rebotes. La mayoría son bastante aburridos. Pocos se basan en parámetros de rebote experimentales. Una mezcla de historias anecdóticas que circulan por los grupos de noticias sustituye a la evidencia empírica”.

Entonces, lo que Jack hizo fue tomar 18 tipos diferentes de interruptores, construir un equipo 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 Rebote 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 usos de rebote y un máximo de 6200 usos de rebote. Jack también señala 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 los anchos de los picos individuales que observó variaban "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 variar entre un par de ns y más de 100 ns, lo que significa que un pulso ESD podría confundirse fácilmente con un evento de rebote de interruptor individual.

¿Y cuántos rebotes podríamos esperar? Bueno, según The Art of Electronics de Horowitz & Hill (página 506 de la segunda edición), "cuando se cierra el interruptor, los dos contactos en realidad se separan y se vuelven a conectar, normalmente de 10 a 100 veces durante un período de aproximadamente 1 ms". Esto solo sirve para mostrar cuán indefinido es este campo, porque muchos ingenieros consideran este libro como la "Biblia de la electrónica", pero su valor de 1 ms (que es el que me dijeron cuando era joven ingeniero) es menor que el de Jack. hallazgos promedio, y mucho menos 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 coincidiría 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 apagando un interruptor SPDT, por lo que lo primero que vemos es la transición del terminal NC de 0 a 1 con algunos rebotes cuando 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 el 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 concentra cerca de las transiciones iniciales en los terminales NC y NO, lo que no parece tan sorprendente. Pero las cosas no siempre están tan limpias y ordenadas. En el artículo de Jack, por ejemplo, señala lo siguiente sobre sus interruptores O y Q (los diagramas siguientes son sólo mis interpretaciones baratas y alegres; puedes 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 bonito y de alta calidad que nunca mostró más de 1,18 ms de rebote. Pero al profundizar más, descubrí que generalmente generaba un tren de pulsos que garantizaba causar estragos con un código de filtro simple. No hay hash de alta 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 µs, y 7 niveles lógicos que varían de 6 a 95 µs. ¿Fácil de filtrar? Seguro. Pero no por código que sólo busca un par de lecturas idénticas”.

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

La próxima vez…

Bueno, creo que hemos preparado el escenario adecuadamente; Ahora estamos listos para rockear y rodar. En mi próxima columna, profundizaremos en las diversas técnicas de hardware y software que podemos utilizar para convertir nuestras traviesas señales rebotantes en equivalentes nítidos y limpios de los que nuestras madres estarían orgullosas.