Ai-je vraiment besoin de résistances lors du contrôle de LED avec Arduino?

Je suis juste en train dessayer Arduino Uno pour la première fois avec 2 LED clignotantes sur une maquette. Tous les tutoriels sur Internet semblent utiliser une résistance. Je connais la fonction des résistances, mais est-ce vraiment important ici? Ces LED fonctionnent très bien sans résistance.

Commentaires

  • Cela dépend si vous voulez que votre LED fondre ou non. Si cela ne vous dérange pas ‘, omettez la résistance. :-).

Réponse

Méchant! :-). Sils disent dutiliser une résistance, il ya une bonne raison à cela! Éteignez-le, MAINTENANT!

La résistance est là pour limiter le courant de la LED. Si vous l omettez, la limitation de courant doit provenir de la sortie de l Arduino, et il ne l aimera pas. Comment savoir ce que doit être la résistance? Vous connaissez la loi dOhm? Si vous ne le faites pas, écrivez-la en grosses lettres:

\ $ V = I \ cdot R \ $

La tension est égale au courant multiplié par la résistance . Ou vous pouvez dire

\ $ R = \ dfrac {V} {I} \ $

Cest la même chose. La tension que vous connaissez: Arduino fonctionne à 5V. Mais tout cela ne passera pas par la résistance. La LED a également une chute de tension, typiquement autour de 2V pour une LED rouge. Il reste donc 3V pour la résistance. Une LED indicatrice typique aura un courant nominal de 20mA, alors

\ $ R = \ dfrac {5V – 2V} {20mA} = 150 \ Omega \ $

LArduino Uno utilise le ATmega328 microcontrôleur. La fiche technique indique que le courant de toute broche dE / S ne doit pas dépasser 40 mA, ce que lon appelle communément les valeurs maximales absolues. Puisque vous navez rien pour limiter le courant, il ny a que le (faible !) résistance du transistor de sortie. Le courant peut donc être supérieur à 40 mA et votre microcontrôleur subira des dommages.

edit
Le graphique suivant de la fiche technique ATmega montre ce qui se passera si vous pilotez la LED sans résistance de limitation de courant:

entrez la description de limage ici

Sans charge, la tension de sortie est de 5V comme prévu. Mais plus le courant consommé est élevé, plus la tension de sortie sera basse, elle chutera denviron 100 mV pour chaque charge supplémentaire de 4 mA. Cest une résistance interne de 25 \ $ \ Omega \ $. Alors

\ $ I = \ dfrac {5V – 2V} {25 \ Omega} = 120mA \ $

Le graphique ne va pas jusque-là, la résistance augmentera avec la température, mais le courant restera très élevé. Noubliez pas que la fiche technique a donné 40mA comme cote maximale absolue. Vous en avez trois fois plus. Cela endommagera certainement le port dE / S si vous faites cela pendant une longue période. Et probablement la LED aussi. Un indicateur LED de 20 mA aura souvent 30 mA comme cote maximale absolue.

Commentaires

  • Pas vraiment. 3 et vous avez gagné ‘ aucune lumière, car 3 x 2V > 5V, et 2 vous ‘ ll aura le même problème, seulement 1V baisse au lieu de 3V. Jai ajouté à ma réponse pour léteindre maintenant!
  • Jai perdu le compte du nombre de fois où jai écrit ce calcul dans les réponses ici. Je devrais avoir un script pour cela 🙂
  • Les LED sont conçues pour fonctionner à un certain courant maximum. La tension qui les alimente signifie que le courant nest pas contrôlé. Les ports sont conçus pour fournir un certain courant maximum. Les court-circuiter ou les surcharger PEUT entraîner une broche ou une destruction complète du circuit intégré ou simplement causer des problèmes de fonctionnement subtils. Ou pas.
  • @ JohnR.Strohm Je ne ‘ pas appeler cela une norme de lindustrie.
  • @ JohnR.Strohm – Comme m. Alin dit que ‘ nest pas une norme de lindustrie. Digikey répertorie les LED nominales de 10 mA allant de 0,4 mcd à 1000 mcd, et les LED 20 mA allant de 0,1 mcd à 54000 mcd. Il ny a ‘ aucune ligne dedans, et aucune garantie que votre LED 10mA sera bien visible. La tension de la LED rouge varie généralement de 1,8 V à 2,2 V. Pour une LED rouge, 1,6V est exceptionnellement faible.

