Capteurs industriels 4-20 mA : principe, câblage et lecture avec un ESP32

Transmetteur de pression industriel à afficheur relié par deux fils (signal 4-20 mA) à une carte de développement ESP32

Dans une usine, une station de pompage ou une serre, la plupart des capteurs sérieux ne parlent ni en Wi-Fi ni en I2C. Ils envoient un simple courant électrique, entre 4 et 20 milliampères, sur deux fils. C’est le fameux signal 4-20 mA. On le trouve sur les capteurs de pression, de niveau, de débit ou de température, et il fonctionne de la même façon depuis des dizaines d’années.

Bonne nouvelle : avec une simple carte ESP32, vous pouvez lire ces capteurs, afficher la mesure et l’envoyer sur votre téléphone. Dans ce guide, on vous explique le principe avec des mots simples, le câblage pas à pas, le petit calcul à connaître et un exemple de code prêt à l’emploi. Si vous hésitez encore entre automate et microcontrôleur, lisez d’abord notre article PLC ou Arduino en milieu industriel.

Le 4-20 mA, c’est quoi exactement ?

Le principe est très simple : le capteur fait varier le courant qui circule dans la boucle selon ce qu’il mesure.

  • 4 mA correspond au bas de l’échelle (par exemple 0 bar).
  • 20 mA correspond au haut de l’échelle (par exemple 10 bar).
  • Entre les deux, c’est proportionnel : 12 mA, pile au milieu, veut dire 5 bar.

L’échelle est écrite sur le capteur ou dans sa fiche technique : « 0-10 bar », « 0-100 °C », « 0-5 m »… Le capteur ne vous donne donc pas directement des bars ou des degrés, il vous donne un courant, et c’est à vous de faire la conversion. C’est ce qu’on va faire avec l’ESP32.

Pourquoi un courant et pas une tension ?

Dans une boucle fermée, le courant est le même partout, comme l’eau dans un tuyau sans fuite. Même si le câble fait 200 mètres et que ses fils ont un peu de résistance, les 12 mA envoyés par le capteur arrivent toujours 12 mA à l’autre bout. Une tension, elle, baisse le long du câble et se laisse plus facilement perturber par les moteurs et les variateurs voisins. Voilà pourquoi l’industrie a choisi le courant.

Pourquoi commencer à 4 mA et pas à 0 ?

C’est l’astuce la plus utile du système. Si le capteur envoyait 0 mA pour « 0 bar », vous ne pourriez pas faire la différence entre une pression nulle et un fil coupé. Avec le 4-20 mA, un courant inférieur à environ 3,5 mA signifie forcément un problème : câble coupé, capteur débranché ou en panne. Votre programme peut donc déclencher une alarme. Et ces 4 mA minimum servent aussi à alimenter l’électronique du capteur lui-même.

2 fils, 3 fils ou 4 fils ?

  • 2 fils (le plus courant) : le même câble alimente le capteur et transporte le signal. C’est le montage de ce guide.
  • 3 fils : un fil +24 V, un fil 0 V commun et un fil de signal.
  • 4 fils : alimentation séparée (souvent 230 V ou 24 V) et deux fils de signal à part.

Regardez toujours le schéma de raccordement dans la notice du capteur avant de brancher : c’est elle qui fait foi.

Transmetteur de température industriel bleu avec sa sonde inox (doigt de gant), un capteur typique à sortie 4-20 mA
Un transmetteur de température industriel : la sonde inox plonge dans le liquide, le boîtier bleu convertit la mesure en 4-20 mA. Photo : Bitjungle, CC BY-SA 4.0, via Wikimedia Commons

Le principe pour lire un 4-20 mA avec un ESP32

Un ESP32 ne sait pas mesurer un courant directement. Son entrée analogique (ADC) mesure une tension, et pas plus de 3,3 V. La solution tient en un seul composant : une résistance placée dans la boucle. Le courant qui la traverse crée une tension à ses bornes, et c’est cette tension que l’ESP32 lit. C’est la loi d’Ohm : U = R × I. Vous pouvez refaire le calcul avec notre calculateur de loi d’Ohm.

