Proyecto Electronico .com
Diseños con leds, alarmas, compuertas lógicas, antenas y proyectos de electrónica en general
Hacer balanza o báscula electrónica con arduino
El HX710 es un circuito integrado diseñado para balanzas o básculas electrónicas utilizando celda de carga (sensor bridge).
Estas celdas de carga son las más utilizadas en los sistemas de pesaje domésticos, comercios, así como los industriales.
En este proyecto utilizo la celda de carga de una báscula china similar a esta:
En algunas ocasiones comprar celdas de carga es incómodo o caro y he comprado una báscula solo para utilizar la celda de carga, aunque hay gran variedad por internet.
La que más he utilizado es de maximo 30 Kg. para llenadoras automáticas de bolsas, para 2Kg. o 5Kg. que diseño con Arduinos.
El HX710B la primera vez que lo vi fue en una báscula china y lo que me sorprendió fue la resolución (24 bits), desde ese momento decidí que debía aprender a utilizarlo, ya que me pareció el más adecuado para mis trabajos con báscula electrónicas.
Las primeras pruebas las realizé con una Raspberry pi, pude utilizarla pero algunas lecturas eran erroneas, creo que por la velocidad de lecturas en los GPios, entonces lo resolví con Arduino y en miles de lecturas no me ha presentado errores.
Las conexiones del HX710B son muy simples:
El HX710A tanto como el HX710B pueden trabajar de 2.6V a 5.5V, la entrada de voltaje análoga AVDD no debe superar al voltaje digital DVDD
El voltaje de referencia VREF debe de ser superior a 1.8V y no superar el voltaje AVDD
Las patillas que van hacia el Arduino llevan una resistencia de 470 ohmios cada una, en los diagramas de ejemplo del fabricante no se muestran ya que no son indispensables, aunque yo las utilizo porque todas las básculas comerciales las tienen (HX710 a PIC), y como no estorban me parece que pueden proteger las entradas.
Para este proyecto utilizo un Arduino Pro mini a 8Mhz, 3.3V.
Yo regulo el voltaje aparte ya que no quiero dañar el regulador propio del Arduino en caso de un accidente con los cables. El mejor regulador es el L4931-33 ya que puede dar los 3.3 voltios a partir de 3.9 voltios, otros como el L78L33 necesitan muy cerca de 5 voltios para dar 3.3V de manera estable y soporta menos mA.
Configuramos un pin como salida para que haga de reloj(PD_SCK)
y uno como entrada para leer los datos del HX710 (DOUT)
Yo escogí los pines Digitales 2 y 3 pero puede ser cualquiera que pueda utilizarse como digital.
Estando el reloj en negativo(LOW) hay que esperar que el chip esté listo, que es cuando la salida se pone a negativo también, en ese momento se hace la secuencia de 25 bits (24 de datos, 1 de control)
Debemos hacer que los pulsos de reloj no sean más rápidos que 0,2µseg. y cuando está en positivo no exceda los 50 µseg. (con 60 µseg. el HX710 entra en estado apagado).
Como el primer bit es el más significativo, los bits se van escribiendo desde el bit 23 al bit 0 con bitSet() en una variable tipo unsigned long.
#include "Arduino.h"
#define DOUT 2
#define PD_SCK 3
#define factor 0.00959 //40Kg china
unsigned long value;
long weight;
long get_weight()
{
digitalWrite(PD_SCK, LOW);
delayMicroseconds(1);
// wait for the chip to become ready:
while (digitalRead(DOUT) == HIGH);
value = 0;
for (int i = 23; i > -1; i--){ //bitWrite23 =bit24
digitalWrite(PD_SCK, HIGH);
delayMicroseconds(1);
digitalWrite(PD_SCK, LOW);
if (digitalRead(DOUT) == HIGH){bitSet(value, i);}
}
// para que siga leyendo muestras a 10Hz:
digitalWrite(PD_SCK, HIGH);
delayMicroseconds(1);
digitalWrite(PD_SCK, LOW);
delayMicroseconds(1);
return value; // todos 1 = 1677215
}
void setup() {
Serial.begin(9600);
pinMode(DOUT, INPUT);
pinMode(PD_SCK, OUTPUT);
}
void loop() {
weight = get_weight();
float redondeado;
redondeado = round(weight*factor);
Serial.println(redondeado,0);
}
En este caso el valor es devuelto por el puerto serial para ser "monitoreado"
Ya desplegarlo en una pantalla o display es otro tema.
Estos datos son reales y probados, mi último proyecto que utiliza este código fue una llenadora para bolsas de 2 Kilos con opción para 1 Kgr y 5 Kgr.
Le muestro el panel de control del proyecto:
TI2-CAW
proyectos electrónicos