Tare with nothing on the scale, then calibrate with a known weight.
What the message means
The module gives raw counts. A calibration factor turns them into grams, and the zero changes with temperature and mounting stress.
Fix it in this order
- Check the colours of the load cell wires against the module, since they differ between makers.
- Swap the signal wires if the reading goes negative with weight.
- Call tare() at start-up with nothing on the scale.
- Put a known weight on and adjust the scale factor until the reading matches.
- Mount the cell so only the intended force passes through it, with no side stress.
- Let it warm up for a few minutes and average readings.
Why it happens
The HX711 reads a very small bridge signal, so wiring and supply noise matter. A wrong wire order gives zero or negative readings, and the value drifts with temperature and supply changes. The raw count only becomes grams after you tare and calibrate.
Check the load cell colours against the module pins, tare with nothing on the cell, calibrate with a known weight to find the scale factor, and use a stable supply and short wires.
If you see this, do this
| You see | Do this |
|---|---|
| Reads zero always | Wiring or no response. |
| Slowly drifts | Temperature or mounting stress. |
Related
integer division, supply problems.
Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.
Why this happens
A load cell is a bridge of strain gauges that produces a tiny voltage. A typical cell gives a few millivolts for every volt of excitation at full load, so the full signal is only a few millivolts. The HX711 amplifies this with a gain of 128 on channel A and converts it with a 24-bit ADC. At gain 128 the input range is about plus or minus 20 mV on a 5 V supply.
The output is a raw count with an arbitrary zero. Grams only appear after you subtract a zero value (tare) and divide by a scale factor. The zero moves with temperature, supply changes and mechanical stress, so a stable mount and a steady supply matter as much as the code.
How to confirm the cause
- Print the raw reading with nothing on the cell. It should stay within a small band. Large steady movement points to supply noise or a loose mount.
- Press gently on the cell in its intended direction. The raw number should rise or fall smoothly. If the direction is opposite to what you want, swap the two signal wires or use a negative scale.
- Put two different known weights on in turn. The change in raw count should be proportional to the weight.
- Measure the excitation voltage across E+ and E- on the module side. It should be near the supply.
- Check that the cell is mounted so that only the load passes through the free end, with no side contact.
Worked example
Finding the scale factor. These numbers are made up to show the arithmetic.
raw with nothing (tare) = -8200
raw with 500 g = 212300
difference = 212300 - (-8200) = 220500
scale = 220500 / 500 = 441 counts per gram
raw 46229 -> (46229 + 8200) / 441 = 123.4 g
scale.set_scale(441.0); // library call
scale.tare(); // with nothing on the cell
float g = scale.get_units(10);Common mistakes
- Calibrating without taring first.
- Calibrating with a weight that is too small. A weight near the working range gives a more reliable factor.
- Overloading the cell beyond its rating, which can permanently shift its zero.
- Using long thin wires near motors or a switching supply.
- Tare while the platform is still moving.
If this did not fix it
- A damaged or overloaded cell: check it by comparing its response to a second cell if you have one.
- The pins in the sketch not matching the DOUT and SCK wires.
- Slow creep or drift from the mounting plate or glue, which is mechanical rather than electrical.