

The HX711 is a precision 24-bit analog-to-digital converter (ADC) designed for applications requiring high accuracy and stability, such as weigh scales and industrial control systems. It features an integrated low-noise programmable gain amplifier (PGA) that allows direct interfacing with load cells, making it an ideal choice for weight measurement systems. The HX711 simplifies the process of converting small analog signals from load cells into digital data that can be processed by microcontrollers.








The HX711 is designed to provide high precision and ease of use. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage | 2.6V to 5.5V |
| Operating Current | ~1.5mA |
| Standby Current | <1µA |
| ADC Resolution | 24-bit |
| Input Channels | 2 (Channel A and Channel B) |
| PGA Gain | 32, 64, or 128 (programmable) |
| Data Rate | 10 Hz or 80 Hz |
| Input Voltage Range | ±40mV (at Gain = 128) |
| Communication Interface | Serial (Clock and Data pins) |
| Operating Temperature Range | -40°C to +85°C |
The HX711 has 16 pins, but only 4 are typically used in most applications. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (2.6V to 5.5V). |
| GND | Ground connection. |
| DT (Data) | Serial data output. Used to transmit ADC data to the microcontroller. |
| SCK (Clock) | Serial clock input. Used to synchronize data transfer and configure the device. |
| A+ / A- | Differential input for Channel A (high-precision input). |
| B+ / B- | Differential input for Channel B (low-precision input). |
The HX711 is straightforward to use with microcontrollers like Arduino. Below are the steps to integrate it into your circuit:
Below is an example of how to use the HX711 with an Arduino UNO to read weight data from a load cell:
#include "HX711.h" // Include the HX711 library
// Define HX711 pins
#define DT_PIN 3 // Data pin connected to Arduino digital pin 3
#define SCK_PIN 2 // Clock pin connected to Arduino digital pin 2
HX711 scale; // Create an instance of the HX711 class
void setup() {
Serial.begin(9600); // Initialize serial communication
scale.begin(DT_PIN, SCK_PIN); // Initialize the HX711 with the defined pins
scale.set_scale(); // Set the scale factor (calibration required)
scale.tare(); // Reset the scale to zero
Serial.println("HX711 initialized. Place weight on the scale.");
}
void loop() {
if (scale.is_ready()) { // Check if the HX711 is ready
long weight = scale.get_units(); // Get the weight in units
Serial.print("Weight: ");
Serial.print(weight);
Serial.println(" units");
} else {
Serial.println("HX711 not ready. Check connections.");
}
delay(500); // Wait for 500ms before the next reading
}
No Data Output:
Inconsistent Readings:
HX711 Not Ready:
scale.begin() function is called correctly.Incorrect Weight Measurements:
Q: Can I use the HX711 with a 3.3V microcontroller?
A: Yes, the HX711 operates with a supply voltage as low as 2.6V, making it compatible with 3.3V systems.
Q: How do I switch between Channel A and Channel B?
A: The HX711 automatically selects the channel based on the gain setting. Gain = 128 or 64 selects Channel A, while Gain = 32 selects Channel B.
Q: What is the maximum weight the HX711 can measure?
A: The maximum weight depends on the load cell used. The HX711 itself does not impose a weight limit but converts the load cell's output.
Q: Can I connect multiple load cells to the HX711?
A: The HX711 supports two channels, but only one can be read at a time. For multiple load cells, use additional HX711 modules.
By following this documentation, you can effectively integrate the HX711 into your projects for precise weight measurement.