Báscula

Descrición

Unha célula de carga vainos permitir medir pesos ou deformacións. Hai moitos tipos de células de carga. Nós imos utilizar a da figura, consistente nunha barra de aluminio que ten incorporadas unhas galgas extensiométricas. Estas galgas son uns sensores que varían a súa resistencia en función da deformación que se produce sobre elas. A resistencia extensométrica é proporcional á carga aplicada, o que nos permite calcular o peso dos obxectos. Normalmente, as células de carga teñen dous ou catro medidores de tensión conectados nunha ponte de Wheatstone que nos permiten obter medicións de resistencia precisas.

[Adaptación dunha imaxe de firtec.com.ar]

Montaxe

Para facer unha báscula debemos montar a estrutura cunha plataforma inferior e outra superior, tal e como vén na figura. Hai en aliexpress modelos que xa veñen con elas, pero tamén podes mercar só o sensor e o amplificador e facer ti o soporte.

 

As células de carga precisan dun módulo amplificador HX711, que é un convertedor de 24 bits. Serve para obter unha maior resolución nas medidas. Arduino, que ten unha resolución de 10 bits, é quen de dividir 5V dunha entrada en 210 = 1.024 partes de 4,88mV. Usando o HX711 podemos dividir eses 5V en 224= 16.777.216 partes de 0,3 μV

A maneira de conectalo é a seguinte.

Calibración

Unha vez temos a nos balanza montada e conectada a un arduino debemos calibrala. Necesitamos un peso coñecido. O mellor sería ter unha pesa de precisión, pero se non a tes podes utilizar calquera obxecto e pesalo noutra báscula que estea calibrada. Con ese peso obteremos o factor de calibración que utilizaremos nos seguintes programas que utilizaremos para os nosos proxectos coa báscula.

Imos necesitar instalar a librería HX711 Arduino Library by Bogdan Necula.

/* Programa de calibración
O factor de calibración utilizado será  (lectura)/(peso) */

/* Coñecido o factor de calibración podes usar a célula de carga para pesar obxectos.
Comeza pesando obxectos cun peso coñecido e repite o proceso de calibración 
se os valores non son precisos. */

#include <HX711.h>
const int Dout_Pin = 3;
const int SCK_Pin = 2;

HX711 bascula;

// declaración de variables

float calibration_factor=1; // este dato calcularémolo ao final

float peso= 81.51;   // peso coñecido co que imos calibrar (en g) Cámbiao polo que teñas ti.

// configuración

void setup(){  
  
  Serial.begin(57600);

  bascula.begin(Dout_Pin, SCK_Pin);
  delay(1000);
  Serial.println(" ");
  Serial.println("Báscula iniciada");
  Serial.println(" ");

}

// Calibración

void loop() {

  if (bascula.is_ready()) {
    
    bascula.set_scale(); 
    Serial.println("Tara... elimina calquera peso da báscula.");
    delay(5000);
    bascula.tare();
    Serial.println("Tara feita");
    
    Serial.println("Coloca un peso coñecido na báscula");
    delay(5000);
    long lectura = bascula.get_units(10);
    Serial.print("Resultado: ");
    Serial.print(lectura);
    
    Serial.print(" --- Factor de calibración: ");
    calibration_factor = lectura/peso;
    Serial.println(calibration_factor);
    Serial.println(" ");
  } 
  else {
    Serial.println("HX711 not found.");
  }
  
  delay(1000);
  
}

/* resultado obtido do factor de calibración: calibration_factor=-488.96
 usarémolo no seguinte programa para pesar */

Programa para pesar

Coñecido o factor de calibración podes usar a célula de carga para pesar obxectos. Comeza pesando obxectos cun peso coñecido e repite o proceso de calibración se os valores obtidos non son precisos.

// Báscula

#include <HX711.h>
const int Dout_Pin = 3;
const int SCK_Pin = 2;

HX711 bascula;

// declaración de variables

int calibration_factor=-488.5;
float lectura;

// configuración

void setup(){  
  
  Serial.begin(9600);
    
  // Escribimos un texto de benvida 
  
  Serial.println("*** Iniciando a báscula ***");
  Serial.println("Retirar peso");
  Serial.println(" ");

  bascula.begin(Dout_Pin, SCK_Pin);
  delay(1000);
     
  bascula.set_scale(calibration_factor);  // este valor obtense calibrando a báscula con pesos coñecidos 
  bascula.tare();                         // Tara a balanza. Restablece a escala a 0
  
  Serial.println(" ");
  Serial.println("LECTURAS:");

}

// LOOP

void loop() {

  // Lectura do peso
    
  lectura=bascula.get_units(5),2;
  Serial.print("lectura:\t");
  Serial.println(lectura);
 
}

No programa anterior utilizamos valores de lectura con decimais para observar se está correctamente calibrada. Se a diferenza entre o peso real e o medido é dunhas décimas de gramo podémola dar como válida. Para operar coa báscula nos proxectos pode chegar con que mostre a medida redondeada en gramos, sen décimas nin centésimas de gramo.

Propostas

  • Incorpora unha pantalla LCD ou OLED para visualizar os datos do peso.
  • Incorpora un pulsador para poder tarar a báscula. Basta poñer a instrución bascula.tare();  para cando se prema o pulsador. Desa maneira podes poñer un recipiente baleiro, tarar para que marque 0, e despois medir o peso do contido do recipiente.
  • Podes incorporar un zumbador que soe cando se tare.
  • Báscula para persoas cegas: Incorpora un teclado matricial ao que pegaremos enriba dos pulsadores os números en braille. Un son indica que a báscula está acesa. Outro son diferente indica que xa está tarada cando se preme un dos botóns (asterisco, por exemplo). A persoa debe indicar no teclado a cantidade que quere pesar e premer na almofada. Un son indica que pode empezar a introducir o que quere pesar (arroz, por exemplo) e outro son diferente avisará de que debe parar, pois xa se alcanzou a medida introducida. O sistema pode avisar cando a medida se vaia achegando ao límite.
  • Deseña a estrutura da báscula para incorporar todos os compoñentes: báscula, arduino (NANO ocupa menos), pantalla, pulsador, zumbador, interruptor de acendido e alimentación e teclado matricial se o utilizaches. Podes utilizar impresión 3D ou corte láser para a fabricación.
  • No proxecto anterior, un brazo robot recolle o recipiente, baléirao e volve poñelo enriba da báscula para facer a seguinte pesada.