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.
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).
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.
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.
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.
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);
}
- Cargamos la librería hx711 al código, esta tiene que estar previamente descargada y en la carpeta de librerías del entorno arduino.
- Asignamos en variables globales los pines para la comunicación i2c del modulo hx711.
- Creamos la instancia del objeto de la librería para poder har uso de las funciones y métodos.
- Iniciamos la comunicación serial e indicamos los pines para la comunicación i2c con begin en el objeto de hx711.
- Verificamos si el modulo esta presente y podemos hacer una lectura, de lo contrario mostramos un mensaje de error.
- 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.