Conexión a tierra adecuada de 2 MCU usando I2C

Estoy construyendo un sistema mecatrónico que consta de 1) pórtico XY controlado con PIC32 y un protector de motor de bricolaje y 2) caja de control con PIC24 tres potenciómetros + espacio para expansión, generalmente ubicado bastante lejos. Los dos sistemas deben conectarse mediante una línea XLR porque se trata de una configuración de audio.

Al diseñar el sistema, dos grandes preocupaciones han sido no introducir ruido en el resto del sistema y comprender el problema del bucle de tierra. Mi instinto como estudiante de EE fue usar amplificadores operacionales para interrumpir el bucle de tierra. El plan era enviar las tres líneas de señal desde los limpiaparabrisas de los potenciómetros a través de xlr y usar la conexión a tierra del sistema de control para medir el voltaje diferencial en el sistema. Me esforcé mucho para diseñar algo que funcionara con un verdadero columpio de riel a riel. Funciona decentemente bien en el banco, y creo que esto funcionaría para el sistema final, pero parece que me estoy convirtiendo en el tipo que solo tiene un martillo en la caja de herramientas.

Así que me pongo a pensar en I2C. Permite mucho espacio para la expansión, y solo ocupa dos líneas. Potencialmente, esto significa que el sistema que iba a tomar dos cables XLR podría necesitar solo uno ahora. Entonces, aquí está el sistema que visualizo:

ingrese la descripción de la imagen aquí

Esta imagen omite las resistencias pull-up en el bus Y el SHIELD del XLR. Planeo tener pull-ups en los tres segmentos del bus (pre-búfer en ambos extremos y en el búfer). El CLK funcionará relativamente rápido, por lo que no quiero introducir EMI en las líneas audi0 como todos compartirán un bus XLR, así que me pregunto cómo conectar correctamente los terrenos. He leído las notas de RANE y, por lo que deduzco, para hacer una jaula de Faraday que funcione, necesito conectar ambos chasis al blindaje del cable para hacer un gabinete completo.

Mi confusión es la siguiente: la tierra del chasis se está convirtiendo en una extensión del escudo para evitar la EMI. Mucho de lo que la gente escribe asume que tiene una conexión a tierra a mano, y que puede unir la tierra, la señal y el chasis en algún punto, a través de una conexión directa, acoplada a RC o acoplada a diodo. En primer lugar, se me ocurrió que no tengo conexión a tierra en mis circuitos a través de un cilindro de CC porque estoy sentado encima de dos fuentes de alimentación diferentes a través de fuentes de alimentación conmutadas y acopladas a un transformador. Entonces, ¿debo atar el escudo a la tierra de la señal (manga del barril)? Si es así, con directo, RC o diodo? Mis pensamientos son sí, y usar un circuito RC con <= 100Ω. En un mal caso, donde las conexiones a tierra de la fuente de alimentación 1 y 2 son muy diferentes, ¿la compensación en la conexión a tierra afectará mis niveles lógicos? Se supone que los P82B715 son "traductores de nivel".

Gracias por el aporte.

I2C no es bueno para cables largos. ¿De cuánto tiempo estás hablando?
Sí, definitivamente he oído hablar de esto en la literatura. Creo que 20 m sería un promedio, siendo 50 m realmente el límite superior. Por lo que estoy leyendo, el P82B puede hacer distancias como esta.
La mejor conexión a tierra para i2c es mantenerlo en el mismo pcb. ¿Qué hay de rs485?
@ErikFriesen: ¿Se refiere a "Transmitir las señales I2C como señales diferenciales usando hardware RS-485", como se muestra en la Fig. 3 de "AN10364: Aislamiento optoeléctrico del bus I2C" ? Ese documento también muestra una forma de optoaislar un bus I2C, de modo que el maestro y los esclavos puedan comunicarse incluso con varios cientos de voltios de compensación.
Creo que i2c no es adecuado para esto, ¿por qué no repensar un poco y usar rs485 o algún tipo de lvds?
Hice el cambio a RS485 poco después de esta publicación; Lo tuve funcionando durante un tiempo, pero se ha roto durante las últimas semanas. Divirtiéndome mucho resolviéndolo..
Tal vez no sea la mejor manera de hacerlo, como han señalado otros, pero si desea conectar dos cajas a larga distancia, solo necesita aislarlas eléctricamente mediante un transformador, un optoacoplador o un condensador en línea. Así es como harías ethernet, por ejemplo. La otra opción es simplemente seleccionar un cable con una cubierta de metal conectando la cubierta a tierra en ambos lados y aceptando que si un rayo golpea una caja, entonces golpea a ambas.

Respuestas (5)

Hay algunas opciones disponibles.

El enfoque más estándar de la industria para este problema es usar un bus diferente en lugar de I2C. Muchos microcontroladores admiten bus CAN o ModBus de forma nativa. Otra opción común es RS-232.

