La mejor manera de hacer I2C / TWI a larga distancia

8

Tengo un proyecto que requiere hacer I²C / I2C / TWI en una larga distancia (30 a 40 metros).

He visto a algunas personas que sugieren reducir la frecuencia de reloj a aproximadamente 500 Hz, para mitigar los efectos de la capacitancia de una línea tan larga, ¿supongo? Los componentes que estoy usando requieren al menos la frecuencia de reloj estándar de 100 kHz. Investigué un poco más y encontré entre las respuestas a otra pregunta una sugerencia de usar un cambiador de nivel P82B96. En la hoja de datos se dan ejemplos de cómo usarlos en líneas de hasta 100 metros:



Meheencontradoconotraformadecambiarlosnivelesatravésde un tablero de ruptura de adafruit , que es solo un mosfet (bss138) con Dos resistencias pull-up (una para cada lado / voltaje). Tuvieron la idea de una nota de la aplicación de NXP (AN10441) , y dos de los canales que se encuentran allí podrían se usará de esta manera:


Ahora me pregunto: ¿cuál es la mejor solución? ¿O hay algo que he pasado por alto? Y también, ¿es 5V suficiente para asegurar una buena conexión? ¿Habría una ventaja en el uso de un voltaje aún mayor como 12V?

    
pregunta DaJF

2 respuestas

1

Creo que estás en el camino correcto con algo como el NXP P82B96. Si observa la Figura 14 y el texto asociado, la hoja de datos discute el uso de un cable de hasta 250 m con velocidades de datos superiores a 100 kHz.

Hay muchos sensores de temperatura I2C disponibles que pueden darle una precisión de unos pocos grados centígrados sin calibración y sin ningún circuito analógico adicional. De todos modos, ya que está recuperando los datos para procesarlos, filtrar el ruido sería muy fácil.

Si le preocupa la capacitancia del cableado, podría estar mejor con un par trenzado sin blindaje en lugar de un cable blindado.

    
respondido por el Joe Hass
2

Probablemente pueda salirse con los sensores DS18B20 usando un cable blindado CAT5 o similar. Solo se trata de mediciones térmicas, por lo que si algunas lecturas se corrompen, puede hacer que su programa sea lo suficientemente sólido como para lidiar con eso (de todos modos es una buena práctica).

Para el uso de cadenas de restaurantes, he diseñado lo que se denominan controles RTU (unidad de techo) que funcionan con múltiples sensores pasivos (utilizan termistores NTC intercambiables , que no requieren calibración para un calentamiento confortable). Es mucho más fácil filtrar el ruido de un sensor pasivo. Otro conjunto de instalaciones (un importante complejo automotriz de América del Norte) utilizaba RTD de platino con acondicionadores de señal: dispositivos muy precisos y estables. Primero debe decidir el sensor, luego ver cómo podría estar conectado: cualquiera de estas opciones de sensor son adecuadas para su aplicación (aunque los RTD pueden ser excesivos).

En caso de que no esté claro, estoy sugiriendo una configuración "estrella" de sensores alrededor de su procesador.

Si realmente desea utilizar un "bus" (que no sea un cable o I2C), necesitará inteligencia en los extremos, lo que significa un procesador de alguna forma. Si te estás volviendo loco, deberías considerar el uso de sensores inalámbricos que se comunican a través de alguna banda ISM que sea legal en tu localidad. Alternativamente, puede usar un sensor por Pi y hacer que se comuniquen entre sí a través de su intranet WiFi.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas