jeudi 2 avril 2020

ARDUINO : l'alimentation (VCC, VIN, etc.)


ARDUINO : l'alimentation

(VCC, VIN, etc.)



Après avoir écrit de multiples articles sur l'alimentation d'un ARDUINO, d'un ESP8266 ou ESP32 en mode basse consommation par batterie, je vais examiner pour vous les différents moyens d'alimentation d'une carte lorsque l'on a besoin de puissance, ce qui malgré les apparences, n’est pas aussi simple que cela.

1. Examen du montage

Avant toutes choses, il faut bien être conscient qu’alimenter un ARDUINO sans parler des composants périphériques ne rime pas à grand-chose. En effet les circuits qui entourent le microcontrôleur consomment eux aussi du courant et suivant leur tension d'alimentation et leur consommation en courant, la solution d’alimentation sera probablement différente.

Il faut avant tout examiner les caractéristiques électriques de chaque composant ou module, et faire la somme des courants consommés par ceux-ci afin d’obtenir un bilan de consommation. Sans ce bilan de consommation, il sera difficile de trouver une solution rationnelle.

1.1. Tension d'alimentation

La tension d'alimentation générale sera choisie en fonction de la tension d'alimentation de chaque module.

Si tous les modules doivent être alimentés sous 5V le microcontrôleur sera de préférence un modèle 5V.

Un montage basé sur un ARDUINO 3.3V sera beaucoup plus facile à concevoir avec des modules alimentés sous 3.3V.

Si l'on doit commander un module relais avec un microcontrôleur 3.3V on prendra bien garde à choisir un modèle que l'on puisses commander par une tension de 3.3V. En général ces modules, même s'il sont alimentés en 5V au niveau de la bobine, acceptent une tension de commande beaucoup plus faible.

Également cela ne pose aucun problème de commander un relais nu 5V, 12V ou 24V avec un transistor commandé par une sortie 3.3V.

Voir ici :

https://riton-duino.blogspot.com/2018/08/alimenter-un-relais-transistor.html

1.2. ESP8266 et ESP32

Si un ESP8266 ou un ESP32 a été choisi pour ses capacités de communication WIFI il sera préférable d'adopter des modules 3.3V afin d'éviter des adaptations de niveaux de tension entre modules 5V et microcontrôleur 3.3V.
Si l'on n'a pas le choix, deux tensions d'alimentations seront nécessaires ainsi qu'une éventuelle adaptation de niveaux.

La datasheet des ESP8266 et ESP32 précise que la tension sur les entrées ne doit pas dépasser 3.3V + 0.3V.
Un simple pont diviseur peut suffire pour réduire la tension de sortie d'un module 5V à 3.3V.

Il faut bien distinguer cartes et modules nus :

Module nu ESP32

Carte ESP32

Un module nu doit être obligatoirement alimenté sous 3.3V.

Une carte peut être alimentée sous 5V, soit par le connecteur USB soit par une broche 5V. On peut l'alimenter aussi par une broche 3.3V ou 3V.

Certaines cartes possèdent un connecteur permettant de les alimenter à l'aide d'une batterie 3.7V.

1.3. Questions courantes

Pour répondre à une question souvent posée, dont la réponse paraîtra évidente à certains : oui, il est possible d'alimenter un montage consommant un courant donné avec une alimentation pouvant débiter un courant largement supérieur. Le montage prélèvera uniquement le courant nécessaire à son fonctionnement.

Pour répondre à un autre problème souvent posé : Fritzing propose parmi ses sources d'alimentation une pile de 9V. Est-ce viable ? non, ce n'est pas une solution viable. Une pile 9V a une capacité ridiculement faible par rapport à la majorité des besoins. D'autre part si l'on veut consommer peu d'énergie, une tension de 9V est absolument inadaptée.

https://riton-duino.blogspot.com/2021/03/arduino-et-pile-9v.html

Autre point : lorsque l'on dispose d'une alimentation de X volts et que l'on désire abaisser cette tension, on n'utilise certainement pas un pont diviseur ou une résistance. On utilise un régulateur, linéaire ou à découpage.

2. Caractéristiques électriques

Avant de parler alimentation il convient de parler du microcontrôleur et de ses capacités à produire du courant sur ses sorties, ainsi que de sa broche d'alimentation.