El otro enfoque sería utilizar transceptores aislados. Recomiendo hacer esto independientemente del bus que utilice.

El tercer enfoque sería pasar el poder junto con su comunicación. Usted nota específicamente que es de baja potencia, pero no define qué tan baja, por lo que no sé si esto es viable.

Hola Tom, gracias por la entrada. Cambié a RS-485 hace algún tiempo. Tarareando muy bien ahora.
Probablemente sea una buena elección. ¿Tiene algún problema pendiente? Yo podría ser capaz de ayudarte. De lo contrario, seleccione una respuesta y márquela como aceptada, para que su pregunta no aparezca en el orden de preguntas sin respuesta.

Haría la siguiente pregunta: ¿su transformador de suministro lineal de baja potencia está aislado? (Por lo general lo son). Es decir, ¿utiliza un transformador para convertir el voltaje de la red a un voltaje de CA bajo, luego convertirlo a CC y regular? Si es así, y si puede hacer flotar las líneas de bajo voltaje, simplemente ate sus dos conexiones a tierra de CC con un cable de calibre conveniente. El transformador reductor aislará la salida de la entrada.

Si hace esto, existe la posibilidad de que el chasis de baja potencia aún esté conectado a una línea de tierra diferente a la del chasis de alta potencia, con el potencial de peligro. Y será necesario mirar el esquema de suministro lineal para ver si realmente puede desconectar el suministro común de tierra. También será una excelente idea verificar que ambos conectores de red estén cableados correctamente. De lo contrario, es posible que las conexiones a tierra de los dos circuitos tengan voltaje de red entre ellos.

Sí, es su transformador estándar, tapa de filtro, configuración PS del regulador. Esto definitivamente fue parte de mi confusión sobre la conexión a tierra de mi sistema (es un enchufe de 2 clavijas, no un enchufe de 3 clavijas como se indica en el diagrama). Estoy menos familiarizado con las fuentes de alimentación conmutadas, pero me pregunto si es la misma situación en el lado SMPS: una mirada rápida mostró que estos casi siempre usan transformadores también.
[También por RYS. Segunda parte de una respuesta convertida en comentarios.] Entonces, estoy aislado del transformador en ambos extremos, pero posiblemente por diferentes motivos. Si conecto el blindaje de mi cable al chasis en ambos extremos, asumo que tendré que conectarlo a mi tierra de señal (ambos extremos). ¿Cuál es la mejor manera de hacer esto? Una resistencia definitivamente limitaría la corriente a través del escudo...

En un mal caso, donde las conexiones a tierra de la fuente de alimentación 1 y 2 son muy diferentes, ¿la compensación en la conexión a tierra afectará mis niveles lógicos?

Peor: destruirá los búferes I²C. Solo admiten tensiones de 0 a VCC (máx. 12V) en líneas de bus.

Prefiero usar RS485 como bus. Hay transceptores con un rango de voltaje de modo común más alto y el bus no es tan sensible al ruido como lo es I²C.

Si la diferencia de potencial de tierra puede aumentar, es posible que deba usar optoacopladores.

Las notas de diseño del P82 indican que el chip funcionará de 50 a 100 m dependiendo de la capacitancia de la línea, lo cual es suficiente para mis necesidades. Sin embargo, RS485 parece interesante. Mi pregunta permanece; Veo que rs485 puede referirse a tierra local o enviar tierra con el par trenzado. Si estamos haciendo lo último, ¿cómo se deben conectar los terrenos?
DMX usa RS485 a 250 kbaudios en un cable especializado de 120 ohmios o Cat-5 de 100 ohmios, con la terminación adecuada. Podrías buscar eso.

Si la robustez es un tema más importante que el costo, posiblemente considere lo siguiente:

1) I2C Isolator IC para aislar señales y energía. Vea numerosos circuitos integrados de Analog / Clare / Linear / NXP / Silicon Labs / TI / ...

y/o

2) Controlador I2C de "larga distancia", como NXP PCA9600, NXP P82B96 o similar.

I2C es notoriamente difícil de mantener la integridad de la señal en cualquier tipo de distancia porque se basa en resistencias pull-up pasivas. Dado que solo tiene dos extremos de su bus de comunicación, el mejor enfoque sería usar RS-232, que está hecho específicamente para este propósito. También será mucho más fácil solucionar problemas. Si el ruido es una preocupación, considere usar RS-232 aislado ópticamente. Es mucho más fácil en RS-232.

Si insiste en usar I2C, lo mejor es enrutarlo a través de un aislador: http://www.analog.com/en/interface-isolation/digital-isolators/adum1250/products/product.html

He cambiado a rs485. Estuvo funcionando por un tiempo, pero me encontré con algunos problemas; me viene a la mente su nombre. ¿Algún consejo sobre cómo podría usar rs 232 en modo semidúplex? Sé que 232 usa un voltaje de señalización diferencial más alto: ¿alguna ventaja sobre rs485 con respecto al modo común?