conectar 30 celdas de carga y comparar sus pesos

Compañeros recurro a ustedes lo expertos, para implementar un codigo que me ayude a conectar 30 celdas de carga y comparar la suma de sus resultados para hacer encender 2 led .Las comparaciones van de 2 balanzas (Se que son muchas por eso necesito su ayuda), por ejemplo si 2 balanzas me pesan 1000gr entre las 2, hacer encender un led en las 2 celdas de carga.
De momento tengo conectado al arduino una sola celda de carga con un amplificador HX711 ,que me envia el peso a travez del monitor serial.Estaba pensando si podia conectar todos los arduino aprovechando la UART (ya que me imagino que pondre un arduino en cada celda de carga), pero necesito su apoyo para saber por donde deberia empezar a armar el circuito.
Adjunto el codigo donde recibo el peso en el monitor serial

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
Serial.begin(9600);
  Serial.print("Lectura del valor del ADC:t");
  Serial.println(balanza.read());
  Serial.println("Destarando...");
  Serial.println("...");
  balanza.set_scale(439430.25); // Establecemos la escala
  balanza.tare(20);	//El peso actual es considerado Tara.
  
  Serial.println("Listo para pesar");  
}

void loop() {
  Serial.print("Peso:t");
  Serial.print(balanza.get_units(20),3);
  Serial.println("kg");
  delay(500);
}

entonces si no entiendo mal tenemos 20 celdas y 20 led? y 20 arduinos? que distancia hay entre celdas?

en cada balanza habrá un peso me imagino y las dos que sumen 1000 se tienen que encender??

No puedes conectar todos los Arduinos usando serial.
Si puedes usando un driver MAX485 por ejemplo o usando I2C o usando SPI (estos dos ultimos tienes restricciones de distancia).
Debes resolver primero como los vas a conectar.
Si usas I2C puedes conectarlos hasta 2.25mts entre si pero lo que no se si el master y el ultimo nodo debe estar a 2.25mts lo que resulta imposible fisicamente para 30 balanzas.
Deberías probarlo, y usas cables de USB que tendras que cortar para interconectarlos de un nodo maestro a un esclavo.
Justamente otro forero esta consultando algo similar con I2C asi que puedes participar del tema.
SPI debe ser similar.

Max485 es una interfaz que permite hasta 1200 mts con las condiciones apropiadas de cables mallados, y lineas balanceadas.
Asi que esta sería tu mejor opción comprando los módulos 485 que son baratos.

Edito: Respondo 1ro a Go_zalo que creo que fue mas acertado en su consulta.

Por eso me gusta leer de cada caso, porque siempre se aprende algo nuevo.
Según un experto que trabaja con sensores USB, dice que esos sensores usan chips I2C y que con un protocolo de recuperación de errores facilmente alcanza 25mts con cables comunes y 100 mts con cables UTP CAT5
fuente: maximum I2C Bus Length

I work for a company making USB sensors. Most of them are based on I2C sensor chips, those devices can be split in two, so you can install the CPU part in one place and the sensor part in another. We conducted quite a lot of tests on the I2C connection between the device CPU and the I2C sensors. At 100 kHz, with a good error recovery protocol, 25m can be easily reached using basic wires. We were even able to reach 100m once with CAT5 cable.

Exacto compañeros solo se encenderan los led de los 2 sensores que pesen 1000gramos.
Usare 30 arduinos, 30 sensores y 30 led.
Respecto al cableado no sera tanta la distancia entre arduinos yo creo que no pasaran de los 2 metros entre cada arduino.
Ya veo que tendre que usar un convertidor serial a rs485.

Mientras tanto compañeros solo tengo 4 arduino uno y varios sensore de peso, no se si se podra simular en proteus.

Todos los sensores tendran un peso encima, los arduinos tendran que calcular solo las 2 balanzas que mas se aproximen a 1000gramos, luego que saque el peso de esas 2 balanzas tendran que encenderse dos led de 2 sensores de peso mas que tambien tendran un peso aproximado de 1000 gramos, mientras se vuelve a cargar con peso los sensores que estan vacios.

yo lo haría de la siguiente manera:

Conectaría los arduinos en cascada y asignaría un valor a cada uno para poder referime a el

El primero (que tendría que tener un código diferente al resto) cada X lee el peso y lo envía por serial al segundo (XX)

El segundo al leer que recibe la información del primero, lee su celda y envía al tercero los dos pesos (XX,YY)

y así sucesivamente hasta llegar al ultimo que recibiría una cadena larga: XX,YY,ZZ... AA de 30 valores separados por , o por ; o lo que sea

