mercredi 19 décembre 2018

Consommation d'une carte ARDUINO, ESP8266 ou ESP32

Consommation d'une carte ARDUINO,

ESP8266ou ESP32

Nous allons répondre à une question souvent posée sur les forums : Quelle est la consommation d'une carte ARDUINO ou d'un ESP8266 ?

1. Les conditions de mesure

J'ai utilisé le voltmètre / ampèremètre décrit ICI.

Le sketch utilisé pour la mesure en mode éveillé est celui-ci :

#define LED 13

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(3000);
  Serial.println("OK");
}


Le sketch utilisé pour la mesure en mode veille est celui-ci :

#include <LowPower.h>

#define LED 13

 void setup() {
  pinMode(
LED, OUTPUT);
  Serial.begin(115200);
}

void lowPowerSleep(int minutes)
{
  int seconds = minutes * 60;
  int sleeps = seconds / 8;
  for (int i = 0 ; i < sleeps ; i++) {
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
  }
}

void loop() {
  lowPowerSleep(15);
  Serial.println("HELLO");
  digitalWrite(
LED, HIGH);
  delay(1000);
  digitalWrite(
LED, LOW);
}


2. La UNO

Les mesures suivantes ont été réalisées avec une carte UNO clone équipée d'un convertisseur USB / série CH340 et un régulateur 5V AMS1117.

Alimentation Mode éveillé Mode veille
USB 38mA 20mA
Broche 5V 25mA 6mA
JACK ou broche VIN (7V) 30mA 11mA

Remarque: quand la carte est alimentée autrement que par l'USB le régulateur CH340 n'est pas actif.
L'alimentation par le JACK ou la broche VIN provoque une consommation supplémentaire de 5mA due au régulateur 5V.

3. La NANO

Les mesures suivantes ont été réalisées avec une carte NANO clone équipée d'un convertisseur USB / série CH340 et un régulateur 5V AMS1117.

Alimentation Mode éveillé Mode veille
USB 29mA 13mA
Broche 5V 27mA 7.5mA
Broche VIN (7V) 32mA 12.5mA

Remarque: quand la carte est alimentée autrement que par l'USB le régulateur CH340 n'est pas actif.
Comme pour la UNO l'alimentation par le JACK ou la broche VIN provoque une consommation supplémentaire de 5mA due au régulateur 5V.

La consommation de la NANO est légèrement supérieure à celle de la UNO, mais peut s'expliquer par la dispersion de caractéristiques de composants, en particulier le régulateur AMS1117.

4. La PRO MINI

4.1. La PRO MINI 16MHz 5V

Les mesures suivantes ont été réalisées avec une carte PRO MINI 16MHz 5V clone équipée d'un régulateur marqué S8PL (non identifié).

Alimentation Mode éveillé Mode veille
Broche VCC en 5V 24mA 3.2mA
Broche RAW en 7.5V 28mA 3.22mA


4.2. La PRO MINI 8MHz 3.3V

Les mesures suivantes ont été réalisées avec une carte PRO MINI 8MHz 3.3V clone équipée d'un régulateur XC6204 (marquage 4A2D).

Alimentation Mode éveillé Mode veille
Broche VCC en 3.3V 5.6mA 1.4mA
Broche RAW en 5V 5.7mA 1.5mA


Il existe différents modèles de PRO MINI avec des régulateurs différents, et je pense que la consommation due au régulateur doit varier fortement en fonction du type de régulateur. Ici 1.4mA est une valeur assez élevée.
D'autre part la diode LED1 est alimentée également et consomme 180µA si elle est polarisée par une résistance de 10KΩ ou 380µA si elle est polarisée par une résistance de 4.7KΩ.
Avec certaines cartes, supprimer le régulateur fait économiser 70µA.

4.3. La PRO MINI bricolée

Est-il possible de consommer encore moins ?
Bien sûr : avec une PRO MINI 8MHz légèrement modifiée la consommation peut descendre à 1.5µA en mode veille.
La PRO MINI 16MHz modifiée de la même façon aura une consommation de 3µA en mode veille.

La solution est ICI.

5. La MEGA

Les mesures suivantes ont été réalisées avec une carte MEGA clone équipée d'un convertisseur USB / série CH340 et un régulateur 5V AMS1117.

