Accueil > ARDUINO > Capteurs > Arduino & Amplificateur HX711 SPARKFUN pour capteur d’effort (avec pont (...)
mardi 3 mars 2020, par
Cet amplificateur de différence permet de récupérer les faibles variations de tension issue d’un capteur fonctionnant sur le principe du pont de Wheastone(pour un capteur d’effort dans notre exemple)
Les broches :
Broche | fonction | Broche | fonction |
---|---|---|---|
RED | à brancher au capteur | VDD | Alimentation du HX711 |
BLK | à brancher au capteur | VCC | Alimentation du pont de Wheastone |
WHT | à brancher au capteur | DAT | données |
GRN | à brancher au capteur | CLK | horloge |
YLW | à brancher au capteur | GND | Masse |
Remarque 1 : Les broches Vcc et Vdd sont toutes les 2 reliées à 5V dans le cas d’un carte Arduino fonctionnant en +5V. Si on utilise une carte fonctionnant en 3,3V, il faut relier VDD à +3,3V et Vcc à +5V
Ramrque 2 : le fil jaune n’est présent que sur certains capteurs. Il permet d’améliorer l’immunité au bruit.
Nous allons utiliser la bibliothèque HX711 Arduino Library disponible depuis le gestionnaire de bibliothèque de l’IDE Arduino (Outils -> Gérer les bibliothèques)
https://github.com/bogde/HX711
Les fonctions de la bibliothèque :
instructions | rôle |
---|---|
HX711 capteur | crée une instance capteur de l’objet de type HX711 |
capteur.begin(broche DAT , broche CLK, gain) OU capteur.begin(broche DAT , broche CLK) | initialise le capteur en définissant les numéros de broches sur lesquelles sont reliées DAT et CLK. Si le gain de l’amplificateur est omis, il est fixé à 128 par défaut |
read() | retourne une mesure "brut" (= code décimal de la mesure) |
read_average(10) | retourne la moyenne de 10 mesures "bruts" (= code décimal de la mesure) |
Le programme suivant effectue une mesure toutes les secondes.
#include "HX711.h" HX711 capteur; int DAT = 3; int CLK = 2; long valeur; void setup() { capteur.begin(DAT,CLK); Serial.begin(9600); Serial.println("HX711"); } void loop() { valeur = capteur.read_average(10); Serial.print("Valeur mesurée : "); Serial.println(valeur); delay(1000); }
Si on ouvre le moniteur série, on obtient le code numérique en sortie du capteur.
On peut maintenant appliquer une tare de façon à ce que sans charge (poids ou force) le capteur soit à zéro.
instructions | rôle |
---|---|
capteur.tare() | permet de tarer le capteur. Il doit être en position fixe, sans effort exercé dessus |
capteur.get_value(10) | permet de retirer la valeur de la tare lors des mesures (=offset). On obtient donc le code numérique de la mesure moins le code numérique de la tare |
#include "HX711.h" HX711 capteur; int DAT = 3; int CLK = 2; long valeur; void setup() { capteur.begin(DAT, CLK); Serial.begin(9600); while (!Serial) { } Serial.println("HX711"); // tarage du capteur Serial.println("Tarage du capteur"); Serial.println("Le capteur doit être fixé et ne pas être touché ou déplacé"); capteur.tare(); } void loop() { valeur = capteur.get_value(10); Serial.print("Valeur mesurée (avec tare) : "); Serial.println(valeur); delay(1000); }