El ultimo arduino hace los cálculos (que también debería tener un código diferente al resto y decide que leds se deben activar y entonces envía otra cadena digamos (aa,bb) la cual la recibe el arduino 29 y la manda al 28 y asi hasta llegar al 1, cada arduino compara para ver si su numero esta en la cadena recibida y si esta enciende su led

que te parece?

No creo que lo puedas simular con proteus, pero si tienes 4 arduinos ya tienes bastantes para hacer las pruebas

compañeros aun soy novato en arduino pero trato de hacer lo que mas puedo, con este codigo cuando recibo el peso del primer arduino,el segundo me lo imprime junto con el peso de el.
Ahora como podria hacer para no imprimir continuamente los pesos y solo me imprima un dato cuando el peso este estable y asi evitar mandar tantos datos continuos.
Tambien tendria el problema de como sumar los datos de los arduino y comparalos

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
Serial.begin(9600);
  Serial.print("Lectura del valor del ADC:t");
  Serial.println(balanza.read());
  Serial.println("Destarando...");
  Serial.println("...");
  balanza.set_scale(439430.25); // Establecemos la escala
  balanza.tare(20);	//El peso actual es considerado Tara.
  
  Serial.println("Listo para pesar");  
}

void loop()
{
  if(Serial.available()> 0){
  pesoa = Serial.read();                   //recibo el peso de la primera balanza
  Serial.print(pesoa);                     //imprimo el peso de la primera balanza
  Serial.print(balanza.get_units(20),3);   //imprimo el peso de la segunda balanza
  delay(500);                              //espero 500 milisegundos para volver imprimir
  
}

Hola me alegro de que te hayas puesto manos a la obra

Para hacer lo que dices, puedes leer varias veces la bascula cada 300ms por ejemplo y cuando la lectura sea ‘igual’ tres veces seguidas entonces continuas

boolean salir=false;
int peso[3];
while(!salir){
  for (i=0;i<3;i++){
    peso[i]=(balanza.get_units(20);   //imprimo el peso de la segunda balanza
    delay(300);  
  }

int media=(peso[0]+peso[1]+peso[1])/3;



if(abs(peso[0]-media)>XXXXX) salir=true;
if(abs(peso[1]-media)>XXXXX) salir=true;
if(abs(peso[2]-media)>XXXXX) salir=true;

}

bueno en el código que te pongo mas que igual se mira que sean similares entre si XXX define cuanto error puedes tolerar, por que es posible que la bascula se quede oscilando 1 gramo o 10mg, desconozco la escala de la celda en cuestión y sino nunca avanzaría en el calculo, pero al poner un delay de 300 te aseguras que como mucho enviara cada 900ms

Muchas gracias..ahora mismo probare el código, lo acomodaré un poco y comentare.
Respecto a la conexión de los arduino tendré que conectarlos vía rs485 creó.
Bueno manos a la obra, esperó sus opiniones compañeros

Si usas mi sistema bastará con rs232 son módulos de 1euro

GO_zalo te refieres a conectar el Tx del primer arduino al Rx del segundo y así sucesivamente con los 30 arduino .

Exacto y si la distancia no es de más de un metro o metro y medio bastará con usar módulos rs232 que son punto a punto y baratos

me refiero a un modulo como este:

aun que necesitaras 58 unidades solo valen 49 centimos de euro

si lo haces con RS485 la configuracion quedaria asi

Go_zalo , no entiendo , para que módulos si los vas a conectar en cascada,bastaría hacerlo a nivel TTL directamente.

PeterKantTropus:
Go_zalo , no entiendo , para que módulos si los vas a conectar en cascada,bastaría hacerlo a nivel TTL directamente.

Depende de la distancia y el ambiente en el que se encuentre el sistema puede bastar o no

compañeros, entonces en conclusion tendria que usar un conversor de niveles max 232 para cada arduino, y poner en paralelo cada arduino

Depende de la distancia si va ser un metro prueba a poner en cascada el Hard serial con un soft serial y hacerlo encadenando los resultados, esto es una idea

Si ves que hay problemas de comunicación añade los conversiones a niveles rs232

Otra opción que debería funcionar es el 485, pero nunca lo he usado para más de dos nodos y no se como funciona el direccionamiento

Bueno tendre que armar unos cuantos convertidores de niveles no me queda otra que probara.
GO_zalo me diste una idea interesante al principio,

El primero (que tendría que tener un código diferente al resto) cada X lee el peso y lo envía por serial al segundo (XX)

El segundo al leer que recibe la información del primero, lee su celda y envía al tercero los dos pesos (XX,YY)

y así sucesivamente hasta llegar al ultimo que recibiría una cadena larga: XX,YY,ZZ... AA de 30 valores separados por , o por ; o lo que sea

El ultimo arduino hace los cálculos (que también debería tener un código diferente al resto y decide que leds se deben activar y entonces envía otra cadena digamos (aa,bb) la cual la recibe el arduino 29 y la manda al 28 y asi hasta llegar al 1, cada arduino compara para ver si su numero esta en la cadena recibida y si esta enciende su led

que te parece?

¿Como seria el codigo? tu idea esta genial.