¿La eliminación del ruido con blindaje/condensador hace que la comunicación falle en este circuito?

Estamos desconcertados por una falla de comunicación sorpresiva entre nuestra PCB controladora y la PCB del sensor.

Diagrama de circuito para falla de comunicación del sensor:Diagrama de circuito para falla de comunicación del sensor

La comunicación falla a menos que hagamos una o más de las siguientes. Entonces funciona bien:

  • Desconecte el blindaje de tierra (1), dejando el blindaje flotando
  • Coloque una resistencia entre el escudo y la tierra (1)
  • Retire el capacitor (2) que va al regulador de voltaje de 5V a 3V
  • Toque tierra en cualquier parte del sensor (3)

No podemos explicar por qué funcionan estas correcciones. Dejar el escudo (1) flotando (desconectado) significa que no proporciona un camino a tierra para el ruido. El condensador de 1 µF (2) debe proporcionar un camino a tierra para el ruido y hacer que el voltaje sea más estable. Tocar la lata del sensor solo debería cambiar su capacitancia.

Intentamos quitar la perla de ferrita (FB) en caso de que ocurriera alguna oscilación LC, pero eso no afectó el comportamiento. Los condensadores en la placa del sensor están todos conectados a un plano de tierra mediante vías.

¿Deshacerse del ruido conectando a tierra el blindaje o teniendo un condensador podría empeorar la comunicación?

¿Por qué tocar la tierra del sensor solucionaría el problema? ¿Agregar capacitancia cambia la ruta del ruido?

Editar: aquí hay una imagen o-scope de la señal de datos SDA en el lado del sensor. Es un poco lento en el tiempo de subida. Sin embargo, no puedo ver ninguna diferencia en la forma de onda cuando hago las 4 correcciones anteriores:/

Lectura del osciloscopio de datos SDA en el lado del sensor

cerrar sda o lectura de alcance

Edición 2: aquí están los números de pieza y las hojas de datos.

Controlador:

Sensor:

Edición 3:

Pensé que el problema de conexión a tierra estaba provocando una falla en la comunicación. Sin embargo, al revisar el código en el controlador, descubrí que el sensor aún puede "reconocer" el byte de dirección/escritura enviado por el controlador. Simplemente no "reconoce" la dirección/byte de lectura, y luego devuelve todos los 1 en lugar de los datos del sensor. Creo que esto significa que la parte de comunicación está funcionando bien, pero de alguna manera el problema de conexión a tierra está perturbando el procesamiento interno del sensor y no puede obtener una lectura estable.

¿Qué longitud tiene el cable entre el controlador y la placa del sensor y qué tipo de comunicación está utilizando? (¿Parece I2C tal vez?). Si es I2C (o cualquier otro tipo de un solo extremo), probablemente no debería torcer las señales juntas. Es mucho mejor torcer cada señal con GND o no usar ningún cable torcido.
@Pan Vi sí, es I2C, el arnés suele ser de 12 a 15 pies, pero el comportamiento es el mismo con un arnés de 5 pies en una prueba de banco. Sí, tiene sentido no torcer scl y sda debido a la diafonía.
¿Puedes mirar las señales con el osciloscopio, qué está pasando? ¿Qué pull-ups estás usando? ¿Están en ambos lados (controlador y tablero del sensor)? Puedes intentar bajar el valor. El problema es que las correcciones como "quitar el condensador" a menudo fallan cuando mueves el proyecto del banco al entorno ruidoso con todo tipo de motores, etc. (al menos en mi experiencia). I2C no está diseñado para usarse en cables largos, tal vez intente buscar extensores I2C, algo como LTC4331 ...
Hacer (2) no debería hacer ninguna diferencia.
Las líneas verdes alrededor de su controlador y sensor, ¿representan una carcasa de metal? Además, 15 pies, o incluso 5 pies, es un recorrido demasiado largo para esperar que una interfaz de un solo extremo funcione de manera confiable.
@SteveSh, el controlador está en una caja de metal (aluminio) que está conectado a tierra. El sensor está en una carcasa de aluminio anodizado que no está conectado a tierra. No ponemos a tierra la carcasa del sensor para evitar un bucle de tierra. Sí, estoy de acuerdo en que I2C no está diseñado para esto, es un producto que ha estado funcionando durante aproximadamente 6 años debido a algunas medidas inteligentes para que funcione a esa distancia. El cambio a largo plazo a una interfaz diferencial como CANBus o una interfaz actual evitaría estos problemas de desacuerdo a tierra
@Andy alias Lo sé, ¿verdad? Sin embargo, soluciona el problema. Descarté la oscilación RLC porque quitar la perla de ferrita no soluciona nada. ¿Podría ese condensador estar filtrando el ruido de tierra, que el sensor necesita para tener un acuerdo de tierra con el controlador?
@Pan Vi gracias por las sugerencias detalladas. Agregué algunas capturas de pantalla del osciloscopio en el lado del sensor en la señal de datos SDA. Estamos usando pull ups de 10k. Intenté bajarlos a 5k y no hay diferencia de ninguna manera (la comunicación falla sin las 4 correcciones anteriores, tiene éxito con las 4 correcciones anteriores). Sin embargo, hizo que la forma de onda se viera más cuadrada, así que apuesto a que es una victoria. Tal vez debería intentar ir a 2k ya que eso es lo que sugiere el fabricante del sensor.
@pan vi Estoy de acuerdo en que quitar el capacitor me preocupa, y notamos que incluso en el banco, quitar ese capacitor hace que los sensores no estén de acuerdo y tengan lecturas de "picos" ocasionales.
@pan vi esa es una buena sugerencia. Parece que convierte el I2C de drenaje abierto en una señal diferencial y luego vuelve a hacerlo. Apuesto a que sería realmente robusto.
Proporcione algunos números de parte del dispositivo.
"Pon una resistencia entre el escudo y la tierra (1)" - ¿Qué valor de resistencia y exactamente dónde la pusiste?
@Kevin White buena idea, editado para agregar algunos números de parte
@Bruce Abbott 100 ohmios. El blindaje se conecta a tierra en la carcasa metálica de la PCB del controlador a través de las tuercas de acoplamiento en un conector M12. Usamos un cable con un ojal para conectar a tierra la carcasa de metal del controlador al nodo de conexión a tierra de la PCB, que está conectado a tierra con la batería del vehículo. Cortamos el cable en el ojal e insertamos allí la resistencia para desconectar el blindaje de tierra.
Terreno del vehículo, a la derecha. ¿La caja del sensor normalmente también hace contacto con algo que está conectado a tierra (por ejemplo, el motor) o está aislada?
@BruceAbbott La caja del sensor está montada en el chasis del vehículo, a veces en metal y otras en plástico. La caja del sensor es de aluminio anodizado por dentro y por fuera, por lo que incluso si el exterior está rayado, el interior está aislado. Para este problema en particular, hemos encontrado que el comportamiento es el mismo ya sea montado en el vehículo o en el banco de pruebas sin carcasa del sensor.