Alimentation Mode éveillé Mode veille
USB 75mA 20mA
Broche 5V 61mA 7mA
Broche VIN (7V) 59mA 7.2mA

6. La DUE

Les mesures suivantes ont été réalisées avec une carte DUE CORE clone équipée d'un convertisseur USB / série natif et un régulateur 5V AMS1117.

Alimentation Mode éveillé Mode veille
USB 138mA 97mA
Broche VCC (5V) 96mA 96mA
Broche 3.3V


Le port USB natif semble consommer énormément.
Je n'ai pas trouvé le moyen de faire tourner le SAM3X8E en mode veille. Si vous envisagez une application basse consommation ne vous tournez pas vers cette plateforme.

7. L'ESP8266 et l'ESP32

Le sketch utilisé pour l'ESP8266 est celui de l'article suivant :
https://riton-duino.blogspot.com/2019/02/esp8266-sur-batterie.html

L'ESP8266 a besoin de 300mA avec des pics à 430mA pour démarrer sa connexion WIFI.

Pendant les transmissions de données, la consommation dépend de la puissance d'émission :
https://bbs.espressif.com/viewtopic.php?t=133

Dans les tableaux suivants, la consommation en mode éveillé est donnée pour une période d'inactivité (réception), le modem étant actif. Un serveur HTTP convient très bien.

7.1. L'ESP8266-12E

Les mesures suivantes ont été réalisées avec un module ESP8266-12E seul, câblé comme ceci :

Alimentation Mode éveillé Mode veille
Broche VCC en 3.3V 72mA 20µA

La consommation en mode veille autorise largement un fonctionnement sur batterie.

7.2. L'ESP01

Les mesures suivantes ont été réalisées avec une carte ESP01 dont la LED power a été retirée.

Alimentation Mode éveillé Mode veille
Broche VCC en 3.3V 72mA 18µA

Avec la LED rouge, la consommation est de 340µA en mode veille.

7.3. Les cartes NodeMCU, D1 MINI, etc.

Les mesures suivantes ont été réalisées avec une carte NodeMCU.

Alimentation Mode éveillé Mode veille
USB 80mA 11mA
Broche 5V 72mA 1mA
Broche VCC en 3.3V 72mA 92µA


L'exemplaire que j'ai testé ne possède pas de LED de mise sous tension.

Avec une WEMOS D1 MINI j'obtiens 108µA.

7.4. L'ESP-WROOM-32

Les mesures suivantes ont été réalisées avec une carte ESP-WROOM-32 dont la LED power a été retirée.

Alimentation Mode éveillé Mode veille
USB 80mA 10.75mA
Broche 5V 72mA 9.4mA
Broche VCC en 3.3V 63mA 3mA

Les cartes ESP-WROOM-32 sont implémentées de diverses manières. Celle-ci n'est visiblement pas adaptée à de la basse consommation. C'est probablement dû à la présence d'un régulateur AMS1117 sur la carte.

Un ESP32 devrait consommer 5µA en veille profonde. Certains fabricants prennent des libertés, mais cela n'empêche pas les vendeurs d'annoncer "Faible Consommation D'énergie".


La carte LOLIN32 par exemple alimentée par sa broche 3.3V consomme 1.7mA en veille.

8. Conclusion

Si les cartes ARDUINO UNO ou NANO sont intéressantes d'un point de vue pratique car disposant d'un connecteur USB permettant le téléversement et l'utilisation du moniteur série, elles restent avant tout des cartes qu'il est préférable d'alimenter par une alimentation secteur.
La PRO MINI reste imbattable en matière de consommation et pourra être alimentée par une petite batterie pour peu qu'on l'alimente en 3.3V et que l'on prenne soin de supprimer sa LED power et éventuellement son régulateur.

Les plateformes à base d'ESP8266 constituent également un bon choix pour des solutions WIFI basse consommation.

J'espère que ce petit document vous aidera dans vos choix.

Cordialement
Henri

9. Liens utiles

https://www.carnetdumaker.net/articles/test-comparatif-de-la-consommation-electrique-vide-de-diverses-cartes-arduino-et-compatible/#les-cartes-arduino-officielles

11. Mises à jour

24/02/2019 : 5. La MEGA
                     6. La DUE
                     7. L'ESP8266
25/02/2019 : 7.4. L'ESP-WROOM-32
                     ajout photos
21/04/2020 : 4. La PRO MINI 16MHz

