Icono del sitio AranaCorp

Medición de la fuerza con Arduino y el módulo HX711

5
(1)

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.

Material

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.

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:

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

Fuentes

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

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Salir de la versión móvil