Célula de carga con Arduino Uno usando amplificación HX711

Para medir el peso, la celda de carga con HX711 puede medir una precisión de hasta 10 g. Dependiendo de la fuerza de la carga, el peso aumenta.

En este tutorial, la celda de carga se conecta con HX711 para interactuar con Arduino Uno, incluido el código, el diagrama de conexión y la lista de componentes.

Introducción de la celda de carga

La celda de carga se utiliza para la medición del peso. Una celda de carga es un circuito de puente H sensible que tiene sensibilidad de bajo voltaje. Un circuito electrónico de combinación de resistencias diseñado en una placa mecánica de tal manera que forma un puente H. Al doblar la placa mecánica, los valores de la resistencia cambian, lo que da como resultado un cambio en el voltaje medido de la celda de carga. Este voltaje se utiliza para realizar la medición del peso. Las resistencias de puente H de las celdas de carga son muy sensibles y necesitan un recubrimiento adecuado con pegamento. El pegamento proporciona protección mecánica a la celda de carga.

Estructura mecánica de la celda de carga

Principio de funcionamiento de la celda de carga

El circuito h-Bridge contiene cuatro resistencias, cuando la celda de carga contiene el peso, crea tensión mecánica en la placa de la celda de carga. Este estrés mecánico cambia la resistencia de una resistencia única (digamos R4), la corriente R5 aumenta con este estrés debido a este estrés. Básicamente, R5 es el voltímetro que mide la diferencia de voltaje entre R3 y R4. Cuando R4 disminuye, entonces el voltaje en R4 tiene menos potencial, mientras que R3 tiene más potencial, esta diferencia da como resultado el voltaje. Pero normalmente lo nombramos como el voltaje en R5 para mayor tranquilidad. La celda de carga contiene cuatro cables que están conectados al amplificador IC.

Puente H

El voltaje que se mide en R5 es muy pequeño y debe amplificarse para poder calcular el cambio exacto del voltaje. Para este propósito, el amplificador IC HX711 se usa comúnmente debido a su fácil interfaz de solo dos cables con Arduino UNO. En el siguiente encabezado se proporciona una explicación del HX711.

Descripción y asignación de pines del circuito integrado del amplificador HX711

HX711 es el IC de amplificación, desarrollado específicamente para circuitos de puente H. El circuito del puente H está balanceado cuando todas las resistencias son iguales. La placa de circuito de este IC contiene 6 entradas, dos de alimentación VCC y GND y 2 para pines de control. Funciona con 5V y toma hasta 22uA en modo de suspensión, mientras que en modo de trabajo toma hasta 60 mA.

Sr. Nombre del pin Trabajando en el PIN
1 CCV El pin de voltaje debe estar conectado con 5V.
2 SCK Pin de reloj conectado a cualquier GPIO
3 DT Pin de datos conectado a cualquier GPIO (por ejemplo: 4,5,6)
4 TIERRA Clavija de tierra conectada a GND (Zero Volt)

Tabla de pines de entrada del HX711 HX711 IC Amplification IC

Los cables de la celda de carga están conectados al lado izquierdo del amplificador IC (HX711) a los pines E+ hasta A+. Esto se explica en la sección de celdas de carga.

Descripción de la celda de carga y asignación de pines

Una celda de carga es un transductor, el transductor es un dispositivo eléctrico que transforma la energía de una forma a otra. Los termómetros, los micrófonos, los altavoces, los sensores de posición y presión y las antenas son ejemplos de dispositivos que generan una señal eléctrica que es proporcional a la fuerza que se mide. Las celdas de carga neumáticas, las celdas de carga hidráulicas y las celdas de carga de galgas extensométricas son algunos de los varios tipos de celdas de carga. El peso actúa sobre el componente de resorte metálico de la celda de carga durante la medición, provocando una deformación elástica. Un medidor de tensión (SG) instalado en el elemento de resorte convierte la tensión (positiva o negativa) en una señal eléctrica. Una viga de flexión con un medidor de tensión es el tipo de celda de carga más popular. La celda de carga recta no está ensamblada, mientras que la forma rectangular no requiere ningún ensamblaje. Así que es mejor elegir uno rectangular para evitar el trabajo mecánico.

