Duda sobre longitud de cables I2C

¡Hola!

Estoy con un proyecto en el que un Arduino maestro se conecta con 5 esclavos por I2C. Todo funciona perfectamente sobre la protoboard, el problema es que lo tengo que instalar en un sitio donde los 5 esclavos estarán a unos 50cm unos de otros pero el maestro estará a unos 12-14 metros de distancia. Tengo entendido que superar el metro y medio de cables para este tipo de conexiones da problemas por lo que quería consultarlo con la comunidad antes de hacer toda la instalación.

En caso de que no se pueda hacer, el maestro tiene una pantalla lcd y 5 pulsadores para mandar instrucciones a los demás (uso 12 pines más gnd y 5v). He pensado en utilizar dos cables ethernet de 20m que tengo por casa para dejar el maestro cerca de los esclavos y la pantalla junto con los botones alargarlos 14 metros. En este supuesto, ¿La pantalla, los botones o ambos podrían dar problemas al usar cables tan largos?

Muchas gracias de ante mano.

Si, más de 1m o 2 con mucha suerte no puedes trabajar con I2C directamente. Piensa que I2C se desarrolló para trabajar con varios componentes pero en la misma placa.

Podrías agregar extensores de bus como el P82B715 de Texas, te da hasta 50m a 400KHz

Incluso los puedes conseguir en módulos

https://sandboxelectronics.com/?product_cat=i2c

Lo de separar pulsador y LCD, no creo que funcione a tanta distancia, tendrías los mismos problemas.

1 Like

Voy a probar con los extensores, muchas gracias.

Por cierto, ¿lo tengo que conectar del lado del maestro, los esclavos, en todo?

Una última duda, en caso de alargar los botones o la pantalla que lo necesitaré para otro proyecto, ¿puedo que utilizar estos mismos extensores de bus o para eso necesitaría otros?

Me parece que va uno de cada lado porque los esclavos van en paralelo.

Revisa la documentación (está todo en el link) pero entiendo que éstos son para I2C solamente.

Se me ocurrió que podrías agregar un Nano que maneje la pantalla/pulsadores y podrías conectarlo al maestro por puerto serie, a lo sumo tendrías que agregar dos interfaces RS232/TTL o incluso interfaces RS485.
Creo que sería menos costoso que los extensores.

1 Like

Es muy buena idea. Además, según tengo entendido, con los rs485 no tendré problema con el ruido eléctrico, lo digo quiero pasarlo por el cableado de la casa.

Entonces, ¿lo dejo todo como está salvo el maestro que le quito la pantalla y se la conecto al nano que va al maestro por el rs485 o conecto todo directamente con rs485, qué te parecería mejor opción?

La pregunta está respondida antes. :wink:

Lo traduzco al español (jaja), quita la pantalla y pulsador/es del maestro y los conectas al nuevo Nano. Conectas el Nano al maestro con módulos RS485 de cada lado (uno para cada TX y otro para cada RX) y haces la transferencia de datos por puerto serie.
Imagino que no vas a usar los puertos USB para datos así que puedes usar los pines Rx y Tx (solo debes poder desconectarlos cuando debas subir el código) y no necesitas SoftwareSerial, lo manejas directamente con Serial.

Obviamente vas a tener que modificar el código del maestro y escribir uno para el Nano, pero no es la gran cosa.

1 Like

Hola @lughus

Para distancias largas de cables,... has probado cables apantallados con la malla conectada a GND ???.

Un saludo !!! ... :cocktail:... :cocktail:

1 Like

Hola. No, no los he probado porque no tengo ninguno y estoy haciendo las pruebas con lo que tengo por aquí. ¿Podría alargar tanto la distancia de los botones y de la pantalla con esos cables?

La idea es que si no tienes algo, vayas y lo compres para hacer la prueba.
No se puede reinventar la rueda.
También se usan drivers, integrados que reciben las señales ya algo distorsionadas y las vuelven a conformar para expandir de nuevo la distancia permitida.

Hola @lughus

Para pruebas:
No tienes unos cables como los utilizados en las salidas para altavoces (rojo y negro) que normalmente tienen apantallado cada polo. ???
Como son gruesos, la resistencia por metro es muy baja y casi anulas la capacidad parasita entre cada cable.

Si es así, usa cada uno para cada salida y la malla conectada en común para todos a GND.
Por lo menos lo pruebas, mal no va ha hacer.

Un saludo !!!...:cocktail:... :cocktail:

1 Like

Voy a mirar que de esos si que debo tener. Al final lo haré con un nano, pero para futuros proyectos me va a venir muy bien poder alargarlo tanto.

Muchas gracias.

No le quiero "pinchar el globo" a nadie pero 14 metros es una distancia considerable y problemática para manejar señales sin usar ninguna interfaz y más junto o cerca de una instalación eléctrica.
Para estos fines los cables de pares trenzados son más confiables que los mallados por el tema de la capacidad.
Pero como siempre, probar no cuesta nada mientras se tenga presente que es más seguro el fracaso que el éxito. :wink:

