Composant · Alimentation

Robot Battery & Power Pack

Alimenter une voiture robot : pourquoi un bloc 9 V s'effondre sous les moteurs, un pack AA ou 18650, et comment éviter le redémarrage par les rails.

Présentation

Le pack d’alimentation est la partie à laquelle les débutants pensent le moins et qu’ils ratent le plus souvent. C’est simplement la batterie qui fournit le courant aux moteurs et à l’électronique — mais mal choisie, le robot tremble, redémarre ou refuse de bouger, aussi bon soit le code. Bien alimenter fait souvent la différence entre un robot qui roule et un qui redémarre sans cesse.

L’idée clé est qu’un robot a deux appétits très différents en courant : les moteurs l’avalent par pics, et la logique le sirote régulièrement. Une batterie peut nourrir les deux, mais il faut les arranger pour que les moteurs gourmands n’affament pas le cerveau sensible.

Illustration de distribution d'alimentation : un pack batterie à deux éléments alimente une carte pilote moteur L298N (avec radiateur à ailettes) via un fil Vin rouge ; le pilote alimente deux moteurs ; une ligne régulée 5 volts alimente une carte Arduino, qui renvoie quatre fils de signaux PWM et direction vers le pilote ; un bus de masse commun relie batterie, pilote et Arduino en bas.
Un pack, deux rails : les moteurs tirent un fort courant via le pilote, l'Arduino tourne sur un 5 V régulé stable, et chaque partie partage une masse commune. Télécharger le SVG

Fonctionnement

Suivez le courant depuis le pack :

  1. La batterie fournit la tension brute — 6 V avec quatre AA, 7,4 V avec deux 18650.
  2. Le rail moteur va directement du pack vers le Vin du pilote L298N. C’est là que vient le fort courant pulsé des moteurs — tenu à l’écart de l’Arduino.
  3. Le rail logique est un 5 V régulé (depuis le régulateur embarqué du pilote ou via USB) qui alimente l’Arduino et les capteurs avec une tension propre et stable.
  4. Une masse commune relie tout. Chaque rail doit partager la même ligne de masse, sinon les signaux logiques n’ont pas de référence partagée et les lectures deviennent insensées.

Séparé ainsi, un moteur tirant soudain un ampère peut affaisser son propre rail sans entraîner le 5 V de l’Arduino avec lui.

Pourquoi un bloc 9 V échoue

L’erreur la plus fréquente du premier robot est d’alimenter les moteurs depuis une pile rectangulaire 9 V PP3. Elle semble pratique, mais contient très peu d’énergie et a une résistance interne élevée. Dès que les moteurs tirent du courant, sa tension s’effondre — l’Arduino passe sous son minimum et redémarre, donc le robot avance par à-coups et redémarre en boucle. Un bloc 9 V convient à une maquette sirotant des milliampères ; c’est le mauvais choix pour tout ce qui entraîne des roues.

Choix et câblage

  • Adaptez la tension aux moteurs. Des moteurs 3–6 V sont contents sur un pack 6 V ou 7,4 V ; utilisez le PWM pour dompter la vitesse plutôt que de sous-alimenter le pack.
  • La capacité, c’est l’autonomie. Plus de mAh signifie plus longtemps entre charges ; les 18650 durent bien plus que les AA mais exigent un support protégé.
  • Un interrupteur, bonne polarité. Ajoutez un interrupteur général sur le pack et vérifiez la polarité avant la première mise sous tension — une alimentation inversée peut tuer une carte instantanément.
  • Pas de réinjection. Évitez d’alimenter l’Arduino à la fois par USB et par batterie sauf si la carte est prévue pour.
  • Ajoutez un condensateur réservoir sur l’alimentation moteur pour absorber le pic de démarrage et stabiliser le rail.

Résistance interne : le nombre qui décide de tout

Chaque batterie se comporte comme une source de tension idéale avec une résistance en série. Cette résistance est toute l’histoire de pourquoi un pack fonctionne et un autre redémarre votre carte.

V_under_load = V_open_circuit - (I x R_internal)

Un robot tirant un pic de 2 A via un pack à 0,5 Ω de résistance interne perd un plein volt avant que l’aval ne voie quoi que ce soit. Voici ce que cela donne pour les options courantes :

Pack Nominal Résistance interne typique Chute à 2 A Verdict
PP3 9 V alcaline 9 V 1,5–3 Ω 3–6 V Inutilisable pour moteurs
4×AA alcalines 6 V 0,6–1,2 Ω 1,2–2,4 V Limite ; s’épuise vite
4×AA NiMH 4,8 V 0,1–0,2 Ω 0,2–0,4 V Bien, mais tension basse
6×AA NiMH 7,2 V 0,15–0,3 Ω 0,3–0,6 V Un choix solide
2×18650 Li-ion 7,4 V 0,05–0,15 Ω 0,1–0,3 V Excellent
LiPo 2S 7,4 V 0,02–0,05 Ω Moins de 0,1 V Le meilleur, avec précautions

