Limite de composants sur l'arduino

Hello,

Jusqu'à maintenant je fais mes cours mais je ne sais toujours pas combien de composants je peux mettre sur un Arduino. Comment savoir si j'ai mis trop de potentiomètres, diodes etc ?

Et si jamais j'ai trop de composants branchés dessus, qu'est ce que ça va faire ?

Merci d'avance.

S’ils commencent à tomber sur les bords de la carte ce qu’il y en a trop entassés sur la carte. Une mega fera un plateau plus grand qu’un EsP32

:innocent:


Si vous faites des branchements il faut regarder les courants et la spec. Pas dépasser 20mA par pin par exemple sur Uno, la doc dit aussi combien par ports en sink ou émission.

1 Like

Si tu ne nous dis pas quelle sorte de composants tu ajoutes, comment peut-on répondre ?

Que les choses soient claires : Arduino ne veut rien dire c'est une marque comme Mercédes qui fabrique des bolides pour la formule 1 ou les 24 h du Mans, mais aussi des Smarts.
Il faut impérativement indiquer au minimum le nom de la carte, mieux le nom exact du microcontrôleur.

A mon avis la limite la plus importante est sur le courant.
Les limitations en courant dans les étages de sorties du micro ne se trouvent pas dans la doc Arduino, mais dans celle du fabricant du micro.

Pour le modèle de cartes arduino le plus répandu chez les primo-utilisateurs, je parle de la UNO le micro est un Atmel/Microchip atmega328p.