La datasheet des microcontrôleurs doit être examinée afin de déterminer plusieurs valeurs :
  • le courant maximal sur chaque sortie
  • le courant maximal d’alimentation
Le courant maximal d’alimentation représente la somme du courant consommé par le microcontrôleur lui-même, ainsi que la somme des courants consommés sur ses sorties.

2.1. Courants maximaux

Voici une table des courants maximaux admissibles :

Microcontrôleur Courant maximal sur chaque sortie Courant d’alimentation maximal
ATMEGA328P 40mA 200mA
ATMEGA2560 40mA 200mA
ESP8266 12mA 500mA
ESP32 40mA (source), 28mA (sink) 1200mA

Par exemple pour un ATMEGA328P la limitation globale de 200mA inclut la consommation du microcontrôleur lui-même : 14mA. Il nous reste donc 186mA disponibles sur les sorties.

On voit immédiatement que si l’on a l’intention de débiter 20mA sur les sorties d’un ATMEGA328P, la limitation globale nous interdira de débiter ce courant sur plus de 9 sorties.

Il faudra donc des interfaces de puissances adaptées si l'on dépasse un de ces critères.

2.2. Tension sur une sortie

La tension sur la sortie d’un microcontrôleur varie en fonction du courant débité :

Elle varie également en fonction du mode d'alimentation. Alimenté en USB ces tensions seront plus faibles. Si un ATMEGA328P est bien capable de débiter 40mA, sa tension de sortie ne sera plus que de 3.8V. S’il débite seulement 20mA elle sera de 4.4V.

Si cela peut convenir pour piloter une LED, cela peut être gênant dans d'autres cas.

3. Les différentes possibilités d'alimentation

L'examen d'une carte UNO, NANO, ESP8266 ou ESP32 laisse entrevoir plusieurs possibilités d'alimentation.

Voici le schéma classique d'une carte :

Différents composants sont présents :

  • un régulateur 5V dont l'entrée est reliée à la broche VIN, et au JACK, si la carte en est équipée (UNO par exemple). Ce régulateur alimente le microcontrôleur et la broche 5V. Sur les cartes dont les microcontrôleurs sont alimentés sous 3.3V, bien entendu, ce régulateur est un modèle 3.3V.
  • un régulateur 3.3V. Ce régulateur, pas forcément présent, alimente le broche 3.3V. Sur une PRO MINI par exemple, ce régulateur est absent. Sur une NANO ce régulateur est interne au convertisseur USB / série.
  • une diode Schottky en série avec le 5V USB. Cette diode évite le conflit entre le 5V USB et le 5V en sortie du régulateur 5V. Cette diode peut être remplacée par un MOSFET (UNO par exemple).

3.1. USB

La tension 5V provient du connecteur USB. Le courant disponible sur un port USB d'ordinateur est de 500mA en USB2, 900mA en USB3.

3.1.1. Chargeur USB

Certains chargeurs USB, et certains HUBs USB, peuvent fournir plus de 2A.

3.1.1. Protection

Entre le 5V USB et la broche 5V d'un ARDUINO, une protection est présente sur la carte, afin d'éviter les conflits.

Sur une carte NANO il s'agit d'une diode Schottky. Cette diode provoque une chute de tension de 0.3V à 0.5V en fonction du courant consommé.

Sur d'autres cartes, UNO par exemple, il s'agit d'un MOSFET canal P. La chute de tension provoquée est plus faible qu'avec une diode Schottky.

3.2. Broche VCC

La broche VCC porte différents noms en fonction de la carte :

  • ARDUINO UNO, NANO, MEGA : 5V
  • ARDUINO PRO MINI : VCC (5V ou 3.3V)
  • ESP8266 ou ESP32 : 3.3V

Dans tous les cas, cette broche alimente directement le microcontrôleur. C’est la technique d’alimentation la plus directe. La limitation en courant ne dépendra que de la puissance de l’alimentation. Le microcontrôleur consommera du courant selon ses besoins et les composants annexes raccordés sur cette ligne (modules relais, capteurs, etc.), auront également des besoins en courant qu'il faudra satisfaire.

L'avantage d'alimenter le microcontrôleur et d'autres modules en parallèle sur la même alimentation 5V ou 3.3V est que chacun absorbe le courant qui lui est nécessaire, sans que cela handicape la carte microcontrôleur comme cela peut se produire lorsque l'on alimente celle-ci par sa broche VIN (voir paragraphe suivant).

Il conviendra donc d’utiliser une alimentation suffisante pour l’application. Le courant maximal de l’alimentation devra être au moins égal au bilan des consommations calculé, majoré d'une marge de sécurité d’au moins 20%.

L'alimentation choisie devra fournir une tension régulée, avec une ondulation faible. Il est peu recommandé d'utiliser une alimentation non régulée composée d'un transformateur, d'un pont de diodes et d'un condensateur de filtrage.

Attention : la broche VCC est une entrée, mais c'est aussi une sortie lorsque la carte est alimentée par la broche VIN. Voir plus bas.

3.2.1. Sortie 3.3V

Il s’agit de ne pas confondre la broche 3.3V d’une carte ARDUINO UNO ou NANO avec la broche 3.3V d’un ESP8266 ou ESP32.

La broche 3.3V d’une carte ARDUINO UNO ou NANO est une sortie prévue pour alimenter des composants extérieurs sous 3.3V.

Sur une NANO, elle provient d’une broche du convertisseur USB / série (CH340, CP2102, etc) implanté sur la carte. Elle fournit peu de courant. Un CH340, selon différentes sources, serait capable de délivrer seulement 30mA.

Sur une UNO, elle provient d'un régulateur LP2985, capable de débiter 150mA. L'entrée de ce régulateur est connectée au 5V de la carte, c'est à dire que le courant consommé sur la broche 3.3V vient s'ajouter au courant consommé sur la broche 5V.

3.3. Broche VIN

Ici aussi la broche VIN porte différents noms en fonction de la carte :

  • ARDUINO UNO, NANO, MEGA : VIN (ou JACK sur UNO ou MEGA)
  • ARDUINO PRO MINI : RAW (5V ou 3.3V)
  • ESP8266 ou ESP32 : 5V

Cette broche est une entrée d’alimentation pouvant accepter une tension supérieure à VCC. Elle est raccordée à l’entrée d’un régulateur dont la sortie alimente le microcontrôleur.

On retrouve cette tension de sortie également sur la broche VCC, c'est à dire que le courant consommé sur la sortie VCC passera forcément par le régulateur.

La broche VCC est donc une entrée si on l'utilise pour alimenter la carte, et une sortie si on alimente la carte par la broche VIN.

La tension maximale sur la broche VIN dépend de deux facteurs :

  • tension maximale admise par le régulateur
  • courant consommé

Afin de déterminer la limite à ne pas dépasser il est impératif d’identifier le régulateur équipant la carte :

Régulateur Tension maximale en entrée Courant maximal Drop-out voltage (VDROP)
UA78M05 35V 500mA 2V
MC33269D 20V 800mA 1.35V
AMS1117 15V 1000mA 1.3V
ME6211 6.5V 600mA 260mV

Le MC33269D est présent sur les cartes UNO officielles.

L’AMS1117 équipe la majeure partie des cartes clones ARDUINO chinoises et pas mal d'ESP8266 ou ESP32.

Le ME6211 équipe certaines cartes ESP8266 ou ESP32 de qualité.

3.3.1. Tension maximale et minimale

On voit assez rapidement que la tension d’alimentation va fortement dépendre du régulateur. Par exemple appliquer 7.5V ou 9V sur l’entrée 5V d’un ESP32 ne sera pas possible si la carte est équipée d’un régulateur ME6211, qui grillerait instantanément.

Dans le tableau ci-dessus un paramètre VDROP permet de connaître la différence minimale admissible entre VIN et VOUT pour que le régulateur puisse assurer sa fonction de régulation.

Par exemple la tension en entrée d’un AMS1117 ne pourra être inférieure à 5V + 1.3V donc 6.3V.

3.3.2. Courant maximal

Chaque régulateur est prévu pour fournir un courant maximal en sortie. Au delà il entrera en protection et sa tension de sortie chutera.

3.3.3. Puissance maximale

