Le HX711 est le petit module qui transforme un capteur de pesage en balance. Un capteur de pesage ne délivre que quelques millivolts quand on pose un poids dessus — une tension trop faible pour l’Arduino, qui mesure des pas de 5 V. Le HX711 l’amplifie, la convertit en nombre sur 24 bits, et la transmet sur deux fils. C’est le composant de toutes les balances électroniques à capteur à jauge de contrainte.
Le module est prêt à l’emploi : il porte la puce Avia Semiconductor HX711 en boîtier SOP-16, sa régulation d’alimentation et son oscillateur interne. Aucun réglage de registre, aucune horloge à câbler — tout se pilote par les broches.
À quoi sert le HX711 ?
- Balance de cuisine ou de commerce — pesée au gramme sur un capteur de quelques kilogrammes.
- Pèse-colis et contrôle de stock — peser un colis, compter ou trier des pièces par leur poids.
- Balances à effluents — suivre la consommation d’une bobine d’impression 3D en pesant le filament restant.
- Mesure de force et de pression — capteur de contrainte sur une poutre, un levier ou une presse.
- Détection de présence — un poids posé ou enlevé devient un signal logique, une alarme, un compteur.
- Robotique et agroalimentaire — dosage, remplissage, contrôle qualité à la chaîne.
Caractéristiques techniques
| Circuit intégré | HX711 d’Avia Semiconductor, boîtier SOP-16 |
|---|---|
| Fonction | Convertisseur analogique-numérique 24 bits avec amplificateur à gain programmable |
| Entrées | Deux canaux différentiels : canal A (gain 128 ou 64) et canal B (gain fixe 32) |
| Résolution | 24 bits en complément à deux |
| Plage d’entrée | Environ ±19 mV à gain 128 sous 5 V (la moitié de la tension d’alimentation divisée par le gain) |
| Vitesse de conversion | 10 échantillons par seconde par défaut, 80 possibles |
| Tension d’alimentation | 2,6 à 5,5 V continu |
| Consommation | Moins de 1,5 mA en fonctionnement, moins de 1 µA en veille |
| Alimentation du capteur | Assurée par les broches E+ et E− du module |
| Interface | Deux fils : DT (données) et SCK (horloge) — n’importe quelles broches numériques de l’Arduino |
| Rejet secteur | Rejette à la fois le 50 Hz et le 60 Hz, utile près d’un transformateur |
| Température de service | −40 °C à +85 °C |
| Connectique | Dix trous au pas de 2,54 mm : six côté capteur, quatre côté microcontrôleur |
Un mot sur les 24 bits : c’est la résolution du convertisseur, pas la précision de la balance. Le bruit de la jauge, la dérive thermique du capteur et la qualité de l’alimentation limitent la résolution réellement exploitable bien en dessous. Avec un capteur ordinaire de 1 kg, on lit couramment le gramme, parfois moins après un bon étalonnage — pas le milligramme.
Brochage : dix broches, deux mondes
Le module a un côté « capteur » et un côté « microcontrôleur ». La sérigraphie de la carte les nomme clairement.
| E+ | Excitation positive du capteur. Alimente le pont de jauges. |
|---|---|
| E− | Excitation négative (masse du capteur). |
| A− | Entrée négative du canal A — le canal des balances à un seul capteur. |
| A+ | Entrée positive du canal A. |
| B− | Entrée négative du canal B, pour un second capteur. |
| B+ | Entrée positive du canal B. |
| VCC | Alimentation du module, 5 V de l’Arduino. |
| GND | Masse, référence commune avec l’Arduino. |
| DT | Sortie de données vers l’Arduino. C’est le module qui l’impose. |
| SCK | Entrée d’horloge : chaque impulsion envoyée par l’Arduino fait sortir un bit. |
Le canal A est celui qu’on utilise dans la quasi-totalité des montages. Il accepte un gain de 128 (réglage par défaut de la bibliothèque, le plus sensible) ou de 64 pour les signaux plus grands. Le canal B, à gain fixe 32, sert quand on veut lire deux capteurs avec un seul module — un pesage et une seconde zone, par exemple — au prix d’une sensibilité plus faible.
Le rythme de conversion se choisit sur la carte : un pont de soudure marqué 10 Hz maintient le mode lent, très stable, qui est celui livré. En le déplaçant, la puce passe à 80 échantillons par seconde. À réserver aux montages qui lisent en continu : une lecture trop espacée en mode rapide laisse la puce perdre une conversion. Pour une balance, le 10 Hz est le bon choix.
Brancher le capteur : quatre fils, un ordre à respecter
Un capteur à jauge de contrainte porte quatre fils (parfois cinq, le cinquième étant un blindage à relier à la masse). Le code des couleurs est presque toujours celui-ci :
| Rouge | E+ — excitation positive |
|---|---|
| Noir | E− — excitation négative |
| Blanc | A− — signal négatif |
| Vert | A+ — signal positif |
Vérifiez toutefois la fiche de votre capteur : quelques modèles, souvent venus d’anciens stocks, inversent le blanc et le vert. Un capteur câblé à l’envers ne grille pas, mais le poids s’affiche en négatif — c’est le signe qu’il faut permuter les deux fils de signal, pas reconfigurer le programme. Si les quatre fils se ressemblent, mesurez la résistance entre eux : les deux fils d’excitation montrent la résistance la plus élevée du capteur (souvent autour de 1 kΩ).
Les quatre fils arrivent aux broches E+, E−, A+ et A−. On peut les souder directement dans les trous, ou les prolonger avec des fils de prototypage si le capteur doit rester à distance. Dans les deux cas, gardez ces liaisons courtes : c’est un signal de quelques millivolts, et un fil qui traîne capte tout ce qui passe.
Mini-projet : une balance qui affiche les grammes
Le montage complet, faisable en une demi-heure : un capteur de pesage, un module HX711 et un Arduino Uno qui affiche le poids en grammes dans le moniteur série.
Ce qu’il faut
| La mesure | Le module HX711 — celui de cette page |
|---|---|
| Le capteur | Capteur de pesage 1 à 20 kg ou capteur de pesage 1 kg |
| Le cerveau | Uno R3 + câble USB |
| Le support | Plaque d’essai 400 points |
| Les liaisons | 10 × fil mâle-femelle |
Pourquoi des fils mâle-femelle ? Le module porte des broches mâles et l’Arduino Uno des embases femelles : l’extrémité mâle se pique dans la plaque ou dans une embase disponible, l’extrémité femelle se clipse sur la broche du module. C’est le fil qui va des deux côtés sans soudure.
Le câblage
HX711 VCC | → Arduino 5V |
|---|---|
HX711 GND | → Arduino GND |
HX711 DT | → Arduino D3 |
HX711 SCK | → Arduino D2 |
HX711 E+ / E− | → fils rouge et noir du capteur |
HX711 A+ / A− | → fils vert et blanc du capteur |
Les broches B+ et B− restent libres pour ce montage.
Le programme
Installez d’abord la bibliothèque HX711 de Bogdan Necula depuis le gestionnaire de bibliothèques de l’IDE Arduino, puis téléversez ce programme :
/*
* Balance electronique - module HX711 et capteur de pesage
* Carte : Arduino Uno R3 - Bibliotheque : HX711 (Bogdan Necula)
* Montage : capteur de pesage branche sur le canal A du module
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "HX711.h"
const byte PIN_DT = 3; // sortie DT du module
const byte PIN_SCK = 2; // horloge SCK du module
HX711 balance;
// Coefficient de calibration : a remplacer par le votre.
// Etape 1 : lisez la valeur brute avec get_value() a vide, puis
// avec un poids connu. Etape 2 : coefficient = valeur du poids connu
// divisee par le poids en grammes. Coefficient de depart : 2280.
float coefficient = 2280.0;
void setup() {
Serial.begin(9600);
balance.begin(PIN_DT, PIN_SCK);
Serial.println("Plateau vide : tare en cours...");
balance.tare(20); // moyenne de 20 lectures, plateau vide
balance.set_scale(coefficient);
Serial.println("Tare terminee, la balance est prete.");
}
void loop() {
Serial.print("Poids : ");
Serial.print(balance.get_units(10), 1); // moyenne de 10 lectures
Serial.println(" g");
delay(500);
}Comment ça marche
begin()indique simplement quelles broches servent d’horloge et de données : le HX711 n’utilise pas le bus SPI matériel, il fonctionne par « pseudo-SPI » sur deux broches ordinaires, ce qui laisse les vraies broches SPI libres pour une carte SD ou un module radio.tare()relève la valeur du plateau vide et la considère comme le zéro. C’est indispensable : chaque capteur a une tension de repos légèrement différente. Posez le plateau ou le support avant de mettre sous tension.get_units(10)renvoie le poids déjà converti, en moyennant dix lectures pour lisser le bruit. Sans moyenne, les derniers chiffres sautent de quelques grammes en permanence — c’est normal, et c’est justement ce que la moyenne gomme.- Le coefficient de calibration (
2280) est un point de départ, pas une valeur universelle : il dépend du capteur, du gain et de la mécanique du support. Il se mesure en quelques minutes.
Étalonner la balance
- Posez le plateau vide et lancez le programme : la tare se fait toute seule.
- Posez un poids connu — un litre d’eau pèse 1 000 g, c’est un étalon simple.
- Notez la valeur affichée, puis calculez : nouveau coefficient = coefficient actuel multiplié par la valeur affichée, divisé par le poids réel en grammes.
- Recopiez ce coefficient dans le programme, téléversez à nouveau, et vérifiez avec un second poids.
Une balance se ré-étalonne quand la température de la pièce change beaucoup, et la tare se refait au début de chaque pesée. C’est le fonctionnement normal de toute balance à capteur, pas un défaut du module.
Pour aller plus loin
- Une balance autonome — ajoutez un afficheur LCD 16×02 I2C et une alimentation 5 V 2 A : le montage devient un appareil de comptoir, sans ordinateur branché.
- Un pèse-colis à seuil — allumez une LED ou déclenchez un buzzer au-delà d’un poids donné, pour trier un colis trop lourd sans regarder l’écran.
- Un suivi de bobine — pesez la bobine d’impression 3D en début et en fin d’impression, et vous saurez combien de filament il reste.
Variante : deux capteurs sur un seul module
Le second canal existe pour cela : un capteur sur A+ et A−, un autre sur B+ et B−, et une seule liaison vers l’Arduino.
- Ce qu’on gagne — deux zones de pesée indépendantes, un pesage et une référence, ou un montage mécanique en deux points, avec un module seulement.
- Ce qu’on perd — le canal B a un gain fixe de 32 : il est environ quatre fois moins sensible que le canal A réglé à 128, et il est réservé à un usage moins précis. Il faut aussi demander explicitement le canal B dans le programme, canal par canal.
- Une limite à connaître — la puce ne fait pas deux conversions en même temps : elle alterne, ce qui divise encore la vitesse de rafraîchissement de chaque voie.
Pour deux pesées réellement précises, deux modules HX711 restent plus simples et plus fiables qu’un seul module à deux canaux.
Questions fréquentes
Le poids affiché saute de plusieurs grammes en permanence
C’est le cas le plus courant, et il a presque toujours la même cause : du bruit sur la mesure. Vérifiez dans cet ordre — la masse commune entre le module et l’Arduino est-elle bien établie ; les fils du capteur sont-ils courts et éloignés du câble d’alimentation et de tout moteur ; le module est-il alimenté par la sortie 5 V propre de l’Arduino plutôt que par un montage bricolé ; une moyenne plus longue (get_units(30)) lisse-t-elle la lecture ? Sur une balance mécaniquement souple, un support trop flexible fait aussi osciller la mesure.
La valeur est négative
Le capteur est branché à l’envers : permutez les deux fils de signal (A+ et A−). La balance fonctionne, mais elle lit dans le mauvais sens. Cela arrive aussi si vous appuyez sur le côté opposé de la barre du capteur.
Puis-je alimenter le module en 3,3 V ?
Oui : la puce accepte de 2,6 à 5,5 V. Attention au niveau de la sortie DT, qui suit la tension d’alimentation : alimenté en 5 V, le module sort du 5 V que certaines cartes 3,3 V n’apprécient pas. Alimentez-le en 3,3 V si votre carte est une ESP32 ou une Raspberry Pi — la précision y perd un peu, mais la mesure est parfaitement utilisable.
Quelle portée puis-je atteindre ?
Elle vient du capteur, pas du HX711 : les modèles de 1 à 200 kg se branchent tous de la même façon. En revanche, la précision relative se dégrade avec la portée — un capteur de 200 kg ne lira jamais le gramme. Choisissez le capteur le plus proche possible du poids réellement pesé, avec une petite marge.
Faut-il une bibliothèque, ou peut-on lire les bits soi-même ?
La bibliothèque HX711 est le chemin le plus court et gère la lecture des 24 bits ainsi que les moyennes. Si vous préférez tout écrire à la main : ce n’est pas du SPI mais un protocole à deux fils, l’Arduino envoie des impulsions d’horloge et lit un bit à chaque impulsion, avec 25 impulsions pour une conversion du canal A à gain 128. Une lecture toutes les 100 millisecondes suffit largement en mode 10 Hz.
À combiner avec
Le trio de base est toujours le même : un capteur de pesage adapté à votre portée (les deux modèles les plus demandés sont cités plus haut), ce module HX711, et un Arduino. Si vous partez de zéro et préférez une seule commande, le Kit Arduino Uno maroc contient la carte, le câble USB et de quoi démarrer aussitôt. Ajoutez des fils de prototypage : dès que le capteur est déporté de quelques centimètres, ils deviennent indispensables.











