Bienvenidos una vez más a tu página ELECTROALL, en el articulo de hoy aprenderemos a manejar el sensor de peso explicaremos desde el desarrollo del código, el principio de funcionamiento del sensor de peso, las conexiones de todos los dispositivos y, finalmente seremos capaces de mostrar el peso exacto de un producto en nuestra báscula hecho por nosotros, te interesa? pues sigue leyendo este articulo.
MATERIALES A USAR
Para llevar a cabo este proyecto con éxito necesitaremos de los siguientes dispositivos.
1 Galgas extensiométricas o sensor de peso
2 Un dispositivo conversor de la señales de las galgas, en este caso el hx711
3 Un microcontrolador, podemos usar un pic, las placas de arduino, esp32, etc, etc
4 Una pantalla LCD, o en su defecto cualquier dispositivo que nos permita visualizar los datos del peso.
¿QUÉ ES UNA GALGA EXTENSIOMÉTRICA?
Es un tipo de resistencia que varía su capacidad resistiva cuando se aplica una fuerza externa a un objeto estacionario, en este caso esta barra de aluminio, produciéndose una tensión y estrés sobre la galga. El estrés se denomina como las fuerzas internas de resistencia del objeto, y tensión se denomina como el desplazamiento y la deformación que se produce.
Entonces para poder trabajar con alta presión tenemos integrar esta galga a un puente de wheantstone, básicamente este puente tiene esta forma(fig abajo), cuando la superficie donde se va a pesar es grande será conveniente hacer uso de un puente completo, prácticamente las galgas se encuentran en todos los lados(fig 2.2). También existe medio puente, donde solo se integran en dos lados(fig 2.3). Finalmente, es algo muy común encontrar en un solo lado(fig 2.4), para aplicaciones como las balanzas electrónicas que usaremos en este articulo.
¿CÓMO FUNCIONA ESTE PUENTE?
En principio por el extremo superior e inferior se suministrará una alimentación que normalmente suele ser de 2V a 2.5V, y por los extremos laterales tendremos las señales de salida en milivoltios.
Cuando se aplica una fuerza sobre la galga este tiende a estirarse y con ello también varía el voltaje de salida.
Esta tensión en milivoltios es amplificada por el módulo o circuito integrado HX711, que tiene un conversor analógico digital de 24bits. En cristiano, convertirá la entrada analógica de la galga de entre 0 a 16 millones 777mil 216 valores. Realmente es un montón, a comparación de la resolución de las entradas analógicas de arduino que es de 10bits que en números decimas apenas es de 1024. Ahora bien, estos datos de conversión se enviarán por tramas de pulsos a un microcontrolador ya sea pic, placas de arduino, esp32, etc etc, obviamente una vez obtenido estos datos en un microcontrolador se puede manejar a gusto de cualquier usuario, ya sea para mandar a una base de datos, mostrar en pantallas LCDs, etc, etc. Muy bien, en esta ocasión usaremos el arduino uno y los datos del peso lo mostraremos en una pantalla lcd. Para ello antes que nada haremos la programación en el IDE de arduino
CODIGO
//Incluye las librerías #include "HX711.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <EEPROM.h> LiquidCrystal_I2C lcd(0x27, 16, 2); HX711 balanza; const int zero = 2; int DT = 4; int CLK = 5; int peso_calibracion = 185; // Es el peso referencial a poner, en mi caso mi celular pesa 185g (SAMSUMG A20) long escala; int state_zero = 0; int last_state_zero = 0; //Función calibración void calibration() { // despues de hacer la calibracion puedes borrar toda la funcion "void calibration()" boolean conf = true; long adc_lecture; // restamos el peso de la base de la balaza lcd.setCursor(0, 0); lcd.print("Calibrando base"); lcd.setCursor(4, 1); lcd.print("Balanza"); delay(3000); balanza.read(); balanza.set_scale(); //La escala por defecto es 1 balanza.tare(20); //El peso actual es considerado zero. lcd.clear(); //Iniciando calibración while (conf == true) { lcd.setCursor(1, 0); lcd.print("Peso referencial:"); lcd.setCursor(1, 1); lcd.print(peso_calibracion); lcd.print(" g "); delay(3000); lcd.clear(); lcd.setCursor(1, 0); lcd.print("Ponga el Peso"); lcd.setCursor(1, 1); lcd.print("Referencial"); delay(3000); //Lee el valor del HX711 adc_lecture = balanza.get_value(100); //Calcula la escala con el valor leido dividiendo el peso conocido escala = adc_lecture / peso_calibracion; //Guarda la escala en la EEPROM EEPROM.put( 0, escala ); delay(100); lcd.setCursor(1, 0); lcd.print("Retire el Peso"); lcd.setCursor(1, 1); lcd.print("referencial"); delay(3000); lcd.clear(); lcd.setCursor(1, 0); lcd.print("READY!!...."); delay(3000); lcd.clear(); conf = false; //para salir de while lcd.clear(); } } void setup() { balanza.begin(DT, CLK);//asigana los pines para el recibir el trama del pulsos que viene del modulo pinMode(zero, INPUT);//declaramos el pin2 como entrada del pulsador pinMode(13,OUTPUT); lcd.init(); // Inicializamos el lcd lcd.backlight(); // encendemos la luz de fondo del lcd EEPROM.get( 0, escala );//Lee el valor de la escala en la EEPROM if (digitalRead(zero) == 1) { //esta accion solo sirve la primera vez para calibrar la balanza, es decir se presionar ni bien se enciende el sistema calibration(); } balanza.set_scale(escala); // Establecemos la escala balanza.tare(20); //El peso actual de la base es considerado zero. } void loop() { int state_zero = digitalRead(zero); float peso; peso = balanza.get_units(10); //Mide el peso de la balanza //Muestra el peso lcd.setCursor(1, 0); lcd.print("Peso: "); lcd.print(peso, 0); lcd.println(" g "); delay(5); //Botón de zero, esto sirve para restar el peso de un recipiente if ( state_zero != last_state_zero) { if (state_zero == LOW) { balanza.tare(10); //El peso actual es considerado zero. } } last_state_zero = state_zero; if (peso>=500)digitalWrite(13,1); else if(peso<=500)digitalWrite(13,0); }
CONEXIONES DE LOS DISPOSITIVOS
Antes de subir el programa veamos las conexiones externas que se tiene que hacer, en principio tenemos la galga extensiométrica adherido a una barra de aluminio, seguidamente conectamos al módulo HX711, este módulo los puedes encontrar en la tienda de dfrobot y aquí nos proporciona todas las características del mismo, no te preocupes que el link directo te lo dejaré en la descripción. El cable rojo va conectado a la etiqueta E+ cable negro al E-, cable blanco al S-, y el cable verde al S+. Ahora conectamos el módulo al arduino, cable rojo y negro para la alimentación de 5V, el cable de datos al pin 4 y cable de reloj al pin 5. Genial, ahora integramos el pulsador de zero que va conecto al pin 2 con una resistencia de pulldown. Perfecto, ahora que tenemos todo conectado procedemos a subir el respectivo programa.