1 Like

Buenas noches, si sirve el dato, tengo unos equipos de medición de temperatura/humedad con sensores AHT10 y SHT3x conectados con cables de 10 metros de longitud a un arduino nano mediante interfaz i2c y no he tenido problemas. El cable utilizado es del tipo portero eléctrico de 4 conductores sin apantallamiento.
El módulo que contiene el sensor trae unas resistencias de pull up de 4k7 para sdat y scl.
De todos modos es como dicen, el i2c fue pensado para distancias cortas y en ambientes donde el ruido eléctrico no esté presente de un modo muy agresivo.

Saludos a todos.

1 Like

¿10m y sin trenzado ni apantallamiento?

Decime que además está transfiriendo a 1MHz y quemo todos los libros de mi biblioteca. :stuck_out_tongue_winking_eye:

jajajaaja no. no quemes nada, a mí también me extraña que funcione, en realidad solicita el maestro un dato de temperatura y humedad cada 3 segundos, o sea que seguramente la transmisión sea malísima y la repite muchas veces hasta que logra colocar el dato sin errores.
Si mido la tasa de transferencia debe ser bajísima seguramente, solo que para esta aplicación en particular, funciona.
Son unos invernaderos que me pidieron que funcionaban con PICs y sensores SHT10 , me pidieron actualizarlos porque se habían quemado los PICs, y me encontré esto de los cables de 10 metros funcionando con I2C ...

Saludos cordiales.

Sigue así hasta que te falle, y cuando eso pase que pasará, no te acordarás nada de lo que hiciste, y no lo digo deseando que te ocurra, todo lo contrario, hay que prevenir para curar.
Si tomas los recaudos ahora, el problema nunca se presentará.

Mira esto

CLOCK SPEED

100kHz

400kHz

1MHz

TOTAL DISTANCE

12"

6"

3"

12" = 12x2.54cm = 30.5cm
6" = 6x2.54cm = 15.24cm
3"= 3x2.54cm = 7.62cm

Acá esta la preocupación expresada por todos. Te funciona, bien por ahora. Tal vez tu cable es de baja capacitancia y has tenido suerte. Pero la suerte se acaba.

Todo esto no puede estar mal, no es cierto?

Buenas noches, todo lo que planteas lo conozco bastante bien y es más, en mi posteo expreso que me extraña que funcione, solamente intenté hacer un aporte con algo concreto de una aplicación en especial, hay 10 equipos funcionando las 24 horas del día y no he tenido problemas, al menos en la comunicación de los sensores con el arduino.
He tenido problemas con los sensores por efecto "creep" ya que estos invernaderos se usan para el clonado de plantines de olivo, y la humedad está seteada muy alta, a 97 %, por lo cual los sensores al cabo de unos 3 o 4 meses necesitan ser sometidos a recalibración por secado.
También se han quemado algunas fuentes de alimentación por subas y bajas de tensión en el lugar ( zona rural con tensión de red bastante fluctuante ) pero no problemas de medición.

Si no he sido claro con mis comentarios, pido disculpas.

Saludos cordiales.

Bueno coloca protecciones de sobretensión. Existen equipos que desconectan la alimentación cuando la tensión supera determinado rango. Relé de dos vias Linea y Neutro se desconectan cuando la tensión supera digamos 250/255VAC. Una idea. Nada que no sepas.

Que sensores usan, curiosidad?

Tal vez sea eso la humedad alta modifica la capacitancia de los cables (será posible, ahora que lo escribo me lo cuestiono), qué opinas?

Buenas noches, los sensores que estoy utilizando son los SHT30 de Sensirion, y también sensores AHT10 del fabricante Asair, en las hojas de datos de ambos fabricantes afirman que al estar por un largo tiempo sometidos a humedad tan alta, el sensor capacitivo de humedad va a acomenzar a dar valores por encima del verdadero ( incluso arroja valores mayores al 100 % - cosa que físicamente no es posible).
Aportan la forma de "recalibrarlos" sometiéndolos a alta temperatura y baja humedad por unas horas y el problema desaparece.

Una vez más comento que en el desarrollo del proyecto tuve varios inconvenientes pero justamente el tema de la comunicación del sensor con el arduino no ha fallado nunca.

Estoy mudando en estos días a sensores SHT4x de Sensirion que incorporan un calefactor activado por comando i2c para disminuir / eliminar este problema del corrimiento de la medida de humedad en ambientes demasiado húmedos.

Una vez más, es mi experiencia, quería compartirla con ustedes, si no les parece válida por mí está bien y respeto todos sus comentarios.

https://www.maritex.com.pl/product/attachment/147096/c5093eda6658ef654b651f3d5705c2ef

A los dos los tenía como buenos sensores, de hecho lo siguen siendo pero las condiciones micro-ambientales no colaboran con su durabilidad.