[RESOLU]Gerer des LEDs RGB simultanement

Bonjour à tous,

nouveau venu dans le monde arduino je suis débutant en électronique mais la programmation ça va (j'ai codé en C# je suis pas trop dépaysé) j'ai suivi les cours disponibles sur OpenClassRooms et je me rapproche de vous afin de clarifier une choses :

les LEDs RGB possèdent 4 "pattes" : une pour le rouge (R), une pour le vert (G), une pour le bleu (B) et une pour le "GND" (GND) chacune relié à un PIN

pour chaque pattes R G et B il faut une résistance; jusque la j'ai bon ?

Ma question est la suivante : je voudrais "piloter" 4 LEDs RGB en même temps (que les 4 clignotent ou changent de couleurs en même temps) est il possible de les brancher en parallèles sur les même ports pin ?
Si oui faut il une résistance par LED ou une résistance pour les 4 suffit ?

En gros le schéma joint est il correct ?

J'ai peur qu'il n'y est pas assez de jus et que les LEDs ne s'allument pas correctement, faut il déporter l'alimentation des leds sur un circuit d'alimentation et gérer leurs allumage via des transistor ?

Si non pourriez vous m'indiquez la façon correct pour "piloter" 4 LEDs RGB en même temps ?

D'avance merci pour vos réponses

Erick

Attends confirmation parce que je vais peut être dire des conn*ries mais en cathode commune, il faut déja voir si une sortie peut alimenter 4 Leds , il me semble qu'on soit limité à 20mA par voie et 200mA au total de mémoire . Donc ça parait compliqué .

Avec des anodes communes , ca aurait peut être marché en utilisant un 5V externe ..

Si tu restes sur une Uno, il faudra peut être passer sur un multiplexeur pour avoir plus de broches I/O ...

Ou alors une Mega ..reste le soucis de la conso totale ..

Sinon, et selon ton appication, partir sur des leds type ws2812b en ruban ou à l'unité :wink:

Sinon, et selon ton application, partir sur des leds type ws2812b en ruban ou à l'unité

Dans l'ignorance du type de led, on ne peut qu'émettre des suppositions. A priori, ce ne sont pas des ws2812b qui n'ont pas de broches RVB...

es LEDs RGB possèdent 4 "pattes" : une pour le rouge (R), une pour le vert (G), une pour le bleu (B) et une pour le "GND" (GND) chacune relié à un PIN

Si ce sont des leds à cathodes communes oui. Mais il y a aussi des leds à anodes communes pour lesquelles GND est remplacé par VCC ou VSS.
Il y a aussi des leds "intelligentes" comme la ws2812b qui s'alimente en 5V et dont on donne les informations couleurs par voie série.

pour chaque pattes R G et B il faut une résistance; jusque la j'ai bon ?

En principe, c'est ce que l'on fait. Maintenant sur pleins de montages je vois 3 résistances de 220 ohms. En prenant les caractéristiques d'une led quelconque par exemple (je n'ai pas ta référence) je lis:

Généralité
Type 4-Pin
Couleur Rouge/vert/bleu

Valeurs électriques
Tension de fonctionnement max. 2.5/4.0/4.0 V
Courant de service 20 mA

Lumière
Flux lumineux 1.0/1.2/0.6 lm

Avec le même courant de 20 mA (le courant recommandé), le bleu émet déjà deux fois moins de lumière que le vert, et l’œil ayant une sensibilité plus importante dans le vert, le bleu n'éclairera plus beaucoup. Il faudrait diviser le courant pour le vert par 2 pour avoir le même flux lumineux voir par 3 pour avoir une impression de lumière équilibrée.

Oui, il faut bien 3 résistances, une par couleur. Si on mettait une seule résistance série (en reliant ensemble les 3 couleurs, la tension aux bornes des leds serait limitée à 2.5V environ par la led rouge, n'atteindrait jamais les 4V pour permettre aux deux autres leds de s'allumer. On n'aurait que du rouge.

Dans le montage donné, il y a 3 résistance de 220 ohms. Supposons qu'il n'y ait qu'une seule led, et que l'arduino délivre 5V:
Pour le rouge:
tension aux bornes de la led: 2,5V
tension aux bornes de la résistance: 5V - 2,5V = 2,5V
courant dans la led: 2,5V / 220o = 11mA

Pour le vert et pour le bleu:
tension aux bornes de la led: 4V
tension aux bornes de la résistance: 5V - 4V = 1V
courant dans la led: 1V / 220o = 4,5mA

le rouge va dominer largement!
Je sais que dans les montages, on met que des 220o, mais je pense que cela vient qu'avec 220o, on peut mettre n'importe quoi derrière, en particulier court-circuiter la led. on a alors un peu moins de 20 mA qui est le maxi des sorties. Et les leds modernes s'allument correctement avec 5 ou 10 mA.

On peut dire que la résistance de sortie de l'Arduino est de 25ohms; cela ne change pas les proportions, mais diminue un peu les courants.

Si on veut un courant de 10mA dans chaque diode, il faudrait prendre:
Pour le rouge:
tension aux bornes de la led: 2,5V
tension aux bornes de la résistance et de la résistance interne de 25o: 5V - 2,5V = 2,5V
Résistance série + résistance de sortie: 2,5V / 10mA = 250o
Résistance série 250o - 25o = 225o donc une 220o est un bon choix
Pour le vert et pour le bleu on aux bornes de la led: 4V
tension aux bornes de la résistance et de la résistance interne de 25o: 5V - 4V = 1V
Résistance série + résistance de sortie: 1V / 10mA = 100o
Résistance série 100o - 25o = 75o donc une 220o est un très mauvais choix!

Avec 220o, on ne verra pas le bleu... le vert un peu plus à cause de la sensibilité de l’œil.


pour chaque pattes R G et B il faut une résistance; jusque la j'ai bon ?

C'est ce que l'on fait en général, mais 3 leds c'est 9 pattes, ce qui fait 9 résistances. Et si on fait passer 10mA dans chaque led, avec 2 leds, cela fait 20mA, c'est bon pour l'Arduino. Pour 3 leds, on passe à 30mA, et cela n'est plus dans les recommandations. Il faut alors un amplificateur de courant (un MosFet par couleur par exemple).

Alimenté en 10mA (11mA c'est pareil), une sortie peur alimenter 2 leds et l'Arduino 20 (limitation des 200 mA). Il faut aussi savoir d'où vient le 5V, si on alimenta la carte en 12V, le régulateur ne tiendra pas.


Avec ton schéma, il n'y a qu'une seule résistance pas couleur (pas par led!). Toutes les leds rouges sont en parallèles, ainsi que toutes les vertes et toutes les bleues. Ainsi, on va avoir 11mA pour les l'ensemble des rouges, qu'il y en ai une seule ou 10.000 Il n'y aura que 11mA qui passe, et cela fonctionne parfaitement... sauf que pour 3 leds, chaque led va recevoir 3mA environ, donc s’éclairer moins. Au niveau éclairage, c'est pas terrible, mais si c'est pour une question de répartition des leds, cela passe.

Encore une fois, cela dépend de la question: pourquoi tu veux mettre 3 leds?


Je note aussi que les broches utilisées sont 3, 5 et 7. La 7 n'a pas le PWM (signe ~ sur la sortie). Si les fils rouges correspondent aux leds rouges, cela veut dire que ce montage permet d'allumer les leds rouges et vertes complètement ou de les éteindre par digitalWrite, mais aussi de les allumer un peu, beaucoup, ou passionnément en utilisant anaolgWrite. Ce n'est pas le cas du bleu, la sortie n'est pas PWM, et analogWrite ne fonctionne pas.


En résumé, le montage fonctionne, mais avec des leds qui ne s’allument pas beaucoup, on peut faire varier la lumière des rouges et des verts, les bleus étant allumés ou éteints

Partir sur des Ws2812b c'etait proposé.une alternative. Vu son montage ceux sont des cathodes.communes ..à confirmer.

Bonjour Messieurs,
tout d'abord merci pour le temps consacré à ma question qui était de l'ordre du théorique mais je vois maintenant qu'il ne faut surtout pas faire ça alors pardon pour le manque de précision;

à la lecture de vos réponses je comprends que "ce mettre à l'arduino" va s'avérer plus compliqué que ce à quoi je m'attendais mais je suis motivé :slight_smile:

Tout d'abord pour les LED il s'agirait de LED à Anode Commune Lien LED

Elles sont présentes dans le projets par choix esthétiques (mais cela me permet aussi d'apprendre), dans mon projet les LEDS sont éloignés les unes des autres d'au moins 10cm est ce possible avec les LED Ws2812b ? (en les dessoudant et en les ressoudant ? si on ajoute du câble entre chaque LED on augmente la résistance mais 10cm est il vraiment impactant ?)

Les broches utilisés sont mis au hasard mais au moins j'ai eu des précisions quand à la présence du ~ (Merci vileroi :slight_smile: )

Pour l'alimentation je souhaite que le tout fonctionne sur batterie ou pile
(mais j'ai lu un sujet cela me parait super compliqué je vais déjà le faire fonctionner en test)
je souhaite (mais si j'ai bien compris j'aurais pas le choix) faire un "circuit logic" et un "circuit d'alimentation"

Sur le schémas chaque couleurs des 4 LEDs sont montés en parallèles (pour économiser des PINs) à la lecture de ton explication Vileroi si j'ai bien compris il me faudrait, pour les LEDs rouges 4X11mA = 44mA en alimentation et pour les LEDs vertes 13.5mA et idem pour les LEDs bleus du coup en imaginant que le "circuit d'alimentation" délivre 200mA (afin d'alimenter des moteurs pas à pas mais c'est une autre histoire donc un autre sujet) il me suffirait d'ajouter des résistances calculés correctement pour chaque couleurs est ce que j'ai bon ?

Voila en espérant avoir été suffisamment précis
Encore merci à vous deux pour vos réponses et votre temps.

P.S: vous devez maintenant avoir une bonne idée de mon niveau d'amateurisme en matière d'électronique avez vous des tutos a me conseiller ?

pardon pour le manque de précision

Ce n'est pas toujours évident de savoir que quoi celui qui est à l'autre bout d'internet à besoin! Si on se fâche, on ne répond pas simplement. Maintenant l le lien ne nous dit pas du tout quelle est la led utilisée. Je ne blâme personne, je cherche à acheter 300 leds blanches, et je n'ai aucun renseignements non plus sur ce que je peux trouver.

Elles sont présentes dans le projets par choix esthétiques (mais cela me permet aussi d'apprendre), dans mon projet les LEDS sont éloignés les unes des autres d'au moins 10cm

Pour la distance, on s'en moque royalement, comme on ne transmet pas d'information, on ne risque pas d'en perdre. La résistance des fils est faible devant la résistance série, même si il y avait 50m cela fonctionnerait encore.

Pour la valeur du courant, ce n'est pas parce que quelqu'un a mis des 220o que tout le monde doit avoir les mêmes. Il faut voir avec ton besoin.

  • est-ce que 20 mA à partager entre toutes les leds est suffisant? -> si oui, ce n'est pas la peine d'aller chercher une usine à gaz, on les relit ensemble comme dans le schéma. Éventuellement changer la 220o en 110o pour le rouges.
  • je veux faire ça, mais je n'ai qu'une 100o ou une 120o -> Pas s’embêter, ça passera aussi
  • si on veut faire passer plus de 20 mA pour une couleur, toutes diodes confondues -> chercher un montage à NPN ou Fet, (ce qu'on a sous la main bien souvent). Un uln200x ne fonctionnera pas sous 5V pour des leds car il "perd" au moins 1V.

Avant d'aller plus loin, il faut avoir la réponse à cette question "quel courant?"

Si il y a des moteurs pas à pas, il faut décider de leur sort conjointement. Un moteur pas à pas fonctionne d'autant mieux que la tension d'alimentation est élevée, avec un driver. Je ne conçois plus maintenant de piloter les enroulements directement. Si 12V est un bon compromis, alimenter les diodes sur le 12V est certainement une bonne solution, et du coup les uln2003 est une solution.

Passer aux Ws2812b? Je ne le pense pas. C'est un composant demandant une liaison série , et il vaut mieux avancer lentement plutôt que de brûler des étapes.

Pour les tutos, j'aime en général bien ceux de openclassroom, mais je ne suis pas spécialiste.

Bonjour,

Je te conseille pour commencer la lecture de ce lien.

Il te permettra de bien comprendre comment fonctionne le PWM.

Ensuite pour commandes tes 3 leds à anode commune, le plus simple serait d'utiliser 3 transistors.

Si on part, par exemple, sur des transistors NPN, il suffit de mettre la patte de l'émetteur à la masse, et de relier la base à la broche PWM de l'arduino via une résistance d'environ 4,7k pour limiter le courant de base.
Pour information, il s'agit d'une utilisation d'un transistor en régime commuté aussi appelé 'tout ou rien'.

Les broches des leds correspondant à la même couleur seront ensuite relier au collecteur du transistor qui gère cette couleur en utilisant une résistance pour chaque broche.
Les anodes des leds étant relier sur ton alimentation (pile,..), tu devra donc calculer la valeur de ces résistances en fonction de la tension disponible pour limiter le courant dans la led.

Le courant sortant des broches de l'arduino se limitera donc à la somme des courants de base des 3 transistors.

Tu pourras ensuite ajuster la luminosité de chaque couleur en jouant sur la valeur du PWM.

Merci pour le lien Zlika, sur le site j’ai trouvé un cours pour débutant en électronique que je vais potasser, je mets le lien si jamais un débutant passe par ici Cours d’electronique. Pour ce qui est des PWM c’est intéressant mais dans l’idéal pour un premiers projets j’aimerais que les LEDs fonctionnent en “LOW ou HIGH” avec un fonctionnement optimal via les bonnes résistances (que je calculerais quand j’aurais le schéma)

Vileroi d’après ce que tu dis j’en tire cette conclusion peux tu me confirmer cela :

pour monter son projet il faut :

  1. lister les composants nécessaires
    (dans mon cas un arduino uno, deux motor shields adafruit, 3 petit moteur pas a pas 5v avec reducteur, 4 LEDs RGB, un anneau neopixel 12 LEDs, deux boutons poussoirs et en option un speaker avec un potentiomètre)

  2. déterminer quels courant sera nécessaires pour alimenter tous ça et choisir l’alimentation qu’il convient (on fait le bilan des consommations et on détermine l’alimentation en fonction de l’autonomie que l’on veut)

  3. de là on peut réfléchir à comment câbler tout ça afin que tout fonctionne (quel résistances, condensateur, transistor utiliser et ou les positionner)

est ce bien comme cela que vous procéder ?

P.S: pour le fonctionnement du projet si ça vous intéresse :
-à l’allumage les LEDs et l’anneau s’allume
-à la pression du bouton les LEDs et l’anneau s’éteignent et les moteurs s’activent environ 3-4 secondes
-à une seconde pression du bouton les moteurs s’activent 3-4 secondes et les LEDs et l’anneau s’allument et restent allumés (en diffusant un son de 10sec et s’arrête mais ça c’est toujours en option )

P.S: Je vous demande pas de me réaliser le schéma, je donne ces précisions pour que vous ayez une vision d’ensemble, mon but est d’apprendre ce qui m’est nécessaire pour pouvoir le faire tout seul (genre déterminer l’alimentation nécessaire, lire un datasheet, …

Les WS2812b se trouvent en ruban , à l'unité , en panneau et en anneau :wink: .

Ton anneau est surement composé de ce type de LEDs adressables. Autant utiliser le même type de composants pour ton besoin en LED RGB (ce n'est que mon avis).

Merci BrUnO14200,
effectivement après recherche :

"Les leds peuvent se raccorder en série, ce qui permet de les commander de manière indépendante avec une seule sortie d'un microcontrôleur type Arduino ou compatible."

cela conviendrais parfaitement à mon souhait : utiliser le moins possible de pin pour piloter un ensemble de LED merci à toi

je sais pas pourquoi dans ton premier post "à l'unité" n'as pas était capté par mon cerveau :slight_smile:

encore merci pour vos réponses

Je te conseille la lib d'Adafruit : Neopixel , niveau code c'est simple et il y a des tonnes d'exemples sur le Net.

Le choix des LEDs "classiques" est aussi intéressant pour le côté apprentissage de l'électronique ..c'est un peu la base :wink: .

Mais les WS2812b sont tellement faciles à mettre en place niveau hardware et software que ça vaut pas le coup de "s'embêter" surtout que tu as prévu un anneau type Neopixel.

Après ça a aussi l'inconvénient d'une liaison série : si ton fil de data se coupe pour x raisons , il n'y a plus rien (enfin si , la dernière commande envoyée il me semble ..)

Perso, je me suis fait une horloge/thermomètre avec un panneau de WS2812b : l'heure change de couleur en fonction de la température de la pièce. Et également une veilleuse "dynamique" pour mon petit gars qui se réveillait en pleine nuit pour trouver son doudou (en fin pour que nous nous allions chercher son doudou :grinning:) : elle s'allume avec le bruit , et s'éteint progressivement , et il y a un système de couleur qui change en fonction de l'heure pour qu'il sache quand il peut se lever (et laisser ses parents dormir ;D ) ..bref le parent indigne que je suis s'égare !

:wink:

Attention dans le choix des 4 leds indépendantes de ne pas choisir des modèles RGBW si l'anneau possède des leds uniquement RGB.

Dans le cas contraire, cela risque de compliquer la sélection des couleurs si tu les ajoutes sur la même ligne que l'anneau même si cela reste gérable.

Toutes les remarques que je vois me paraissent aller dans le bon sens

A partir du moment ou ton anneau est composé de leds série, ce serait dommage de rajouter une circuiterie imposante supplémentaire. Comme on doit faire le menu pour l'anneau, autant s'en servir pour tout le monde.

Le lien sur le moteur pas à pas ne m'apprend pas grand chose sur ses caractéristiques. Je ne sais pas trop employer les moteurs unipolaires, les miens étant bipolaires. Du coup, j'ai regardé la doc des plus gros moteurs, notamment un Nema 17 qui est proche de celui que j'ai. Jai a peu près le même courant, le même couple, il est aussi alimenté A PARTIR D'UNE TENSION de 12V, mais la tension permanente que l'on peut mettre n'est que de 2,8V environ. Du coup j'ai des doutes pour l'alimentation de ton motoréducteur. Quand il est dit 5V, c'est "à partir d'une alimentation de 5V" ou "en 5V continu? Une mesure de la résistance permettra sans doute de trancher. Bien souvent on n'a pas la doc.

Après ça a aussi l'inconvénient d'une liaison série : si ton fil de data se coupe pour x raisons , il n'y a plus rien (enfin si , la dernière commande envoyée il me semble ..)

C'est pareil en composants discrets. Coupe un fil, et cela ne marche plus!

Merci à tous pour vos réponses je vais m’orienter vers 4 WS2812b du coup je clos le sujet.
Bonne continuation a tous et à très vite sur le forum.