Que signifie mAh ? Capacité d'une batterie, Wh et autonomie
Que signifie mAh et quelle différence avec les Wh ? Mesure la consommation de ton projet Arduino, calcule l'autonomie et compare piles AA, 9V, 18650 et LiPo.
Que signifie mAh ? En bref, le mAh (milliampère-heure) est l'unité de capacité qui indique la quantité de charge électrique stockée par une pile ou une batterie. 1 mAh correspond à un courant de 1 milliampère pendant 1 heure : une batterie de 2000 mAh peut donc, en théorie, alimenter un circuit qui consomme 20 mA pendant 100 heures, ou un circuit de 200 mA pendant 10 heures. Mais cette valeur seule ne suffit pas : la tension de la batterie, le courant consommé, la température et le régulateur placé entre la batterie et le circuit modifient fortement l'autonomie réelle.
Quand tu construis un projet sur batterie avec un Arduino, un ESP32 ou un Raspberry Pi Pico, la première question est toujours la même : combien d'heures ou de jours va tenir cette batterie ? Dans ce guide, tu vas apprendre ce que signifient mAh et Wh, la capacité réelle des piles AA, 9V, 18650 et LiPo, comment mesurer la consommation de ton projet avec un multimètre et un INA219, comment calculer l'autonomie avec une formule, comment brancher des batteries en série et en parallèle, ce qu'est le taux C et pourquoi la pile 9V est un mauvais choix, le tout avec des chiffres réels.