Chaque régulateur peut dissiper une puissance maximale. Cette puissance maximale dépend de 2 paramètres :

  • résistance thermique du boîtier
  • surface de dissipation du circuit imprimé sur lequel il est soudé

La puissance dissipée est facilement calculable :

Pmax = UI = (VIN – VOUT) * I

VIN étant la tension d’entrée du régulateur et VOUT sa tension de sortie, on constate facilement que la puissance dissipée sera forcément proportionnelle à la tension d’entrée.

Il y a donc deux limites qui nous permettront de choisir la tension d’alimentation : VDROP et Pmax.

Pmax pourra t-elle être dissipée par le régulateur ? c’est ici que les choses se corsent.

Si l’on prend comme exemple une carte ARDUINO NANO équipée d’un AMS1117 :

La datasheet du régulateur explique comment calculer la surface de dissipation en fonction de la puissance dissipée (voir 10.1.1. HeatsinkRequirements).

La résistance thermique peut être calculée comme suit :

RθJA= TR(max) / Pmax

RθJA est la résistance thermique entre la jonction (la puce) et l’air ambiant.

TR(max) représente la différence maximale de température entre la puce du régulateur (125°) et l'air ambiant.

La dissipation du LM1117 est assurée par une piste sous la carte. Cette piste fait à vue de nez environ 0.3 inch carré de surface.

D’après la table 2 en page 18 la résistance thermique de cette piste de 0.3 inch carré est de 84 °C / W (boîtier SOT-223).

La puissance maximale à ne pas dépasser pour le LM1117 à une température ambiante de 25°C sera de :

Pmax = TR(max) / RθJA = (125° - 25°) / 84 = 1.2W

Si l’on alimente la carte en 12V, la différence de tension entre VIN et 5V sera de 7V. Le courant maximal en sortie du régulateur sera de :

I = 1.2W / 7V = 170mA

Si l’on alimente la carte en 7.5V, la différence de tension entre VIN et 5V sera de 2.5V. Le courant maximal en sortie du régulateur sera de :

I = 1.2W / 2.5V = 480mA

Si l’on alimente la carte en 6.3V, la différence de tension entre VIN et 5V sera de 1.3V. Le courant maximal en sortie du régulateur sera de :

I = 1.2W / 1.3V = 920mA

Moralité : plus VIN augmente, plus le courant disponible en sortie du régulateur baisse.

3.3.4. Expérience

Alimentons une carte UNO ou NANO avec une tension de 6.5V à 9V sur VIN. Une résistance de 10Ω est branchée entre la broche 5V et GND. Elle va donc consommer 5V / 10Ω = 500mA.

Voici un petit tableau donnant la valeur de la tension VCC en fonction de la tension VIN :

Carte VIN=6.5V (à vide) VIN = 6.5V (charge 10Ω) VIN = 7.5V (charge 10Ω) VIN = 9V (charge 10Ω)
UNO 5.01V 4.91V 4.9V 3.6V
NANO 4.96V 4.7V 3.1V

Remarques :

La UNO tient mieux la charge que la NANO, malgré que le régulateur soit identique. Ceci est normal, la surface de dissipation allouée au régulateur de la UNO est supérieure.

La tension sur la broche 5V ne chute pas immédiatement lorsque la puissance dissipée augmente, mais au bout de quelques dizaines de secondes. Cela indique que cette limitation est thermique. Si la puissance à dissiper est plus importante ce temps peut être bien plus court.

3.4. Plusieurs alimentations

Est-il possible d'alimenter une carte par VCC, VIN et USB simultanément ?

Oui, il est possible de laisser le cordon USB branché tout en ayant une alimentation sur VIN ou VCC. Les cartes sont équipées de mécanismes permettant d'éviter le conflit.

Par contre il est absolument déconseillé d'alimenter une carte par sa broche VIN et par sa broche VCC simultanément, car cela revient à appliquer une tension sur la sortie du régulateur de la carte alors que son entrée est alimentée. Le mécanisme de régulation va essayer de combattre la différence entre la tension présente sur sa sortie et la tension de sortie théorique du régulateur. Cela risque d'avoir pour conséquence une sur-consommation plus ou moins importante et une surchauffe du régulateur.

4. Alimentations

4.1. Alimentation 3.3V ou 5V

L'alimentation directe d'un microcontrôleur et de modules en 3.3V ou 5V ou d'un ESP8266 ou ESP32 par sa broche 5V peut être facilement mise en œuvre à l'aide de modules ou blocs secteurs du commerce :

Hi-Link 5V/3W
Alimentation 3.3V 1A

Si l'alimentation doit alimenter simultanément un microcontrôleur 3.3V et un relais ou un moteur 5V, une tension de 3.3V sera insuffisante pour le relais ou le moteur.

On pourra donc adopter une alimentation 5V sur laquelle on viendra ajouter un régulateur LDO linéaire 3.3V pour alimenter le microcontrôleur :

HT-7333-1 3.3V 250mA
MCP1825 ajustable 500mA

On parle souvent de cartes ESP8266 ou ESP32 mais pour des raisons d'encombrement on peut préférer implanter un module nu :


Un module nu est dépourvu de régulateur et dans ce cas l'alimentation sous 3.3V est obligatoire.

Les  MCP1725, MCP1825, LM3940, HT7833-1 sont de bons choix.

Les régulateurs linéaires peuvent être intéressants car peu encombrants.

Il est impératif de consulter leur datasheet car ils nécessitent en général un condensateur d'entrée et de sortie.

Cet article propose une liste de régulateurs LDO :

https://riton-duino.blogspot.com/2018/11/les-regulateurs-ldo.html

4.2. Alimentation par VIN 6.5V, 7.5V ou 9V

L'alimentation d'une carte par la broche VIN pourra être effectuée par le même moyen que précédemment, une alimentation ou un bloc secteur. Les modèles 6.5V sont rares. Il faudra respecter la tension maximale du régulateur de la carte microcontrôleur ainsi que sa puissance maximale dissipée.

Dans tous les cas une tension faible sera préférable, afin de limiter la dissipation du régulateur de la carte microcontrôleur, surtout s'il s'agit d'un ESP8266 ou un ESP32, leur consommation étant importante lors du démarrage (connexion au réseau WIFI).

4.3. Alimentation 12V ou 24V

Il est relativement courant d'avoir besoin d'une tension d'alimentation de 12V ou 24V pour alimenter par exemple des relais, un moteur, une pompe, etc.

On devra donc choisir une alimentation adéquate, en fonction de la puissance réclamée par ces composants mécaniques :


Alimentation MeanWell 12V 30W
Alimentation 12V / 1A

Une carte ARDUINO pourra être alimentée en 12V par sa broche VIN si le courant consommé sur ses sorties ne dépasse pas une limite raisonnable.

On peut l'estimer facilement :

I = 1.2W / (12V - 5V) = 170mA

Par contre s'il s'agit d'un ESP8266 ou ESP32 alimenté par sa broche 5V, il sera plus prudent de passer par un régulateur 5V supplémentaire, surtout si la carte est équipée d'un régulateur ME6211.

On pourra également adopter un régulateur 3.3V pour alimenter une carte par sa broche VCC, ou alimenter un module nu.

Il faut savoir qu'un ESP8266 ou un ESP32 consomme plus de 400mA dans sa phase de connexion au réseau WIFI. Si la carte est équipée d'un AMS1117 la puissance dissipée sera excessive :

Pmax = UI = (VIN – VOUT) * I = (12V - 5V) * 0.4A = 2.8W

Dans le cas d'une alimentation 24V ce régulateur sera bien entendu indispensable dans tous les cas.

Ce régulateur sera de préférence un modèle à découpage, un LM2596 ou un MP1584 par exemple :

LM2596
MP1584 3.3V

Pour des courants faibles on pourra comme précédemment utiliser un régulateur linéaire, un LM7805, LM7833 ou LM78L33 par exemple.

Attention, beaucoup de régulateurs LDO ont une tension d'entrée faible :

https://riton-duino.blogspot.com/2018/11/les-regulateurs-ldo.html

 
4.3.1. Régulateur élévateur

On peut également choisir l'option inverse : il est possible de choisir une alimentation 3.3V ou 5V adaptée au microcontrôleur et d'élever la tension à 12V ou 24V, pour piloter un relais par exemple, à l'aide d'un régulateur élévateur (step-up) :

MT3608

Cette solution pourra être utilisée pour piloter des relais ou de petits moteurs, mais le courant consommé sur l'alimentation 5V ou 3.3V sera bien plus important.

Cet article en dit plus long sur ces régulateurs :

https://riton-duino.blogspot.com/2019/11/convertisseurs-stepup-stepdown.html

En particulier il évoque le rapport existant entre le courant d'entrée et le courant de sortie d'un régulateur à découpage (paragraphe 1).

6. Conclusion

Alimenter une carte par la broche VIN semble être la solution la plus simple à première vue. Il n'en est rien, elle s’avère beaucoup plus complexe qu’il n’y paraît.

Lorsque l’on veut pouvoir disposer d’une puissance même moyennement élevée sur le 5V il est beaucoup plus intéressant d’alimenter la carte directement par la broche VCC à l'aide d'une alimentation dont on choisit la puissance en fonction d'un bilan de consommation sérieux.


Cordialement
Henri

9 commentaires:

  1. Bonsoir, google m'a une nouvelle fois envoyé sur ton blog, concernant : "il est possible d'alimenter un montage consommant un courant donné avec une alimentation pouvant débiter un courant largement supérieur.
    Le montage prélèvera uniquement le courant nécessaire à son fonctionnement."

    As tu déjà montré exactement comment faire, ou peux tu indiqué un lien expliquant ?

    Aussi n'existe-t-il pas un ESP32 différent, qui réclamerait 5V ?

    RépondreSupprimer
    Réponses
    1. Cela se fait naturellement. Une alimentation doit fournir au minimum le courant demandé. Un montage fonctionnant sous 5V et consommant 100mA consommera ce courant et rien de plus, que l'alimentation soit capable de fournir 1A ou 10A ne change rien au problème.
      Toutes les cartes ESP32 peuvent être alimentées en USB, ou par une broche 5V. Elles sont équipées d'un régulateur 3.3V. Attention certains régulateurs n'acceptent pas plus de 5.5V ou 6V.
      Par contre les modules ESP32 nus doivent être alimentés sous 3.3V.

      Supprimer
  2. Ah, j'ai commandé ESP32 WiFi + bluetooth Development Board Ultra Low Power Consumption Dual Core ESP-32 ESP-32S , donc c'est une carte, j'ai donc commandé des régulateurs MCP1825S-3302E(concerne batterie Li Ion) pour rien ?

    Ou ce que tu dis n'est valable que sur alimentation directe ?

    P.S. Je veux télé-commandé une voiture electrique avec batterie avec mon Smartphone, mais certain moteur voiture réclament 5V.

    RépondreSupprimer
  3. Si il y a déjà un régulateur sur la carte, lequel ont ils donc mis ??

    RépondreSupprimer
  4. Pour les moteurs 5V il me faudrait un step up 3-5V, car de toute façon la batterie ne donne que 4,2 volt, mais donc alors alors je ne prends pas le 5V mais bien le 3V sur le GPIO de la carte ?

    RépondreSupprimer
    Réponses
    1. Un step-up sur un GPIO ? C'est une blague ?
      Non, un step-up sur la batterie. Mais tout dépend de l'ampérage souhaité.
      https://riton-duino.blogspot.com/2019/11/convertisseurs-stepup-stepdown.html

      Supprimer
  5. Déjà, bravo pour votre site, c'est une mine d'or !

    J'ai une question, je souhaite alimenter un ESP8266 nu à partir du 220V (module encastré dans les murs qui servira de thermostat avec une NTC) - avez vous déjà identifié des petits modules 220AC->3.3VDC de bonne qualité (j'entends par là safe, qui ne chauffent pas et avec une isolation galvanique) ?
    Je pense à ce genre de chose : https://www.farnell.com/datasheets/2547883.pdf


    RépondreSupprimer
    Réponses
    1. Si 3W suffisent, c'est également ce que je choisirais.
      Pour ma part j'utilise toujours une alimentation 5V, suivie d'un bon régulateur LDO 3.3V (RT9080 par exemple), car la tension sera beaucoup plus propre qu'en sortie d'une alimentation à découpage (100mV de bruit).
      Attention : un régulateur réclame toujours au moins 2 condensateurs. Consulter la datasheet.

      Supprimer