Réponse

40plot,

Je dois dire que conduire une LED sans résistance nest PAS RECOMMANDÉ à moins que vous ne sachiez ce que vous faites. Cependant, si vous comprenez le comportement dune LED, vous pouvez la piloter sans résistance en toute sécurité. En fait, piloter une LED sans résistance de limitation de courant est souvent préférable.

Pourquoi piloteriez-vous une LED sans résistance? Simple, pour rendre votre circuit plus économe en énergie.

Si vous conduisez votre LED avec PWM réglé sur un cycle de service constant (c.-à-d. 5V PWM à 34% de service cycle pour atteindre une tension moyenne de 1,7 V)?

Oui et non. Lutilisation de PWM peut fonctionner aussi bien que lapplication dune tension spécifique (si vous faites attention), mais il existe de meilleures façons. Choses à se soucier lors de ladoption de lapproche PWM.

  1. La fréquence du PWM est importante.Lorsque vous utilisez PWM dans ce scénario, vous comptez sur la capacité des composants de votre circuit à gérer temporairement des courants élevés. Vos plus grandes préoccupations seront de savoir comment la LED gère un courant élevé temporaire et comment le circuit de sortie de votre puce peut gérer temporairement un courant élevé. courant élevé. Si cette information nest pas spécifiée dans la fiche technique, alors les auteurs de la fiche technique étaient paresseux. MAIS !!! Si cette information est spécifiée sur la fiche technique, vous pouvez en profiter en toute sécurité. Par exemple, la LED que jai à côté pour moi, il a un courant nominal maximal de 40 mA. Cependant, il a également un  » Courant direct de pointe  » de 200 mA, avec une note que le courant ne peut pas rester à 200mA pendant plus de 10us. Soooo … Je peux piloter la LED avec 1.7V (les LED de la tension directe typique de la fiche technique). Avec un cycle de service de 34% et une alimentation de 5V (34 % de 5 V = 1,7 V) produira une tension moyenne de 1,7 V, je dois juste massurer que mon PWM à lheure est de 10 us ou moins. n fois, le courant traversant la LED augmentera probablement à environ 58 mA (58 mA = consommation de courant typique à 1,7 V de ma diode divisé par 34%). 58mA dépassent le courant constant maximum de mes LED de 40mA par 18 mA. Enfin … jaurais besoin dune fréquence PWM de 33,3 kHz ou plus pour piloter en toute sécurité ma LED (33,3 kHz = linverse de [temps ON 10us divisé par 34% pour obtenir la période PWM]). En RÉALITÉ, je pourrais utiliser en toute sécurité PWM pour alimenter ma LED avec une fréquence PWM plus lente. La raison en est la suivante: les fiches techniques ne spécifient généralement pas tous les scénarios de fonctionnement valides dun composant. Elles ne spécifient pas ces scénarios car le fournisseur ne souhaite pas investir de temps dans la spécification et la prise en charge de lutilisation de leur composant pour une utilisation en coin Par exemple, avec ma LED, si je peux faire fonctionner la LED à 40mA pour toujours (40mA est le courant nominal maximum) et que je peux faire fonctionner la LED à 200mA pendant 10us. Ensuite, je peux être à 99,99999% certain que je peux faire fonctionner la LED en toute sécurité à 100 mA pendant une période de plus de 10 us, probablement proche de 20 us.

