Balanza digital con 4 celdas varia mucho sin hacer ninguna presion

Mi balanza varia mucho su peso a pesar de que no estoy haciendo ninguna fuerza sobre ella. por decirlo así "se vuelve loca" y no encuentro una solución. el código esta bien, ya que me venia funcionando bien y hoy esta así. Las conexiones no las he modificado tampoco y por eso estoy estresado un poco. Gracias.

Revisa bien que no haya algún falso contacto, sobre todo las masas.

Moderador:
Título editado por ser demasiado largo.

Amigo, las revisé. Ahora ya no "se vuelve loca dando datos erróneos" pero energizo el circuito y empieza a ascender el peso constantemente.
Dejo mi código (es un auto dispensador que he creado) para descartar que sea el problema, las conexiones las tengo bien hechas ya que en mi empresa hay altos estándares de seguridad con soldaduras y cosas así.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> 
#include "HX711.h" 


// Configuración del display LCD
LiquidCrystal_I2C lcd(0x27,20,4);
int cantidad_deseada = 0;
float tare = 0;

int led = 5;

// Configuración del módulo HX711
HX711 scale;

void setup() {
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, OUTPUT);
  // Inicializar el display LCD
  lcd.init();          
  lcd.backlight();   

  // Configuración del módulo HX711
  scale.begin(2, 3);   // DOUT -> Pin 2, SCK -> Pin 3
  scale.set_scale(2000);  // Calibrar el valor de la escala
  scale.tare();  // Hacer tara en la balanza
  tare = scale.get_units(); // establecer la tara actual como el valor actual de la balanza
  
  // Imprimir mensaje en el display LCD
  //lcd.print("Balanza");
}

void loop() {

int value = digitalRead(4); // Leemos el valor del pin 2
  int value2 = digitalRead(6);

  if (value == HIGH) { // Si el valor es alto
    cantidad_deseada = -380; // Modificamos la variable
    lcd.setCursor(0,1);
    lcd.print("NIVEL: ALTO");
  }

  else if (value2 == HIGH) { // Si el valor es alto
    cantidad_deseada = -120; // Modificamos la variable
    lcd.setCursor(0,1);
    lcd.print("NIVEL: BAJO");}
   
   else {cantidad_deseada = -300;
  lcd.setCursor(0,1);
  lcd.print("NIVEL: MEDIO");   }

   
  

   

  // Leer el valor de la celda de carga
  

  // Imprimir el valor en el display LCD
  //lcd.setCursor(10,1);
  //lcd.print(cantidad_deseada);
  //lcd.setCursor(13,1);
  //lcd.print(" gr");//

  // Leer la lectura de la celda de carga y convertirla en peso
  float weight = scale.get_units()*105;

  // Restar la tara actual del peso actual
  float net_weight = weight - tare;

  // Mostrar el peso neto
  lcd.setCursor(0, 0);
  lcd.print("Peso: ");
  lcd.print(int(round(net_weight)));
  lcd.println(" gr         "); 


  // Esperar un corto período antes de tomar otra lectura
  delay(500);
  
  if (scale.get_units()*105 <cantidad_deseada) {
   digitalWrite (led, HIGH);
  }
   else {digitalWrite (led, LOW);
  }}
void set_tare() {
  tare = scale.get_units();}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.