Cómo implementar el rebote de hardware para interruptores y relés cuando el rebote de software no es apropiado

Por Clive "Max" Maxfield

Colaboración de Editores de DigiKey de América del Norte

En el contexto de la ingeniería eléctrica y electrónica, un interruptor es un componente que puede "hacer" o "romper" un circuito eléctrico, interrumpiendo así una corriente eléctrica o desviándola de un conductor a otro. Como pueden atestiguar los ingenieros, hay muchos tipos diferentes de interruptores conmutadores, como los de palanca, los basculantes, los pulsadores, los microinterruptores y los interruptores de límite, los magnéticos y los de láminas, y los relés. Todos tienen una cosa en común: rebotan. Es lo que hacen.

Normalmente, este rebote tiene poco o ningún efecto en el circuito, pero si el circuito digital es lo suficientemente rápido como para detectar y responder a múltiples rebotes, puede haber graves consecuencias. La tarea de un ingeniero es evitar o mitigar los efectos de este rebote, o "rebotar" el interruptor. Aunque la industria ha practicado durante mucho tiempo el rebote por hardware, más recientemente se ha pasado a enfoques de rebote por software. Sin embargo, hay situaciones en las que el rebote por hardware es una mejor opción.

En este artículo se explica el rebote y se analizan los enfoques de software y hardware para el rebote. A continuación, señala los casos en los que el rebote por hardware es una mejor opción antes de mostrar cómo se puede implementar. Se presentan ejemplos de dispositivos de conmutación y componentes de rebote de hardware de NKK Switches, ON Semiconductor, Texas Instruments, Maxim Integrated y LogiSwitch.

¿Qué es el rebote del interruptor?

Cuando se acciona un interruptor o un relé, lo que un ser humano percibe como una respuesta única e instantánea cada vez que el dispositivo cambia de estado puede implicar, en realidad, 100 o más acciones de activación o desactivación que persisten durante varias milésimas de segundo antes de que el contacto se asiente finalmente en su lugar.

Por ejemplo, considere un interruptor conmutador de montaje en panel de un solo polo y un solo tiro (SPST) normalmente abierto (NO) como un M2011SS1W01 de NKK. Supongamos que un lado de este interruptor, que puede considerarse la entrada, está conectado a tierra (0 voltios), mientras que el otro lado, que en este caso es la salida, está conectado a una fuente de alimentación de 5 voltios (mostrada como +ve) a través de una resistencia de pull-up (R1) (Figura 1).

Diagrama del interruptor conmutador SPST-NO que rebota (haga clic para ampliar)Figura 1: En el caso de un interruptor conmutador SPST-NO, pueden producirse rebotes tanto al activar como al desactivar el interruptor. (Fuente de la imagen: Max Maxfield)

Observe que el rebote del interruptor puede producirse tanto cuando el interruptor está activado (cerrado) como cuando está desactivado (abierto). A veces, los rebotes pueden transitar entre los carriles de alimentación, aquí considerados estados lógicos 0 y 1. En este caso, se trata de rebotes "limpios". En comparación, si la señal solo alcanza una tensión intermedia, se denominan rebotes "sucios".

En el caso de un interruptor de palanca de montaje en panel de un solo polo y dos tiros (SPDT), como el M2012SS1W01-BC de NKK, pueden producirse rebotes en los terminales normalmente abiertos (NO) y normalmente cerrados (NC) (Figura 2). En este caso, sólo se han mostrado los rebotes "limpios" para simplificar.

Diagrama del interruptor de palanca SPDT que rebota (haga clic para ampliar)Figura 2: En el caso de un interruptor de palanca SPDT, pueden producirse rebotes en los terminales NA y NC cuando se activa y desactiva el interruptor. (Fuente de la imagen: Max Maxfield)

En muchos casos, la duración de este rebote de la señal es tal que no tiene ningún efecto. Los problemas surgen cuando un interruptor se conecta a un equipo electrónico lo suficientemente rápido como para detectar y responder a múltiples rebotes. Lo que se necesita es una forma de desbaratar la señal procedente del interruptor antes de que actúe el equipo electrónico.

Rebote por software o por hardware

En las décadas de 1960 y 1970, el rebote de los interruptores se implementó utilizando una variedad de técnicas de hardware, desde simples circuitos de retardo de resistencia-condensador (RC) utilizados con los interruptores SPST hasta funciones más sofisticadas de enclavamiento de ajuste/reinicio (SR).

Más recientemente, y debido a que muchos sistemas cuentan con una unidad de microprocesador (MPU) o una unidad de microcontrolador (MCU), se ha convertido en algo habitual el uso de técnicas de software para desbaratar la señal procedente de cualquier interruptor. Sin embargo, el rebote por software no siempre es el mejor enfoque. Hay algunas aplicaciones que implican procesadores pequeños, de bajo rendimiento y con memoria restringida, con un espacio de código y/o ciclos de reloj limitados para implementar rutinas de rebote. En estos casos, una implementación de hardware puede ser una mejor solución.

