HX711: Guía Completa del Convertidor ADC 24-bit para Células de Carga (Pinout, Arduino, Raspberry Pi)
El HX711 (Avia Semiconductor / HX711) es un convertidor analógico-digital (ADC) de 24 bits de precisión diseñado específicamente para básculas y células de carga (load cells). Integra amplificador de instrumentación (PGA) programable (ganancia 32, 64, 128), oscilador interno, regulador de voltaje, y interfaz serial síncrona de 2 hilos (PD_SCK, DOUT). Es el estándar de facto para pesaje digital en Arduino, Raspberry Pi, ESP32, y sistemas industriales de bajo coste. Analizamos pinout detallado (16 pines chip / 4-5 pines módulo), características, conexión a célula de carga, calibración, y proyectos prácticos.
¿Qué es el HX711?
ADC sigma-delta 24-bit con PGA diferencial de bajo ruido (ganancia 128/64 canal A, 32 canal B). Convierte la minúscula señal diferencial de una célula de carga (galga extensométrica, puente Wheatstone, salida típica 1-3 mV/V) en valor digital de 24 bits (2 complemento). Interfaz serie simple: PD_SCK (clock entrada, control power-down/ganancia) y DOUT (datos serie MSB first). No requiere programación de registros (configuración por pulsos clock). Encapsulado SOP-16. Módulos comunes: "Red PCB" (4 pines: VCC, GND, DT, SCK + bornes tornillo célula) y "Green PCB" (6 pines: añade B+/B- para 2º canal).
Pinout del Chip HX711 (SOP-16)
| Pin | Nombre | Función |
|---|---|---|
| 1 | VSUP | Entrada regulador interno (2.7-5.5 V). Alimenta regulador → AVDD/DVDD. Conectar a VCC externo. |
| 2 | BASE | Salida regulador (control base transistor externo si se usa regulador externo). Normalmente NC. |
| 3 | AVDD | Alimentación analógica (2.6-5.5 V). Conectar a VSUP (pin 1) o fuente limpia 3.3/5 V. |
| 4 | VFB | Realimentación regulador. Conectar a AGND (pin 5) si no se usa regulador interno. |
| 5 | AGND | Tierra analógica. Conectar a GND plano PCB. |
| 6 | VBG | Referencia banda prohibida (bandgap) salida bypass. Condensador 0.1 µF a AGND. |
| 7 | INA- | Entrada diferencial negativa Canal A (PGA ganancia 128/64). |
| 8 | INA+ | Entrada diferencial positiva Canal A. |
| 9 | INB- | Entrada diferencial negativa Canal B (PGA ganancia 32). |
| 10 | INB+ | Entrada diferencial positiva Canal B. |
| 11 | PD_SCK | Entrada reloj serial (Schmitt trigger). Control: datos, power-down, selección ganancia/canal. |
| 12 | DOUT | Salida datos serial (MSB first, 24 bits + 1 bit signo/estado). Open-drain / push-pull según versión. |
| 13 | XO | Salida cristal / I/O digital. NC si oscilador interno. |
| 14 | XI | Entrada reloj externo / cristal. NC si oscilador interno (default). |
| 15 | RATE | Control tasa salida: Bajo = 10 SPS, Alto = 80 SPS. NC = 10 SPS (pull-down interno). |
| 16 | DVDD | Alimentación digital (2.6-5.5 V). Conectar a AVDD / VCC. |
Pinout Módulo Común (4 pines + Bornes Tornillo)
| Pin Módulo | Chip Pin | Función |
|---|---|---|
| VCC | 1, 3, 16 | Alimentación 2.7-5.5 V (3.3 V o 5 V). |
| GND | 5 | Tierra. |
| DT (DOUT) | 12 | Datos serial salida. |
| SCK (PD_SCK) | 11 | Reloj serial entrada. |
| E+, E-, A+, A- (Bornes) | 3,5,7,8 | Conexión célula carga: E+/E- excitación (5 V), A+/A- señal diferencial. |
Módulo Green (6 pines): Añade B+, B- (Pins 9, 10) para 2ª célula carga (Canal B, ganancia 32).
Características y Especificaciones Clave
- Resolución: 24 bits (2 complemento). LSB = VFS / 224. Ganancia 128 → VFS = ±20 mV (dif) @ AVDD=5 V. Resolución efectiva ~15-18 bits ruido-libre (ENOB).
- Ganancia PGA (programable por pulsos PD_SCK): Canal A: 128 (default, 25 pulsos), 64 (26 pulsos). Canal B: 32 (27 pulsos).
- Tasa de muestreo (Data Rate): 10 SPS (RATE=Low/NC) o 80 SPS (RATE=High). Seleccionable por pin RATE (15).
- Ruido de entrada referido: ~50 nV RMS @ 10 SPS, Gain 128. ENOB ~18 bits @ 10 SPS.
- Rechazo modo común 50/60 Hz: > 100 dB (10 SPS, ganancia 128). Crítico para red eléctrica.
- Consumo: Normal < 1.5 mA @ 5 V. Power-down < 1 µA (PD_SCK alto > 60 µs).
- Alimentación: 2.6 – 5.5 V (AVDD/DVDD), 2.7 – 5.5 V (VSUP).
- Temperatura: -40 °C a +85 °C.
- Interfaz: 2 hilos síncronos (PD_SCK, DOUT). Compatible 3.3 V / 5 V lógica.
- Calibración: Requiere software (offset + factor escala). No calibración interna.
¿Qué es una Célula de Carga (Load Cell)?
Transductor de fuerza que convierte carga mecánica (peso, tracción, compresión, torsión) en señal eléctrica diferencial (mV/V). Tipos:
- Barra / Beam (Single point): 1-50 kg. 4 hilos. Común en balanzas cocina/baño.
Cableado 4 hilos (estándar): Rojo (E+ / Excitación +), Negro (E- / Excitación -), Blanco/Verde (S+ / Señal + / A+), Verde/Blanco (S- / Señal - / A-). 6 hilos: Añade Sense+ / Sense- para compensar caída voltaje en cables largos (conectar a E+/E- en HX711 si no hay pines Sense).
Precisión: Clase C3 (0.02% FS), C6 (0.01% FS). Efecto temperatura: < 0.002% FS/°C (cero), < 0.001% FS/°C (span).
Proyecto 1: Báscula Arduino + HX711 + Célula 5 kg
Materiales
- Arduino Uno / Nano / Pro Mini (5 V / 16 MHz)
- Módulo HX711 (Red PCB, 4 pines + bornes)
- Célula de carga barra 5 kg (4 hilos)
- Superficie rígida de montaje (madera, aluminio, acrílico 5-10 mm)
- Espaciadores rígidos (arandelas, separadores roscados) – crítico
- Fuente 5 V estable (USB PC o 5 V 1A)
- Librería HX711_ADC (Olkal) o HX711 (Bodge) en Library Manager.
Montaje Mecánico (Clave para Precisión)
- Fije un extremo de la célula (lado sin etiqueta / flecha) a base fija.
- Fije el otro extremo (lado etiqueta / flecha) a plato móvil.
- Use espaciadores rígidos entre célula y placas (arriba/abajo) para que la fuerza flexione el elemento sensor, no aplaste la placa. Sin espaciadores → lecturas erráticas, histéresis, daño.
- Apretado uniforme, torque moderado. Evite momentos de flexión parásitos.
Conexión Eléctrica
| Hilo Célula | Color Típico | Bornes HX711 |
|---|---|---|
| Excitación + | Rojo | E+ |
| Excitación - | Negro | E- |
| Señal + | Blanco / Verde | A+ |
| Señal - | Verde / Blanco | A- |
HX711 VCC → Arduino 5V, GND → GND, DT → Pin 3, SCK → Pin 2 (o pines digitales cualesquiera).
Calibración (2 Puntos – Método Profesional)
- Sketch calibración: Inicie sin carga → tara (offset). Coloque peso conocido (ej. 1 kg certificado) → registre lectura raw. Calcule factor = (raw_con_peso - raw_tara) / peso_conocido_gramos.
- Guarde offset y factor en EEPROM / Preferences / archivo config.
- En operación: peso = (raw - offset) / factor.
- Verifique linealidad con 2-3 pesos distintos. Repita si deriva > 0.1%.
Código Base (Librería HX711_ADC – Recomendada)
#include
const int HX711_DOUT = 3;
const int HX711_SCK = 2;
HX711_ADC LoadCell(HX711_DOUT, HX711_SCK);
float calibrationFactor = 420.50; // Calibre con peso conocido
void setup() {
Serial.begin(115200);
LoadCell.begin();
LoadCell.start(2000); // Estabilización 2s
LoadCell.setCalFactor(calibrationFactor);
// LoadCell.tareNoDelay(); // Tara automática al inicio
}
void loop() {
LoadCell.update();
if (LoadCell.getDataReady()) {
float weight = LoadCell.getData(); // Gramos
Serial.print("Peso: "); Serial.print(weight, 1); Serial.println(" g");
}
// Comandos serie: 't' = tara, 'c' = calibrar nuevo peso
if (Serial.available()) {
char c = Serial.read();
if (c == 't') LoadCell.tareNoDelay();
if (c == 'c') { float known; Serial.print("Peso conocido (g): "); while(!Serial.available()); known = Serial.parseFloat(); LoadCell.refreshDataSet(); LoadCell.setCalFactor((LoadCell.getData() - LoadCell.getTareOffset()) / known); }
}
}
Proyecto 2: Báscula Digital Raspberry Pi + HX711 (Green PCB)
Materiales
- Raspberry Pi (Zero W / 3 / 4 / 5) + MicroSD + Fuente 5 V 2.5A+
- HX711 Green PCB (6 pines: VCC, GND, SCK, DT, E+, E-, A+, A-, B+, B-)
- Célula carga 5-10 kg
- 2 Placas rígidas + tornillos/tuercas + espaciadores
- Cables jumper hembra-hembra
Conexión HX711 Green → Raspberry Pi (3.3 V Lógica)
| HX711 | Raspberry Pi (GPIO BCM) |
|---|---|
| VCC | Pin 1 (3.3 V) o Pin 4 (5 V) – Use 3.3 V para lógica 3.3 V segura |
| GND | Pin 6 / 9 / 14 / 20 / 25 / 30 / 34 / 39 (GND) |
| SCK | GPIO 6 (Pin 31) |
| DT | GPIO 5 (Pin 29) |
Célula carga (4 hilos) → E+, E-, A+, A- (deje B+, B- sueltos).
Software Python (RPi.GPIO / gpiozero)
import RPi.GPIO as GPIO
import time
DT = 5
SCK = 6
GPIO.setmode(GPIO.BCM)
GPIO.setup(SCK, GPIO.OUT)
GPIO.setup(DT, GPIO.IN)
def read_hx711():
# Esperar DOUT bajo (listo)
while GPIO.input(DT): pass
# Leer 24 bits + 1 pulso extra para ganancia 128 (canal A)
value = 0
for i in range(24):
GPIO.output(SCK, 1)
value = (value << 1) | GPIO.input(DT)
GPIO.output(SCK, 0)
# 25º pulso: ganancia 128 (canal A)
GPIO.output(SCK, 1)
GPIO.output(SCK, 0)
# Complemento a 2 si bit 23 = 1 (negativo)
if value & 0x800000:
value = -(~value & 0xFFFFFF) - 1
return value
# Calibración manual
offset = read_hx711() # Tara
print("Tara:", offset)
input("Ponga 1 kg y pulse Enter...")
raw_1kg = read_hx711()
scale = (raw_1kg - offset) / 1000.0
print("Factor escala:", scale)
while True:
raw = read_hx711()
weight = (raw - offset) / scale
print(f"Peso: {weight:.1f} g")
time.sleep(0.5)
Para producción: use librería hx711py o HX711 (pip install hx711) con filtrado media móvil, tara automática, y guardado config JSON.
Aplicaciones del HX711
- Básculas cocina, baño, joyería, laboratorio, industrial (hasta 500 kg con célula adecuada).
- Dosificación automática (alimento mascotas, químicos, café, cerveza artesanal).
- Monitorización colmenas (peso miel, enjambre).
- Control nivel silos / tolvas (célula compresión).
- Fuerza / Par / Pruebas materiales (célula S-type).
- Ascensores inteligentes (detección sobrecarga).
- Puertas automáticas (detección obstáculo por fuerza).
- Robótica (sensor fuerza pinza, pie robot).
- IoT pesaje remoto (ESP32/ESP8266 + HX711 + deep sleep + MQTT).
Consejos Críticos para Precisión y Fiabilidad
- Montaje mecánico es el 80% del éxito: Espaciadores rígidos, alineación axial, sin momentos parásitos, placa base plana y rígida.
- Alimentación limpia: HX711 sensible a ruido supply. Use 3.3 V de MCU (bajo ruido) o LDO dedicado (LP2985, XC6206). Evite 5 V USB ruidoso. Condensadores 10 µF + 100 nF cerca VCC-GND chip.
- Cableado: Par trenzado para señal (A+/A-). Alejado de cables potencia, motores, relés. Blindaje conectado a GND en un solo extremo.
- Temperatura: Deriva cero/span con T. Para precisión > 0.1%: compensación SW (sensor T en MCU) o célula con compensación T interna.
- Creep / Histéresis: Célula tarda en estabilizar tras carga (creep). Espere 30-60 s tras carga para lectura precisa. Descargue completamente para tara.
- Protección ESD: Entradas INA± sensibles. Añada TVS / diodos clamping en bornes módulo si entorno industrial.
- Power-down: PD_SCK HIGH > 60 µs → Power-down (< 1 µA). Ideal para batería (deep sleep MCU + HX711 power-down).
Conclusión
El HX711 es el habilitador universal del pesaje digital de bajo coste. Su PGA 128x, 24-bit sigma-delta, rechazo 50/60 Hz, interfaz 2-wire simple, y precio (< $1 chip, < $2 módulo) lo hacen ubiquo. La clave no es el chip, sino la integración mecánica y eléctrica: célula de carga adecuada, montaje rígido con espaciadores, alimentación limpia, cableado blindado, y calibración software robusta (2 puntos, guardado persistente, filtrado). Con esto, alcanza precisión 0.01-0.05% FS (clase C3/C6) en proyectos caseros, educativos, IoT, y pequeña industria. Para aplicaciones legales/comerciales (balanzas verificadas), use indicadores certificados (OIML R76) con HX711 solo como frontend ADC. Para diseños nuevos de alta precisión: evalúe NAU7802 (24-bit, I2C, PGA 128, chopper stabilized, mejor ruido, 1.8-3.6 V) o ADS1232/1234 (TI, 24-bit, SPI, chopper, calibración interna). Pero el HX711 sigue siendo el rey del coste/rendimiento/facilidad para 99% de makers e ingenieros.
Tecnología Industrial
- Really Smart Box: Solución de Almacenamiento Inteligente IoT
- Técnicas de Acoplamiento de Entrada y Salida para Amplificadores: Métodos Capacitivos, Directos y con Transformador
- Potencia en Circuitos CA Resistivos y Reactivos: Análisis Completo
- Plan de los minoristas: optimizar mano de obra y operaciones en la era post-COVID
- Mecanizado NC: Definición, Proceso y Beneficios Clave
- Dominando el Diseño de PCB para Internet de las Cosas: Guía Completa
- Parámetros de Células Solares y Características de Paneles FV: Guía Completa
- Guía Paso a Paso: Cableado de Panel Solar a Carga DC 12V y Batería
- El 74LS74 Flip-Flop Dual: Referencia Completa y Patillaje
- Montaje de Arduino Protoshield: Guía Paso a Paso con Fotos
- Dominando Entrada y Salida en programación C