Avec une résistance de 100 Ω, voici ce que voit l’ESP32 :

Courant dans la boucleTension sur la résistance de 100 ΩSignification (capteur 0-10 bar)
moins de 3,5 mAmoins de 0,35 VDéfaut : fil coupé ou capteur en panne
4 mA0,40 V0 bar
12 mA1,20 V5 bar
20 mA2,00 V10 bar

Attention au piège des 250 Ω

Sur les automates, on utilise souvent une résistance de 250 Ω, qui transforme 4-20 mA en 1-5 V. Sur un ESP32, c’est une mauvaise idée : à 20 mA, vous auriez 5 V sur une entrée prévue pour 3,3 V maximum, et vous risquez de l’abîmer. Avec 100 Ω, on reste entre 0,4 et 2 V, une zone où l’ADC de l’ESP32 est à l’aise. Choisissez une résistance précise à 1 % : toute erreur sur sa valeur devient une erreur sur la mesure.

Le matériel nécessaire

Le câblage pas à pas

Schéma : alimentation 24 V, capteur 4-20 mA 2 fils, résistance de 100 ohms et entrée GPIO34 d’un ESP32 avec GND commun
Schéma de principe d’un capteur 4-20 mA 2 fils lu par un ESP32 à travers une résistance de 100 Ω. Schéma : Djenni
  1. Coupez l’alimentation avant de câbler, et gardez le 24 V bien séparé de toute partie en 230 V.
  2. Reliez le +24 V de l’alimentation à la borne + du capteur (de préférence en passant par un fusible).
  3. Reliez la borne – du capteur à une extrémité de la résistance de 100 Ω. Ce point de jonction, c’est le point A.
  4. Reliez l’autre extrémité de la résistance au 0 V de l’alimentation. La boucle est fermée : le courant part du +24 V, traverse le capteur, puis la résistance, et revient au 0 V.
  5. Du point A, passez par la résistance de 1 kΩ et arrivez sur l’entrée GPIO34 de l’ESP32. Ajoutez la Zener 3,6 V et le condensateur de 100 nF entre GPIO34 et GND : ils protègent l’entrée et lissent le signal.
  6. Reliez le GND de l’ESP32 au 0 V de l’alimentation 24 V. Sans ce fil commun, la mesure n’a aucun sens : c’est l’oubli le plus fréquent.

Pourquoi GPIO34 ? Parce que c’est une entrée du convertisseur ADC1, qui continue de fonctionner quand le Wi-Fi est actif (les broches de l’ADC2 ne le permettent pas sur l’ESP32 classique). Les broches 32 à 39 font aussi l’affaire. Pour le câble entre le capteur et l’armoire, une section de 0,5 à 0,75 mm² suffit largement pour 20 mA ; notre convertisseur AWG / mm² vous aide si la fiche du câble est en AWG. Et pour la partie borniers, repérage et goulottes, suivez nos conseils pour câbler une armoire électrique proprement.

Le code ESP32 (Arduino IDE)

Ce programme lit la tension au point A, la convertit en milliampères, puis en valeur physique. Il fait une moyenne de 32 mesures pour éviter que l’affichage saute. Il utilise la fonction analogReadMilliVolts() du cœur ESP32 pour Arduino, qui tient compte de l’étalonnage interne de la puce. Si vous débutez avec l’ESP32, notre projet de station météo connectée avec ESP32 montre comment installer la carte dans l’Arduino IDE.

// Lecture d'un capteur 4-20 mA avec un ESP32
const int   BROCHE_MESURE = 34;    // GPIO34 = ADC1, compatible Wi-Fi
const float R_MESURE      = 100.0; // résistance de mesure en ohms
const float ECHELLE_MIN   = 0.0;   // valeur à 4 mA (ex. 0 bar)
const float ECHELLE_MAX   = 10.0;  // valeur à 20 mA (ex. 10 bar)