REMARQUE: tous les composants peuvent gérer en toute sécurité les pointes de courant temporaires au-dessus de leurs valeurs maximales tant que la durée du les pics actuels sont PETIT ASSEZ . Certains composants seront plus indulgents que dautres et, si vous avez de la chance, les composants « s La fiche technique précisera dans quelle mesure il peut gérer les pointes de courant.

  1. La tension de votre PWM est importante. Je vais démontrer mon point par exemple au lieu de via une explication. Si nous utilisons la LED dont je parlais plus tôt, nous savons que le cycle de service de 34%, à 33,3 kHz, à 5 V est sûr. Cependant, si notre tension était de 12 V, nous devrait retravailler nos calculs pour conserver la même quantité de courant circulant dans la LED. Notre cycle de service devrait chuter à 14,167% (1,7 V divisé par 12 V) et notre fréquence PWM minimale diminuerait à 14,285 kHz (linverse de [ 10us divisé par 14,167%]). TOUTEFOIS! , cela est préoccupant. Dans le scénario 5V, nous appliquons 5V pour 10us et dans le scénario 12V, nous appliquons 12V pour 10us. Nous avons plus que doublé la tension pendant ces 10us, il doit y avoir des conséquences. Et oui, il y en a! Ma fiche technique LED ne me donne pas les données nécessaires pour savoir à quelle hauteur dune tension que je peux utiliser pendant 10us avant dendommager ma LED. Sûrement 1000V pour 10us fera frire ma LED. Mais, comment savoir si 5V à 10us fera frire ma LED? ou 12V pour 10us? Sil ny a pas de spécification pour cela, vous prenez un risque. Donc … 5V pour 10us est risqué, mais très probablement sûr.

REMARQUE: Vous pouvez ajouter un condensateur au circuit pour faire la moyenne du PWM et faire disparaître ce problème.

  1. Vous devez également être conscient des capacités de la broche de sortie que vous avez connectée à votre LED. Le paramètre le plus important sera le courant de sortie maximal. Pour lArduino Uno, je pense que cest 40mA. Vous devez choisir un cycle de service PWM dont la tension moyenne maintient le courant traversant la LED en dessous de 40 mA. Afin de savoir quelles tensions produiront autant de courant, vous devez regarder la courbe des LED IV (tracé courant / tension). Pour une LED typique, une tension comprise entre 0,7 V (tension minimale typique nécessaire pour émettre la lumière de la LED) et 1,25 V sera presque certainement sans danger. Pourquoi 1,25 V est-il probablement sans danger? Eh bien, la plupart des LED ne dépasseront pas 40 mA à 1,25 V, même sans résistance de limitation de courant. Une autre chose qui aide à protéger quelquun dans le cas où ils appliquent trop de tension, cest que le circuit de sortie numérique de lArduino aura sa propre impédance de sortie, cette impédance de sortie sera faible, mais même une impédance de sortie de 20 ohms fournirait une protection non négligeable. Larduino uno a une impédance de sortie numérique denviron 250 ohms. En bref, si vous conduisez une LED en PWM à 1.0V à une fréquence élevée, pour une LED typique, il ny a aucune chance que vous endommagiez votre sortie numérique sur un Arduino Uno.

  2. Lapproche PWM pilote la LED en boucle ouverte (et il en va de même avec 1.Alimentation 7V sans PWM). Vous appliquez une tension moyenne à la LED qui est juste la bonne valeur pour allumer la LED mais pas assez élevée pour lendommager la LED. Malheureusement, la plage de tension de ON (et assez lumineuse pour voir) à la LED endommagée est très petite (cette plage sur ma LED est denviron 0,7 V). Il y a plusieurs raisons pour lesquelles le 1.7V que vous pensez appliquer ne sera pas toujours 1.7V …

a. Changements dans la température ambiante. Et si vous aviez un pilote de moteur, un régulateur de tension, etc. dans une boîte fermée qui contenait également la LED. Il ne serait pas rare que ces autres composants augmentent la température ambiante à lintérieur de lenceinte de 25 ° C à 50 ° C. Cette élévation de température WILL modifiera le comportement de votre LED, de votre régulateur de tension, etc. Votre 1,7V autrefois sûr ne sera plus ne sera plus de 1,7 V et votre LED qui faisait frire à 2,5 V va maintenant frire à 2,2 V.

