El ruido del motor interfiere con I2C

2

Construí un robot usando el Arduino Due con todos los sensores funcionando a 5V sobre I2C. Hay un cambio de nivel en ambas líneas I2C. Los motores se controlan utilizando un portador de controlador de motor VNH5019 de Polulu (que toma entrada PWM). La velocidad y la dirección del motor cambian rápidamente en esta aplicación en particular.

Cuando los motores no están funcionando, todo está bien y las lecturas están bien. Al ejecutar todo el robot en el suelo, con los motores, funciona bien durante aproximadamente 30 segundos a un minuto antes de que el bus I2C deje de responder por completo. Todos los dispositivos comienzan a agotarse en el bus I2C y, como resultado, el robot comienza a comportarse de manera catastrófica y se comporta mal. El Arduino tiene que ser reiniciado. Después de un reinicio, suele tardar menos tiempo en volverse loco.

He hecho funcionar los motores con las ruedas fuera del suelo y tengo un tiempo de funcionamiento significativamente mejor, por lo que sospecho que tiene algo que ver con la corriente que consumen los motores. Los motores están separados del arduino y el PCB personalizado que utilizo para enrutar las señales I2C por dos capas de placas de metal (presumiblemente, esto proporciona cierto blindaje). He instalado condensadores de cerámica de 0,1 uF en los terminales del motor y un condensador de 220 uF en la fuente de alimentación del Arduino.

También puse pull-ups adicionales antes y después del cambio de nivel, pero nada de esto parece detener el problema.

Actualmente estoy completamente perdido respecto a qué otra cosa podría hacer para detener el ruido del motor.

Editar: Algunos esquemas (por lo que vale)

Estecircuitoenvíaseñalesalosmotoresyproporcionaalimentaciónaloscontroladoresdelmotor.VinyGNDnoestánrealmenteconectadosalArduino.HaycoladasdecobreparaGNDy12VenlasdoscapasdelaPCBparasoportarlacorriente.

Este circuito conecta el bus I2C de Arduino a los diversos componentes. Hay un cambio de nivel de voltaje de 3V3 a 5V (LS1 y LS2). Los transistores no están en uso.

    
pregunta Dr Coconut

1 respuesta

2

Los problemas de EMI son frecuentes en este diseño y no hay un medicamento común para eso. Una cosa que se debe hacer es conectarlos solo cerca de la fuente de alimentación. Otro mejor filtrado posible en la alimentación del motor. Cada malla con alta corriente, incluido el circuito de activación de la puerta, debe ser lo más corta posible. Tal vez las resistencias en las puertas ayuden. Coloque el anillo de ferrita en el cable del motor cerca del conductor. Utilice buffers para i2c. ¡Buena suerte!

    
respondido por el Gregory Kornblum

Lea otras preguntas en las etiquetas