Balanza digital de 20 kg con celda de carga, transmisor HX711 y Arduino

0
101

En el post de hoy vamos a trabajar con una celda de carga de 20Kg, un transmisor de celda de carga HX711 y un display LCD 1602, frecuentemente utilizado a lo largo de todo mis publicaciones. También utilizaré una estructura que fabricaremos en “DM”, que no es más que un tipo de aglomerado de madera muy resistente, para crear una precisa y práctica balanza digital capaz de pesar elementos de hasta 20Kg.

Para comenzar este proyecto es muy interesante conocer que es y para que se utiliza la celda de carga, además de ver por qué es necesario utilizar un transmisor de celda de carga HX711. Esto es necesario para establecer la comunicación con nuestro Arduino y así podamos interpretar las señales eléctricas recibidas para mostrarlas a través del LCD 1602 el peso real de los elementos que nos interesen.

Celdas de carga

Una celda de carga es un transductor utilizado para convertir una fuerza en una señal eléctrica. Esta conversión empieza a partir de un dispositivo mecánico, es decir, la fuerza que se desea medir, deforma la galga extensiométrica y por medio de medidores de deformación, que son pequeños patrones de resistencias utilizados como indicadores de tensión, obtenemos una señal eléctrica con la cual podemos obtener el valor de la fuerza.

Los medidores están unidos a la viga que se deforma cuando se aplica peso, a su vez, deformando el indicador de tensión (o voltaje). Cuando se deforma el medidor de deformación, la resistencia eléctrica cambia en proporción a la carga. Esto se logra por medio de un puente de Wheastone, el cual se utiliza para medir  resistencias desconocidas mediante el equilibrio de “brazos” del puente.

Los puentes de Wheastone están construidos por cuatro resistencias que forman un circuito cerrado. En el caso de las celdas de carga, las resistencias son los medidores de deformación. La celda de carga es ideal para poder medir variaciones sobre presión en una superficie o como simple transductor para medir un peso de algún elemento en contacto con el dispositivo.

En este post utilizaremos una celda de carga de 20Kg que es el valor máximo que podrá pesar nuestra balanza digital.

Celda de carga de 20Kg
Comunicación con Arduino

El transmisor de celda de carga HX711 es una interface entre la celda de carga y nuestro Arduino, permitiendo poder leer el peso de manera sencilla. Internamente se encarga de la lectura del puente de Wheastone formado por los medidores de deformación de la celda de carga, convirtiendo la lectura analógica en digital con su ADC interno de 24 bits.

La comunicación con nuestro Arduino se realiza a través de los pines SCK (Reloj) y DT (Datos) que el transmisor de celda de carga HX711 tiene como SALIDAS.

Transmisor de celda de carga HX711
Por otra parte las ENTRADAS del transmisor de celda de carga HX711 van cableadas a la celda de carga de la siguiente manera:
    • Pin E+ del transmisor HX711 à Cable Rojo de la celda de carga de 20Kg
    • Pin E- del transmisor HX711à Cable Negro de la celda de carga de 20Kg
    • Pin A- del transmisor HX711 à Cable Blanco de la celda de carga de 20Kg
    • Pin A+ del transmisor HX711à Cable Verde de la celda de carga de 20Kg

Como se ha mencionado con anterioridad, toda la estructura de la balanza digital está fabricada en “DM”, que es un aglomerado elaborado con fibras de madera aglutinadas con resinas sintéticas mediante fuerte presión y calor, en seco, hasta alcanzar una densidad media, ideal para resistir grandes esfuerzos con un espesor reducido.

Cabe decir que las uniones realizadas entre las tablas de DM o entre la celda de carga y las tablas de DM se realizan mediante tirafondos de 3mm de diámetro en diferentes longitudes y cabeza plana, además de aplicar adhesivo de contacto de secado rápido en todas las superficies a unir.

Como se puede observar en la siguiente imagen, la celda de carga está dotada de una parte hueca (parte central de la celda de carga), que tiene que quedar en suspensión para su correcto funcionamiento, además hay que tener en cuenta que el sentido de la flecha indica la dirección de la fuerza o peso a aplicar a la hora de instalar la celda de carga dentro de la estructura de DM.

Despiece y montaje de la estructura de la balanza digital
Programación en Arduino

Para programar correctamente nuestro Arduino y poder visualizar el peso real de los elementos que nos interesen a través del LCD 1602, lo primero que tenemos que hacer es cargar el programa llamado “Balanza_digital_calibrado.ino” para calibrar la balanza digital.

Básicamente esto consiste en hallar el valor de la escala que se usará, es decir, hallar el factor de conversión para convertir el 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 un peso conocido, en otras palabras, debemos saber el peso real del objeto que vamos a poner sobre la balanza digital. 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 8Kg pues nuestra celda es de 20Kg, y por mi casa no he encontrado un peso conocido mayor.

Después de poner el peso en la balanza, a través del monitor serial se mostraran las lecturas del peso, son lecturas sin escalar, por lo que les deben aparecer números grandes. Muy importante es que el programa comience a funcionar sin el peso colocado en la balanza digital, pues al inicio de programa se calcula la tara.

Posteriormente tendremos que abrir el monitor serie del IDE de Arduino, esperaremos a que el programa reste la tara, para finalmente poner el objeto de 8Kg (o el peso conocido más cercano a 20Kg que encontremos por casa) y así obtener una serie de valores a través del monitor serie.

Monitor serie
Con uno o el promedio de estos valores, que en mi caso he utilizado el valor 858000 para redondear, calculamos el valor de la escala que utilizaremos con la siguiente formula:

Fórmula para el cálculo de la ESCALA

Con este dato ya obtenido pasamos a programar el sketch que vamos a utilizar para pesar llamado “Balanza_digital_final.ino”, únicamente tendremos que sustituir la cantidad entre paréntesis de la línea de código  balanza.set_scale(107250) por el valor que hayamos obtenido nosotros, para que la balanza digital nos pese correctamente.

Una vez modificado el valor, validaremos y cargaremos el programa en nuestro Arduino. Cuando se esté ejecutando el programa en nuestro Arduino debemos de esperar unos instantes hasta que se quite la tara, para que posteriormente aparezca a través del LCD 1602 el peso de cualquier elemento que pongamos sobre la balanza digital, siempre y cuando este no exceda de los 20Kg.

Para realizar los dos programas anteriormente mencionados nos ayudaremos de las funciones ya programadas y definidas para trabajar con el transmisor de celda de carga HX711, que vienen incluidas dentro de la librería #include”HX711.h” que os podréis descargar desde uno de los primeros post de este blog.

A continuación os muestro una descripción de las principales funciones con las que se trabaja:

    • 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.
Lista de Materiales
  • Arduino UNO Rev.3
  • Cable USB tipo A-B
  • Celda de carga de 20Kg
  • Transmisor de celda de carga HX711
  • Módulo LCM 1602 I2C V1
  • Display 16×2 LCD 1602
  • Estructura de la balanza digital:
    • Tablas de DM:
      • 1 de 150x200mm, 1 de 60x75mm y 1 de 60x60mm
    • Tirafondos de cabeza plana:
      • 4 de 3x20mm, 2 de 3x25mm y 2 de 3x35mm
    • Adhesivo de contacto de secado rápido
  • Protoboard
  • Cables de conexión

Código del programa

Balanza_digital_calibrado

Balanza_digital_final

Video
Esperamos que esta información sea de utilidad para ustedes.
0 0 votes
Article Rating
Suscríbete
Notify of
guest

0 Comments
Inline Feedbacks
View all comments