b. Modifications de votre tension dalimentation. Et si votre alimentation était une batterie. Lorsque la batterie se décharge, la tension chute considérablement. Et si vous conceviez votre circuit pour quil fonctionne bien avec une batterie 9V légèrement usée, mais que vous ajoutiez ensuite une nouvelle batterie 9V. Les nouvelles batteries au plomb-acide 9 V ont généralement une tension réelle de 9,5 V. Selon le circuit qui fournit le 5V utilisé pour le PWM, ce 0,5V supplémentaire pourrait augmenter votre 5V PWM à 5,3V. Et si vous utilisiez une batterie rechargeable? Ils ont une plage de tension encore plus large tout au long de leur cycle de décharge.

c. Il existe dautres scénarios, comme le courant induit par EMI (les moteurs le feront).

Avoir une résistance de limitation de courant vous évite beaucoup de ces problèmes.

Utiliser PWM pour piloter une LED nest pas une très bonne solution, existe-t-il un meilleur moyen qui ne nécessite pas de résistance de limitation de courant?

Oui! Faites ce quils font dans les ampoules LED pour votre maison. Conduisez la LED avec un contrôleur de courant. Réglez le contrôleur de courant pour conduire le courant pour lequel votre LED est évaluée.

Avec le contrôleur de courant approprié , peut être considérablement augmentée, et vous pouvez conduire la LED en toute sécurité sans vous soucier de la plupart des problèmes liés à la conduite en boucle ouverte dune LED.

Linconvénient: Vous avez besoin dun contrôleur de courant, et vous avez augmenté la complexité du circuit de 10x. Ne vous découragez pas cependant. Vous pouvez acheter des circuits intégrés de contrôleur de courant, des circuits intégrés de pilote de LED ou créer votre propre convertisseur de suralimentation contrôlé en courant. Ce n’est pas si difficile. Prenez le temps de votre emploi du temps chargé et découvrez les convertisseurs Boost et Buck. En savoir plus sur la commutation des blocs d’alimentation. Ce sont eux qui alimentent votre ordinateur et ils sont extrêmement écoénergétiques. ou achetez un circuit intégré bon marché pour faire la plupart du travail à votre place.

Bien sûr, comme pour toutes les conceptions électroniques, il y a toujours plus de choses que vous pouvez faire pour améliorer votre circuit. Regardez la figure 3 dans le suivez le PDF pour voir à quel point même une ampoule LED domestique peut être complexe de nos jours …

http://www.littelfuse.com/~/media/electronics/design_guides/led_protectors/littelfuse_led_lighting_design_guide.pdf.pdf

En résumé: Vous devez décider vous-même du niveau de risque que vous êtes prêt à prendre prendre avec votre circuit. Utiliser 5V PWM pour piloter votre LED fonctionnera probablement très bien (surtout si vous ajoutez un condensateur pour lisser londe carrée PWM et maximiser votre fréquence PWM). Nayez pas trop peur de pousser vos appareils électroniques à lextérieur de leur opération habituelle conditions érentes, juste, soyez informé quand vous le faites, sachez les risques que vous prenez.

Profitez-en!

Pour info: je suis surpris par le nombre de personnes qui sautent immédiatement à la réponse,  » VOUS DEVEZ UTILISER UNE RÉSISTANCE DE LIMITATION ACTUELLE « . Cest un conseil bien intentionné, mais trop sûr.

Ort

