Arduino celda de carga con hx711


En este post aprenderás a usar el modulo hx711 con una celda de carga en barra, veremos la conexión de estos módulos al arduino y como poder obtener datos que nos ayudara para crear una bascula

oscar Escrito por oscar 28 February 2021 21931 0

Acerca del proyecto

En este post aprenderás a usar el modulo hx711 con una celda de carga en barra, veremos la conexión de estos módulos al arduino y como poder obtener datos que nos ayudara para crear una bascula en un siguiente post.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
Módulo HX711 El HX711 es un convertidor analógico a digital de precisión de 24 bits (ADC) diseñado para básculas de pesaje y aplicaciones de control industrial para interactuar directamente con un sensor de puente.
Celda de carga de barra En este post profundizaremos en el conocimiento de la celda de carga de barra, donde veremos como se usa, la conexión y como se debe de montar, ademas veremos la formula matemática que aplica para conocer la variación de tensión de este elemento de medición de carga.
HX711 Arduino Library En la pagina oficial de arduino puede encontrar la librería oficial para el controlador hx711 a la celda de carga para la placa arduino.

Celda de carga en barra

Esta celda de carga de un solo punto. Se monta atornillando el extremo de la celda de carga donde están conectados los cables y aplicando fuerza en el otro extremo en la dirección de la flecha. El lugar donde se aplica la fuerza no es crítico, ya que esta celda de carga mide un efecto cortante en la viga, no la flexión de la viga. Si monta una pequeña plataforma en la celda de carga.

Celda carga barra
Celda carga barra

Modulo hx711

La conexión de la celda al modulo la explico mas abajo.

El HX711 es un convertidor analógico a digital de precisión de 24 bits (ADC) diseñado para básculas de pesaje y aplicaciones de control industrial para interactuar directamente con un sensor de puente.

El módulo HX711 es un transmisor entre las celdas de carga y un microcontrolador como Arduino, permitiendo leer el peso en la celda de manera sencilla. Es compatible con las celdas de carga de 5kg, 20kg y 50kg. Utilizado en sistemas de medición automatizada, procesos industriales, industria médica.

El chip HX711 posee internamente la electrónica para la lectura del puente de Wheatstone formado por la celda de carga y también un conversor ADC de 24 bits. Se comunica con el microcontrolador por medio de un protocolo de tipo serial mediante 2 pines (Clock y Data).

Módulo hx711
Módulo hx711

Materiales

En la siguiente tabla tenemos el listado de los componentes y módulos que trabajaremos en este proyecto.

Material Cantidad Descripción
Arduino 1 Controlador del proyecto
Modulo hx711 1 Conversor de análogo a digital para la celda de carga
Celda de carga en barra 1 Celda de carga

Conexión

La conexión del modulo es muy sencilla de realizar con la celda como con el controlador arduino, vemos en la siguiente imagen como se realiza la primera conexión de esta celda al hx711.

Conexión celda de carga a hx711
Conexión celda de carga a hx711

En la siguiente tabla tenemos los pines del modulo con los colores de los cables para realizar la conexión.

Celda de carga Módulo hx711
Cable rojo Pin E+
Cable negro Pin E-
Cable verde Pin A-
Cable blanco Pin A+

Ahora vamos a conectar el modulo hx711 al arduino para ello usamos dos cables ya que este modulo usa la comunicación o protocolo i2c, veamos en la siguiente imagen como se realiza.

Conexión hx711 a arduino
Conexión hx711 a arduino

A continuación tenemos una tabla con los pines i2c de algunas placas comunes de arduino.

Modulo hx711 Arduino Uno, Nano, Mini Arduino Mega , DUE Arduino Leonardo
GND GND GND GND
VCC 5V 5V 5V
SDA A4 20 2
SCL A5 21 3

Esta es la conexión definitiva de este circuito.

Conexión hx711 a arduino
Conexión hx711 a arduino
Conexión hx711 a arduino foto
Conexión hx711 a arduino foto

Librería hx711 para arduino

Vamos a conocer un poco esta librería y entender los métodos y funciones que posee para poder sar de forma adecuada el modulo en el arduino, primero que todo, esta librería la podemos encontrar en el sitio oficial de arduino o directamente en el repositorio de bogde quien es el creador.

A continuación tenemos las principales funciones y métodos que se usan:

  • begin(byte PinData, byte PinClock): Inicializa el modulo hx711, esta función pide como parámetros los pines de comunicación i2c
  • tare(byte n); Establece el peso actual como el peso de tara, n indica el número de lecturas que se realizan para obtener la tara, por defecto n=10;
  • set_scale(float scale); Establece el valor de escala usado en la conversion de las lecturas en unidades de peso, por defecto es 10.
  • read(); Realiza la lectura del ADC del hx711
  • read_average(byte n); Realiza n veces la lectura del ADC y devuelve el promedio
  • get_value(byte n); Devuelve el valor actual restando el peso de tara. Equivalente a (read_average() - OFFSET). Si se especifica un valor de n, devuelve el promedio de n lecturas.
  • get_units(byte n); Devuelve el valor actual restado del peso de tara y dividido por la escala. Es equivalente a (get_value()/SCALE). Si se especifica un valor de n, devuelve el promedio de n lecturas.

Código

El código que estamos usando para probar la conexión y que nos muestre el valor de conversion lo podemos encontrar en los ejemplos de la librería, lo que se va a hacer es explicar en un paso a paso que es lo que hacen las funciones, no es muy complicado de entender.

// Paso 1
#include "HX711.h"

// Paso 2
const int LOADCELL_DOUT_PIN = A4;
const int LOADCELL_SCK_PIN = A5;

// Paso 3
HX711 hx711;

void setup() {
    // Paso 4
    Serial.begin(9600);
    hx711.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}

void loop() {

    // Paso 5
    if (hx711.is_ready()) {
        // Paso 6
        long reading = hx711.read();
        Serial.print("HX711 reading: ");
        Serial.println(reading);
    } else {
        Serial.println("HX711 not found.");
    }
    delay(1000);
}
  1. Cargamos la librería hx711 al código, esta tiene que estar previamente descargada y en la carpeta de librerías del entorno arduino.
  2. Asignamos en variables globales los pines para la comunicación i2c del modulo hx711.
  3. Creamos la instancia del objeto de la librería para poder har uso de las funciones y métodos.
  4. Iniciamos la comunicación serial e indicamos los pines para la comunicación i2c con begin en el objeto de hx711.
  5. Verificamos si el modulo esta presente y podemos hacer una lectura, de lo contrario mostramos un mensaje de error.
  6. Realizamos una lectura de los bits de conversion y estos los mostramos, su manipulamos la celda de carga ejerciendo una fuerza sobre ella, podemos ver en la salida serial que el valor cambia.

Funcionamiento

Después de completar la conexión y de compilar y cargar el código, procedemos a realizar una prueba, en la terminal serial del entorno arduino vemos que se muestra un valor numérico correspondiente a la conversión ADC, si realizamos alguna fuerza sobre la celda de carga, vemos que este cambia, esto lo podemos ver en la siguiente imagen.

Prueba arduino hx711 sin peso
Prueba arduino hx711 sin peso
Prueba arduino hx711 con peso
Prueba arduino hx711 con peso

Comentario

Debe aceptar antes de enviar