void setup() {
  Serial.begin(115200);
}

void loop() {
  // Moyenne de 32 mesures pour lisser le bruit
  long somme = 0;
  for (int i = 0; i < 32; i++) {
    somme += analogReadMilliVolts(BROCHE_MESURE);
    delay(2);
  }
  float millivolts = somme / 32.0;
  float milliamperes = millivolts / R_MESURE;  // I = U / R (mV / ohm = mA)

  if (milliamperes < 3.5) {
    Serial.println("Alarme : boucle coupée ou capteur en défaut");
  } else {
    float valeur = ECHELLE_MIN
                 + (milliamperes - 4.0) * (ECHELLE_MAX - ECHELLE_MIN) / 16.0;
    Serial.printf("Courant : %.2f mA  ->  Mesure : %.2f bar\n",
                  milliamperes, valeur);
  }
  delay(1000);
}

Pour un autre capteur, il suffit de changer ECHELLE_MIN et ECHELLE_MAX (par exemple 0 et 100 pour un capteur de température 0-100 °C) et l’unité affichée. Le chiffre 16 dans la formule vient simplement de 20 − 4 = 16 mA, la largeur de l’échelle.

Vérifier et étalonner sa mesure

L’ADC de l’ESP32 n’est pas un instrument de laboratoire : il peut se tromper de quelques pour cent. Pour une mesure fiable, prenez cinq minutes pour vérifier :

  • Placez un multimètre en mode milliampères, en série dans la boucle (entre le capteur et la résistance) et comparez sa valeur avec celle affichée par l’ESP32.
  • Si l’écart est constant, corrigez-le dans le code avec un petit facteur (par exemple multiplier par 1,02).
  • Testez au moins deux points : capteur au repos (proche de 4 mA) et capteur sollicité (pression ou température plus élevée).
  • Pour une précision industrielle, utilisez un convertisseur analogique-numérique externe de 16 bits au lieu de l’ADC interne.

Les erreurs fréquentes à éviter

  • Une résistance de 250 Ω sur l’ESP32 : jusqu’à 5 V sur l’entrée, danger pour la carte. Restez à 100 Ω.
  • Oublier le GND commun entre l’ESP32 et l’alimentation 24 V : la mesure part dans tous les sens.
  • Inverser le + et le – du capteur : la plupart des capteurs sont protégés, mais rien ne circule et vous lisez « boucle coupée ».
  • Une alimentation trop faible : le capteur a besoin d’une tension minimale à ses bornes (souvent 10 à 12 V, voir sa fiche). Avec 24 V, il reste largement assez après la résistance de mesure.
  • Faire passer le câble du capteur à côté des câbles moteur : utilisez du câble blindé et raccordez le blindage à la terre d’un seul côté, côté armoire.
  • Utiliser une broche de l’ADC2 sur un projet en Wi-Fi : les lectures échouent dès que le Wi-Fi est actif.

Et pour un vrai projet industriel ?

Le montage de ce guide est parfait pour apprendre, faire un prototype ou surveiller une installation simple : niveau d’une cuve, pression d’un réseau d’eau, température d’une chambre froide. Pour une machine en production, pensez à mettre l’électronique dans un boîtier IP66, à isoler galvaniquement l’entrée si plusieurs capteurs partagent la même alimentation, et à vérifier si un automate n’est pas plus adapté. Pour choisir votre carte, vous pouvez aussi relire notre comparatif Arduino ou ESP32.

Vous préparez un projet avec plusieurs capteurs 4-20 mA, une armoire complète ou des gammes industrielles sur devis ? Contactez-nous avec votre liste : nous vous aidons à trouver les bonnes références.

Ce site utilise des cookies pour vous offrir une meilleure expérience de navigation. En naviguant sur ce site, vous acceptez notre utilisation des cookies.