Commentaires

  • I ‘ je suis surpris de voir combien de personnes considèrent cette réponse comme un précieux conseil de conception. Conduire une LED sans limitation de courant en utilisant PWM est tout aussi mauvais pour la LED que ce que fait lOP, en plus cela générera des ondulations EMI et VCC comme du crasy.
  • @DmitryGrigoryev, jai réalisé que je navais pas du tout répondu le courant de sortie maximal de la sortie numérique. Jai ajouté une nouvelle puce pour couvrir cela. PWM permet à quelquun de conduire en toute sécurité une LED sans résistance de limitation de courant. Les ondulations EMI et VCC sont créées chaque fois que vous conduisez des charges avec un signal numérique, mais cest courant (par exemple, pont en H, convertisseur Boost, commande servo Hobby, etc.) et ce nest guère une raison pour éviter le PWM. Des solutions raisonnables existent pour gérer les ondulations EMI et VCC si nécessaire. La plupart des gens ‘ ne se soucient pas des petites quantités dondulation EMI et VCC créées en pilotant une LED avec PWM.

Réponse

Vous pouvez utiliser les résistances de tirage intégrées comme suggéré ici :

Les résistances pullup fournissent suffisamment de courant pour éclairer faiblement une LED connectée à une broche qui a été configurée comme entrée.

Commentaires

  • Pas pour les LED, cela peut être utilisé pour les boutons mais pour les LED il y a un danger de casser la sortie
  • si ce nest pas sûr pourquoi les documents officiels le disent? (Jai ‘ moi-même essayé et cela a fonctionné comme décrit.)
  • Veuillez lire OUTPUT, il mentionne quil a besoin dune résistance série:  » Cest assez de courant pour allumer une LED brillamment (ne ‘ pas oublier la résistance série) , ou faire fonctionner de nombreux capteurs, par exemple, mais pas assez de courant pour faire fonctionner la plupart des relais, solénoïdes ou moteurs.  »
  • @MenelaosVergis il est prudent de le faire lorsque la broche en mode INPUT_PULLUP, ce nest pas sûr de le faire avec une broche en mode OUTPUT. Cela est clair dans la documentation si vous lisez les deux sections (et de lextrait cité dans cette réponse).

Réponse

La réponse courte est, oui et non, cela dépend de votre arduino et cela dépend de la couleur de votre led. Par exemple, une carte 3,3 V ne nécessite pas de résistance en série avec une petite LED verte, car la tension directe de la LED est assez élevée, voir ceci . La résistance interne est denviron 25 Ohm, prenez (3,3 – 3) / 25 = 12mA, donc cest toujours bien, vous ne devriez pas passer par le courant maximum par broche qui est de 40mA pour le processeur atmel 328p utilisé sur les cartes UNO (sauf si vous utilisez un dérivé du 328p où cela pourrait être une histoire différente). Cependant, pour un arduino fonctionnant à 5V, des problèmes surviendront avec une LED infrarouge qui a une tension directe beaucoup plus faible, généralement 1,2V, (5-1,2) / 25 = 150mA, et cest certainement trop, alors utilisez un limiteur de courant tel comme résistance pour piloter ce type de LED. La broche 13 sur les cartes Arduino (ou une autre broche sur les variantes) a déjà une led et une résistance en série. De plus, lalimentation de la carte a une valeur nominale maximale, généralement 200 mA, et vous devez rester en dessous de ce niveau, et vous ne pouvez pas tirer plus dune certaine quantité de mA par groupe de broches, ceci est expliqué ici . Si vous souhaitez piloter de nombreuses LED, envisagez dutiliser un pilote de LED matriciel qui effectue le multiplexage pour vous, voir par exemple ma zone youtube où je démontre le pilote MAX7219CNG. Mais aussi Arduino Uno peut faire le multiplexage pour vous, voir mon thermomètre infrarouge avec 4 LED à sept segments sur youtube. Bon piratage.

Réponse

La réponse de stevenvh explique ce que vous devez faire, mais vous devez également calculer la dissipation de puissance à travers la LED afin de ne pas griller la résistance de chute de tension. Par exemple, si la tension dalimentation est de 5 V et la tension directe de la résistance de 1,0 V, vous perdrez 4 V. Lutilisation dune résistance de 220 ohms se traduira par un courant de (I = V / R) de 18 mA et une puissance dissipation (P = IV) de 72 mW.

