Hi!
I purchased a scale with HX711 module with 4 load cells:
The circuit is very simple to connect. I'm using ESP32, clock and data pins are on pins 18 and 5 and power is on GND and VIN. But I'm only using 1 of the load cells because it came closest to the values while I was testing.
Searching the internet I saw that it is necessary to calibrate the scale, so I used this code to calibrate:
#include <HX711.h> //adiciona a biblioteca ao codigo
//configuracao dos pinos para o modulo HX711
const int PINO_DT = 5;
const int PINO_SCK = 18;
const int TEMPO_ESPERA = 1000; //declaracao da variavel de espera
HX711 escala; //declaracao do objeto escala na classe HX711 da biblioteca
float fator_calibracao = -2890; //pre-definicao da variavel de calibracao
char comando; //declaracao da variavel que ira receber os comandos para alterar o fator de calibracao
void setup ()
{
//mensagens do monitor serial
Serial.begin(9600);
Serial.println("Celula de carga - Calibracao de Peso");
Serial.println("Posicione um peso conhecido sobre a celula ao comecar as leituras");
escala.begin (PINO_DT, PINO_SCK); //inicializacao e definicao dos pinos DT e SCK dentro do objeto ESCALA
//realiza uma media entre leituras com a celula sem carga
float media_leitura = escala.read_average();
Serial.print("Media de leituras com Celula sem carga: ");
Serial.print(media_leitura);
Serial.println();
escala.tare(); //zera a escala
}
void loop ()
{
escala.set_scale(fator_calibracao); //ajusta a escala para o fator de calibracao
//verifica se o modulo esta pronto para realizar leituras
if (escala.is_ready())
{
//mensagens de leitura no monitor serial
Serial.print("Leitura: ");
Serial.print(escala.get_units(), 1); //retorna a leitura da variavel escala com a unidade quilogramas
Serial.print(" kg");
Serial.print(" \t Fator de Calibracao = ");
Serial.print(fator_calibracao);
Serial.println();
//alteracao do fator de calibracao
if(Serial.available())
{
comando = Serial.read();
switch (comando)
{
case 'x':
fator_calibracao = fator_calibracao - 100;
break;
case 'c':
fator_calibracao = fator_calibracao + 100;
break;
case 'v':
fator_calibracao = fator_calibracao - 10;
break;
case 'b':
fator_calibracao = fator_calibracao + 10;
break;
case 'n':
fator_calibracao = fator_calibracao - 1;
break;
case 'm':
fator_calibracao = fator_calibracao + 1;
break;
}
}
}
else
{
Serial.print("HX-711 ocupado");
}
delay(TEMPO_ESPERA);
}
In this code above I use it to find the scale value. Then I put a weight of 1kg and I increase or decrease the value to find the value. Testing gave the value -1990.
Then I loaded this code with the value obtained:
//adiciona as bibliotecas ao codigo
#include <HX711.h>
//configuracao dos pinos para o modulo HX711
const int PINO_DT = 5;
const int PINO_SCK = 18;
//declaracao do intervalo de espera
const int TEMPO_ESPERA = 500;
HX711 escala; //declaracao do objeto ESCALA na classe HX711 da biblioteca
const int FATOR_CALIBRACAO = -1990; //esse valor deve ser alterado para o valor de calibracao obtido com o outro codigo
void setup ()
{
Serial.begin(9600);
Serial.println("Iniciando...");
escala.begin (PINO_DT, PINO_SCK); //inicializacao e definicao dos pinos DT e SCK dentro do objeto ESCALA
escala.tare(); //zera a escala
escala.set_scale(FATOR_CALIBRACAO); //ajusta a escala para o fator de calibracao
}
void loop ()
{
//verifica se o modulo esta pronto para realizar leituras
if (escala.is_ready())
{
//mensagens de leitura no monitor serial
Serial.print(" Peso: ");
Serial.print(escala.get_units(), 1); //retorna a leitura da variavel escala com a unidade quilogramas
Serial.println(" kg");
}
else
{
Serial.print(" Aguarde . . . ");
}
delay(TEMPO_ESPERA); //intervalo de espera para leitura
}
and it already starts with the value of 1kg, when I put the weight nothing increases and when I take it off it decreases a little but then it stagnates at 1kg.
I don't know what I could be doing wrong. The library examples don't help me much because it doesn't have calibration examples and then it returns unrealistic values.
Does anyone have experience with this module and scale? Could you give me some better guidance to configure the use of the scale?
Thank you very much.