I've read the library for the HX711 Avia Semiconductor, and I don't understand the read() function.

From what I can tell, the other functions use read() to result in the final mass measured by the scale by averaging read(), subtracting the offset, and finally dividing by the factor. But what is read() really reading? Is it directly reading the voltage (between INA+ and INA-)? If so, what are the units?

Datasheet for HX711


1 Answer 1


In the code, read() just performs a 24-bit read, in counts of the chip's 24-bit ADC. According to the chip's datasheet:

Channel A can be programmed with a gain of 128 or 64, corresponding to a full-scale differential input voltage of ±20mV or ±40mV respectively, when a 5V supply is connected to AVDD analog power supply pin. Channel B has a fixed gain of 32.

Based on this, the measurement is the voltage across the bridge, with channel A full-scale being 20 mV or 40 mV depending on the PGA, and channel B reading full-scale when the differential input is 80 mV (based on the indicated gains).

Given that the 24-bit scale spans between -524288 counts and 524287 counts, the voltage per count is around 38, 76, or 153 nV depending on the channel and gain.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.