Además, muchos desarrolladores de software desconocen las características físicas de los interruptores, como el hecho de que, además de variar de una activación a otra, las características de rebote de un interruptor pueden verse afectadas por condiciones ambientales como la temperatura y la humedad.

El problema de la falta de experiencia de los desarrolladores de software en materia de interruptores se ve agravado por el hecho de que la literatura disponible sobre el rebote de los interruptores es a menudo confusa y contradictoria. Por ejemplo, es habitual leer que un interruptor habrá dejado de rebotar 1 milisegundo (ms) después de su activación o desactivación. Sin embargo, el conocido experto en sistemas empotrados Jack Ganssle realizó pruebas empíricas con diversos tipos de interruptores, activando cada uno de ellos 300 veces y registrando la cantidad mínima y máxima de rebote tanto para la apertura como para el cierre de los contactos. Informó de una duración media del rebote de 1,6 ms y una duración máxima del rebote de 6,2 ms. Algunas "mejores prácticas" industriales y militares recomiendan esperar 20 ms después de la activación inicial antes de asumir que el interruptor ha dejado de rebotar; otros abogan por esperar 20 ms después del último rebote detectado antes de activar cualquier acción.

Además, hay muchos sistemas sencillos no basados en procesadores que también requieren que los conmutadores sean desbordados. Algunos ejemplos de este tipo de sistemas son un contador binario que maneja pantallas de siete segmentos y cuenta los pulsos de un relé; la entrada de disparo de un temporizador 555 de un solo disparo que se utiliza como control de un motor para una puerta o un portón; y una máquina de estado finito (FSM) basada en registros que emplea entradas con clave. También hay potenciómetros electrónicos de ajuste (pots) con valores modificados mediante entradas de interruptor (arriba, abajo y, a veces, almacenar) donde el rebote del interruptor sería problemático.

Todos estos ejemplos dejan claro que algunos conocimientos sobre cómo realizar el rebote de hardware pueden ser útiles para cualquier diseñador o desarrollador.

Desenclavamiento por hardware de un interruptor SPST con una red RC

Una de las soluciones más sencillas de rebote de interruptor basado en hardware emplea una red de resistencia-capacitor (RC) junto con un interruptor SPST. Hay muchas variantes de este circuito. Una de las implementaciones más versátiles implica dos resistencias y un diodo (Figura 3).

Diagrama de la red RC para desbaratar un interruptor SPST (haga clic para ampliar)Figura 3: Cuando se utiliza una red RC para desbaratar un interruptor SPST (arriba), la adición del diodo (D1) obliga al condensador (C1) a cargarse a través de la resistencia R1 y a descargarse a través de la resistencia R2. (Fuente de la imagen: Max Maxfield)

Cuando el interruptor está activado (cerrado), el condensador C1 se descarga a través de la resistencia R2. Si se hubiera omitido el diodo D1 en este circuito, cuando el interruptor se desactivara (se abriera), C1 se cargaría a través de las resistencias (R1 + R2). Sin embargo, la presencia de D1 significa que C1 se cargará solo a través de R1.

En algunos casos, sólo interesa la activación del interruptor (es decir, desencadena acciones que se producen), en cuyo caso puede omitirse D1. Sin embargo, si las acciones van a ser activadas cuando el interruptor se activa y se desactiva, y si se considera minimizar el retraso, se recomienda la adición de D1.

Observa las curvas de carga y descarga exponenciales que presenta la tensión del condensador VC. No sería una buena idea alimentar esta señal directamente a la entrada de una función lógica digital descendente, que no apreciaría ver una señal que se pierde en la región indefinida entre los valores lógicos 0 y 1 "buenos". En su lugar, esta señal se introduce en la entrada de un búfer con una entrada de disparo Schmitt. Además, se suele utilizar un búfer inversor, como un canal de un CD74HC14M96 de Texas Instruments, porque las funciones inversoras conmutan más rápido que sus homólogas no inversoras.

Desenganche de un interruptor SPDT con un latch SR

En el caso de un interruptor SPDT, una solución de rebote de hardware común es emplear un latch SR. Desde que empresas como IBM utilizaron esta técnica para los paneles de conmutación de sus ordenadores centrales alrededor de los años 60, este enfoque ha sido considerado como la crème de la crème de las soluciones de rebote de hardware simples. Este tipo de latch puede formarse utilizando dos puertas NAND de dos entradas, una detrás de la otra; por ejemplo, empleando dos canales de un IC NAND cuádruple de dos entradas SN74HC00DR de Texas Instruments (Figura 4).