Ce tableau explique totalement le bloc 9 V. Ce n’est pas qu’il a la mauvaise tension — il a la tension la plus élevée de la liste. C’est que sous un pic de 2 A il ne délivre que 3 V, et le robot redémarre. La tension sur l’étagère ne dit rien ; la chute en charge dit tout.

Mesurez le vôtre en deux minutes

1. Measure the pack's voltage with nothing connected.       -> V_open
2. Stall the motors and measure again while stalled.        -> V_load
3. Measure the stall current with the meter in series.      -> I
4. R_internal = (V_open - V_load) / I

Écrivez le nombre sur le pack au marqueur. Il augmente avec le vieillissement des éléments, et un pack dont la résistance a doublé est un pack qui a commencé à causer des redémarrages « aléatoires ».

Le budget de courant

Additionnez sur papier avant d’acheter. Utilisez le blocage, pas le typique.

Appareil Typique Crête / blocage
Arduino Uno 45 mA 50 mA
ESP32 (Wi-Fi actif) 80 mA 500 mA en rafales
Moto-réducteur TT ×2 300 mA 2 A
Moto-réducteur métal N20 ×2 200 mA 1,6 A
Servomoteur SG90 200 mA 650 mA
HC-SR04 15 mA 15 mA
MPU-6050 4 mA 4 mA
Réseau IR 8 canaux 100 mA 200 mA
GPS NEO-6M 45 mA 60 mA

Un robot éviteur d’obstacles typique — Uno, deux moteurs TT, un ultrason sur servomoteur — se chiffre à environ 360 mA typiques et 2,7 A en crête. Dimensionnez le pack pour la crête, et dimensionnez l’autonomie d’après le typique :

runtime (hours) = capacity (mAh) / average draw (mA)

2000 mAh de NiMH AA à 360 mA font environ 5,5 heures de roulage, bien plus que ce que la batterie de la plupart des robots ne sert jamais. La capacité est rarement la contrainte — la capacité de pic l’est.

Bien câbler

Battery + ──── master switch ──┬──── motor driver VM  (the heavy path)
                               │
                               └──── 5 V regulator ──── Arduino, sensors
Battery − ─────────────────────┴──── COMMON GROUND ──── everything

Quatre règles, par ordre de fréquence de violation :

Masse commune, toujours. Chaque alimentation, chaque carte, chaque capteur attachés à une masse. Une masse commune manquante prive les signaux logiques de référence, et la panne est silencieuse — rien ne fonctionne, rien ne chauffe, rien ne semble faux.

La masse en étoile, pas en chaîne. Ramenez chaque masse à un point plutôt que de chaîner via le pilote moteur. Le courant de retour moteur dans un fil de masse partagé crée une différence de tension le long de celui-ci, et vos lectures de capteurs bougent dès que les moteurs tournent.

Interrupteur général sur le fil positif, avant tout. Pouvoir tuer un robot emballé instantanément vaut les deux minutes.

Protection contre l’inversion de polarité. Une simple diode Schottky en série coûte ~0,3 V, ou un MOSFET canal P presque rien. L’un ou l’autre coûte moins cher que la carte qu’un pack inversé détruit — et inverser un pack prend un moment d’inattention.

Condensateurs : ce qu’ils font et ne font pas

Ajoutez un électrolytique 470–1000 µF sur l’alimentation moteur, près du pilote. Cela vaut le coup. On en attend aussi couramment quelque chose qu’il ne peut pas faire.

Ce qu’il corrige : les transitoires rapides de commutation du PWM et de la commutation moteur, qui sont à l’échelle de la microseconde et se couplent dans le rail logique comme du bruit.

Ce qu’il ne peut pas corriger : un pic soutenu. L’arithmétique est impitoyable :

dV = I x t / C
1000 uF supplying 2 A for 10 ms -> dV = 2 x 0.01 / 0.001 = 20 V

Un condensateur à qui on demande de porter un pic moteur de 2 A pendant 10 ms devrait chuter de 20 V, soit plus que le pack. Seule une batterie plus rigide porte un pic. Si votre carte redémarre quand les moteurs démarrent, un plus gros condensateur n’est pas la réponse — un pack à résistance interne plus basse l’est.

Ajoutez aussi une céramique 100 nF près de la broche d’alimentation de chaque CI. Travail totalement différent : elle gère la demande haute fréquence de la commutation propre de la puce, que l’électrolytique est trop lent à servir.

Choisir une chimie

NiMH AA Li-ion 18650 LiPo
Tension d’élément 1,2 V 3,7 V 3,7 V
Résistance interne Basse Très basse La plus basse
Autodécharge Basse (utilisez des éléments « prêts à l’emploi ») Très basse Très basse
Décharge profonde Tolérante Endommagée sous 3,0 V/élément Endommagée sous 3,0 V/élément
Charge Simple, indulgente Exige un chargeur adapté ou BMS Exige un chargeur équilibreuse
Risque d’incendie Négligeable Réel en cas d’abus Réel en cas d’abus
Idéal pour Un premier robot La plupart des robots Montages performance