13 commentaires:

  1. comment je peux mesurer la consommation de la carte Adafruit HUZZAH32 - ESP32 Feather??

    RépondreSupprimer
  2. Tout dépend du matériel à disposition et de ce que l'on veut mesurer (mode veille ou pas).

    RépondreSupprimer
  3. Mes plus vifs remerciements pour ce travail très utile. Bravo

    RépondreSupprimer
    Réponses
    1. Merci.
      C'est malheureusement assez incomplet du côté ESP32.
      Mais je vais compléter d'ici peu, le temps de recevoir quelques cartes.

      Supprimer
  4. Merci pour le temps que vous consacrez à partager votre savoir à la communauté, et bravo pour la rigueur de vos démonstrations.
    Je m'excuse par avance de la trivialité de ma question, étant grand débutant en électronique, mais les consommations que vous fournissez en mA pour les différentes cartes sont-elles des consommations instantanées ? Comment évaluer la consommation d'une carte sur une période donnée ? Merci d'avance de votre aide. Cordialement, Romain

    RépondreSupprimer
    Réponses
    1. Je parle de courant, donc c'est à un instant T forcément.
      La consommation sur une période donnée dépend de l'activité de la carte. Si le courant est constant c'est facile, mais si ce n'est pas le cas, il faut enregistrer le courant périodiquement à l'aide d'un INA226 par exemple et produire un graphe :
      Le logger shield sur MEGA:
      https://riton-duino.blogspot.com/2018/07/banc-de-mesure-de-consommation.html
      Le logger shield sur UNO:
      https://riton-duino.blogspot.com/2019/08/un-logger-analogique-et-digital.html
      La version WEB :
      https://riton-duino.blogspot.com/2020/01/un-logger-analogique-et-digital-version.html

      Supprimer
  5. Merci beaucoup j'ai lu d'autres articles concernant l'alimentation des cartes. Cependant j'ai une question que je n'arrive pas à résoudre, si on veut alimenter une carte arduino uno sur une longue durée, quelle est la batterie que vous conseillez ? Sachant aussi que nous allons brancher la carte à un module bluetooth

    Merci d'avance

    RépondreSupprimer
    Réponses
    1. Longue durée ? 4H, 4 jours, 4 mois ?
      Quelle batterie ? LITHIUM-ION, plomb ?

      Une UNO consomme 25mA (5V) ou 38mA (USB) donc 600mAH (5V) ou 900mAH (USB) par jour.
      A cela il faut ajouter les 13mA du BT (HC05 ?).
      Multiplier par le nombre de jours désiré.

      De plus :
      Si elle est alimentée par sa broche 5V il faudra ajouter un régulateur 5V.
      Si elle est alimentée par sa broche VIN, la tension devra être supérieure à 6V et inférieure à 20V.

      Supprimer
    2. Merci je ne m'attendais pas à une réponse aussi rapide, justement au niveau de ces caractéristiques c'est assez complexe. Est-ce possible de continuer à vous poser des questions hors du forum ?

      Supprimer
    3. C'est un blog, pas un forum. Je ne vois pas de problème à poser des questions ici.

      Sinon sur https://forum.arduino.cc/index.php?board=33.0

      Supprimer
  6. Bonjour Henri,
    Je débute par vous féliciter pour le travail extraordinaire fourni sur ce blog. Je suis un grand débutant, et je trouve un nombre incalculable de choses intéressantes.
    Je m'appelle Olivier et suis en train de monter une entreprise pour développer des solutions de sécurisation sur les chantiers, et notamment pour éviter les collisions homme / engin.

    Serait-il possible d'échanger avec vous à tout hasard, par téléphone ? Je ne sais pas si vous possédez une entreprise afin de proposer des prestations de conseil par exemple, mais j'aimerais échanger avec vous.
    Si mon message n'est pas approprié ici, j'en suis navré et vous laisse le soin de le supprimer.
    Merci pour votre retour ;)
    Olivier

    RépondreSupprimer
    Réponses
    1. Non, désolé, je ne fournis pas de prestations. Mais on peut échanger ici sur ce blog.
      Un bon endroit également, plus pratique pour publier du code, des photos, etc. :
      https://forum.arduino.cc/c/international/francais/49

      Supprimer
    2. Merci de ta réponse, j'avais déjà posé une question sur cet excellent forum. A bientôt

      Supprimer