Respuestas (2)

Una pregunta muy bien planteada.

Estás buscando en el lugar equivocado; el ruido no es tu problema Este es un problema de puesta a tierra. Cuando el circuito de su sensor consume corriente de alta frecuencia, como cuando transmite, la impedancia de la línea de alimentación significa que el voltaje del circuito en el extremo del sensor es apreciablemente diferente al del microcontrolador. Esto significa que sus terrenos están en diferentes niveles de voltaje. Puede disminuir este problema eliminando o reduciendo las cargas en los extremos de la línea de transmisión o mejorando la conexión a tierra, como ha demostrado.

Dado que la conexión a tierra en el extremo del microcontrolador no tiene el mismo voltaje instantáneo que la conexión a tierra en el extremo del sensor, el uso de una señal de voltaje para la comunicación con la conexión a tierra como su referencia de señal no es lo ideal. Esta es la razón por la cual muchos diseños de sensores con cables usan corriente en lugar de voltaje, o agregan pares con optoaisladores al circuito de señal de comunicación para evitar este problema. Cualquiera de los dos enfoques haría que su diseño fuera más a prueba de balas.

¡Buena suerte!

Muchas gracias por su punto sobre el desacuerdo en el terreno. Eso explicaría por qué el capacitor fue perjudicial, estaba "desacoplando" los motivos como se supone que debe hacerlo y haciendo que no estén de acuerdo. Apuesto a que tocar el sensor permitió que se absorbiera parte de su corriente de alta frecuencia, mejorando el acuerdo entre los terrenos. Y desconectar el blindaje también mejoraría el desacuerdo entre los terrenos porque el escudo no arroja ruido en el extremo del controlador (y tampoco es efectivo como escudo)
Su punto nos llevó a una solución interesante. Para succionar parte de la corriente de alta frecuencia, soldamos el blindaje al cable de tierra dentro del arnés, cerca del sensor (que se muestra como una X en el diagrama). Esta solución ha demostrado ser muy sólida en nuestra prueba de campo, incluso con nuestro arnés de 15 pies envuelto alrededor de los componentes ruidosos del motor. Todavía se siente un poco como vudú, pero tenemos algo con lo que trabajar para las varias miles de unidades en producción mientras trabajamos en una solución a largo plazo.
Una pregunta sobre los motivos en desacuerdo. Si ese es realmente el caso, ¿debería poder detectarlo en el osciloscopio? Intenté sondear los terrenos en ambos extremos y configuré el osciloscopio para que se disparara si eran diferentes, pero la mayor diferencia que pude detectar fue de 150 mv, incluso con una resolución de 20 ns. Y esos 150 mv son básicamente el piso de ruido. Obtengo la misma diferencia simplemente conectando las dos sondas juntas.
¡Feliz de saber que tienes una solución! Lo que creo que encontrará es que un alcance lo mostrará dependiendo de dónde esté conectado a tierra. A menudo, un alcance se conecta a tierra a través de la conexión a tierra de su línea eléctrica, por lo que conectar el cable de tierra de la sonda del alcance cambiará o mejorará su esquema de conexión a tierra.
Es posible que pueda ver los efectos de la puesta a tierra del osciloscopio tocando la tierra del osciloscopio con la tierra del circuito cerca y lejos de la señal que se está midiendo. Creo que podría ver una diferencia en los "picos", que en realidad probablemente sean causados ​​​​por la diferencia de tierra.

Ese pico negativo parece bastante fuerte, tal vez 1.5V o algo así. Eso está fuera del voltaje normal permitido para los pines del microcontrolador.

ingrese la descripción de la imagen aquí

Es difícil saber de dónde viene, pero en mi opinión, podría intentar agregar una pequeña resistencia como 100R en serie con la señal para ralentizar un poco el borde descendente. Si el pullup es de 10k, este valor bajo no evitará que baje el voltaje cuando sea necesario.

Había visto esa caída y me preguntaba si era significativa. Su punto sobre el voltaje del pin permitido por el microcontrolador es absolutamente correcto. Intentaré averiguar de dónde viene ese pico negativo. Hay una dirección de protección ESD/diodos de TV en las líneas i2c del sensor, me pregunto si ese podría ser el culpable. Agregar resistencias en serie parece una buena solución, lo intentaré y te lo haré saber.