Le NiMH est le bon premier choix. Six éléments donnent 7,2 V avec une faible résistance interne, ils tolèrent les erreurs, et un pack vide est un désagrément plutôt qu’un incident.

Les Li-ion 18650 sont l’évolution sensée : bien plus d’énergie pour le poids, très faible résistance interne, et bon marché. Utilisez un support protégé ou une carte BMS — les éléments lithium descendus sous environ 3,0 V par élément sont durablement endommagés, et un robot qui roule jusqu’à s’arrêter fera exactement cela.

Le LiPo est ce qu’utilisent les montages performance, et c’est celui qui exige du respect. Ne chargez jamais sans surveillance, ne percez jamais, ne laissez jamais déchargé, et utilisez un chargeur équilibreuse.

Dépannage

Symptôme Cause probable Solution
La carte redémarre quand les moteurs démarrent Chute du pack — résistance interne trop haute Mesurez-la ; un pack à plus basse résistance est la seule solution
Un plus gros condensateur n’a pas aidé Il ne le pouvait pas Voir l’arithmétique ci-dessus ; changez de batterie
Rien ne fonctionne, rien ne chauffe Pas de masse commune Attachez chaque masse à un point
Les lectures capteur bougent quand les moteurs tournent Masse chaînée Mettez les masses en étoile vers un point
Le robot ralentit au fil du parcours Tension chutant à mesure que le pack se vide Normal ; bouclez la vitesse, ou surveillez le pack
Moteurs faibles dès le début Chute du pilote plus pack affaissé Un L298N prend ~2 V avant que les moteurs ne voient quoi que ce soit
Régulateur très chaud Trop de tension aux bornes d’un régulateur linéaire Utilisez un régulateur à découpage, ou baissez l’entrée
Le pack chauffe en charge Mauvais chargeur pour la chimie Arrêtez. Adaptez le chargeur aux éléments
Pack Li-ion mort qui ne charge plus Descendu sous 3,0 V/élément Endommagé durablement — utilisez un support protégé la prochaine fois

Surveiller le pack

Dernière chose à ajouter : un robot qui connaît sa tension batterie peut s’arrêter avant de décrocher, et cela coûte deux résistances.

// 100k / 33k divider: 8.4 V max in -> ~2.09 V at the pin. Safe for a 3.3 V ADC.
const float DIVIDER = (100.0 + 33.0) / 33.0;

float packVolts() {
  return analogRead(A0) * (5.0 / 1023.0) * DIVIDER;
}

Une prudence qui rend cela à faire soigneusement : sur un Arduino, analogRead est ratiométrique au rail 5 V, qui s’affaisse lui-même quand les moteurs tournent. Mesurer une batterie qui chute via une référence qui chute fait monter la lecture. Passez à la référence interne 1,1 V avec analogReference(INTERNAL), dimensionnez le diviseur pour elle, et la lecture devient honnête — le tutoriel entrées analogiques couvre exactement ce piège.

Explorer le graphe

Utilisé dans ces réalisations

Projets, parcours d'apprentissage et simulateurs qui intègrent le composant Robot Battery & Power Pack.

Questions

FAQ : Robot Battery & Power Pack

Quelle batterie utiliser pour une voiture robot Arduino ?

Un pack 4×AA (6 V) ou 2×18650 (7,4 V) alimentant le pilote moteur est le choix standard. Les deux fournissent le courant dont les moteurs ont besoin sans s'effondrer en charge. Alimentez l'Arduino depuis la sortie 5 V régulée du pilote ou via USB pendant le développement.

Peut-on alimenter les moteurs d'un robot avec une pile 9 V ?

Mal. Un bloc PP3 9 V a très peu de capacité et une résistance interne élevée, donc dès que les moteurs tirent du courant sa tension s'effondre et l'Arduino décroche et redémarre. Utilisez un pack AA ou 18650 pour tout ce qui a des moteurs ; gardez le bloc 9 V pour une maquette.

L'Arduino et les moteurs partagent-ils la même batterie ?

Ils partagent généralement un pack, mais sur des rails séparés. Les moteurs tirent du pack via la borne Vin du pilote ; la logique tourne sur un 5 V régulé. Point critique, chaque alimentation doit partager une masse commune, sinon vos signaux n'ont pas de référence partagée et rien ne se lit correctement.

Pourquoi mon robot redémarre quand les moteurs démarrent ?

Parce que les moteurs au démarrage appellent brièvement un gros pic de courant, faisant chuter la tension partagée sous ce dont l'Arduino a besoin, donc il redémarre. Les solutions sont une batterie plus rigide, des rails moteur et logique séparés depuis le même pack, et un condensateur sur l'alimentation moteur pour absorber le pic.

Pour aller plus loin

Références