Célula de carga ensamblada

Lo que necesitamos

Como de costumbre, sugiero agregar desde ahora a su carrito de compras de comercio electrónico favorito todo el hardware necesario, para que al final pueda evaluar los costos generales y decidir si continúa con el proyecto o los elimina del carrito de compras. Entonces, el hardware será solo:

Consulta precios de hardware en los siguientes enlaces:

Procedimiento paso a paso

Conexión con Arduino

Como se muestra en la imagen a continuación, el sensor se conecta con Arduino Uno. Siga el cableado que, de acuerdo con Arduino Uno Pinout para realizar las conexiones.

En el conexionado se estarán brindando 3 esquemas dependiendo de los cables de las celdas de carga ya que vienen en 3 y 4 cables.

Con una celda de carga de 4 cables, cuatro combinaciones serán así, cada rojo estará conectado con el cable rojo, el negro con el negro, el blanco con el blanco y el verde con el verde.

Celda de carga de 4 hilos Celda de carga de tres hilos (Recomendado comprar Celda de carga de 3 hilos) Tres hilos 4 combinaciones (Recomendado comprar Celda de carga de 3 hilos)

Obtenga Weight_loadcell.ino y la explicación del código

Conecte su PC a Arduino y abra Arduino IDE. Para los primeros pasos, puede consultar el tutorial Conexión de PC con Windows con Arduino. Puedes obtener el código .ino desde mi área de descargas con el siguiente enlace:

peso_loadcell.ino

También necesita instalar la siguiente biblioteca, de acuerdo con mi instalación de bibliotecas Arduino: métodos para agregar bibliotecas con el tutorial IDE de Arduino:

HX711.zip

El código .ino se distribuye en tres partes principales, la parte 1 antes de la configuración, la parte 2, la configuración y la parte 3, el ciclo. Comenzando con la sección 1:

Sección 1: Bibliotecas de HX711, definición de pines y rendimiento de variables globales. En el escenario actual, es importante comprender el factor de calibración (CF). Este es el factor de amplificación utilizado para convertir el voltaje de la celda de carga en peso. CF tiene su importancia porque la precisión del peso resultante depende de ello. Cada celda de carga de 20 kg, 50 kg y 100 kg tiene su propio factor de calibración. Según la razón de multiplicación. Para resultados de experimentación, Para 50 kg CF = 62. Para 20 kg, 113.

#include "HX711.h" HX711 scale; float callibration_factor = 2280.f;

Sección 2: Configuración

El monitor en serie se abre a una velocidad en baudios de 38400. El IC HX711 se inicializa y se calibra en CF. Lectura del peso tomado antes y después de la calibración para que podamos comparar lecturas para obtener mejores resultados.

void setup() {   Serial.begin(38400);   Serial.println("HX711 Demo");   Serial.println("Initializing the scale");   scale.begin(A1, A0);    reading_value();   scale.set_scale(callibration_factor); // callibration factor can be called as the multiplication factor of amplification of the voltage   scale.tare();                // reset the scale to 0    Serial.println("After setting up the scale:");   Serial.print("read: tt");   reading_value(); }

Sección 3: Sección de bucle

En la sección de bucle, medimos continuamente el valor del peso. Hay 3 comandos que se utilizan en múltiples ocasiones.

Scale.getunit(): este comando obtiene la lectura una vez. Si se escribe como scale.getunit(10), la medición se realiza 10 veces y se presenta su promedio.

De manera similar, scale.read_average(20) imprime el valor sin restar las taras. La tara es el valor inicial poco después de la calibración, este valor es el valor de vibración que varía entre 10 y 50.

void loop() {   Serial.print("one reading:t");   Serial.print(scale.get_units(), 1);   Serial.print("t| average:t");   Serial.println(scale.get_units(10), 1);      scale.power_down();             // put the ADC in sleep mode   delay(5000);   scale.power_up(); }  void reading_value() {   Serial.println(scale.read());      // print a raw reading from the ADC   Serial.print("read average: tt");   Serial.println(scale.read_average(20));   // print the average of 20 readings from the ADC   Serial.print("get units: tt");   Serial.println(scale.get_units(5), 1);  // print the average of 5 readings from the ADC minus tare weight (not set) divided }