La comunicación serial de Arduino falla al detener/cargar un motor de CC controlado por PWM

Estoy usando el siguiente circuito (de http://luckylarry.co.uk/arduino-projects/arduino-control-a-dc-motor-with-potentiometer-and-multiple-power-supplies/ ) para controlar la velocidad de un motor de 6 V CC alimentado por una fuente de alimentación independiente:

ingrese la descripción de la imagen aquí

Cuando pongo una carga pesada en el motor o lo detengo, la comunicación en serie entre mi Arduino Uno y mi PC (a través de USB) falla. Los datos dejan de llegar y necesito desconectar el Uno, cerrar el IDE, conectar el Uno nuevamente y luego iniciar el IDE para recuperar el enlace.

No estoy seguro de si se trata de un problema de conexión a tierra (me aseguré de que todas las conexiones a tierra vayan al mismo riel), un problema de carga (aunque el Uno y el motor tienen fuentes de alimentación separadas) o un problema de back-emf.

Cualquier ayuda sería apreciada.

Gracias,

-Robar

¿Los suministros están completamente separados, con dos conexiones de red?

Respuestas (4)

Creo que el problema es la placa de prueba sin soldadura. Las conexiones del motor consumirán mucha corriente, lo que no es adecuado para los contactos de resorte en la placa de prueba e introduce ruido en el suministro de Arduino a través de la conexión a tierra común cuando el motor se detiene. El motor podría estar tomando 1A más o menos bajo una carga pesada o condición de bloqueo y esas placas de prueba sin soldadura solo están clasificadas para unos pocos mA, IIRC. Conecte el circuito correctamente en una PCB o una placa de prototipos, con un solo punto de conexión a tierra, y es probable que su problema desaparezca. O bien, evite calar el motor y someterlo a una carga pesada.

Puede monitorear la corriente del motor con una resistencia de detección y una entrada ADC en el Arduino, apagar la unidad cuando la corriente sea excesiva y encender un LED para indicar una condición de falla.

Parece que podría ser un problema de tierra de algún tipo. ¿Cuáles son sus fuentes de alimentación y cómo están conectadas? ¿Hiciste el circuito en una placa de prueba como la imagen en el enlace?

Cuando carga mucho o detiene el motor, pasará una corriente significativa. Suponiendo que lo construyó como se muestra en la imagen, una gran corriente en el cable de retorno de energía del motor podría hacer que el riel (-) en la placa de pruebas se suba. Si el motor ps se vuelve a conectar a tierra de la PC (¡cuidado con el 'camino furtivo'!), esto podría causar que los niveles de voltaje aparentes en la interfaz USB estén fuera de especificación. Incluso podría obtener algún tipo de efecto de bloqueo que requeriría la eliminación de la energía.

Si su motor ps no es una batería, es posible que desee intentar usar una batería y ver si la condición persiste.

Gracias por tu respuesta. He estado sospechando un problema de conexión a tierra también, pero no estaba muy seguro. Su idea sobre el riel de la placa de prueba (-) que sube tiene sentido. Todos los terrenos en mi circuito están en la misma línea de autobús de tablero. Aunque el PS del motor es un paquete de baterías, el cable (-) de este está conectado al riel de tierra en la protoboard, junto con el pin de tierra del Arduino y el pin de tierra del potenciómetro. ¿Quizás ayudaría cortar el cable de alimentación del cable USB? Si se trata de un problema de conexión a tierra, ¿de qué otra forma puedo conectar a tierra si necesito motores alimentados externamente y comunicación USB?
si su motor ps ya era una batería, mi teoría probablemente sea una tostada. A menos que tuviera otro cable de la batería (-) al arduino. si la única conexión a la batería (-) es a través de la placa de prueba, entonces no importaría si la batería (-) fuera un poco más negativa que la conexión a tierra de la placa de prueba.

Agregué un capacitor de 0.1 µF a través de los cables del motor y un capacitor de 470 µF a través de los rieles de alimentación y tierra en la placa, justo al lado del punto de inserción del cable de tierra del Uno. Ya no pierdo la comunicación en serie con el Uno cuando el motor se carga o se detiene.

Estaba a punto de construir un circuito aislador para desacoplar completamente el lado del motor del lado de Arduino/PC, usando un ADUM1402 (http://www.analog.com/en/interface/digital-isolators/adum1402/products/ product.html), pero pensé que esta no podía ser la única solución. Investigué un poco más y descubrí que es una buena práctica filtrar el ruido y los picos de los motores de CC mediante el uso de condensadores como se muestra en http://www.pololu.com/docs/0J15/9 y en muchos otros sitios. Una muestra flagrante de ignorancia de mi parte, pero ahora lo sé mejor.

No estoy seguro de cómo (es decir, cuál es la teoría detrás de esto) esto soluciona el problema, porque todavía no estoy seguro de cuál fue la causa del problema. Si alguien puede arrojar algo de luz sobre esto, se lo agradecería. No me gusta hacer las cosas sin tener y entender por qué las estoy haciendo. Seguiré leyendo hasta que descubra cómo esto realmente soluciona las cosas.

En cualquier caso, ¡gracias a todos los que intentaron ayudar!

Tengo un Makerbot: una de las placas impulsa un motor de CC y también tiene una entrada de termistor. Estaba viendo problemas similares, los resolví

1) alejando los cables entre sí 2) dejando caer un límite de 100 nF sobre la entrada analógica 3) colocando una perla de ferrita en ese cable de entrada

También me preocuparía por los terrenos: ¿los terrenos están conectados en otro lugar? (un bucle de tierra)