¿Arduino recibe disparadores falsos debido al encendido/apagado del compresor?

Estoy trabajando en el control de un brazo giratorio con una cámara montada a través de un motor de CC e interruptores de límite dentro de una cámara de prueba.

Cada vez que el compresor de la cámara se enciende/apaga, se producen activaciones falsas del interruptor de límite en el Arduino.
Los finales de carrera se conectan normalmente abiertos a través de un circuito pull-up.
La rotación del brazo funciona totalmente bien según mi código, excepto en los momentos en que el compresor se enciende o se apaga.

¿Qué está causando esto y cómo podría solucionarse?

¿Quizás tu arduino necesita algún tipo de escudo (juego de palabras)?
Si los interruptores de límite son por seguridad, entonces deberían ser independientes del Arduino. EG: directamente interrumpirían la alimentación del motor. (Puede requerir interruptores con más capacidad de corriente y diodos de rueda libre).

Respuestas (2)

Es casi seguro que se trata de ruido, probablemente debido a varios problemas de diseño:

  1. Alta impedancia. Una señal de subida pasiva tiene la impedancia de la subida en estado de reposo. En un entorno ruidoso, este pull-up debe ser bajo, o las líneas flotantes pasivas deben evitarse por completo.

  2. Sin blindaje.

  3. Mala estrategia general de puesta a tierra del sistema. Como mencionó "arduino", posiblemente ni siquiera haya una estrategia general de puesta a tierra del sistema.

  4. Mal firmware. Se deben esperar fallas breves en líneas conmutadas mecánicamente.

Siempre rebote. Pero esto a veces es complicado en los interruptores de límite para piezas móviles de alta velocidad (o inercia).

Como señala Olin Lathrop, el ruido eléctrico es el problema. Hay tres cosas que realmente quieres hacer:

1) Use condensadores donde entren cables largos. Esto evitará que el ruido eléctrico captado por los cables interfiera con el Arduino. También puede usar condensadores cerca del Arduino.

2) Usar aislamiento óptico y mayores flujos de corriente que sean menos susceptibles al ruido. Entonces, en lugar de simplemente usar un pull up para el interruptor, haga que el interruptor cierre un circuito con una resistencia en serie que ilumina un LED que brilla en un fotodiodo o fototransistor. Los optoaisladores cuestan unos pocos centavos y hacen exactamente lo que necesita. Aquí está la hoja de especificaciones para un enlace . Aísle tanto las entradas como las salidas si puede.

3) Dirija los cables ruidosos lejos de las áreas sensibles. Mantenga las líneas que salen del recinto lo más lejos posible del Arduino. Por ejemplo, si usa más de un optoaislador, alinéelos de modo que los lados del Arduino estén cerca del Arduino y el lado que se conecta con el mundo exterior esté alejado.