Las longitudes que suenan locas como 10,25, y 100m son perfectamente posibles, y yo uso el método a menudo (con UART no I2C, pero el método se mantiene) cuando necesito armar cosas rápidamente. Sin embargo, no es exactamente la mejor manera.
La clave es conocer el umbral de tensión de entrada. Asegúrate de que la caída de tensión en el cable de tierra está muy por debajo de éste, o de lo contrario un transmisor con un alto potencial de tierra no podrá bajar la tensión lo suficiente. La falta de tolerancia a las desviaciones de tierra, en mi opinión, es la mayor razón para utilizar transceptores RS485 o CAN (I2C sobre CAN se menciona en algunas notas de aplicación).
Lo ideal es que todos los dispositivos tengan su propio cable de pared y su propia batería y que no se envíe energía por el cable de tierra entre los dispositivos.
Pero, tomemos como ejemplo el CAT5. CAT5 no puede ser superior a 52pf/m, o no es CAT5.
100m de cable de 52pf tienen una capacitancia de 5200pf o 5,2nf.
5,2n por 20kohms (pullup) da una constante de tiempo de unos 104 microsegundos. Eso limita la velocidad a unos 10kHz más o menos.
Usando pullups de 2,2kohm, probablemente podrías llegar a los 100kHz.
He oído que los dispositivos deben tener una resistencia en SDL y SCK, debido a la gran carga capacitiva que conducen, de algo así como 180 o 200 ohmios.
Pero honestamente, I2C no es en absoluto el camino a seguir para largas distancias. Los transceptores CAN o RS485 utilizados con UART normales son una solución robusta con muy buena protección contra fallos, resistencia ESD, velocidad, distancia, etc, a un coste de un dólar el chip o así, las compensaciones de tierra no importan casi nada, así que eres libre de llevar energía junto con los datos.
El único inconveniente es que un transceptor de lata puede llegar a 70ma transmitiendo y 1 o 2ma sólo escuchando, por lo que I2C o TTL UART directo podrían ser útiles en situaciones de extrema baja potencia, pero considera cuánto tiempo pasas realmente enviando.
1 votos
La longitud máxima viene yo a jugar con la capacitancia introducida por la longitud. Demasiada capacitancia y podría afectar a la velocidad. Así que como siempre, esto depende.
0 votos
@GustavoLitovsky Tienes razón en cuanto a la capacitancia. También depende del tipo de cables que se utilicen (apantallados vs no apantallados). Lo que más me interesa es una orientación general.
2 votos
@Nate Directriz: capacitancia neta máxima del bus de 400pF. (Algo relacionado con la pregunta: Memorias de un bus I2C sobredimensionado .)
1 votos
I2C = Bus de circuito integrado. No está diseñado para largas distancias entre cajas, y desde luego no a 400kHz.
1 votos
Sólo quería aportar alguna experiencia personal aparte de los cálculos. He hecho una demostración pasando de una placa de desarrollo a un convertidor I2C a USB con un cable sin apantallar de unos 3 pies. No se veía bonito, pero funcionaba el 90% de las veces.
0 votos
A veces, en circuitos de extrema baja potencia donde los transceptores de larga distancia no son viables debido al consumo de corriente, he utilizado I2C en distancias superiores a 30m. Esto se consiguió utilizando cables Cat5E con una tasa de placa de 1KHz.