Grove - ADC for Load Cell (HX711)

El Grove - ADC for Load Cell (HX711) es un convertidor A/D de 24 bits diseñado específicamente para la celda de carga. Contiene un amplificador programable de bajo ruido integrado con una ganancia opcional de 32, 64 y 128. El chip HX711 integra una fuente de alimentación regulada, un oscilador de reloj integrado y otros circuitos periféricos, que tienen las ventajas de alta integración, respuesta rápida y fuerte anti-interferencia.
Con el conector Grove y el terminal de tornillo de 4 pines, se vuelve bastante fácil conectar la celda de carga y el microcontrolador, sin necesidad de soldadura. Puedes construir tu propio sistema de sensor de peso Arduino en solo unos pocos pasos simples.
Especificaciones
Elemento | Valor |
---|---|
Batería | Excluir |
Voltaje de trabajo | 2.6V--5.5V |
Corriente de trabajo | Menos de 1.5A |
Precisión de detección | 24 bits |
Tasa de datos de salida | 10SPS o 80SPS |
Ganancia opcional | 32 para Canal B/ 64 y 128 para Canal A |
Aplicación
- Básculas electrónicas
- Básculas computadoras de precios
- Básculas de plataforma electrónicas
- Básculas digitales
- Básculas de paquetería postal
Descripción del Hardware

Plataformas Compatibles
Arduino | Raspberry Pi | |||
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Las plataformas mencionadas anteriormente como compatibles son una indicación de la compatibilidad de software o teórica del módulo. Solo proporcionamos biblioteca de software o ejemplos de código para la plataforma Arduino en la mayoría de los casos. No es posible proporcionar biblioteca de software / código de demostración para todas las plataformas MCU posibles. Por lo tanto, los usuarios tienen que escribir su propia biblioteca de software.
Primeros Pasos
En esta parte, usaremos un Arduino UNO R4 WiFi como controlador, mostraremos cómo usar un Grove - ADC for Load Cell (HX711) y un Weight Sensor (Load Cell) 0-500g para hacer un módulo de medición de peso.
Preparación de Hardware
Paso 1. Preparación de materiales
Arduino UNO R4 WIFi | Grove - ADC for Load Cell (HX711) | Weight Sensor (Load Cell) 0-500g |
---|---|---|
![]() | ![]() | ![]() |
- El sensor de peso emite 0V cuando la carga es menor a 150g, no mide directamente la carga. Por lo tanto, se sugiere usar una carga local de 200g para evitar el punto ciego de medición. Lee los datos analógicos de un peso de 200g como sin carga (0g), lee los datos analógicos de un peso de 700g como carga completa (500g).
- ADC para Celda de Carga (HX711) usa el canal A por defecto, si quieres usar otros canales, requerirá que lo sueldes tú mismo.
Y el Grove - ADC para Celda de Carga (HX711) también es adecuado para nuestra placa de desarrollo XIAO.
Seeed Studio XIAO SAMD21 | Seeed Studio XIAO RP2040 | Seeed Studio XIAO nRF52840 (Sense) | Seeed Studio XIAO ESP32C3 | Seeed Studio XIAO ESP32S3 (Sense) |
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Paso 2. Conexión del Hardware
Conecta el Sensor de Gestos Grove al puerto IIC del Arduino UNO R4 WiFi, conecta el Arduino a la PC mediante un cable USB, y la conexión entre Grove - ADC para Celda de Carga (HX711) y el Sensor de Peso (Celda de Carga) 0-500g se muestra a continuación:

Grove - ADC para Celda de Carga (HX711) | Sensor de Peso (Celda de Carga) 0-500 |
---|---|
E+ | Rojo |
E- | Negro |
INA- | Blanco |
INA+ | Verde/Azul |
Usando Grove Base Shield, puedes conectar directamente el módulo HX711 al Arduino UNO R4 WiFi como se muestra a continuación.

Preparación del Software
La herramienta de programación recomendada es el Arduino IDE, y necesitas configurar el entorno Arduino para el XIAO y añadir el paquete de la placa.
Si esta es tu primera vez usando Arduino, te recomendamos encarecidamente que consultes Primeros pasos con Arduino.
Paso 1. Inicia la aplicación Arduino.

Paso 2. Selecciona tu modelo de placa de desarrollo y añádelo al Arduino IDE.
-
Si quieres usar Seeed Studio XIAO SAMD21 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Seeed Studio XIAO RP2040 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Seeed Studio XIAO nRF52840 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Seeed Studio XIAO ESP32C3 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Seeed Studio XIAO ESP32S3 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Seeeduino V4.3 para las rutinas posteriores, por favor consulta este tutorial para completar la adición.
-
Si quieres usar Arduino UNO R4 WiFi para las rutinas posteriores, por favor haz clic en Tools-> Board-> Boards Manager..., escribe la palabra clave "UNO R4 WiFi" en el campo de búsqueda e instala la versión más reciente (o la versión que quieras usar).

