BALANZA DIGITAL IMPLEMENTANDO UN MODULO ANÁLOGO – DIGITAL HX711
Hola jóvenes, en estos enlaces del BLOGG y DEL CANAL, pueden encontrar recursos sobre fundamentos de ingeniería mecatrónica como : SOLIDWORKS, PROGRAMACIÓN DE ARDUINO, HIDRÁULICA – LENGUAJE LADDER , LENGUAJE GRAFCET ,ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM, FACTORY IO, CONTROL, entre otros https://www.mecatrónica.com.co/ https://mecatronicaitsa.blogspot.com/ http://www.youtube.com/c/JovannyDu que?sub_confirmation=1_ Si te ha sido útil, regálame un Like, comenta y suscríbete :) (っ◕‿◕)
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
ARDUINO®
Proyecto de
Aplicación
Nombre del Proyecto: CELDA DE CARGA (PESO) IMPLEMENTANDO UN MODULO ANÁLOGO – DIGITAL HX711
Ing. Jovanny Duque
Página 1
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ 1)
Descripción del proyecto:
BALANZA DIGITAL IMPLEMENTANDO UN MODULO ANÁLOGO –
DIGITAL HX711. EL PROYECTO PERMITIRÁ UNA CONSTANTE INTERACCIÓN DE LAS LECTURAS ANÁLOGAS DECODIFICADAS (DIGITAL) QUE EL MODULO HX711 OBTIENE DE LA CELDA DE CARGA, LO CUAL PERMITIRÁ UNA LECTURA EN TIEMPO REAL DEL PESO DE UN DETERMINADO OBJETO. EXISTEN DOS ALGORITMOS, UNO CON EL CUAL SE CALIBRA LA BALANZA Y SE OBTIENE LA ESCALA Y OTRO ALGORITMO EN EL CUAL ESTA TODO EL CÓDIGO COMPLETO CON EL VALOR DE LA ESCALA ANTERIORMENTE ENCONTRADA. MÁS ADELANTE SE PODRÁ APRECIAR LA EXPLICACIÓN. ES IMPORTANTE MENCIONAR QUE ESTE SISTEMA CONSTA CON UNA CAPACIDAD MÁXIMA DE 1000 GRAMOS. 2) Materiales empleados:
ITEM 1 2 3 4 5 6 7 8
DESCRIPCIÓN PLACA ARDUINO UNO, MEGA, LEONARDO, ETC. CELDA DE CARGA DE 1 KG MODULO ANÁLOGO – DIGITAL HX711 CABLES (JUMPERS) MACHO – HEMBRA DIFERENTES COLORES POTENCIÓMETRO DE 1K PANTALLA LCD 16X2 PROTOBOARD RESISTENCIA DE 230 OHM
CANTIDAD 1 1 1 19 1 1 1 1
3) MONTAJE Y CONEXIONES DE ENTRADAS Y SALIDAS Figura 1, conexión celda de carga a la placa arduino.
Ing. Jovanny Duque
Página 2
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ Donde E+ se conecta con el cable rojo, E- con el negro, A- con el blanco, A+ con verde. Por el otro lado GND con tierra de la placa arduino, VCC con 5V de la placa arduino, SCK con la A0 de nuestra arduino y por ultimo DT va a A1 de la placa.
Figura 2, conexión LCD 16x2 a la placa arduino.
Donde el pin 1 de la lcd va a tierra, el 2 va a 5V, el 3 va a la pata del común del potenciómetro, el 4 va al pin 12 de nuestra arduino, el 5 va a tierra, el 6 va al pin 11 de arduino, los pines 11, 12 13 y 14 de la lcd van a 5, 4, 3 y 2 respectivamente de la arduino y por último, los pines 15 y 16 de la lcd van a 5V y tierra respectivamente. Por otro lado, el potenciómetro se debe conectar tal y como se aprecia en la imagen.
NOTA: esta es la correcta forma de correcta ensamblar nuestra balanza (diseño mecanico).
Ing. Jovanny Duque
Página 3
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
4)
Código: Como se mencionó anteriormente, existen dos códigos para este proyecto, el primer código es para calcular la escala, este es el código de ajuste y calibración:
// DECLARAMOS LA LIBRERÍA DEL MODULO ANÁLOGO - DIGITAL HX711. #include "HX711.h" // DEFINIMOS LAS ENTRADAS ANÁLOGAS QUE TOMAMOS DEL MODULO, DOUT ES DT Y CLK ES SCK. #define DOUT A1 #define CLK A0 HX711 balanza(DOUT, CLK); void setup() { //INICIAMOS EL MONITOR SERIAL PARA COMUNICARNOS CON EL PUERTO SERIAL QUE ARDUINO MANEJA. Serial.begin(9600); //LECTURA DE LOS PINES ANÁLOGOS. Serial.print("Lectura del valor del ADC:t"); //BALANZA.READ ES UNA FUNCION DE LA LIBRERÍA HX711.H LA CUAL PERMITE LEER EL VALOR ACTUAL DE LA CELDA DE PESO Serial.println(balanza.read()); Serial.println("No ponga ningun objeto sobre la balanza"); Serial.println("Calibrando..."); //BALANZA.SET_SCALE(); FUNCION DE LA LIBRERÍA PARA SELECCIONAR LA ESCALA, QUE POR DEFECTO ES 1. balanza.set_scale(); //La escala por defecto es 1 //BALANZA.TARE, ES OTRA FUNCION DE LA LIBRERÍA LA CUAL ELIMINA EL PESO QUE HAY ACTUALMENTE EN LA BALANZA Y LO IGUALA A 0. balanza.tare(20); //El peso actual es considerado Tara. //LUEGO DE ESTO COLOCAMOS UN PESO CONOCIDO, POR SER 1KG EL PESO MÁXIMO DE LA CELDA DE CARGA, ES RECOMENDABLE COLOCAR UN PESO PRÓXIMO A ESE VALOR PARA UNA MEJOR CALIBRACIÓN. Serial.println("Coloque un peso conocido:"); }
void loop() {
Ing. Jovanny Duque
Página 4
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ Serial.print("Valor de lectura: t"); Serial.println(balanza.get_value(10),0); delay(100); }
Realizado el código, en el monitor serial de arduino al cargar el programa tendremos resultados como estos:
Al obtener estos resultados aplicamos la siguiente fórmula para hallar el valor de la escala:
Donde escala será igual al valor obtenido de la lectura con el peso conocido dividido por el valor real, por ejemple si son 800 g, se divide el valor de la lectura entre 800g.
Teniendo el valor de la escala, procedemos a implementar nuestro código final:
#include <LiquidCrystal.h>
#include "HX711.h"
#define DOUT A5 Ing. Jovanny Duque
Página 5
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ #define CLK A6
HX711 balanza(DOUT, CLK); //AGREGAMOS LA LIBRERIA DE LA LCD 16X2. LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { //LE INDICAMOS AL SOFTWARE QUE NUESTRA LCD ES DE 16X2 lcd.begin(16, 2); //IMPRIMIMOS EN LA LCD lcd.print("SENSOR DE PESO"); Serial.begin(9600); Serial.print("Lectura del valor del ADC:"); Serial.println(balanza.read()); Serial.println("No ponga ningun objeto sobre la balanza"); lcd.clear(); lcd.setCursor(0,0); lcd.print("NO COLOQUE"); lcd.setCursor(0,1); lcd.print("NINGUN OBJETO"); delay(3000); Serial.println("calibrando..."); lcd.clear(); lcd.setCursor(0,0); lcd.print("CALIBRANDO..."); delay(3000); Serial.println("..."); //AGREGAMOS EL VALOR HALLADO DE LA FORMULA, EL VALOR DE LA ESCALA. balanza.set_scale(2031.840); // Establecemos la escala balanza.tare(20); //El peso actual es considerado Tara. lcd.clear(); lcd.setCursor(0,0); lcd.print("LISTO PARA"); Ing. Jovanny Duque
Página 6
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ lcd.setCursor(0,1); lcd.print("PESAR"); delay(3000); Serial.println("Listo para pesar"); }
void loop() { lcd.clear(); lcd.print("PESO EN GRAMOS"); Serial.print("PESO EN GRAMOS:"); lcd.setCursor(0,1); //IMPRIMIMOS EL VALOR DE LA LECTURA YA CONVERTIDA LA CUAL YA ESTA EN GRAMOS APLICANDO LA FUNCION BALANZA.GET_UNITS. lcd.print(balanza.get_units(20),3); Serial.print(balanza.get_units(20),3); Serial.println("GRAMOS"); delay(100); }
Jóvenes, este material ha sidó elabóradó cón muchó gustó. Si te es util Rega lame un Like, cómenta y suscríbete :) (っ◕‿◕) Te invitó al CANAL DE YOUTUBE MEKATRONICA Ing. Jovanny Duque
Página 7
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
http://www.yóutube.cóm/c/JóvannyDuque? sub_cónfirmatión=1_ Amigós/as en el BLOGG MEKATRONICA J DUKE pódras encóntrar cantidad de recursós sóbre SOLIDWORKS, HIDRAULICA ELECTROHIDRAULICA , NEUMATICA, ELECTRONEUMATICA, CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY IO, entre ótrós
https://mecatrónica-itsa.blógspót.cóm/
Ing. Jovanny Duque
Página 8