- Trabajo de la máquina de pesaje Arduino
- Componentes necesarios para la máquina de pesaje basada en Arduino
- Pesadora basada en Arduino - Diagrama de circuito
- Haciendo el circuito en una placa perfilada con puntos
- Construcción de una carcasa para máquina de pesaje basada en Arduino
- Pesadora Arduino - Código
Las básculas de carga digitales son otro milagro de la ingeniería y el diseño modernos. Sí, estamos hablando de la báscula que vemos a menudo en la mayoría de las tiendas de abarrotes y otros lugares, pero ¿alguna vez te has preguntado cómo funciona una báscula? Para responder a esa pregunta, en este proyecto, vamos a echar un vistazo a la celda de carga y su funcionamiento. Finalmente, construiremos una báscula de carga portátil basada en Arduino con el sensor de peso HX711, que puede medir pesos de hasta 10 kg.
Esta báscula es perfecta para las tiendas locales, donde empacan artículos en grandes cantidades. Al igual que los productos comerciales, nuestra báscula tendrá un botón de cero que pone a cero la báscula. Además, tiene una opción para configurar el peso para la medición, cuando el peso de medición alcanza el peso establecido, un zumbador suena rápidamente y se detiene cuando el peso establecido es igual al peso de medición. De esta manera, el usuario puede empaquetarlo con solo escuchar el sonido y no tendría que mirar la pantalla. Como este es un proyecto muy simple, lo construiremos muy fácilmente utilizando componentes como Arduino y una celda de carga de galgas extensométricas. Así que, sin más demora, entremos en ello.
En un artículo anterior, hemos realizado proyectos como el sensor de peso basado en Raspberry Pi y el contenedor inteligente IoT con alerta por correo electrónico y monitoreo web utilizando el popular módulo amplificador de celda de carga HX711. Por lo tanto, verifique eso si ese es su requisito.
Trabajo de la máquina de pesaje Arduino
El componente principal de este proyecto es una celda de carga y un módulo amplificador de celda de carga HX711. Como puede ver, un lado está marcado con diez kilogramos. Además, puede notar algún tipo de pegamento protector blanco sobre la celda de carga y están saliendo cuatro colores diferentes de cables, que revelará el secreto debajo del pegamento protector blanco y la función de estos cables de cuatro colores más adelante en el artículo.
Una celda de carga es un transductor que transforma la fuerza o presión en salida eléctrica. Tiene dos lados, digamos el derecho y el izquierdo, y está hecho de bloques de aluminio. Como puedes ver en el medio el material se adelgaza poniendo un gran agujero. Es por eso que ese es el punto que sufre deformaciones cuando se coloca una carga en el lado del soporte. Ahora imagine que la celda del lado derecho está montada en la base y el lado izquierdo es donde se coloca la carga; esta configuración deforma la celda de carga del medidor de tensión debido al orificio gigante en el medio.
Cuando se coloca una carga en el lado de carga de la celda de carga, la parte superior sufrirá tensión y la parte inferior sufrirá compresión. Es por eso que la barra de aluminio se dobla hacia abajo en el lado izquierdo. Si medimos esta deformación, podemos medir la fuerza que se aplicó al bloque de aluminio y eso es exactamente lo que haremos.
Ahora, la pregunta sigue siendo ¿qué hay dentro del pegamento protector blanco? Dentro de este pegamento protector, encontraremos un componente elástico muy fino que se llama galga extensométrica. Un medidor de tensión es un componente que se utiliza para medir la tensión. Si miramos más de cerca este componente, podemos ver dos almohadillas de conexión, y luego tenemos un patrón de cable conductor con deflexiones repetitivas. Este cable conductor tiene una resistencia definida. Cuando lo doblamos, ¿cambiará el valor de resistencia? Entonces, un lado de la galga extensométrica se monta y fija en un lugar, si colocamos un peso en el otro lado de la barra de aluminio, esto forzará a que la galga extensométrica se doble, lo que provocará un cambio en la resistencia. ¿Cómo sucede esto en realidad? El patrón conductor del medidor de tensión está hecho de cobre, este cable tendrá un área y una longitud determinadas, por lo que estas dos unidades darán la resistencia del cable. La resistencia de un cable se opone al flujo de corriente. Ahora es obvio que si el área de este cable se reduce,podrían pasar menos electrones, lo que significa una corriente más baja. Ahora bien, si aumentamos el área, aumentará la resistencia de un conductor. Si se aplica algo de fuerza a este cable, esto estirará el área y se hará más pequeña al mismo tiempo, la resistencia aumenta. Pero esta variación de resistencia es muy baja. Si estiramos la galga extensométrica, la resistencia aumentará y si la comprimimos, la resistencia bajará. Para medir la fuerza, necesitamos medir la resistencia. Medir la resistencia directamente no siempre es práctico, porque el cambio es muy pequeño. Entonces, en lugar de medir la resistencia, podemos medir voltajes fácilmente. Entonces, en este caso, necesitamos convertir la salida del medidor de valores de resistencia a valores de voltaje.Si se aplica algo de fuerza a este cable, esto estirará el área y se hará más pequeña al mismo tiempo, la resistencia aumenta. Pero esta variación de resistencia es muy baja. Si estiramos la galga extensométrica, la resistencia aumentará y si la comprimimos, la resistencia disminuirá. Para medir la fuerza, necesitamos medir la resistencia. Medir la resistencia directamente no siempre es práctico, porque el cambio es muy pequeño. Entonces, en lugar de medir la resistencia, podemos medir voltajes fácilmente. Entonces, en este caso, necesitamos convertir la salida del medidor de valores de resistencia a valores de voltaje.Si se aplica algo de fuerza a este cable, esto estirará el área y se hará más pequeña al mismo tiempo, la resistencia aumenta. Pero esta variación de resistencia es muy baja. Si estiramos la galga extensométrica, la resistencia aumentará y si la comprimimos, la resistencia disminuirá. Para medir la fuerza, necesitamos medir la resistencia. Medir la resistencia directamente no siempre es práctico, porque el cambio es muy pequeño. Entonces, en lugar de medir la resistencia, podemos medir voltajes fácilmente. Entonces, en este caso, necesitamos convertir la salida del medidor de valores de resistencia a valores de voltaje.la resistencia disminuirá. Para medir la fuerza, necesitamos medir la resistencia. Medir la resistencia directamente no siempre es práctico, porque el cambio es muy pequeño. Entonces, en lugar de medir la resistencia, podemos medir voltajes fácilmente. Entonces, en este caso, necesitamos convertir la salida del medidor de valores de resistencia a valores de voltaje.la resistencia disminuirá. Para medir la fuerza, necesitamos medir la resistencia. Medir la resistencia directamente no siempre es práctico, porque el cambio es muy pequeño. Entonces, en lugar de medir la resistencia, podemos medir voltajes fácilmente. Entonces, en este caso, necesitamos convertir la salida del medidor de valores de resistencia a valores de voltaje.
Podemos hacer esto con la ayuda del puente de Wheatstone. Colocamos la galga extensométrica en el puente de Wheatstone si el puente está equilibrado, el voltaje en el punto medio debe ser cero (anteriormente hemos construido un proyecto en el que hemos descrito cómo funciona un puente de Wheatstone, puedes comprobarlo si quieres saber más sobre el tema). Cuando la galga extensométrica cambia su resistencia, desequilibrará el puente y el voltaje también cambiará. Entonces, así es como el puente de Wheatstone convierte las variaciones de resistencia en valores de voltaje.
Pero este cambio de voltaje sigue siendo muy pequeño, por lo que para aumentarlo, necesitamos usar el módulo HX711. HX711 es un ADC diferencial de 24 bits, de esta manera, podríamos medir cambios de voltaje muy pequeños. dará valores de 0 a 2 exponenciales 24.
Componentes necesarios para la máquina de pesaje basada en Arduino
Para hacer este proyecto lo más simple posible, hemos utilizado componentes muy genéricos que puedes encontrar en cualquier tienda de hobby local. La siguiente imagen le dará una idea de los componentes. Además, tenemos la Lista de materiales (BOM) que se enumera a continuación.
- Celda de carga (estamos usando una celda de carga de 10 kg)
- Módulo amplificador HX 711
- Arduino Nano
- I2C LCD 16X2 - Compatible con I2C
- Resistencia 1k -2 Nos
- LEDs -2Nos
- Zumbador
- PCB común
- Batería de 7,4 V (si la quieres portátil)
- Regulador de voltaje LM7805
Pesadora basada en Arduino - Diagrama de circuito
La celda de carga tiene cuatro cables que son rojo, negro, verde y blanco. Este color puede variar según los fabricantes, por lo que es mejor consultar la hoja de datos. Conecte el rojo a E + de la placa HX711, conecte el negro a E-, conecte el blanco a A + y conecte el verde a A-, Dout y el reloj de la placa se conecte a D4 y D5 respectivamente. Conecte un extremo de los botones pulsadores a D3, D8, D9 y los otros extremos al suelo. Tenemos LCD I2C, así que conecte SDA a A4 y SCL a A5. Conecte la tierra de LCD, HX711 y Arduino a la tierra, también conecte VCC al 5Vpin de Arduino. Todos los módulos funcionan con 5V, por lo que hemos agregado un regulador de voltaje LM7805. Si no lo quiere como portátil, puede alimentar directamente el Arduino con un cable USB.
Haciendo el circuito en una placa perfilada con puntos
Hemos soldado todos los componentes en una placa de perforación punteada común. Usamos encabezados hembra para soldar el Arduino y ADC con la placa de circuito, también hemos usado cables para conectar todos los pulsadores y LED. Una vez finalizado todo el proceso de soldadura, nos hemos asegurado de que salgan los 5V adecuados del LM7805. Finalmente, hemos puesto un interruptor para encender / apagar el circuito. Una vez que todos terminamos, se veía como la imagen de abajo.
Construcción de una carcasa para máquina de pesaje basada en Arduino
Como puede ver, la celda de carga tiene algunas roscas, por lo que podríamos montarla en una placa base. Usaremos un tablero de PVC para la base de nuestra báscula, para eso primero cortamos un cuadrado de 20 * 20 cm y cuatro rectángulos de 20 * 5 del tablero de PVC. Luego, usando pegamento duro, pegamos cada pieza e hicimos un pequeño recinto.
Recuerde, no arreglamos un lado, porque necesitamos colocar los botones pulsadores, los LED y la pantalla LCD en él. Luego usamos una tabla de plástico para la parte superior de la escala. Antes de hacer que esta configuración sea permanente, debemos asegurarnos de que tenemos suficiente espacio desde el suelo hasta la celda de carga, para que pueda doblarse, por lo que colocamos tornillos y tuercas entre la celda de carga y la base, también agregamos algunos espaciadores de plástico entre la celda de carga y la parte superior. Usamos una hoja de plástico redonda como el mejor equilibrio.
Luego colocamos la pantalla LCD, los LED y los botones en el panel frontal, y todo lo conectado con un cable largo aislado. Una vez finalizado el proceso de cableado, pegamos el panel frontal a la base principal con cierta inclinación, para que podamos leer los valores de la pantalla LCD con mucha facilidad. finalmente, conectamos el interruptor principal al costado de la balanza y listo. Así es como hicimos el cuerpo para nuestra báscula.
Puede diseñar con sus ideas, pero recuerde colocar la celda de carga como en la imagen.
Pesadora Arduino - Código
Como hemos terminado con el proceso de construcción de nuestra balanza digital, podemos pasar a la parte de programación. Para facilitar la programación, usaremos la biblioteca HX711, la biblioteca EEPROM y la biblioteca LiquidCrystal. Puede descargar la biblioteca HX711 del repositorio oficial de GitHub, o ir a herramientas > incluir biblioteca > administrar biblioteca, luego buscar biblioteca usando la palabra clave HX711, después de descargar la biblioteca, instalarla en Arduino ide.
Primero, necesitamos calibrar la celda de carga y almacenar ese valor en EEPROM, para eso, vaya a archivo> ejemplos> HX 711_ADC, luego seleccione el código de calibración. Antes de cargar el código, coloque la balanza en una superficie plana estable. Luego cargue el código en Arduino y abra el monitor serial. Luego cambia la velocidad en baudios a 572600. Ahora el monitor pide tomar el peso, para eso necesitamos presionar ty enter.
Ahora, necesitamos colocar el peso conocido en la balanza, en mi caso, es 194gm. Después de colocar el peso conocido, escriba el peso en el monitor de serie y presione enter.
Ahora, el monitor en serie le pregunta si desea guardar el valor en EEPROM o no, así que escriba Y para elegir sí. Ahora podemos ver el peso en el monitor de serie.
El código principal de este proyecto, que desarrollamos a partir del boceto de ejemplo de la biblioteca HX711. Puede descargar el código de este proyecto desde abajo.
En la sección de codificación, primero agregamos las tres bibliotecas. La biblioteca HX711 sirve para tomar los valores de las celdas de carga. EEPROM es la biblioteca incorporada de Arduino ide, que se utiliza para almacenar valores en EEPROM y la biblioteca LiquidCrystal es para el módulo LCD l2C.
#incluir
Luego definimos enteros para diferentes pines y valores asignados. La función de celda de carga HX711_ADC es para configurar el pin Dout y el reloj.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; t largo; const int Up_buttonPin = 9; const int Down_buttonPin = 8; flotador buttonPushCounter = 0; flotar up_buttonState = 0; flotar up_lastButtonState = 0; float down_buttonState = 0; flotar down_lastButtonState = 0;
En la sección de configuración, primero iniciamos el monitor en serie, esto es solo para depurar. Luego definimos los modos de pin, todos los pulsadores se definen como entrada. Con la ayuda de la función Arduino PULL UP, configuramos los pines en un nivel lógico alto normalmente. Entonces, no queremos usar resistencias externas para eso.
pinMode (tpin, INPUT_PULLUP); pinMode (6, SALIDA); pinMode (12, SALIDA); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Las siguientes líneas de código son para configurar I2C LCD. Primero, mostramos el texto de bienvenida usando la función LCD.print () , después de dos segundos, borramos la pantalla usando lcd.clear () . Es decir, al principio, la pantalla muestra ARDUINO BALANCE como texto de bienvenida, y después de dos segundos, se borrará y mostrará los pesos de medición.
lcd.init (); LCD luz de fondo(); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("vamos a medir"); retraso (2000); lcd.clear ();
Luego comenzamos a leer los valores de la celda de carga usando la función loadCell.begin () , después de eso, leemos la EEPROM para los valores calibrados, lo hacemos usando la función EEPROM.get () . Es decir, ya almacenamos el valor usando el esquema de calibración en la dirección EEPROM, simplemente retomamos ese valor.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, CalibrationValue);
En la sección de bucle, primero, verificamos si hay datos de la celda de carga disponibles usando LoadCell.update (), si está disponible, leemos y almacenamos esos datos, para eso, estamos usando LoadCell.getData () . A continuación, necesitamos mostrar el valor almacenado en LCD. Para hacer eso, usamos la función LCD.print () . además, imprimimos el peso establecido. El peso establecido se establece con la ayuda del contador de botones. Eso explicado en la última sección.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("establecer wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("peso:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
A continuación, establecemos el valor de tara, para eso, primero, leemos el estado del botón de tara usando la función digitalRead () , si el estado es bajo, taramos ese peso a cero. La función de tara de esta báscula es llevar las lecturas a cero. Por ejemplo, si tenemos un recipiente en el que se cargan las cosas, entonces el peso neto será el peso del recipiente + el peso de las cosas. Si presionamos el botón de tara con el recipiente en la celda de carga antes de cargar las cosas, el peso de la canasta se anulará y podremos medir el peso de las cosas solo.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Ahora, necesitamos establecer las condiciones para diferentes indicaciones como configurar el retardo del zumbador y el estado del LED. Lo hicimos usando las condiciones if , tenemos un total de tres condiciones. Primero, calculamos la diferencia entre el peso establecido y el peso de medición, luego almacenamos ese valor en la variable k.
flotar k = buttonPushCounter-i;
1. Si la diferencia entre el peso establecido y el peso de medición es mayor o igual a 50 g, el zumbador emite un pitido con un retraso de 200 milisegundos (lentamente).
if (k> = 50) { digitalWrite (6, HIGH); retraso (200); digitalWrite (6, BAJO); retraso (200); }
2. Si la diferencia entre el peso establecido y el peso de medición es menor de 50 y mayor de 1 gramo, el timbre suena con un retraso de 50 milisegundos (más rápido).
if (k <50 && k> 1) { digitalWrite (6, HIGH); retraso (50); digitalWrite (6, BAJO); retraso (50); }
3. Cuando el peso de medición sea igual o mayor que el valor establecido, esto encenderá el led verde y apagará el zumbador y el led rojo.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); escritura digital (12, ALTA); }
Tenemos dos funciones de anulación más () para configurar el peso establecido (para contar la presión del botón).
La función aumenta el valor establecido en 10gms por cada pulsación. Esto se hace usando la función digitalRead de Arduino si el pin está bajo, eso significa que el botón está presionado y eso incrementará el valor en 10gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Similar, El checkdown es para disminuir el valor establecido en 10gms por cada pulsación.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Esto marca el final de la parte de programación.
Esta báscula electrónica basada en Arduino es perfecta para medir pesos de hasta 10 kg (podemos aumentar este límite usando una celda de carga de mayor clasificación). Esto es 99% exacto a las medidas originales.
Si tiene alguna pregunta sobre este circuito de máquina de balance de peso LCD basado en Arduino, publíquelo en la sección de comentarios, ¡gracias!