fbpixel
Étiquettes : ,
4
(10)

Il existe des capteurs de force assez simple d’utilisation et compatible avec les microcontrôleurs comme Arduino. Ils se composent d’une cellule d’effort et d’un module de conversion. La cellule d’effort est un capteur à jauge de contrainte permettant de mesurer un effort dans une seule direction de l’espace. Il est généralement accompagné d’un module HX711 capable d’amplifier la mesure des efforts appliqués sur la cellule de force.

Matériel

  • Ordinateur
  • Arduino UNO
  • Câble USB A Mâle/B Mâle
  • Module HX711
  • Cellule d’effort

Principe de fonctionnement

Le module HX711 est composé d’un amplificateur et d’un convertisseur analogique numérique HX711. Il permet l’amplification d’un signal envoyé par une cellule d’effort. Le capteur d’effort utilise un pont de Weahstone afin de convertir l’effort qui lui est appliqué en signal analogique.

Schéma

Le module HX711 communique avec le microcontrôleur à l’aide de deux broches digitale (SCK et DOUT) et est alimenté en 5V. Il est relié à la cellule de force par 4 fils dont la couleur reste standard sur les ponts de Wheastone:

  • Excitation+ (E+) or VCC RED
  • Excitation- (E-) or GND BLACK or YELLOW
  • Output+ (O+), Signal+ (S+), or Amplifier+ (A+) WHITE
  • O-, S-, or A- GREEN or BLUE

Code

Pour récupérer une valeur de force du capteur, celui-ci doit-être calibré. Pour réaliser la calibration, il vous faudra lancer le code avec deux masses connues différents afin de calculer le gain et offset du capteur.

//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.");
  }
}


Résultat

Lorsque le capteur de force est calibré, il renvoie la valeur en g ou en kg (ou même N) selon l’unité que vous avez choisit lors du calcul des paramètres du capteurs. Il est possible de lisser la mesure sur plusieurs valeurs en plaçant le nombre de lectures désirées dans la fonction get_units(numberOfReadings). Cela permet d’avoir une mesure plus stable et plus juste de l’effort.

Applications

  • Créer une balance connectée
  • Activer un mécanisme en fonction du poids d’un objet

Sources

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

How useful was this post?

Click on a star to rate it!

Average rating 4 / 5. Vote count: 10

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?