Balanza hx711 con arduino Due

Hola de nuevo , estoy intentando hacer una balanza, en mi primer intento por crearla quise utilizar operacionales para elevar esta tensión ya que era muy ínfima (mi sensor es una celda de carga para 5 Tn y su salida es de 0.20mV ) para poder llegar a leerla

Uno de ustedes me dijo que era bastante complejo y que utilice un modulo HX711, renegando un poco con la electrónica desistí y compre el modulo HX711

Bien copie un código de internet que ya estaba echo para empezar a ver como funcionaba mi balanza , si obtenía valores … modifique los valores de calibración para ajustarla a mi balanza … pero al pararme encima de ella toma valores bastante desparejos entre promedios , agrande el numero de muestras para ver si la variación desaparecía y nada sigue fluctuando

#include "HX711.h"
 
// Pin de datos y de reloj
byte pinData = 3;
byte pinClk = 2;
 
HX711 bascula;
 
// Parámetro para calibrar el peso y el sensor
float factor_calibracion = 20780.0; //Este valor del factor de calibración funciona para mi. El tuyo probablemente será diferente.
 
void setup() {
  Serial.begin(9600);
  Serial.println("HX711 programa de calibracion");
  Serial.println("Quita cualquier peso de la bascula");
  Serial.println("Una vez empiece a mostrar informacion de medidas, coloca un peso conocido encima de la bascula");
  Serial.println("Presiona + para incrementar el factor de calibracion");
  Serial.println("Presiona - para disminuir el factor de calibracion");
 
  // Iniciar sensor
  bascula.begin(pinData, pinClk);
 
  // Aplicar la calibración
  bascula.set_scale();
  // Iniciar la tara
  // No tiene que haber nada sobre el peso
  bascula.tare();
 
  // Obtener una lectura de referencia
  long zero_factor = bascula.read_average();
  // Mostrar la primera desviación
  Serial.print("Zero factor: ");
  Serial.println(zero_factor);
}
 
void loop() {
 
  // Aplicar calibración
  bascula.set_scale(factor_calibracion);
 
  // Mostrar la información para ajustar el factor de calibración
  Serial.print("Leyendo: ");
  Serial.print(bascula.get_units(), 1);
  Serial.print(" kgs");
  Serial.print(" factor_calibracion: ");
  Serial.print(factor_calibracion);
  Serial.println();
 
  // Obtener información desde el monitor serie
  if (Serial.available())
  {
    char temp = Serial.read();
    if (temp == '+')
      factor_calibracion += 10;
    else if (temp == '-')
      factor_calibracion -= 10;
  }
}

este es el codigo que copie mas alla si esta entregandome el valor en kilos acertado , fluctúa entre 100kg y 200kg los promedios subiéndome a la balanza y cuando me bajo de ella me sigue marcando un peso (130 kg) no retorna a 0 kg o un aproximado , la lectura de ADC también es muy variable , también me pasa que al tocar la celda de carga con la mano me mida un peso de 500 kg también fluctúa ese peso y no se la razón , por ahí esta mal el código o mi hx711 esta mal lo cual no creo por que es nuevo
utilizo Arduino DUE y por otro lado la tensión de alimentación de la celda de carga la medí con osciloscopio y no tiene fluctuación apenas unos 5 mv que en la entrada no creo me signifique tanta variación en la salida de la celda los 0.20mV son constantes
si es necesario subo foto de la señal de salida de la celda en el osciloscopio

Moderador
Primero lo primero.
Que hago con este hilo,


lo cierro?

si, si es posible si por que voy a estar utilizando este modulo finalmente, disculpas

Bien, @lukitas779 te daré un consejo para manejarte bien en el foro. Diras este que pesado es!! Pues asi soy.
La idea de que para poder hacer mas fáciles las cosas nosostros los que no somos tan GENIOS programadores necesitamos de tanto en tanto saber con que librería trabajas entonces cuando pones

#include "HX711.h"

para ti esta claro pero para nosotros no.
De donde la has sacado del administrador de librerías y en todo caso a quien pertenece porque ya hay varias opciones.
Si la bajaste de algun github pones

#include "HX711.h"   // github.com/XXXXXXXXX o Administrador Librerías by Fulando

Hace unos meses trabaje con el HX711 y las celdas de carga. Te comento que es un tema para prestar atención.
En mi caso. la librería tomada del admnistrador Librerias tenias dos códigos ejemplo, uno calibración y el otro test (prueba).
Calibrabas con una pesa patron normalmente proxima al fondo de escala que se mide y luego ese valor que te da lo guardas en EEPROM.
En mi caso el código leia la EEPROM y salia funcionando pero de tanto en tanto se desconfiguraba y de nuevo calibrar y todos los pasos. Algo que no resolvi.

esa es la libreria que estoy usando
El problema de las variaciones de lectura era por que mi fuente switching era estable hastaaa queee se la cargaba con la balanza y ahi tenia uno de mis mayores problemas que oscilaba muy heavy (opino que para lecturas sensibles no se utilice esta fuente salvo que prendan leds o cosas basicas)

de la fuente switching pase a una fuente regulable que si bien era estable tenia variaciones de peso pero ya eran mas coordiales las lecturas

de ahi se me ocurrio no darle mucha importancia al fabricante de la celda que me decia que la alimente con 9 a 12 v y pase a alimentarla con arduino 5v y mejoro mucho
tengo oscilaciones cuando me paro en la balanza pero nada descabellado , cuando me subo obtengo peso de 100 kg aprox mi peso + - 10 oscila pero esperable para una balanza de 5 tn , es nada con respecto al principio que me subia tenia 700 kg me bajaba y tenia -300 etc valores muy locos....

en mi caso la solucion fue alimentar con arduino no creo que para todos nos sea la misma solucion ya que hay celdas que se alimentan con tensiones mayores , sugiero una fuente muy estable para estos casos
solucionado este tema para mi
arranco con el codigo y necesito crear clases pero me estanque , nose si estoy en el lugar indicado para poner mi pregunta sobre clases o armar otra pregunta
gracias surbyte por tu tiempo, creo que en el siguiente post me vas a poder ayudar mas

y si pones algo fisico que le de el parametro de calibracion como un potenciometro y que tome el valor del potenciometro cada vez que inicie , si nadie toca ese potenciometro nunca se te iria la escala , si queres algo mas preciso y que nadie lo toque le podes poner un potenciometro a tornillo de esos azules nose si los conoces