0402 Les résistances de taille impériale (1005 métriques) sont généralement de 1/16 W, soit 62,5 mW. Donc, dans ce cas, cela ne fonctionnerait pas; cela surchaufferait la résistance et raccourcir sa durée de vie. Vous devrez donc passer à une résistance 0402 avec une puissance de 1 / 10W, ou une résistance 0603 plus grande.

Chaque fois que vous effectuez des calculs comme ceux-ci, ajoutez-les au schéma, de sorte que le réviseur peut vérifier facilement votre travail.

Notez que la tension directe (et donc la valeur de la résistance) est fonction de la LED, et que différentes couleurs de LED auront des valeurs différentes. Les LED bleues en particulier ont une tension directe élevée (~ 3.0V typ). Donc, si vous essayez dobtenir quatre LED différentes pour avoir la même luminosité, vous devrez répéter les calculs pour chaque LED. Pour vraiment bien faire les choses, regardez les caractéristiques optiques de chaque LED à son courant nominal et ajustez-les en conséquence.

Réponse

OUI! Ça peut être fait.

Même si ce qui a été dit est correct … il existe un autre moyen. Une manière plus économe en énergie de piloter des LED avec 5v.

Ceci est un peu non documenté et il est inconnu si la solution va user les LED, mais cela peut être fait. Je le fais réellement.

Utilisation de PWM par le matériel: Voici un exemple :

#include <avr/io.h> #include <util/delay.h> void pwm_init() { // initialize TCCR0 as per requirement, say as follows TCCR0 |= (1<<WGM00)|(1<<COM01)|(1<<WGM01)|(1<<CS00); // make sure to make OC0 pin (pin PB3 for atmega32) as output pin DDRB |= (1<<PB3); } void main() { uint8_t duty; duty = 1; // duty cycle = 0.39% of the time (depends on the oscillator.) // initialize timer in PWM mode pwm_init(); // run forever while(1) { OCR0 = duty; } } 

PWM peut également être simulé à laide dun logiciel et des minuteries avrs. Vous pouvez trouver un exemple dans la bibliothèque lufa, appelé LEDNotifier.c.

Ma conclusion: Il est possible de piloter une led sur 5V.

AVANTAGES: Pas besoin de résistance. Un peu dénergie économiser aussi (~ 50%)

INCONVÉNIENTS: Je ne sais pas si le composant est stressé et sur sa durée de vie réduite.

Il y a « un gars qui a également fait cette expérience à Stanford et a publié des informations sur son site .

Commentaires

  • Cela ne ‘ t semble être une bonne idée. Vous ‘ il est probable que le contrôleur achète plus de courant quil ne le fait ‘, même si vous ‘ ne le faites pas pendant très longtemps.
  • Comme dit, ceci nest pas documenté. LE / S de sortie Arduino UNO peut conduire autour de 40ma-50ma. Cest constant. Je peux à coup sûr gérer des impulsions très courtes avec plus de courant. Veuillez jeter un œil à wikipedia .
  • Dans lenvironnement Arduino, on peut obtenir PWM plus facilement avec analogWrite() sur la broche correspondante. Toujours pas sûr que ce soit une bonne idée, mais au moins pour les LED IR, il est ‘ commun pour les fiches techniques d’autoriser des courants de crête considérablement plus élevés pour des cycles de service inférieurs à 100% .
  • Je ‘ je suis presque certain que les économies d’énergie seront négatives par rapport à une solution à résistance, car l’efficacité de la LED diminue à mesure que le courant augmente.
  • @ScottSeidman Pourquoi ‘ nest-ce pas une bonne idée? simplement parce que la plupart des gens pensent quil nest pas recommandé dutiliser une LED sans résistance? cette réponse a prouvé une enquête, une source très respectueuse comme lUniversité de Stanford et daprès ce que je peux expérimenter, cela fonctionne. Jadore vraiment les publications contrevues car elles disent que ceux qui ont voté contre sont tout simplement biaisés. Quel paradoxe …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *