Tengo un proyecto que requiere hacer I²C / I2C / TWI a larga distancia (30 a 40 metros).
He visto a algunas personas sugiriendo reducir la velocidad del reloj a alrededor de 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 para usar una palanca de cambio de nivel P82B96. En la hoja de datos , dan ejemplos de su uso en líneas de incluso 100 metros:
me he encontrado con otra forma de cambiar los niveles a través de una placa de arranque de adafruit , que es solo un mosfet (bss138) con dos resistencias pull-up (una para cada lado / voltaje). Ellos obtuvieron la idea deuna nota de aplicación de NXP (AN10441) , y dos de los canales allí podrían usarse así:
Ahora me pregunto: ¿qué solución es la mejor? ¿O hay algo que he pasado por alto? Y también, ¿son suficientes 5V para garantizar una buena conexión? ¿Sería ventajoso usar un voltaje aún mayor como 12V?
Respuestas:
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 analiza el uso de una longitud de cable de hasta 250 m con velocidades de datos superiores a 100 kHz.
Hay muchos sensores de temperatura I2C disponibles que pueden brindarle una precisión de unos pocos grados centígrados sin calibración y sin ningún circuito analógico adicional. Dado que de todos modos está recuperando los datos para procesarlos, filtrar el ruido sería muy fácil.
Si le preocupa la capacitancia del cableado, es mejor que tenga un par trenzado sin blindaje en lugar de un cable blindado.
fuente
Probablemente pueda salirse con la suya con los sensores DS18B20 utilizando un cable blindado CAT5 o similar. Son solo mediciones térmicas, por lo que si algunas lecturas se corrompen, puede hacer que su programa sea lo suficientemente robusto como para lidiar con eso (de todos modos, es una buena práctica).
Para uso en cadenas de restaurantes, he diseñado lo que se conoce como controles RTU (unidad de techo) que funcionan en múltiples sensores pasivos (usan termistores NTC intercambiables , que no requieren calibración para calefacción de confort). 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) utilizó RTD de platino con acondicionadores de señal, dispositivos muy precisos y estables. Primero debe decidir el sensor, luego ver cómo podría conectarse: 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, sugiero 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, puedes considerar usar sensores inalámbricos que se comuniquen 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.
fuente