En este tutorial trabajaremos con la trasmisor de celda de carga HX711, he indicaremos todos los pasos en su conexión y programación para armar una balanza digital o cualquier uso que lo podamos dar

  

Celdas De Carga

Una celda de carga es un transductor capaz de

convertir una fuerza en una señal eléctrica, esto la hace a través uno o más galgas internas que posee, configuradas en un puente Wheatstone.

Existen diversos tipos de Celdas de carga, en diversos modelos, el que utilizaremos para este tutorial es el que se muestra en la imagen. Usaremos una celda de carga de 5Kg que es el valor máximo que puede pensar, pero el tutorial también aplica a celda de carga de 20 Kg y otros modelos.

 

Trasmisor de celda de carga HX711

Este módulo es una interface entre las celdas de carga y el microcontrolador, permitiendo poder leer el peso de manera sencilla. Internamente se encarga de la lectura del puente wheatstone formado por la celda de carga, convirtiendo la lectura analógica a digital con su conversor A/D interno de 24 bits.

Es muy utilizado en procesos industriales, sistemas de medición automatizada e industria médica.

Se comunica con el microcontrolador mediante 2 pines (Clock y Data) de forma serial.

 

 

Armando la parte mecánica de nuestra Balanza Digital

Para instalar la celda de carga hay que hacerlo con separadores, los cuales deben de distanciar a la base y recipiente de la celda para que la parte central quede libre; además hay que tener en cuenta que el sentido de la flecha indica la dirección de la fuerza o peso a aplicar

La siguiente figura muestra un ejemplo de cómo instalar la celda de carga, pero dependerá de su aplicación para hacer las variaciones necesarias

 

Conexiones entre la Celda de carga, módulo HX711 y Arduino.

  

Conexión entre la Celda de carga y módulo HX711

Celda  De  Carga

 Módulo HX711

Cable Rojo

Pin  E+

Cable Negro

Pin E-

Cable Verde

Pin A-

Cable Blanco

Pin A+ 

 

Conexión entre HX711 y Arduino

 

Módulo HX711

Arduino UNO, MEGA, NANO

Pin GND

Pin GND

Pin DT

Pin A1

Pin SCK

Pin A0

Pin VCC

Pin 5V

 

La conexión final sería como se muestra en la imagen.

 

 

Librería HX711 para Arduino


Estamos utilizando la librería HX711 de Bogde el cual lo pueden descargar desde Github:

https://github.com/bogde/HX711

Una vez descargado hay que importarla a nuestro IDE de Arduino.

  

Explicaremos las funciones principales  de esta librería.

  

HX711(byte PinData, byte PinClock)

Es el constructor del objeto HX711, se puede trabajar con cualquiera de los pines.

void 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;

void set_scale(float scale);

Establece el valor de la escala, que es el factor de conversión para convertir valor de lectura en un valor con unidades de peso. Por defecto es scale=1;

long read()

Espera hasta que el dispositivo esté listo y devuelve la lectura del ADC del HX711

long read_average(byte n)

Realiza n veces la lectura del ADC y devuelve el promedio

double 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.

float 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.

 

1. Calibrando nuestra Balanza

Lo primero que se debe de hacer es calibrar, que es básicamente hallar el valor de la escala que se usará; es decir hallar el factor de conversión para convertir valor de lectura en un valor con unidades de peso. La escala es diferente para cada celda y cambia de acuerdo a la forma de instalar, al peso máximo o modelo de celda de carga, incluso así se trate del mismo modelo de celdas no necesariamente tienen el mismo valor de escala.

Primero necesitamos conseguir un objeto con peso conocido, en otras palabras debemos saber el peso real del objeto. Se recomienda que el peso conocido sea cercano al valor máximo del rango de trabajo de la celda de carga. En nuestro caso usaremos un peso de 4Kg pues nuestra celda es de 5Kg.

 

El siguiente paso es cargar el siguiente Sketch a nuestro Arduino. 

#include "HX711.h"

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
  Serial.begin(9600);
  Serial.print("Lectura del valor del ADC:  ");
  Serial.println(balanza.read());
  Serial.println("No ponga ningun  objeto sobre la balanza");
  Serial.println("Destarando...");
  balanza.set_scale(); //La escala por defecto es 1
  balanza.tare(20);	//El peso actual es considerado Tara.
  Serial.println("Coloque un peso conocido:");
  
}


void loop() {

  Serial.print("Valor de lectura:  ");
  Serial.println(balanza.get_value(10),0);
  delay(100);
}

El programa debe correr sin el peso colocado, pues al inicio de programa calcula la tara.

Después de abrir el monitor serial y esperar para que reste la tara, Se pone el objeto de 4Kg o el peso con el que estén trabajando.

 

Después de poner el peso en la balanza, en el monitor serial se mostraran las lecturas del peso, son lecturas sin escalar, por lo que les deben aparecer números grandes.

 

Con uno o el promedio de estos datos calculamos el valor de la escala que usaremos, para esto usaremos la siguiente formula:

 

 

El valor del peso debe estar en las unidades con las que queremos que trabaje nuestra balanza, por ejemplo podría ser 4Kg o 4000g para Kilogramo o gramos respectivamente.

Entonces el valor de la Escala que usaremos es:

 

Con este dato ya obtenido pasamos a programar el sketch que vamos a utilizar para pesar.

 

2. Programa final para nuestra Balanza

El programa que se utilizara es similar al programa que usamos para calibrar, con la diferencia que ya conocemos la escala.

 

#define DOUT  A1
#define CLK  A0

HX711 balanza(DOUT, CLK);

void setup() {
Serial.begin(9600);
  Serial.print("Lectura del valor del ADC:  ");
  Serial.println(balanza.read());
  Serial.println("No ponga ningun  objeto sobre la balanza");
  Serial.println("Destarando...");
  Serial.println("...");
  balanza.set_scale(439430.25); // Establecemos la escala
  balanza.tare(20);	//El peso actual es considerado Tara.
  
  Serial.println("Listo para pesar");  
}

void loop() {
  Serial.print("Peso: ");
  Serial.print(balanza.get_units(20),3);
  Serial.println(" kg");
  delay(500);
}

 

Como se observa en el código, es necesario encender el Arduino antes de colocar los objetos que se desean pesar, de lo contrario el peso que esté sobre la balanza se considerará como tara.

A continuación se muestran las lecturas agregando sucesivamente pesos de 1Kg aproximadamente.

 

Como pueden ver el módulo HX711 es fácil de implementar en cualquier proyecto, la aplicaciones son varias y espero puedan sacarle provecho.