Hello,
I am Trying to preparare a small project that involves a S type load cell (300kg) connected to a HX711 and to an Arduino UNO.
here's the load cell S tipo cella di carico 300KG del sensore di forza di pressione e tensione dell'acciaio legato : Amazon.it: Commercio, Industria e Scienza
As many others i am experiencing extremely volatile values even when i try to perform a calibration with a know weight (2kg).
after awhile however (e.g. 2 or 3 minutes) the values are more stable.
I tried several workaround proposed here and in other forums. Like:
- Tried the classic solution with 4 loac cells from a balance (then i assumed it was due to poor quality load cells, therefore i switched to a 40eur s type)
- connection to a stable power source (a USB power bank or a PC connected to the battery)
- verified whether my HX711 board had E- pin connected to the Ground (which wasn't, but even with soldering a wire from E- to GND still no luck)
- tried two kind of HX711 from Amazon:
- DAOKAI 4PCS 50KG corpo umano cella di carico pesatura tensione resistenza sensore mezzo ponte con HX711 24BIT precisione AD modulo sensore di pressione, per Arduino, con cavo : Amazon.it: Commercio, Industria e Scienza (this one had E- not connected to the ground)
- ARCELI CJMCU-711 HX711 Cella di carico Sensore di pesatura elettronico Convertitore A/D a 24 bit per alta precisione Bilancia elettronica e CYT1053 : Amazon.it: Commercio, Industria e Scienza
- Tried different HX711 Libraries. Nothing seems changed
I there something i did not consider in order to get stable measurements?
Thank you in advance.
Michele
below is an example of the code i tried to perform calibration
(the code is not aligned with the wiring since the pics were from a previos trial. the result is still the same)
#include <HX711.h>;
HX711 scale(A1, A0);
float calibration_factor = 96; // this calibration factor is adjusted according to my load cell
float units;
void setup() {
Serial.begin(9600);
Serial.println("HX711 calibration sketch");
Serial.println("Remove all weight from scale");
Serial.println("After readings begin, place known weight on scale");
Serial.println("Press + or a to increase calibration factor");
Serial.println("Press - or z to decrease calibration factor");
scale.set_scale();
scale.tare(); //Reset the scale to 0
}
void loop() {
scale.set_scale(calibration_factor);
Serial.print("Reading: ");
units = scale.get_units();
if (units < 0) {
units = 0.00;
}
Serial.print(units);
Serial.print(" g.");
Serial.print(" calibration_factor: ");
Serial.print(calibration_factor);
Serial.println();
delay(200);
if(Serial.available()) {
char temp = Serial.read();
if (temp == 'a') {
calibration_factor += 10;
} else if(temp == 'z') {
calibration_factor -= 10;
}
}
}