Que signifie mAh ? La capacité d'une batterie expliquée
Le courant se mesure en ampères (A) et la capacité en ampères-heures (Ah). Pour les petites batteries, on utilise le milliampère-heure, mille fois plus petit : 1 Ah = 1000 mAh. En physique, c'est une charge électrique ; 1 mAh vaut 3,6 coulombs. Les fabricants mesurent la capacité avec un courant de décharge précis jusqu'à une tension de coupure précise. Plus le courant est élevé, plus la tension chute dans la résistance interne, plus la réaction chimique peine à suivre, et plus la tension de coupure arrive tôt : la même pile fournit donc moins de mAh à fort courant. Le froid réduit aussi la capacité ; les piles alcalines faiblissent nettement sous 0 °C. Le tableau ci-dessous montre, d'après les données d'Energizer, comment le courant consommé modifie la capacité d'une pile AA alcaline (jusqu'à 0,8 V, à 21 °C).
| Courant continu | Capacité approximative | Durée approximative |
|---|---|---|
| 25 mA | 3000 mAh | 120 heures |
| 100 mA | 2500 mAh | 25 heures |
| 250 mA | 2000 mAh | 8 heures |
| 500 mA | 1500 mAh | 3 heures |
La différence est frappante : si tu multiplies le courant par 20, la durée n'est pas divisée par 20, mais par 40. Considère donc les mAh de l'étiquette comme le meilleur cas possible. Dans un vrai projet, une autre perte s'ajoute : le circuit s'arrête avant que la batterie soit complètement vide. Le régulateur de l'Arduino Uno ne peut plus maintenir 5 V dès que son entrée descend sous 7 V, et un accu lithium seul doit être coupé vers 3,0–3,3 V pour ne pas réduire sa durée de vie. L'énergie qui reste alors dans la batterie n'est jamais utilisée.
Que signifie Wh ? Différence entre mAh et Wh
Les mAh indiquent seulement la quantité de charge ; pour connaître l'énergie d'une batterie, il faut multiplier par la tension. L'unité d'énergie est le wattheure (Wh), et la formule est : Wh = mAh × V / 1000. Par exemple, un accu 18650 de 3,7 V et 3000 mAh stocke 3,7 × 3 = 11,1 Wh. Une pile AA de 2500 mAh donne sur le papier 1,5 × 2,5 = 3,75 Wh, mais comme la tension moyenne d'une alcaline descend à 1,2–1,3 V pendant la décharge, la valeur réelle tourne autour de 3 Wh. C'est pourquoi comparer des batteries de tensions différentes uniquement par leurs mAh est trompeur : une pile 9V de 550 mAh paraît bien plus petite qu'une AA de 2500 mAh, mais avec environ 4 Wh elle contient même un peu plus d'énergie. Laquelle tiendra le plus longtemps dans ton projet dépend du type de régulateur entre les deux ; tu le verras dans la partie sur le calcul de l'autonomie. Pour calculer rapidement la relation entre puissance et courant (P = U × I), tu peux utiliser le calculateur de loi d'Ohm.
Tableau comparatif des piles AA, 9V, 18650 et LiPo
| Pile ou batterie | Tension nominale | Capacité typique | Énergie | Courant confortable | Rechargeable ? |
|---|---|---|---|---|---|
| AAA alcaline | 1,5 V | 1000–1200 mAh | ≈1,3 Wh | Faible (≈100 mA) | Non |
| AA alcaline | 1,5 V | 2000–3000 mAh (selon le courant) | ≈3 Wh | Moyen (efficace jusqu'à ≈250 mA) | Non |
| AA NiMH | 1,2 V | 1900–2500 mAh | ≈2,5 Wh | Élevé (plusieurs A) | Oui |
| 9V alcaline | 9 V | 400–600 mAh | ≈4 Wh | Faible (≈50 mA) | Non |
| Pile bouton CR2032 | 3 V | ≈235 mAh | ≈0,7 Wh | Très faible (µA à quelques mA) | Non |
| 18650 lithium-ion | 3,6–3,7 V | 2000–3500 mAh | 7–13 Wh | Élevé (5–30 A selon l'accu) | Oui |
| LiPo 1S (ex. 1000 mAh) | 3,7 V | Modèles de 100 à 5000 mAh | ≈3,7 Wh | Selon le taux C de l'étiquette | Oui |
| Batterie externe 10000 mAh | 5 V (USB) | ≈6000 mAh (à 5 V) | ≈37 Wh | 1–3 A | Oui |
En lisant le tableau, retiens ceci : les cellules lithium comme les 18650 et les LiPo stockent le plus d'énergie par rapport à leur poids ; un seul accu 18650 contient presque autant d'énergie que quatre piles AA alcalines réunies, pour environ la moitié du poids. Les piles alcalines conviennent aux appareils à faible consommation qui restent longtemps en stock, car elles ne perdent que quelques pour cent de capacité par an ; sous de fortes charges comme des moteurs ou des servos, en revanche, leur tension s'effondre vite. Les accus NiMH fournissent sans difficulté de forts courants malgré leurs 1,2 V, et les modèles à faible autodécharge (LSD) restent chargés pendant des mois. La pile bouton CR2032 est réservée aux modules d'horloge et aux capteurs en veille qui fonctionnent au niveau du microampère ; elle ne pourra jamais alimenter un ESP32 qui se connecte au Wi-Fi.

Pourquoi la pile 9V est-elle un mauvais choix ?
La pile 9V rectangulaire est fréquente dans les kits de démarrage, car son connecteur à pression se branche directement sur la prise jack de l'Arduino, mais c'est l'une des pires options pour un projet Arduino sur batterie. Elle contient six petites cellules en série, d'où une capacité de seulement 400–600 mAh. D'après les données d'Energizer, une pile 9V alcaline déchargée jusqu'à 4,8 V fournit environ 600 mAh à 10 mA, 570 mAh à 25 mA et seulement 450 mAh à 50 mA. Or le régulateur de l'Arduino Uno a besoin d'au moins 7 V sur la prise jack ; en charge, la tension de la pile passe sous cette limite en quelques heures et le reste de l'énergie est perdu. C'est pourquoi un Uno qui consomme environ 50 mA ne fonctionne en général que quelques heures sur une pile 9V, souvent entre 4 et 8 heures.
- Faible capacité : seulement 400–600 mAh contre 2000–2500 mAh pour un pack de 6×AA, soit plus de quatre fois moins d'autonomie à la même tension de 9 V.
- Résistance interne élevée : quand un servo démarre ou qu'un relais colle, la tension chute d'un coup et l'Arduino redémarre.
- Pertes dans le régulateur : le régulateur linéaire de l'Uno transforme en chaleur les 4 V d'écart entre 9 V et 5 V ; à 50 mA, environ 0,2 W des 0,45 W tirés de la pile sont gaspillés.
- Énergie chère : son coût par Wh est nettement plus élevé que celui des piles AA, et les accus 9V NiMH rechargeables tombent à seulement 170–300 mAh.
- Où elle convient : dans un détecteur de fumée, un multimètre ou un appareil qui consomme quelques mA et reste longtemps au repos, la pile 9V convient très bien. Pour un Arduino, préfère un pack de 6×AA, un pack 2S de 18650 ou une batterie externe ; les détails sont dans Alimenter un Arduino sur pile ou batterie.
Mesurer la consommation de ton projet Arduino
Pour calculer l'autonomie, tu dois d'abord savoir combien de courant consomme ton projet. Mesurer vaut mieux que deviner, car la consommation propre de la carte, les LED d'alimentation et les régulateurs consomment souvent plus que les capteurs. Le plus simple est de brancher un multimètre en série entre la batterie et le circuit. Pour les projets avec des cycles de veille et de réveil, un capteur de courant comme l'INA219 donne de meilleurs résultats, car il capte les pics de courant brefs et la vraie moyenne. Pour tout savoir sur les calibres et les douilles du multimètre, consulte Comment utiliser un multimètre.
- Coupe l'alimentation du circuit ; branche la pointe rouge sur la douille mA du multimètre et la noire sur COM. Si le courant risque de dépasser 200 mA, commence avec la douille 10A.
- Tourne le sélecteur sur courant continu (A⎓) et, si l'appareil n'est pas à calibre automatique, sur le calibre 200 mA.
- Débranche le fil positif de la batterie du circuit ; pose la pointe rouge sur le positif de la batterie et la noire sur l'entrée positive du circuit. Ainsi, tout le courant passe par le multimètre.
- Mets le circuit en marche et lis la valeur. Mesure aussi séparément pendant qu'un servo bouge, que le Wi-Fi se connecte ou qu'un relais est collé, et note le courant de chaque état.
- Si le courant de veille est de l'ordre du microampère, passe au calibre µA. Sur ce calibre, la carte peut ne pas recevoir assez de courant pour démarrer ; relie les pointes avec un fil de pontage au démarrage et retire-le quand la carte passe en veille.
- Reporte les courants mesurés, avec la durée de chaque état, dans la formule du courant moyen présentée plus bas.
| Carte ou module | Courant typique | Remarque |
|---|---|---|
| Arduino Uno R3 | 45–50 mA | Environ 30 mA même en mode veille (puce USB, régulateur, LED) |
| Arduino Nano (CH340) | ≈20 mA | La LED d'alimentation consomme quelques mA |
| Arduino Pro Mini 3,3 V / 8 MHz | Quelques mA | Niveau µA en veille une fois la LED et le régulateur retirés |
| ESP32 DevKit, Wi-Fi coupé | 40–70 mA | Selon la fréquence du processeur |
| ESP32 DevKit, Wi-Fi connecté | 80–130 mA en moyenne | Pics de 240 mA ou plus en émission |
| ESP32 en deep sleep (module seul) | ≈10 µA | Souvent plusieurs mA sur une carte de développement |
| Raspberry Pi Pico (MicroPython) | 20–25 mA | Nettement plus sur le Pico W avec le Wi-Fi actif |
| LED (220 Ω, 5 V) | 10–15 mA | Selon la luminosité |
| LCD 16x2 I2C | 20–30 mA | Surtout le rétroéclairage |
| OLED 0,96" (SSD1306) | 10–25 mA | Selon le nombre de pixels allumés |
| Servo SG90 | 5–10 mA au repos, 100–250 mA en mouvement | 0,5 A ou plus s'il est bloqué |
| Capteur de distance HC-SR04 | ≈15 mA | Pendant la mesure |
| Module relais 5 V (collé) | 70–80 mA | Tant que la bobine est alimentée |
| GPS NEO-6M | 40–50 mA | Pendant la recherche de satellites |
Mesurer le courant et les mAh consommés avec un INA219
L'INA219 est un petit module I2C de mesure de courant et de tension. Il mesure avec une résolution de 12 bits la chute de tension aux bornes de la résistance shunt de 0,1 Ω de la carte et lit des courants jusqu'à environ ±3,2 A dans des circuits jusqu'à 26 V, avec une résolution d'environ 0,1 mA. Son adresse I2C par défaut est 0x40. Tu le branches en série sur la ligne positive du circuit à mesurer : le positif de la batterie va sur Vin+, et Vin− va vers l'entrée positive du circuit. L'Arduino qui mesure est alimenté par USB et sa GND est reliée à la GND du circuit mesuré. Il te suffit d'installer la bibliothèque Adafruit INA219 depuis le gestionnaire de bibliothèques de l'Arduino IDE. L'INA219 ne sait pas résoudre les courants de veille de l'ordre du microampère ; mesure-les avec le calibre µA d'un multimètre.
| Broche de l'INA219 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC | 5V | 3V3 | 3V3(OUT) |
| GND | GND | GND | GND |
| SDA | A4 | GPIO 21 | GP4 |
| SCL | A5 | GPIO 22 | GP5 |
| Vin+ | Positif de la batterie (+) | Positif de la batterie (+) | Positif de la batterie (+) |
| Vin− | Entrée positive du circuit mesuré | Entrée positive du circuit mesuré | Entrée positive du circuit mesuré |
| Négatif de la batterie (−) | GND (commune) | GND (commune) | GND (commune) |
1// INA219 ile akım, harcanan mAh ve pil ömrü / current, used mAh and battery life with INA219
2#include <Wire.h>
3#include <Adafruit_INA219.h>
4
5Adafruit_INA219 ina219; // varsayılan adres 0x40 / default address 0x40
6
7const float CAPACITY_MAH = 2500.0; // pilin etiket kapasitesi / rated battery capacity
8const float USABLE = 0.85; // kullanılabilir oran / usable share
9
10float usedMah = 0; // toplam harcanan yük / total charge used
11float secMaMs = 0; // son saniyenin mA x ms toplamı / mA x ms of the last second
12unsigned long startMs, lastSample, lastPrint;
13
14void setup() {
15 Serial.begin(9600);
16 if (!ina219.begin()) {
17 Serial.println(F("INA219 bulunamadi / INA219 not found"));
18 while (true) {}
19 }
20 ina219.setCalibration_32V_1A(); // 1 A'e kadar ince ölçüm / finer steps up to 1 A
21 startMs = lastSample = lastPrint = millis();
22}
23
24void loop() {
25 unsigned long now = millis();
26
27 if (now - lastSample >= 10) { // 10 ms'de bir örnek / one sample every 10 ms
28 float mA = ina219.getCurrent_mA();
29 secMaMs += mA * (now - lastSample); // akım x süre / current x time
30 lastSample = now;
31 }
32
33 if (now - lastPrint >= 1000) { // saniyede bir rapor / report once a second
34 lastPrint = now;
35 usedMah += secMaMs / 3600000.0; // mA x ms -> mAh
36 secMaMs = 0;
37 float avgMa = usedMah / ((now - startMs) / 3600000.0); // ortalama akım / average current
38 float volts = ina219.getBusVoltage_V() + ina219.getShuntVoltage_mV() / 1000.0; // pil gerilimi / battery voltage
39
40 Serial.print(F("Pil / Battery: "));
41 Serial.print(volts, 2);
42 Serial.print(F(" V | Ort / Avg: "));
43 Serial.print(avgMa, 1);
44 Serial.print(F(" mA | Harcanan / Used: "));
45 Serial.print(usedMah, 2);
46 Serial.print(F(" mAh"));
47 if (avgMa > 0.5) {
48 Serial.print(F(" | Sure / Runtime: "));
49 Serial.print(CAPACITY_MAH * USABLE / avgMa, 1); // saat / hours
50 Serial.print(F(" h"));
51 }
52 Serial.println();
53 }
54}Le code lit le courant toutes les 10 millisecondes et additionne les produits courant × temps pour obtenir les mAh consommés ; ainsi, les impulsions de courant brèves, comme une émission Wi-Fi ou le mouvement d'un servo, sont aussi prises en compte dans la moyenne. Une fois par seconde, il affiche dans le moniteur série la tension de la batterie, le courant moyen jusque-là, la capacité consommée et l'autonomie estimée sur la base de 85 % de la capacité nominale. Laisse la mesure tourner au moins pendant un cycle de fonctionnement complet, par exemple assez longtemps pour couvrir un cycle entier de veille et de réveil. Pour des charges de plus de 1 A, utilise setCalibration_32V_2A(). Le même code fonctionne sans modification sur l'ESP32 avec les GPIO 21 et 22 ; pour l'utilisation du moniteur série, consulte Moniteur série Arduino.
Calcul de l'autonomie : capacité / courant × rendement
Quand tu connais le courant moyen, la formule de base est simple : Autonomie (heures) = Capacité (mAh) / Courant moyen (mA) × Rendement. Un facteur de 0,85 est un bon point de départ ; il tient compte de la capacité perdue à fort courant et par temps froid, de l'arrêt du circuit avant la décharge complète et du vieillissement de la batterie. Cette formule s'applique quand il n'y a pas de régulateur entre la batterie et le circuit, ou un régulateur linéaire (le régulateur 5 V de l'Uno, l'AMS1117, le 7805), car dans un régulateur linéaire le courant d'entrée est égal au courant de sortie et l'écart de tension part en chaleur. Si tu utilises un convertisseur à découpage, élévateur (boost) ou abaisseur (buck), calcule avec l'énergie : Autonomie (heures) = Énergie de la batterie (Wh) × Rendement / Puissance de la charge (W). Ici, le rendement est le produit des 85–90 % du convertisseur par la part utilisable de la batterie ; 0,75–0,8 est réaliste.
| Scénario | Courant moyen ou puissance | Batterie | Calcul | Autonomie approximative |
|---|---|---|---|---|
| Uno + capteur, pack de 6×AA sur la prise jack | 55 mA | AA alcaline, 2500 mAh | 2500 / 55 × 0,85 | ≈39 heures |
| Le même Uno sur une pile 9V alcaline | 55 mA | 9V, ≈450 mAh | 450 / 55 × 0,85 | ≈7 heures (moins en pratique) |
| Nano + DHT11 + OLED, 3×AA sur la broche 5V | 35 mA | AA alcaline, 2500 mAh | 2500 / 35 × 0,85 | ≈61 heures |
| ESP32 DevKit toujours en Wi-Fi, 18650 + élévateur 5 V | 5 V × 110 mA = 0,55 W | 18650, 3000 mAh (11,1 Wh) | 11,1 × 0,8 / 0,55 | ≈16 heures |
| Pico sur VSYS avec 3×AA NiMH | ≈0,1 W | 3 × 1,2 V × 2000 mAh = 7,2 Wh | 7,2 × 0,8 / 0,1 | ≈58 heures |
Pour les projets qui se mettent en veille et se réveillent, il faut d'abord le courant moyen : Courant moyen = (Courant éveillé × Durée éveillée + Courant de veille × Durée de veille) / Durée totale. Par exemple, un module ESP32 seul qui se réveille toutes les 10 minutes pendant 5 secondes en consommant 120 mA, puis dort les 595 secondes restantes à 10 µA (0,01 mA), consomme en moyenne (120 × 5 + 0,01 × 595) / 600 ≈ 1,01 mA. Avec un 18650 de 3000 mAh, cela donne 3000 / 1,01 × 0,85 ≈ 2520 heures, soit environ 3,5 mois. Si le même code tourne sur une carte de développement qui consomme 5 mA en veille, la moyenne passe à 5,96 mA et l'autonomie tombe à environ 18 jours. Plutôt que de calculer à la main, tu peux utiliser le calculateur d'autonomie de batterie : il suffit d'entrer la capacité, les courants en éveil et en veille et l'intervalle de réveil. Quand le courant moyen descend sous 0,1 mA, l'autodécharge de la batterie devient elle aussi déterminante : un accu lithium-ion perd environ 2–3 % de sa capacité par mois.
ESP32 : mesurer la durée d'éveil pour estimer l'autonomie
La consommation de l'ESP32 varie d'un facteur mille selon son mode de fonctionnement. D'après la fiche technique d'Espressif, la puce consomme jusqu'à 240 mA en émission Wi-Fi, environ 100 mA en réception, 20–68 mA avec le Wi-Fi coupé (modem sleep), environ 0,8 mA en light sleep et seulement 10 µA en deep sleep. C'est donc le temps passé éveillé qui détermine vraiment l'autonomie : la connexion au Wi-Fi prend souvent 1 à 3 secondes, et l'énergie dépensée pendant ces quelques secondes dépasse celle de plusieurs heures de veille. Le code ci-dessous enregistre dans la mémoire RTC la durée d'éveil à chaque réveil et, avec les courants que tu as mesurés, calcule le courant moyen et l'autonomie estimée.
1// ESP32 derin uyku ve pil ömrü tahmini / ESP32 deep sleep and battery life estimate
2RTC_DATA_ATTR int bootCount = 0; // derin uykuda silinmez / survives deep sleep
3RTC_DATA_ATTR unsigned long lastAwakeMs = 0; // önceki uyanık süre / previous awake time
4
5const float ACTIVE_MA = 120.0; // ölçtüğün uyanık akım / measured awake current
6const float SLEEP_MA = 0.01; // ölçtüğün uyku akımı (10 µA) / measured sleep current (10 µA)
7const int SLEEP_S = 600; // 10 dakika uyku / 10 minutes of sleep
8const float CAPACITY_MAH = 3000.0; // 18650 kapasitesi / 18650 capacity
9const float USABLE = 0.85; // kullanılabilir oran / usable share
10
11void setup() {
12 Serial.begin(115200);
13 bootCount++;
14
15 // Burada sensörü oku ve veriyi gönder / read the sensor and send the data here
16 delay(500); // örnek iş yükü / sample workload
17
18 if (lastAwakeMs > 0) {
19 float awakeS = lastAwakeMs / 1000.0;
20 float avgMa = (ACTIVE_MA * awakeS + SLEEP_MA * SLEEP_S) / (awakeS + SLEEP_S);
21 float days = CAPACITY_MAH * USABLE / avgMa / 24.0;
22 Serial.printf("Uyanis / Wake #%d, uyanik / awake: %.2f s\n", bootCount, awakeS);
23 Serial.printf("Ortalama / Average: %.3f mA, pil omru / battery life: %.0f gun / days\n", avgMa, days);
24 }
25
26 lastAwakeMs = millis(); // bu uyanışın süresi / duration of this wake
27 Serial.flush();
28 esp_sleep_enable_timer_wakeup((uint64_t)SLEEP_S * 1000000ULL); // mikrosaniye / microseconds
29 esp_deep_sleep_start(); // loop() hiç çalışmaz / loop() never runs
30}
31
32void loop() {
33}Au premier réveil, il enregistre seulement la durée ; à chaque réveil suivant, il calcule et affiche le courant moyen et l'autonomie en jours à partir de la durée d'éveil précédente. Mesure ACTIVE_MA et SLEEP_MA sur ta propre carte avec un multimètre et reporte-les dans le code. millis() ne compte pas le temps du bootloader au démarrage ; ajouter une marge de 0,1–0,3 seconde à la durée d'éveil donne un résultat plus réaliste. Pour les détails sur les modes de veille et les sources de réveil, consulte ESP32 deep sleep, et pour les redémarrages qui peuvent survenir sur batterie, Erreur brownout de l'ESP32.
Brancher des piles et batteries en série et en parallèle
Quand tu branches des batteries en série (le positif de l'une sur le négatif de la suivante), les tensions s'additionnent et la capacité (mAh) reste la même : quatre piles AA de 1,5 V et 2500 mAh en série donnent 6 V et 2500 mAh. Quand tu les branches en parallèle (tous les positifs ensemble, tous les négatifs ensemble), la tension reste la même et les capacités s'additionnent : deux 18650 de 3000 mAh en parallèle donnent 3,7 V et 6000 mAh. Dans les deux cas, l'énergie totale (Wh) augmente avec le nombre de cellules. Pour les packs lithium, cette disposition s'écrit avec les lettres S (série) et P (parallèle) ; par exemple, 2S2P désigne un pack de quatre cellules formé de deux paires en parallèle montées en série.
| Configuration (18650 de 3000 mAh) | Tension (nominale / pleine charge) | Capacité | Énergie | Usage typique |
|---|---|---|---|---|
| 1S1P | 3,7 V / 4,2 V | 3000 mAh | 11,1 Wh | ESP32, Pico, Arduino via élévateur |
| 1S2P | 3,7 V / 4,2 V | 6000 mAh | 22,2 Wh | Station de capteurs ESP32 longue durée |
| 2S1P | 7,4 V / 8,4 V | 3000 mAh | 22,2 Wh | Prise jack de l'Arduino, voiture robot |
| 2S2P | 7,4 V / 8,4 V | 6000 mAh | 44,4 Wh | Robots motorisés |
| 3S1P | 11,1 V / 12,6 V | 3000 mAh | 33,3 Wh | Ruban LED 12 V, 5 V via abaisseur |
- Utilise des cellules identiques : dans un pack en série ou en parallèle, prends des batteries de même marque, même capacité, même âge et même niveau de charge ; la cellule la plus faible se vide avant les autres et souffre.
- Égalise les tensions avant le parallèle : avant de relier des accus lithium-ion en parallèle, l'écart de tension entre eux ne doit pas dépasser 0,1 V ; sinon, l'accu plein envoie un courant fort et incontrôlé dans l'accu vide.
- Un pack lithium en série doit être protégé : à partir de 2S, utilise une carte BMS avec équilibrage qui surveille chaque cellule. Un pack en série ne se charge pas avec un module TP4056, qui ne charge qu'une seule cellule.
- Ne mélange pas piles et accus : ne mets pas des piles alcalines et des accus NiMH dans le même pack ; leurs tensions et leurs résistances internes diffèrent.
- Le parallèle partage la charge : dans un pack 1S2P, chaque cellule fournit la moitié du courant ; le pack tient donc plus longtemps et chauffe moins à fort courant.
Qu'est-ce que le taux C ?
Le taux C indique la vitesse à laquelle une batterie est déchargée ou chargée par rapport à sa capacité. 1C est le courant qui vide la batterie en 1 heure ; il est numériquement égal à sa capacité : pour une batterie de 2000 mAh, 1C = 2 A, 0,5C = 1 A et 20C = 40 A. Le calcul de la durée est simple aussi : à 2C, la batterie est vide en 30 minutes environ, à 0,2C en 5 heures. Les valeurs comme 25C ou 50C imprimées sur les LiPo de drones et de modèles RC indiquent le courant de décharge continu maximal ; une LiPo de 1000 mAh en 25C peut fournir 25 A. Sur les 18650, cette valeur est généralement donnée directement en ampères : les accus haute capacité de 3500 mAh fournissent 8–10 A, les accus haute décharge de 2500–3000 mAh 15–30 A en continu. Pour la charge, la règle est plus stricte : le courant de charge standard des cellules lithium tourne autour de 0,5C, et 1C au maximum. Un module TP4056 qui charge à 1 A convient à un 18650 de 2000 mAh, mais il pousse une petite LiPo de 300 mAh à environ 3C ; dans ce cas, il faut changer la résistance Rprog du module pour réduire le courant de charge.
| Taux C | LiPo 1000 mAh | 18650 3000 mAh | Durée approximative |
|---|---|---|---|
| 0,2C | 200 mA | 600 mA | 5 heures |
| 0,5C | 500 mA | 1,5 A | 2 heures |
| 1C | 1 A | 3 A | 1 heure |
| 2C | 2 A | 6 A | 30 minutes |
| 10C | 10 A | 30 A (accus haute décharge uniquement) | 6 minutes |
Mesurer la capacité d'une batterie avec un Raspberry Pi Pico (MicroPython)
Les 18650 marqués 9900 mAh sont presque toujours des contrefaçons ; les vrais 18650 les plus performants du marché atteignent environ 3500–3600 mAh. La seule façon de connaître la capacité réelle d'une batterie est de la décharger dans une charge connue et d'additionner le courant au fil du temps. Avec un Raspberry Pi Pico, une résistance de charge et un MOSFET, tu peux construire un testeur de capacité simple : le Pico met la charge en service via le MOSFET, mesure la tension de la batterie à travers un pont diviseur, calcule le courant avec I = U / R et déconnecte la charge quand la tension atteint la valeur de coupure. Tu peux vérifier les valeurs du pont avec le calculateur de pont diviseur de tension et trouver les détails du câblage du MOSFET dans Utiliser un MOSFET.
| Composant | Branchement | Rôle |
|---|---|---|
| Positif de la batterie (+) | Vers une extrémité de la résistance de charge et la résistance haute du pont | La batterie testée |
| Résistance de charge 10 Ω, 5 W | Autre extrémité vers le drain du MOSFET | Consomme environ 420 mA à 4,2 V |
| MOSFET canal N à niveau logique (ex. IRLZ44N) | Source → GND, grille → 220 Ω → GP15, 100 kΩ entre grille et GND | Met la charge en marche et à l'arrêt |
| Pont diviseur 100 kΩ + 100 kΩ | Positif → 100 kΩ → GP26 → 100 kΩ → GND | Ramène 4,2 V à 2,1 V pour l'ADC |
| Négatif de la batterie (−) | GND du Pico | Masse commune |
| Raspberry Pi Pico | Relié à l'ordinateur par USB | Mesure, enregistrement et affichage dans Thonny |
1from machine import ADC, Pin
2import time
3
4adc = ADC(26) # GP26: bölücünün orta noktası / divider midpoint
5load = Pin(15, Pin.OUT, value=0) # GP15: MOSFET kapısı / MOSFET gate
6R_LOAD = 10.0 # yük direnci, ohm (ölçüp yaz) / load resistor in ohms (measure it)
7DIV = 2.0 # 100k + 100k bölücü / 100k + 100k divider
8CUTOFF = 3.0 # Li-ion bitiş gerilimi / Li-ion end voltage
9CONV = 3.3 / 65535 # ham değeri volta çevir / raw value to volts
10
11def battery_v():
12 total = 0
13 for _ in range(32): # 32 ölçümün ortalaması / average of 32 readings
14 total += adc.read_u16()
15 return total / 32 * CONV * DIV
16
17mah = 0.0
18mwh = 0.0
19log = open("desarj.csv", "w") # Pico'nun belleğine kaydedilir / saved to the Pico's flash
20log.write("dakika,volt,mA,mAh\n")
21load.value(1) # deşarjı başlat / start the discharge
22start = last = time.ticks_ms()
23
24while True:
25 time.sleep(30)
26 now = time.ticks_ms()
27 hours = time.ticks_diff(now, last) / 3600000
28 last = now
29 v = battery_v() # yük altındaki gerilim / voltage under load
30 ma = v / R_LOAD * 1000 # I = V / R
31 mah += ma * hours
32 mwh += v * ma * hours
33 minutes = time.ticks_diff(now, start) / 60000
34 print("{:.0f} dk/min {:.3f} V {:.0f} mA {:.0f} mAh {:.2f} Wh".format(minutes, v, ma, mah, mwh / 1000))
35 log.write("{:.1f},{:.3f},{:.0f},{:.1f}\n".format(minutes, v, ma, mah))
36 log.flush()
37 if v <= CUTOFF:
38 load.value(0) # yükü ayır, pili koru / disconnect the load, protect the cell
39 log.close()
40 print("Kapasite / Capacity: {:.0f} mAh, {:.2f} Wh".format(mah, mwh / 1000))
41 breakToutes les 30 secondes, le code mesure la tension de la batterie en charge, calcule le courant et additionne les mAh et Wh consommés ; il affiche les résultats dans la console de Thonny et les enregistre aussi dans le fichier desarj.csv de la mémoire flash du Pico. Tu pourras ensuite ouvrir ce fichier dans Excel et tracer la courbe de décharge (Envoyer des données Arduino vers Excel). Avec la charge de 10 Ω, le test d'un 18650 de 3000 mAh dure environ 8 à 9 heures. Pour un résultat précis, mesure la résistance de charge au multimètre et reporte sa valeur dans R_LOAD, puis compare la tension de la batterie avec celle du multimètre et corrige le facteur DIV. Pour tester un accu AA NiMH, abaisse CUTOFF à 1,0 V et la résistance de charge à 4,7 Ω. À 4,2 V, la résistance de charge dissipe environ 1,8 W ; choisis-en une d'au moins 5 W, tiens-la à l'écart des surfaces inflammables et ne laisse pas le test sans surveillance. Si tu ne sais pas encore installer MicroPython sur le Pico, commence par Qu'est-ce que le Raspberry Pi Pico ?.
Idées de projets avec calcul d'autonomie
- Capteur de jardin qui tient des mois : garde un ESP32 en deep sleep, mesure l'humidité du sol une fois par heure et descends le courant moyen sous 1 mA.
- Voltmètre avec jauge de batterie : mesure la tension de la batterie et affiche-la en pourcentage sur un écran LCD (Fabriquer un voltmètre avec Arduino).
- Le bon pack pour une voiture robot : mesure le courant des moteurs et calcule combien de minutes tiendra un pack 2S de 18650 (Fabriquer une voiture robot Arduino).
- Enregistreur de consommation : écris les mesures de l'INA219 sur une carte SD pour établir le profil énergétique journalier d'un appareil (Module carte SD).
- Station de test de capacité 18650 : ajoute un écran OLED au testeur à Pico et affiche les mAh en direct.
- Station météo sur batterie : fais fonctionner pendant des mois, avec un seul 18650, un ESP32 qui envoie les données d'un DHT11 toutes les 10 minutes.
Erreurs fréquentes et solutions
| Erreur | Conséquence | Solution |
|---|---|---|
| Comparer des batteries de tensions différentes uniquement par leurs mAh | Mauvais choix de batterie | Convertis en Wh : mAh × V / 1000 |
| Compter sur toute la capacité de l'étiquette | Autonomie 15–40 % plus courte que prévu | Utilise le facteur 0,85, encore moins à fort courant |
| Oublier la consommation propre de la carte | Un Uno consomme environ 30 mA même en veille ; la batterie tient des heures au lieu de jours | Utilise un Pro Mini ou un module seul, retire la LED d'alimentation |
| Ne pas mesurer les pics de courant | Redémarrage (brownout) à la connexion Wi-Fi ou au mouvement d'un servo | Mesure avec un INA219, ajoute un condensateur de 470 µF sur l'alimentation |
| Utiliser la formule en mAh avec un convertisseur à découpage | Estimation fausse de 30–50 % | Calcule avec l'énergie (Wh) et la puissance (W) |
| Alimenter un Arduino avec une pile 9V | Pile vide en quelques heures et redémarrages | Utilise 6×AA, un pack 2S de 18650 ou une batterie externe |
| Décharger un accu lithium-ion sous 3,0 V | Perte de capacité définitive et risque de gonflement | Accu protégé ou BMS, tension de coupure dans le logiciel |
| Acheter des 18650 aux mAh irréalistes | Environ un tiers de la capacité annoncée | Fais un test de capacité, choisis des marques connues |
Tu connais maintenant la différence entre mAh et Wh, tu sais mesurer le courant de ton projet et calculer combien d'heures ou de jours tiendra une batterie. Pour la suite, jette un œil à Alimenter un Arduino sur batterie et à Charger un 18650 avec le TP4056. Dans l'application BlueGrays, tu trouveras des projets sur batterie comme l'économie d'énergie avec le deep sleep de l'ESP32, un voltmètre numérique avec écran LCD, une voiture robot pilotée en Bluetooth et un robot éviteur d'obstacles, chacun avec des schémas de câblage et du code pas à pas.
Questions fréquentes
Que signifie mAh sur une batterie ?
Le mAh (milliampère-heure) est l'unité de capacité qui indique la quantité de charge électrique stockée par une batterie. Une batterie de 1000 mAh peut, en théorie, fournir 1000 mA pendant 1 heure ou 100 mA pendant 10 heures. L'autonomie réelle dépend du courant consommé, de la température et de la tension à laquelle ton circuit s'arrête.
Quelle est la différence entre mAh et Wh ?
Les mAh mesurent la charge, les Wh l'énergie. On calcule les Wh avec mAh × V / 1000 : une batterie de 3,7 V et 3000 mAh contient donc 11,1 Wh. Pour comparer des batteries de tensions différentes, les Wh donnent une image bien plus juste.
Une batterie avec plus de mAh est-elle meilleure ?
Entre batteries de même tension et de même type, plus de mAh signifie plus d'autonomie. Mais pour les appareils gourmands en courant, la résistance interne et le taux C comptent aussi. Les 18650 affichant des valeurs irréalistes comme 9900 mAh sont presque toujours des contrefaçons.
Comment calculer l'autonomie d'une batterie ?
Utilise Autonomie (heures) = Capacité (mAh) / Courant moyen (mA) × 0,85. Par exemple, une batterie de 2500 mAh alimente un circuit de 50 mA pendant environ 42 heures. S'il y a un convertisseur élévateur ou abaisseur entre les deux, calcule avec les Wh et les W.
Peut-on alimenter un Arduino avec une pile 9V ?
Cela fonctionne pour de courts essais, mais ce n'est pas recommandé pour un projet permanent. Une pile 9V alcaline n'a que 400–600 mAh et alimente en général un Arduino Uno pendant quelques heures seulement ; avec des charges comme des servos, la tension chute et la carte redémarre. Un pack de 6×AA, un pack 2S de 18650 ou une batterie externe tiennent bien plus longtemps.
Que signifie le taux C d'une batterie ?
Le taux C exprime le courant de décharge ou de charge par rapport à la capacité ; 1C est le courant qui vide la batterie en 1 heure. Pour une batterie de 2000 mAh, 1C = 2 A et 0,5C = 1 A. Les valeurs comme 25C sur les batteries LiPo indiquent le courant de décharge continu maximal.
Projets à réaliser après cet article
Voir tous les projets
Température et humidité avec DHT11
Quelle température fait-il dans ta chambre, et l'air est-il humide ou sec ? Le capteur DHT11 mesure la température et l'humidité, et l'Arduino affiche les valeurs sur un écran LCD à deux lignes, mises

Clignotement LED avec ESP32
Enseigne l'utilisation de base des sorties GPIO avec l'ESP32. Nous obtenons un effet de clignotement en allumant et éteignant une LED à partir de la broche numérique. Version ESP32 du projet blink classique sur Arduino UNO ; les commandes de base de blink dans l'environnement Arduino restent les mêmes, mais le brochage et les niveaux GPIO de 3,3 V de l'ESP32 diffèrent de ceux de l'Arduino UNO.

Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC)
Le mode « Deep Sleep » de l'ESP32 réduit la consommation de courant à environ 10 µA en désactivant le processeur et la plupart des périphériques, ce qui revêt une importance cruciale pour les appareils IoT fonctionnant sur batterie. Dans ce projet, nous utilisons trois sources de réveil différentes : une minuterie (timer, 15 s), une broche externe (EXT0 — bouton GPIO 33) et un capteur tactile (T0/GPIO 4). Les variables marquées avec RTC_DATA_ATTR sont conservées pendant le mode Deep Sleep — le

Voltmètre numérique avec écran LCD
Découvre quelle tension fournit une pile ou un adaptateur avec un appareil de mesure fait maison. Un diviseur de deux résistances abaisse la tension élevée à un niveau que la carte peut lire, et l'Ard

Voiture contrôlée par Bluetooth avec L298N
Transforme ton téléphone en télécommande et pilote ta propre voiture robot. L'Arduino reçoit, via un module Bluetooth, les ordres d'une appli de télécommande sur ton téléphone et fait tourner les roue

Robot évitant les obstacles
Que diriez-vous de construire un véhicule intelligent qui trouve son propre chemin ? Le Robot Évitant les Obstacles scrute en permanence son environnement grâce au capteur ultrasonique situé devant lu

Enregistreur de Température ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Construis un enregistreur de température horodaté avec ESP32 ! Lis la température/humidité du DHT22 chaque minute, obtiens l'heure réelle du DS1307 RTC et enregistre sur carte microSD au format CSV. L'OLED affiche en direct la température (grande police), le pourcentage d'humidité, l'horodatage et le compteur. Le fichier /temp_log.csv sur la carte SD s'ouvre dans Excel, Google Sheets ou Python pandas pour analyse — parfait pour surveillance de serre, suivi de température à domicile, c
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 200 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