La datasheet (le juge de paix) indique :
Attention dans la liste qui suit, tout est à respecter simultanément :

  1. Imax sur Vcc = 200 mA

  2. I max sur GND = 200 mA

  3. I max sur une sortie :
    _ Exceptionnellement et pendant un temps très court 40 mA (à considérer comme droit à l'erreur)
    _ En service permanent 20 mA

  4. Les sorties sont groupées par huit maximum dans des "ports"
    Mode sink (le courant entre dans le microcontrôleur, c'est-à-dire que la charge est entre le Vcc et la pin) : I max sur le port <= 100 mA, soit si les 8 sorties sont activées, en moyenne 12,5 mA par sortie)
    Mode source (le courant sort de la pin du microcontrôleur, c'est à dire que la charge est entre la pin et la masse) : I max sur le port <= 150 mA.

Dans certaines cartes comme la DUE (micro ARM) le courant max n'est que de 5 ou 8 mA sur certaines pins.

Il faut savoir aussi que dans un atmega328p, d'après les courbes disponibles dans la datasheet, la résistance résiduelle (le Rdson) des transistors de sortie est d'environ 30 ohms : c'est-à-dire qu'avec un courant de 20 mA dans une sortie, la tension réellement disponible sera :
état bas = 0,6 V au lieu de 0 V
état haut = 4,4 V au lieu de 5 V

Ma conclusion : un microcontrôleur n'est pas fait pour fournir de la puissance.

Merci 68tjs :slightly_smiling_face:
Je vais y aller par étapes par ce que ce n'est pas évident.

Je ne sais pas c'est une question générale, j'aimerai (à terme) ne pas avoir à demander à chaque fois que je fais un montage si il y a des erreurs. Mais tu réponds au dessous je vois :slightly_smiling_face:

Alors j'ai cherché ce qu'est une broche VCC (car je n'en ai pas sur mon leonardo et mon mega) et il semblerait que ce soit l'équivalent de la broche 5v.

Donc je dois mesurer l'intensité de cette broche ? C'est à dire comme ceci ?

Capture

(J'utilise https://www.tinkercad.com pour faire les tests)

Dans votre exemple vous mesurez le courant passant de la pin 5V vers le GND au travers de la LED et de la résistance de limitation de courant.

si vous branchez le même montage sur la pin 3 par exemple au lieu de la pin 5V et que vous mettez cette pin 3 à HIGH, elle va donc débiter 13,5mA. c'est OK parce que la spec dit qu'on peut monter en pic à 40mA et qu'à 20mA en régime continu on est OK.

ça veut dire aussi que sur le port contenant cette pin 3 on utilise 13.5mA de l'allocation max des 150mA possible

Merci @J-M-L !

Ok donc là je suis dans ce cas là :

Et ce cas là aussi :

Mais ça, je ne comprends pas :

Est-ce que c'est possible d'avoir un exemple sur comment le mesurer ?
Merci d'avance.

vous voulez mesurer quoi ? c'est le max avant que votre µC ne grille...

Ah je vois :laughing:

Donc tout ce qu'il faut retenir c'est :

  • 20 mA "en service permanent" par broches
  • 40 mA (à considérer comme droit à l'erreur)
  • On fait gaffe à ne pas dépasser 150 mA par ports

Et à propos du mode "Mode sink" en gros il permet de faire rentrer du courant dans le microcontrôleur. Je ne vois pas dans quel cas je pourrais avoir ce genre de situation.

prenez une matrice de boutons par exemple

pour trouver quel bouton est appuyé on envoie successivement un HIGH dans les lignes verticales et on regarde ce qui rentre dans les lignes horizontales.

Et ne pas oublier 200mA maximum pour le circuit complet. C'est-à-dire la consommation de tous les ports + la consommation de l'ATmega lui-même.

Un exemple simple:

  • Lorsqu'une LED est connectée entre le +5V et un I/O du courant entre par la broche de l'I/O (mode sink). Le courant "arrive" du +5V et "s'écoule" dans l'I/O.
  • Lorsqu'une LED est connectée entre un I/O et GND du courant sort de la broche de l'I/O (mode source). L'I/O fourni le courant qui s'écoule vers le GND.

Si j'ai un conseil à te donner : ne joue pas à te rapprocher des limites.
C'est bien connu, à force de tirer sur la corde, elle casse.

Le courant maximal donné par le concepteur du microcontrôleur est fixé dans des cas particuliers.

Il faut déjà faire l'effort de rechercher à quel port appartiennent les E/S avec la dénomination arduino qui n'a strictement rien à voir avec la dénomination du concepteur du micro.

Je prends un exemple particulier : le port C
Je ne le choisis absolument pas par hasard.

Les E/S raccordées à ce port sont selon la dénomination arduino A0, A1, A2, A3, A4, A5.
Premiere information : ce ne sont pas que des entrées analogiques.
Ce sont des E/S numériques, comme les autres, mais elles ont de particulier :
A0 à A5 : ont des sous fonctions mesure analogique
A4 et A5 : ont en plus une autre sous fonction numérique : bus I2C.

Si tu fais digitalWrite(A0, HIGH) l'E/S reste en mode numérique.
Si tu fais analogRead(A0) l'E/S "dite A0" commute dans sa sous fonction mesure analogique.

J'en revient au sujet :
Port C (8 bits)
bit 0 => A0
.......
Bit 5 => A5
Il reste 3 bits de disponible dans le port.
Un est pris par le Reset
Deux sont pris pour le résonateur (~ faux quartz à 16 MHz)

Un peu plus de courant est par conséquent disponible.
Attention ce travail est à faire pour tous les ports C mais aussi B et D (pour la UNO).
Une carte Mega n'aura pas les mêmes ports tout comme une Leonardo.
C'est donc à prendre très précautionneusement.

Autre point : dans un programme toutes les sorties ne sont pas actionnées simultanément, certaines sont en mode sink, d'autres en mode source.
On pourrait penser que cela laisse plus de liberté.

Tirer sur la corde en utilisant ces propriétés est casse-figure => c'est absolument certain qu'un jour tu crameras une carte.

Tu ne pourra pas déterminer quand elle cramera, mais ce dont tu peux être sûre, c'est que ce sera au pire moment.=> Loi dite de "la tartine beurrée" qui tombe toujours le beurre contre le sol.

Autre point :
Un jour, tu passeras à des microcontrôleurs plus modernes, avec des fréquences d'horloge bien plus élevées.
On n'y peut rien, mais pour monter en fréquence, il faut des transistors plus petits.
Qui dit transistor plus petit dit courant max dans le transistor plus faible.

Certains constructeurs de micro permettent de régler la taille du transistor de sortie (Stm32, Rp2040) d'autres prévoient quelques sorties plus puissantes.
Dans tous les cas il faut lire la datasheet et la "Référence utilisateur" et ce n'est vraiment pas simple.

.
Autant prendre les bonnes habitudes de suite, ne pas jouer avec le feu en considérant qu'une sortie est faite pour fournir du courant.
Pour fournir du courant, on utilise un transistor externe en interface de puissance.

Ceci dit, chaque cas est un cas particulier.
Il faut analyser, il est impossible de donner une règle générale.

Merci pour l'exemple !

Oui Merci !

Merci pour l'exemple j'ai compris :slightly_smiling_face:

Oui oui, mais il fallait bien que je le sache pour ne pas faire de bêtises :slightly_smiling_face:

J'ai fais quelques recherche pour avoir des notes.
ATmega32U4 (Leonardo) :

DC Current per I/O Pin 10 mA
Et voici les valeurs maximales
leonardo

Donc,

  • 10 mA en service permanent par broches
  • 40 mA (à considérer comme droit à l'erreur)
  • 200mA maximum pour le circuit complet

J'ai trouvé la doc sur ATmega32U4 mais ce n'est pas évident de trouver les ports pour déterminer le seuil max comme tu l'as fais @68tjs

Pour le ATmega2560 :

  • 20 mA en service permanent par broches
  • 40 mA (à considérer comme droit à l'erreur)
  • 200mA maximum pour le circuit complet

J'ai la doc de l'ATmega2560 et effectivement, ça donne un peu la migraine pour trouver les infos sur les ports.

Si c'est si important pourquoi ne pas mettre ça en gros sur la boite du produit... Et les vendeurs mettent des enfants en photo qui jouent avec un Arduino, ça m'étonnerait que tous les enfants cherchent se genre d'informations :laughing:

Ce qui est indiqué page 7 du document en lien, ne correspond pas à ce que tu cherche?

La moral, c'est que Arduino n'est pas pour les enfants :joy:

Pour le ATmega32U4 c'est cette datasheet qui peut t'intéresser?

C'est ce que disait Éliane à Tarzan (Désolé, faut bien passer le temps dans le RER :grinning:)

Hello terwal, merci :slightly_smiling_face:

Effectivement ils parlent des ports mais l'information je cherche était ici :
ATmega32u4 (page 385) :

1)The sum of all IOH, for ports A0-A7, G2, C4-C7 should not exceed 100mA.
2)The sum of all IOH, for ports C0-C3, G0-G1, D0-D7 should not exceed 100mA.
3)The sum of all IOH, for ports G3-G5, B0-B7, E0-E7 should not exceed 100mA.
4)The sum of all IOH, for ports F0-F7 should not exceed 100mA.

Ici c'est simple il ne faut pas dépasser 100mA et c'est pareil pour tout les ports.

ATmega2560 (page 356) :

1)The sum of all IOH, for ports J0-J7, G2, A0-A7 should not exceed 200mA.
2)The sum of all IOH, for ports C0-C7, G0-G1, D0-D7, L0-L7 should not exceed 200mA.
3)The sum of all IOH, for ports G3-G4, B0-B7, H0-H7 should not exceed 200mA.
4)The sum of all IOH, for ports E0-E7, G5 should not exceed 100mA.
5)The sum of all IOH, for ports F0-F7, K0-K7 should not exceed 100mA.

Bon ici il faut que je détermine les quels sont à 200mA et les quels sont à 100mA.

Ceci devrait pouvoir m'aider :


C'est un peu bizarre le port E qui doit être noté de E0 à E7 n'est pas dans l'ordre.

On a pas de PE2, PE6, PE7...

mega

Effectivement, je pensais que tu avais trouvé l'information puisque tu le citait.
Pe2, pe7 doit être connecté à l'oscillateur externe ?
Je suppose que pe6 doit être aussi utilisé pour un usage interne à la carte.
Il faudrait regarder le schéma du circuit, c'est peut être pour éviter des croisements de piste?

Inutilisé d'après le schéma de la carte.

De toutes les façons, l'ATmega2560 a 86 I/Os et la carte est déjà bien remplie. Il faut se faire une raison on ne peut pas tout avoir.

Oui ce n'ai pas bien grave :slightly_smiling_face:
Merci à tous !

Bonjour,
certes, mais surtout penser à mettre les colonnes non actives en INPUT, pour éviter les odeurs désagréables