Modbus TCP problemas con sensores y pantalla

Buenas tardes:

Tengo el siguiente problema al agregar físicamente 3 termómetros DS18B20 en onewire y una pantalla 20x4 por I2C en algunos dispositivos maestro funciona y en otros no, si se desconecta el shield protoboard conecta perfectamente sin la pantalla y los termómetros.
Gracias

En la imagen se ve la pantalla funcionando normalmente y los dos Arduino UNO, el primero con los sensores y pantalla (problema) y el segundo sin él (funciona al estar activada una entrada analógica y cambia frecuentemente)

ModBusTCP4B.ino (7.62 KB)

El problema del DS18B20 es que su conversión a 12Bits (maxima resolución) insume 750mseg. Lo has considerado? Eso fácilmente te puede hacer perder el timing de tu refrezco Modbus.

Gracias por el consejo, en otra versión con millis () de 2 segundos ocurre lo mismo, cómo también cambiando a 9 bits los sensores.

Hi,
Tienes instalada la resistencia de 4k7 en el pin de data del DS18B20? Otra cosa que puedes hacer es aislar cual de los dos esta causando el rpoblema. Primero corre los sensores sin el LCD y mira ver si corre bien sin problemas. Despues corre el LCD sin el LCD y mira si corre bien. Asi puedes determinar si es una combinacion de los dos.

Gracias, si tiene la resistencia.
Quitando del loop los termómetros funciona bien,
Quitando la pantalla del loop funciona bien,
juntos no.
¿Qué se puede hacer?

Solucionado
Una rutina de millis() de 2 segundos, la pantalla y los termómetros.
Gracias.
P.D. Espero ahora que agregue más código no pase lo mismo.

Hi,
Tengo una sugerencia y es que installes los 3 DS18B20 y el LCD y corres el programa que scanea el I2C para ver cuantos devices tienes y los address en el I2C. El programa se llama I2CdeviceLookup,ino. Digo no se ya lo haz corrido. Pero te dira si hay conflictos en los devices address.

Agrego esa parte de código al final del programa?

No entiendo la sugrencia de @tauro0221?

Tiene un solo dispositivo i2c que es el LCD.
Los DS18B20 son 1Wire.
El problema es que os DS18B20 consumen 750mseg por cada uno.. y eso anidado son 2.25 seg.
En una rutina como Modbus que es timing dependiete no es tolerable.
A menos que haya un timer controlando eso pero de todos modos insume envio via TCP/IP en este caso.

Luego te paso una libreria que permite leer los DS18B20 sin ese delay que insume cada uno.

Sera de gran ayuda.

Hi,
Solo que pense que podria tener problemas con los address de los device. Pense que el wire y el I2C usaban la misma funcion para comunicarse con los devices Fue una sugerencia.

Quedo a la espera, gracias.