Diagrama de un latch SR basado en NAND para desbaratar un interruptor SPDTFigura 4: El uso de un latch SR basado en NAND para eliminar el rebote de un interruptor SPDT es una solución de rebote por hardware muy eficaz. (Fuente de la imagen: Max Maxfield)

Cuando el terminal NC del interruptor se conecta a tierra, como se muestra en la mitad superior de la Figura 4, esto fuerza la salida de la puerta g2 a la lógica 1. A su vez, los dos 1 lógicos en las entradas de la puerta g1 fuerzan su salida a 0 lógico. En comparación, cuando el terminal NO del interruptor se conecta a tierra, como se muestra en la mitad inferior de la Figura 4, esto fuerza la salida de la puerta g1 a la lógica 1. A su vez, los dos 1 lógicos en las entradas de la puerta g2 fuerzan su salida a 0 lógico.

La razón por la que este circuito funciona tan bien es que cuando sus dos entradas están en sus estados lógicos inactivos de 1, el latch SR recuerda su valor anterior. Recuerde que, como se ilustra en la figura 2, cuando se acciona un interruptor SPDT, cualquiera de sus terminales que esté conectado a tierra -en ese momento- rebota primero. Como estos rebotes se producen entre su valor original (0 lógico) y su nuevo valor (1 lógico), no tienen ningún efecto sobre el estado actual del latch SR. Sólo después de que este terminal deja de rebotar, su contraparte comienza a rebotar, momento en el que el latch SR cambia su estado.

Desmontar un interruptor SPST con un dispositivo dedicado

Uno de los problemas de la solución anterior es que muchos diseñadores prefieren utilizar interruptores SPST porque generalmente cuestan menos que los SPDT. En el mercado hay varios dispositivos de rebote SPST dedicados muy conocidos, como el MC14490DWG de ON Semiconductor y el MAX6818EAP+T de Maxim Integrated.

Otro fabricante, LogiSwitch, ofrece un conjunto de soluciones de rebote de tres, seis y nueve canales en paquetes de dispositivos de montaje superficial (SMD) y pasantes. Por ejemplo, considere un circuito que utiliza un dispositivo LogiSwitch LS18-S (Figura 5).

Esquema del chip LS18-S de tres canales dedicado a la eliminación de los obstáculos de un interruptor SPDTFigura 5: Uso de un chip LS18-S dedicado de tres canales para eliminar el rebote de un interruptor SPDT (también hay dispositivos de seis y nueve canales). (Fuente de la imagen: Max Maxfield)

Como todos los miembros de la familia LogiSwitch, el LS18-S admite un rango de tensión de funcionamiento de 2.5 a 5.5 voltios (el valor de la tensión de alimentación no afecta al tiempo de respuesta del dispositivo). Además, a diferencia de otras soluciones de CI dedicadas, los dispositivos de rebote LogiSwitch no requieren ningún componente adicional, como un reloj externo, una red de temporización RC o resistencias de pull-up en las entradas o salidas.

El LS18-S utiliza la tecnología adaptativa NoBounce, propiedad de LogiSwitch, que ofrece un alto nivel de inmunidad al ruido. Se prohíbe que los picos de ruido de menos de 20 ms de duración inicien o terminen un ciclo, y las salidas se retrasan durante un periodo de 20 ms tras el rebote final del interruptor tanto en la activación como en la liberación, independientemente de la duración del rebote.

Conclusión:

Hay muchos tipos de interruptores, como los conmutadores, los de balancín y los de pulsador, todos los cuales pueden rebotar. Si no se mitiga, el rebote de los interruptores puede hacer que los microprocesadores y otros circuitos electrónicos consideren que la activación de un solo interruptor comprende varios eventos.

La señal de rebote de un interruptor se suele desbaratar mediante un software que se ejecuta en un microcontrolador. Aunque se trata de una solución de bajo costo, como se ha demostrado, puede no ser la mejor opción en todos los casos, incluidos los sistemas basados en microcontroladores de rendimiento y memoria limitados, los desarrolladores de software que carecen de experiencia en cuestiones relacionadas con los interruptores o los sistemas implementados sin un microcontrolador.

Como alternativa, el desbordamiento puede realizarse en hardware utilizando una variedad de enfoques que van desde las redes de resistencias-capacitores hasta los latches SR y los circuitos integrados dedicados.

DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Acerca de este autor

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield received his BSc in Control Engineering in 1980 from Sheffield Hallam University, England and began his career as a designer of central processing units (CPUs) for mainframe computers. Over the years, Max has designed everything from silicon chips to circuit boards and from brainwave amplifiers to steampunk Prognostication Engines (don't ask). He has also been at the forefront of Electronic Design Automation (EDA) for more than 30 years.

Max is the author and/or co-author of a number of books, including Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access, and How Computers Do Math. Check out his “Max’s Cool Beans” blog.

Acerca de este editor

Editores de DigiKey de América del Norte