Descripción general de la biblioteca Arduino HX711
Función
Antes de comenzar a desarrollar un sketch, veamos las funciones disponibles.
-
void begin(byte dout, byte pd_sck, byte gain )
—— Inicializa la biblioteca con el pin de salida de datos, pin de entrada de reloj y factor de ganancia. La selección del canal se realiza pasando la ganancia apropiada, el valor predeterminado de la biblioteca es "128" (Canal A).- Parámetros de entrada:
- byte dout: Pasado como dout (convertido a byte) cableado del circuito HX711.
- byte pd_sck: Pasado como pd_sck (convertido a byte) cableado del circuito HX711.
- byte gain = 128:
- Con un factor de ganancia de 64 o 128, se selecciona el canal A.
- Con un factor de ganancia de 32, se selecciona el canal B.
- Parámetros de entrada:
-
bool is_ready()
—— Verifica si el HX711 está listo. De la hoja de datos: Cuando los datos de salida no están listos para recuperación, el pin de salida digital DOUT está alto. La entrada de reloj serial PD_SCK debe estar baja. Cuando DOUT pasa a bajo, indica que los datos están listos para recuperación. -
void wait_ready(unsigned long delay_ms = 0);
—— Espera a que el chip esté listo. -
bool wait_ready_retry(int retries = 3, unsigned long delay_ms = 0)
—— Espera a que el chip esté listo reintentando por una cantidad específica de intentos. -
bool wait_ready_timeout(unsigned long timeout = 1000, unsigned long delay_ms = 0)
—— Espera a que el chip esté listo hasta que se agote el tiempo de espera. -
void set_gain(byte gain = 128)
—— establece el factor de ganancia; toma efecto solo después de una llamada a read().- Parámetros de entrada:
- byte gain = 128: El canal A puede configurarse para una ganancia de 128 o 64; el canal B tiene una ganancia fija de 32.
- Parámetros de entrada:
-
long read()
—— espera a que el chip esté listo y devuelve una lectura -
long read_average(byte times = 10)
—— devuelve una lectura promedio.- Parámetros de entrada:
- byte times = 10: times = cuántas veces leer.
- Parámetros de entrada:
-
double get_value(byte times = 1)
—— devuelve (read_average() - OFFSET), es decir, el valor actual sin el peso de tara.- Parámetros de entrada:
- byte times = 1: times = cuántas lecturas hacer.
- Parámetros de entrada:
-
float get_units(byte times = 1)
—— devuelve get_value() dividido por SCALE, es decir, el valor crudo dividido por un valor obtenido mediante calibración.- Parámetros de entrada:
- byte times = 1: times = cuántas lecturas hacer.
- Parámetros de entrada:
-
void tare(byte times = 10)
—— establece el valor OFFSET para el peso de tara.- Parámetros de entrada:
- byte times = 10: times = cuántas veces leer el valor de tara.
- Parámetros de entrada:
-
void set_scale(float scale = 1.f)
—— establece el valor SCALE; este valor se usa para convertir los datos crudos a datos "legibles por humanos" (unidades de medida) -
float get_scale()
—— obtiene el SCALE actual -
void set_offset(long offset = 0)
—— establece OFFSET, el valor que se resta de la lectura real (peso de tara) -
long get_offset()
—— obtiene el OFFSET actual -
void power_down()
—— pone el chip en modo de apagado -
void power_up()
—— despierta el chip después del modo de apagado
Instalación
Ya que has descargado la biblioteca zip, abre tu Arduino IDE, haz clic en Sketch > Include Library > Add .ZIP Library. Elige el archivo zip que acabas de descargar, y si la biblioteca se instala correctamente, verás Library added to your libraries en la ventana de notificación. Lo cual significa que la biblioteca se instaló exitosamente.

Demostración de Ejemplo
Paso 1. Antes de la medición del Grove - ADC for Load Cell (HX711), el PD_SCK debe ser puesto a tierra para prepararlo para el trabajo y la celda de carga debe ser calibrada. El código de ejemplo Grove_ADC_for_Load_Cell_(HX711)
es el siguiente:
#include "HX711.h"
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 3; //Set your I2C pin
const int LOADCELL_SCK_PIN = 2;
HX711 scale;
void setup() {
Serial.begin(9600);
Serial.println("HX711 Demo");
Serial.println("Initializing the scale");
// Initialize library with data output pin, clock input pin and gain factor.
// Channel selection is made by passing the appropriate gain:
// - With a gain factor of 64 or 128, channel A is selected
// - With a gain factor of 32, channel B is selected
// By omitting the gain factor parameter, the library
// default "128" (Channel A) is used here.
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("Before setting up the scale:");
if (scale.wait_ready_timeout(1000)) {
long reading = scale.read();
Serial.print("HX711 reading: ");
Serial.println(reading);
} else {
Serial.println("HX711 not found.");
} // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)
scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare(); // reset the scale to 0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale
Serial.println("Readings:");
}
void loop() {
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 1);
scale.power_down(); // put the ADC in sleep mode
delay(5000);
scale.power_up();
}
Paso 2. Por favor haz clic en el menú desplegable de selección de placa, y luego haz clic en "Select other board and port...".

Paso 3. Y luego busca y selecciona "Arduino UNO R4 WiFi".

Paso 4. Por favor haz clic en "upload" para cargar el firmware en Arduino.

Paso 5. Abre el Monitor Serie del IDE de Arduino haciendo clic en Tool-> Serial Monitor. Cuando veas la impresión serie "After setting up the scale:", espera unos segundos y aplica fuerza al Sensor de Peso (Celda de Carga) 0-500g.

Paso 6. El resultado debería verse como se muestra a continuación.

Recursos
[PDF]Hoja de datos INA125
[PDF]Hoja de datos HX711
[ZIP]Grove - ADC para celda de carga (HX711)-Archivo de Esquemático
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.