I’m working on a small-scale project using an Arduino Uno, an HX711 amplifier, and a 4-wire load cell. The setup works in the sense that I can read values from the HX711 and the weight changes when I apply force, but the readings are extremely unstable.
Even when a constant weight is applied, the value keeps fluctuating and slowly drifting over time instead of stabilizing. For example, the measurement might start around a certain value and then gradually decrease or wander even though nothing is changing mechanically.
Things I’ve already tried:
- Averaging multiple samples using
scale.get_units(10) - Re-taring the scale
- Letting the HX711 warm up
- Checking wiring multiple times
- Powering the system through USB and through a separate supply
- Ensuring the load cell is mounted properly and not touching other surfaces
Despite all of that, the readings still fluctuate significantly. It makes the system very difficult to use for any measurement that needs even moderate stability.
At this point I’m wondering if this behavior is just typical of cheap HX711 + load cell setups, or if I might have a defective load cell or amplifier module.
Has anyone experienced similar instability with this setup? Are there known tricks to improve stability, or should I consider using a different ADC or higher quality load cell?
Here is a sample of the output data:
���f��~怘����f������fxx�������怘����f������fxx�������怘�f�f���xfx□�~ff�~�`������怘�HX711 scale test
HX711 not ready...
HX711 not ready...
Remove weight...
Scale ready.
Weight: -0.78
Weight: -8.28
Weight: -14.67
Weight: -19.47
Weight: -24.10
Weight: -28.21
Weight: -31.83
Weight: -35.17
Weight: -38.16
Weight: -41.01
Weight: -43.58
Weight: -46.16
Weight: -48.01
Weight: -50.11
Weight: -51.72
Weight: -53.03
Weight: -54.34
Weight: -55.44
Weight: -56.36
Weight: -57.51
Conections:
#include "HX711.h"
#define HX711_DT 8
#define HX711_SCK 9
HX711 scale;
float calibration_factor = 420.0;
void setup() {
Serial.begin(57600);
delay(2000);
Serial.println("HX711 scale test");
scale.begin(HX711_DT, HX711_SCK);
while (!scale.is_ready()) {
Serial.println("HX711 not ready...");
delay(500);
}
Serial.println("Remove weight...");
delay(3000);
scale.set_scale(calibration_factor);
scale.tare();
Serial.println("Scale ready.");
}
void loop() {
float weight = scale.get_units(10);
Serial.print("Weight: ");
Serial.println(weight);
delay(500);
}





