El bus I2C no responde cuando el motor se está ejecutando. ¿Cómo diagnosticar y arreglar?

1

Tengo un microcontrolador prototipo de tablero de pan sin soldadura con algunos dispositivos I2C que toman algunas medidas en una motocicleta. Por ahora, el MCU es alimentado por un LM7805 con tapas de desacoplamiento cerca del dispositivo de una fuente de 12v. Los dispositivos funcionan bien cuando la alimentación está encendida, pero cuando se arranca el motor, los dispositivos I2C no responden, pero SPI aún funciona bien.

Solo hay dos cables conectados entre la MCU y la motocicleta. 12v de potencia y tierra. El resto de mis dispositivos están aislados.

¿Cómo puedo diagnosticar el problema? Tengo un alcance muy básico, analizador lógico y un buen multímetro. ¿Dónde debo empezar? ¿Qué otra información puedo proporcionar?

¿Hay algún tipo de filtrado que pueda probar? ¿Quizás algún tipo de filtro de paso bajo en la alimentación de 12 V?

Actualización: Por los comentarios y respuestas, parece que el motor en marcha está introduciendo algún tipo de ruido que está causando el problema. (Sospecho que el sistema de carga / alternador, pero puedo ' t decir). Además, debido a mi falta de un osciloscopio profesional, no puedo ver realmente el ruido. Algunas soluciones posibles son:

  • deshazte de la placa para un PCB
  • mejor fuente de alimentación / filtrado
  • aislamiento de bus I2C
  • ¿Todas las anteriores?

Actualización: Estaba pensando en algunos comentarios y en EMI y recordé que el dispositivo funcionaba cuando lo tenía en el banco pero todavía estaba conectado a la motocicleta con el motor en marcha. Tenía la placa de pruebas fija en la parte superior del tanque de gasolina y el bus I2C no estaba funcionando. Por lo tanto, acabo de levantar el tablero del tanque de gasolina aproximadamente 3 pulgadas arriba y el bus I2C reaccionó después de un ciclo de encendido del sistema. Cuando moví el tablero de pan lentamente hacia el tanque, ¡el I2C se corrompería! Nota: las bobinas de encendido están justo debajo del tanque también.

Entonces, ¿es este un problema de EMF / EMI? ¿Cómo mitigo esto?

¿Hay algún regulador de bajo ruido, fácil de implementar y de bajo nivel de ruido que pueda probar en lugar del LM7805? ¿Qué cosas simples podría intentar arreglar esto?

He diseñado un PCB, pero no estoy seguro de pedirlo o hacer uno a menos que sepa que esto va a funcionar en mi caso. ¿Hay algún tipo de revisión por pares de PCB donde pueda obtener un "OK" en mi diseño?

    
pregunta GisMofx

2 respuestas

1

Comience conectando el alcance a la alimentación de 5 V de su MCU. Primero mire en el acoplamiento DC, luego mire en el acoplamiento AC para obtener una vista realmente divertida. Para la mayor diversión (tm), también mire el "12V" entrante al menos una vez.

Los vehículos motorizados son cosas extremadamente ruidosas, la línea de alimentación puede contener ruido muchas veces más que un simple regulador lineal y algunas tapas lo resolverán. De hecho, las puntas en una motocicleta o un automóvil pueden ser tan altas (o bajas) que pueden romper un simple 7805 si no está protegido por un MOV, un filtro y un diodo de protección inversa. (El diodo también actuará como una especie de filtro con un límite de 100uF o superior).

I2C es muy sensible debido a sus resistencias de pull-up y una capacidad razonablemente alta en la placa de pruebas, así como a las parejas que hacen ruido.

También: contactos vibrantes en una motocicleta en marcha. Sin soldadura + vibraciones = no es bueno.

    
respondido por el Asmyldof
0

Utilice el alcance en el bus I2C. Conecte su alcance a cualquier lado del aislamiento que esté mirando. Una vez que verifique que sus señales son reales, puede cambiar al analizador lógico.

¿Cómo estás aislando? I2C es un bus bidireccional. Ellos hacen aisladores para manejar esto. Solo me estoy asegurando de que estés usando uno.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas