fbpixel
Etiquetas: ,

Existen transductores de fuerza bastante sencillos de utilizar y compatibles con microcontroladores como Arduino. Constan de una célula de fuerza y un módulo de conversión. La célula de carga es un sensor de galgas extensométricas que mide la fuerza en una dirección del espacio. Suele ir acompañado de un módulo HX711 capaz de amplificar la medición de las fuerzas aplicadas a la célula de fuerza.

load-cell-amplifier-HX711 Medición de la fuerza con Arduino y el módulo HX711

Material

  • Ordenador
  • Arduino UNO
  • Cable USB A Macho/B Macho
  • Módulo HX711
  • célula de carga

Principio de funcionamiento

El módulo HX711 está compuesto por un amplificador y un convertidor analógico-digital HX711. Permite la amplificación de una señal enviada por una célula de carga. El sensor de fuerza utiliza un puente de Weahstone para convertir la fuerza que se le aplica en una señal analógica.

loadcell-wheatstone-bridge Medición de la fuerza con Arduino y el módulo HX711
load-cell-amplifier-HX711-pinout Medición de la fuerza con Arduino y el módulo HX711

Esquema

El módulo HX711 se comunica con el microcontrolador mediante dos pines digitales (SCK y DOUT) y se alimenta de 5V. Está conectado a la célula de fuerza por 4 hilos cuyo color sigue siendo el estándar en los puentes Wheastone:

  • Excitación+ (E+) o VCC ROJO
  • Excitación- (E-) o GND NEGRO o AMARILLO
  • Salida+ (O+), Señal+ (S+) o Amplificador+ (A+) BLANCO
  • O-, S-, o A- VERDE o AZUL
load-cell-amplifier-hx711-arduino_bb Medición de la fuerza con Arduino y el módulo HX711

Código

Para obtener un valor de fuerza del sensor, hay que calibrarlo. Para realizar la calibración, tendrá que ejecutar el código con dos masas conocidas diferentes para calcular la ganancia y el desplazamiento del sensor.

//Libraries
#include <HX711.h>//https://github.com/bogde/HX711

//Parameters
const long LOADCELL_OFFSET = 340884;
const float LOADCELL_DIVIDER = 262.5F;
const int numberOfReadings = 10;
const int doutPin = 2;
const int sckPin = 4;

//Variables
HX711 scale = ;
float weight = 0;
float initWeight = 0;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  scale.begin(doutPin, sckPin);
  scale.set_scale(); //remove scale divider
  scale.tare();      // reset the scale to 0

  //find
  Serial.println("Put a known wait and send command");
  while (Serial.available() == 0) {}
  Serial.print("Compute average on 10...");
  Serial.println(scale.get_units(10), 1); //repeat with two different weight to find DIVIDER and OFFSET
  //WEIGHT= (val-OFFSET)/DIVIDER
  scale.set_scale(LOADCELL_DIVIDER);
  scale.tare();
  //scale.set_offset(LOADCELL_OFFSET);
  delay(200);
  initWeight = scale.get_units(numberOfReadings * 10), 10;
}

void loop() {
  readScale();
}

void readScale() { /* function readScale */
  //// Read button states from keypad
  if (scale.is_ready()) {
    weight = scale.get_units(numberOfReadings), 10;
    Serial.print("weight : ");
    Serial.println(weight);
  } else {
    Serial.println("HX711 not found.");
  }
}


Resultado

Cuando el sensor está calibrado, devuelve el valor en g o en kg (o incluso en N) según la unidad que haya elegido al calcular los parámetros del sensor. Es posible suavizar la medición sobre varios valores colocando el número de lecturas deseado en la función get_units(numberOfReadings). Esto permite tener una medición más estable y precisa del esfuerzo.

Aplicaciones

  • Crear una escala conectada
  • Activar un mecanismo en función del peso de un objeto

Fuentes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie