LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 19 mars 2024

Visiteurs connectés : 22

Que peut-on alimenter avec un Arduino

.
Par : Jean-Luc

DIFFICULTÉ :

Une carte Arduino comprend essentiellement 3 éléments : le microcontrôleur, un convertisseur USB-série permettant de télécharger le programme et de débugger via des affichages dans le moniteur série [1] et enfin un régulateur de tension qui fournit l’alimentation. Quand on ajoute des circuits extérieurs, que ce soit des choses simples comme des LED ou des circuits plus complexes comme des expandeurs d’entrées/sorties, ils sont également alimentés par le régulateur qu’embarque la carte Arduino et une partie du courant qui les traverse traverse également le microcontrôleur. Évidemment quelques limites existent quant au courant que tout ce petit monde est capable de fournir.

<

Limites absolues et capacités nominale

Tous les composants électroniques ont une limite absolue définie par le fabricant. Cette limite détermine le seuil au delà duquel le composant cesse de fonctionner, que ça soit parce qu’il contient un mécanisme de limitation pour éviter sa destruction, ou parce qu’il est détruit. Par exemple, un régulateur de tension possède généralement un mécanisme de limitation qui, lorsque le composant chauffe au delà d’une certaine température, cesse de fournir la tension requise. Une diode donnée pour 1A sera détruite si elle est traversée en permanence par un courant supérieur à 1A. Une sortie de l’Arduino fournit un courant maximum de 40mA et la sortie sera détruite si cette limite est dépassée. Il se peut que lors de vos expérimentations vous ayez atteint ou dépassé ces limites sans dommage apparent mais cela ne garantit pas qu’il n’y ait pas de dommage caché ou qu’un autre Arduino n’aurait pas été détruit dans les même conditions.

Les capacités nominales sont celles pour lesquelles le fabricant donne le fonctionnement nominal et notamment les caractéristiques du composant. Par exemple une LED est habituellement donnée pour 20mA de courant nominal. Une sortie de l’Arduino Uno, Nano ou Mega est donnée pour 20mA de courant nominal.

Pour la bonne santé générale des montages, il est bien entendu préférable de rester avec des valeurs plus petites ou égales aux valeurs nominales.

Les capacités d’alimentation des Arduino

Oubliez ce que l’on peut lire sur le site arduino.cc pour l’Arduino Nano par exemple. « DC Current per I/O Pins 40 mA (I/O Pins) » correspond au maximum absolu. La valeur donnée pour l’Arduino Uno est, elle, de 20 mA. Il s’agit de la valeur nominale. Pour savoir de quoi le microcontrôleur est capable il faut aller voir sa datasheet et on s’aperçoit que c’est un peu plus compliqué [2].

Capacité globale

On trouve tout d’abord le courant maximum que le microcontrôleur est capable de fournir, c’est à dire la somme des courants tirés des broches à l’état haut. On pourrait représenter ce cas par le schéma de la figure 1.

Figure 1 : Capacité globale à fournir un courant
Figure 1 : Capacité globale à fournir un courant
Illustration de la capacité globale à fournir un courant. Ici les broches sont à l’état haut et la somme des courants i0 à in est égale à i.

Pour les ATMega328 qui équipent les Arduino Uno, Nano et Pro Mini et l’ATMega2560 qui équipe l’Arduino Mega, ce courant est de 200 mA. On voit que ce courant est atteint si, par exemple, on injecte 20 mA par LED dans 10 LED. Comme il s’agit d’un courant maximum, il est préférable de rester à une valeur plus faible, 100 mA par exemple, pour la bonne santé du microcontrôleur.

Symétriquement, le courant maximum que ces microcontrôleurs sont capables de drainer est de 200mA également. Ceci correspond au schéma présenté à la figure 2.

Figure 2 : Capacité globale à drainer un courant
Figure 2 : Capacité globale à drainer un courant
Illustration de la capacité globale à drainer un courant. Ici les broches sont à l’état bas et la somme des courants i0 à in est égale à i.

Capacité par ensemble de broches

Les broches de l’Arduino ne sont pas indépendantes. Elles sont rassemblées en ports et un port correspond à un registre d’un octet situé dans le microcontrôleur. L’ensemble des registres de cette nature appartient au GPIO, pour General Purpose Input Output. Sur un ATMega328, il existe 3 ports : le port B, le port C et le port D. Une capacité à fournir et à drainer un courant est associée à des ensembles de broches en fonction de leur appartenance aux registres du GPIO. La table 1 donne l’appartenance des broches des Arduino Uno, Nano et Pro Mini à ces ports ainsi que la capacité.

Table 1 : correspondance entre ports et broches sur un ATMega328
PortBroches
PB 8 à 13
PC A0 à A5
PD 0 à 7

Les tables 2 et 3 donnent respectivement la capacité à fournir et à drainer un courant associée à des ensembles de broches. Il s’agit du courant maximum cumulé sur toutes les broches de l’ensemble.

Table 2 : Capacité à fournir un courant
Broches des ports Broches de l’Arduino Courant fourni
PB0 à PB5 plus PD5 à PD7 8 à 13 plus 5 à 7 150 mA
PC0 à PC5 plus PD0 à PD4 A0 à A5 plus 0 à 4 150 mA
Table 3 : Capacité à drainer un courant
Broches des ports Broches de l’Arduino Courant drainé
PB0 à PB5 plus PD5 à PD7 8 à 13 plus 5 à 7 100 mA
PC0 à PC5 A0 à A5 100 mA
PD0 à PD4 0 à 4 100 mA

Su un ATMega2560, il existe 11 ports : A, B, C, D, E, F, G, H, J, K et L. La table 4 donne l’appartenance des broches de l’Arduino Mega à ces ports.

Table 4 : correspondance entre ports et broches sur un ATMega2560
PortBroches
PA 22 à 29
PB 50 à 53 et 10 à 13
PC 30 à 37
PD 18 à 21 et 38
PE 0 à 3 et 5
PF A0 à A7
PG 39 à 41 et 4
PH 16, 17, 6 à 9
PJ 14 et 15
PK A8 à A15
PL 42 à 49

Un port ne correspondant pas à des broches numérotées consécutivement sur l’Arduino, les choses se compliquent. La table 5 donne la capacité à fournir et à drainer un courant associée à des ensembles de broches sur l’Arduino Mega. Il s’agit du courant maximum cumulé sur toutes les broches de l’ensemble.

Table 5 : Capacité à fournir et à drainer un courant
Broches des ports Broches de l’Arduino Courant fourni ou drainé
PJ0 à PJ7 + G2 + PA0 à PA7 14, 15, 39, 22 à 29 200 mA
PC0 à PC7 + PG0 + PG1 + PD0 à PD7 + PL0 à PL7 30 à 38, 18 à 21, 40 à 49 200 mA
PG3 + PG4 + PB0 à PB7 + PH0 à PH7 50 à 53, 6 à 13, 16, 17 200 mA
PE0 à PE7 + G5 0 à 5 100 mA
PF0 à PF7 + PK0 à PK7 A0 à A15 100 mA
Parmi toutes ces limites, c’est évidemment la plus restrictive qui s’applique. Par exemple si vous connectez 15 LED drainant chacune 10mA sur les broches A0 à A14 d’un Arduino Mega, la limite générale des 200mA n’est pas dépassée mais par contre la limite de l’ensemble de broches A0 à A15 l’est. Il vaut mieux dans ce cas brancher 5 LED sur A0 à A4 (50 des 100mA possibles, on se rappellera que 100 est une limite absolue et rester à la moitié est le mieux), 5 sur 22 à 26 (50 des 200mA possibles) et 5 sur 0 à 4 (50 des 100mA possibles).

Tension en fonction du courant

Il faut également tenir compte des caractéristiques de l’amplificateur de sortie de la broche. Cet amplificateur est construit avec des transistors MOS et, lorsque ces transistors conduisent, ils présentent une résistance équivalente qui est significative ; On appelle cette résistance le Ron. Par conséquent, la tension que la broche impose est dépendante du courant qu’elle fournit car qui dit résistance, dit chute de tension selon la loi d’Ohm. Pour un ATMega328, ces informations se trouvent à la page 271 de la datasheet et nous les reproduisons ci dessous à la figure 3.

Figure 3 : Capacité à tenir une tension en fonction du courant
Figure 3 : Capacité à tenir une tension en fonction du courant
À une couleur correspond une température de fonctionnement. En effet le Ron des transistors augmente avec le température. Les courbes du haut donnent la tension pour un niveau LOW en fonction du courant. Les courbes du bas donnent la tension pour un niveau HIGH en fonction du courant.

Tout d’abord notez bien que les courbes ne sont définies que pour des intensités comprises entre 0 et 20mA. Il s’agit donc bien de l’intensité maximum en fonctionnement normal. Au delà on entre dans la zone rouge. Ensuite, si par exemple on prend une intensité de 20mA, la tension de la broche ne sera pas de 0V ou de 5V mais, à température ambiante, 25° C, respectivement de 0,45V et de 4,45V.

Par conséquent, piloter une charge qui demande un courant important nécessitera une amplification avec un transistor ou un ULN.

La capacité du régulateur de la carte Arduino

Alimenter d’autres dispositifs que le microcontrôleur lui même et les circuits qui lui sont connectés va solliciter le régulateur de tension situé sur la carte Arduino. Il y a ici deux facteurs limitants : le courant maximum que le régulateur peut fournir et la dissipation thermique dont il est capable. Habituellement le courant maximum est de 1A mais la dissipation thermique empêche d’atteindre ce courant en permanence. Il faut donc voir ce courant comme un maximum que l’on peut atteindre ponctuellement mais pas de manière permanente ou répétée.

Sur les Arduino Uno officiels, le régulateur est un NCP1117ST50T3G de On Semiconductors en boîtier SOT223. Ce régulateur linéaire est capable de supporter au maximum une tension d’entrée de 20V mais ses caractéristiques ne sont garanties que pour une tension de 12V [3]. On peut au passage noter que ce qui est donné comme caractéristiques pour un Uno n’est pas valable pour un clone. En effet le régulateur étant différent, les caractéristiques sont différentes. La figure 4 montre une photo du régulateur de l’Arduino Uno officiel.

Figure 4 : le régulateur du Uno officiel
Figure 4 : le régulateur du Uno officiel
On peut voir un plan cuivré destiné à dissiper la chaleur (encadré en rouge). Le même plan existe au verso de la carte et plusieurs vias mettent les deux plans en relation.

La dissipation thermique

Un régulateur linéaire évacue la puissance excédentaire en chaleur. Ainsi, si vous alimentez votre Arduino Uno en 12V via la prise d’alimentation, une diode Schottky de protection abaisse la tension de 1V environ et le régulateur va donc abaisser la tension de 11V à 5V. Si la consommation est de 100mA, le régulateur devra dissiper thermiquement 11V - 5V = 6V x 0,1A = 0,6W. Cette chaleur est évacuée via la surface de contact entre le circuit intégré et le boîtier et via le boîtier et l’air ambiant. Si on a un dissipateur, que ce soit une pièce en aluminium ou bien le circuit imprimé lui même, comme c’est le cas avec des composants CMS, il faut également le prendre en compte. On parle alors de résistance thermique, c’est à dire l’inverse de la conduction. Entre le circuit intégré et l’air ambiant, le boîtier SOT223 a une résistance thermique de 160°C/W. Par conséquent l’élévation de température sera de 160 x 0,6 = 96°C et donc avec un air ambiant à 20°C, on aura une température interne de 116°C. L’électronique du régulateur supportant une température (température de jonction) comprise entre -55 et 150°C, nous sommes dans les clous. De plus le régulateur est soudé sur un plan cuivré jouant le rôle de radiateur et permettant une température plus basse dans les faits. On comprend malgré tout que tirer, par exemple, 500mA du régulateur le fera chauffer probablement au delà de ce qui est admis et conduira au déclenchement d’un mécanisme interne de régulation de la puissance dissipée, et donc une limitation du courant, afin d’éviter la destruction du composant. Le résultat est de toutes façons qu’il ne remplit plus sa fonction.

Figure 5 : le régulateur d'un clone de Nano
Figure 5 : le régulateur d’un clone de Nano

Sur la figure 5, on voit le régulateur d’un clone de Nano chinois. Il s’agit ici d’un régulateur AMS1117 d’Advanced Monolithic Systems. Ce régulateur supporte une tension d’entrée maximum de 15V. La datasheet donne une température de jonction maximum de 125°C. On voit sur la photo que l’impasse a été faite sur le plan de dissipation thermique et ce régulateur ne sera pas capable de dissiper autant que celui du Uno [4].

Conclusion

Les capacités d’alimentation du microcontrôleur et du régulateur présentent des limites physiques en deçà des valeurs qui peuvent être annoncées, y compris sur le site officiel. Par conséquent il faut être prudent quand on effectue un montage. Si le courant nécessaire dépasse les capacités, il faudra prévoir une amplification via un transistor pour les broches en sortie et éventuellement une alimentation avec un régulateur séparé pour décharger celui qui est embarqué sur la carte Arduino.

Quelques pointeurs

[1sauf en ce qui concerne le Pro Mini

[2De manière générale, quand on aborde un problème, il faut creuser et aller voir la documentation du fabricant, ne vous fiez pas sans vérifier à des informations trouvées sur une page Web ou sur un forum, y compris celui d’arduino.cc

[4Mais la situation n’est pas franchement différente sur un Nano officiel même si le régulateur, un LM1117 de Texas Instruments, a de meilleures caractéristiques, tension d’entrée maximum de 20V et nominale de 15V, sa capacité de dissipation et sa température maximum de jonction ne sont pas meilleures

4 Messages

Réagissez à « Que peut-on alimenter avec un Arduino »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Atelier »

LOCODUINO, l’Arduino pour le train miniature

Débuter en Arduino sans Arduino ! (1)

Débuter en Arduino sans Arduino ! (2)

Comment alimenter l’Arduino sans ordinateur ?

Faire de jolis schémas avec Fritzing

Les entrées sorties de l’Arduino

Installer une bibliothèque

La compilation d’un projet Arduino

Entrées numériques et résistance pull-up (1)

Entrées numériques et résistance pull-up (2)

Monter une bibliothèque !

Démarrer en électronique

Conférence sur Arduino faite à Trainsmania (avril 2017)

LOCODUINO à Fédérail 2017

Comment réussir son projet Arduino

Utiliser les composants CMS

Que peut-on alimenter avec un Arduino

Salade de broches

Comment utiliser Arduino sans apprendre à programmer ?

Du sketch à l’exécutable

Programmer vos Arduino avec un fichier hexadécimal

Où et comment demander de l’aide ?

LOCODUINO raconté sur la chaîne Aiguillages

Les derniers articles

LOCODUINO raconté sur la chaîne Aiguillages


Dominique

Débuter en Arduino sans Arduino ! (2)


Christian

Où et comment demander de l’aide ?


Christian, Dominique, Jean-Luc, msport, Thierry

Débuter en Arduino sans Arduino ! (1)


Christian

Comment utiliser Arduino sans apprendre à programmer ?


Christian

Programmer vos Arduino avec un fichier hexadécimal


Christian

Du sketch à l’exécutable


Christian

Salade de broches


Thierry

Que peut-on alimenter avec un Arduino


Jean-Luc

La compilation d’un projet Arduino


Thierry

Les articles les plus lus

Les entrées sorties de l’Arduino

Comment alimenter l’Arduino sans ordinateur ?

Entrées numériques et résistance pull-up (1)

Que peut-on alimenter avec un Arduino

Démarrer en électronique

Utiliser les composants CMS

Installer une bibliothèque

Débuter en Arduino sans Arduino ! (1)

Programmer vos Arduino avec un fichier hexadécimal

Comment utiliser Arduino sans apprendre à programmer ?