Máquina de pesaje Arduino (balanza) con pantalla analógica

Esta es una escala de estilo retro donde el resultado se muestra en el galvanómetro en lugar de la pantalla LCD.

Componentes

ard nano
arduino nano r3
1
Celda de carga de 5kg
1
tablero de conexiones HX711
1
Galvanómetro o Voltímetro 5V
1
71ac5637 40
Potenciómetro ajustable, 10 kohm
1
4415447
Resistencia de orificio pasante, 470 ohmios
2
09590 01
LED (genérico)
4
Cambiar E por ejemplo1218 imagen 75px
interruptor deslizante
1

Herramientas y máquinas necesarias.

09507 01
Soldador (genérico)
4966285
Alambre de soldadura, sin plomo

Aplicaciones y servicios en línea

Acerca de este proyecto

Esta vez te mostraré cómo hacer un balance, cuyo resultado se muestra en el galvanómetro. En lugar de un galvanómetro podemos utilizar un voltímetro de 5V, pero en este caso hay que quitar el potenciómetro regulable de 10k.

La báscula electrónica utiliza una celda de carga que es un transductor utilizado para crear una señal eléctrica cuya amplitud es directamente proporcional a la fuerza medida. Esta señal debe amplificarse y procesarse, y esta función se logra mediante una pequeña placa de conexión con HX711 IC, que es un convertidor A/D de alta precisión de 24 bits.

Por lo general, la calibración y el resultado final se muestran en un monitor LCD o en serie, pero en este caso modifiqué el código estándar para que el proceso de calibración se muestre a través de LED y el peso se muestre en un instrumento analógico.

De esta manera, además del aspecto retro inusual, también simplifica enormemente la fabricación del dispositivo que contiene solo unos pocos componentes:

– Nanomicrocontrolador Arduino

– Célula de carga

– placa brakot HX711

– Galvanómetro o Voltímetro

– dos resistencias

– cambiar

– potenciómetro trímero

– y cuatro LED

Aunque la celda está diseñada para pesar hasta 5 kg, he asignado el peso máximo a 1 kg en el código para una mayor resolución al medir pesos pequeños.

Después de encender, el galvanómetro primero se prueba y la flecha se mueve hacia la posición final y hacia atrás. Si hay una desviación de la escala marcada, la calibración se realiza mediante el potenciómetro trimmer. Ahora se enciende el LED azul, indicando un proceso de autocalibración de la báscula. Durante este procedimiento, se realiza la puesta a cero, despreciando el peso del plato sobre el que se coloca el peso de medición. Luego se enciende el Led amarillo y es señal de que hay que poner un peso conocido el cual está previamente definido en el código, y en nuestro caso son 100 gramos. Cuando se completa la calibración, el LED blanco se enciende, lo que significa que la báscula está lista para la medición.

También les presentaré otro caso, cuando necesitamos medir el peso de un objeto que está en un contenedor, sin medir el peso del contenedor. Durante el vídeo se puede ver el prototipo, donde además de LEDs también hay una pantalla LCD que muestra el estado actual de la báscula y el peso. Durante la construcción, la pantalla LCD quedó fuera debido a la simplificación del proyecto.

Finalmente, el dispositivo se monta en una caja adecuada hecha de panel de PVC con un espesor de 3 milímetros.

codificado

codigo arduino
#define DT A0
#define SCK A1
 
long sample=0;
float val=0;
long count=0;
int WEIGHT=0;
 
unsigned long readCount(void)
{
unsigned long Count;
unsigned char i;
pinMode(DT, OUTPUT);
digitalWrite(DT,HIGH);
digitalWrite(SCK,LOW);
Count=0;
pinMode(DT, INPUT);
while(digitalRead(DT));
for (i=0;i<24;i++)
{
digitalWrite(SCK,HIGH);
Count=Count<<1;
digitalWrite(SCK,LOW);
if(digitalRead(DT))
Count++;
}
digitalWrite(SCK,HIGH);
Count=Count^0x800000;
digitalWrite(SCK,LOW);
return(Count);
}
 
void setup()
{
 pinMode(6, OUTPUT); 
 pinMode(7, OUTPUT);
 pinMode(8, OUTPUT); 
 pinMode(10, OUTPUT);  
pinMode(SCK, OUTPUT);

delay(500);

test();
calibrate();
}
 
void loop()
{
count= readCount();
int w=(((count-sample)/val)-2*((count-sample)/val));

 WEIGHT = map(w,0,1000,0,255);
 analogWrite (6,WEIGHT);
}
 
void calibrate()
{
  digitalWrite(7, HIGH);

for(int i=0;i<100;i++)

{
count=readCount();
sample+=count;
}
sample/=100;

digitalWrite(7, LOW);
digitalWrite(8, HIGH);
count=0;
while(count<1000)
{
count=readCount();
count=sample-count;
}

delay(2000);
for(int i=0;i<100;i++)
{
count=readCount();
val+=sample-count;
}
val=val/100.0;
val=val/100.0; // put here your calibrating weight

digitalWrite(8, LOW);
digitalWrite(10, HIGH);
}
void test() {
for (int i=1;i<=255;i++)
{
analogWrite (6, i);  
delay (15);
}
for (int i=255;i>=1;i--)
{
analogWrite (6, i);  
delay (15);
}
}
BibliotecaC/C++

diagramas

Esquemático
Shema tan oznaki nyy6j6nsse

Fuente Arduino.cc

Licencia © GPL3+