Heb ik echt weerstanden nodig bij het aansturen van LEDs met Arduino?

Ik probeer Arduino Uno voor het eerst uit met 2 knipperende LEDs op een breadboard. Alle tutorials op internet lijken een weerstand te gebruiken. Ik ken de functie van weerstanden, maar maakt het hier echt uit? Deze LEDs werken prima zonder weerstand.

Opmerkingen

  • Dat hangt ervan af als je wilt dat je LED smelt of niet. Als je het niet ‘ niet erg vindt, laat de weerstand dan weg. :-).

Antwoord

Stout! :-). Als ze zeggen een weerstand te gebruiken, is daar “een goede reden voor! Schakel het NU uit!

De weerstand is er om de stroom van de LED te beperken. je laat het weg, de stroombegrenzing moet van de Arduino-output komen, en het zal het niet leuk vinden. Hoe kom je erachter wat de weerstand moet zijn? Kent u de wet van Ohm? Als u dat niet doet, schrijf het dan in grote letters:

\ $ V = I \ cdot R \ $

Spanning is gelijk aan huidige keer weerstand . Of je zou kunnen zeggen:

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

Het is hetzelfde. Het voltage dat je kent: Arduino werkt op 5V. Maar niet alles gaat over de weerstand. De LED heeft ook een spanningsval, typisch rond 2V voor een rode LED. Er blijft dus 3V over voor de weerstand. Een typische indicator-LED heeft dan een nominale stroom van 20mA,

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

De Arduino Uno gebruikt de ATmega328 microcontroller. In de datasheet staat dat de stroom voor een I / O-pin niet hoger mag zijn dan 40mA, wat algemeen bekend staat als Absolute Maximum Ratings. Aangezien je niets hebt om de stroom te beperken, zijn er alleen de (low !) weerstand van de uitgangstransistor. De stroom kan zo goed hoger zijn dan 40mA, en uw microcontroller zal schade oplopen.

bewerken
De volgende grafiek van de ATmega” s datasheet laat zien wat er gebeurt als je de LED aanstuurt zonder stroombegrenzende weerstand:

voer hier de beeldbeschrijving in

Zonder belasting is de uitgangsspanning 5V zoals verwacht. Maar hoe hoger de opgenomen stroom, hoe lager die uitgangsspanning zal zijn, het zal ongeveer 100mV dalen voor elke extra 4mA-belasting. Dat is een interne weerstand van 25 \ $ \ Omega \ $. Dan

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

De grafiek gaat niet zo ver, de weerstand stijgt met de temperatuur, maar de stroom blijft erg hoog. Onthoud dat de datasheet 40mA gaf als absolute maximale beoordeling. Dat heb je drie keer. Dit zal beslist de I / O-poort beschadigen als je dit lange tijd doet. En waarschijnlijk ook de LED. Een indicator-LED van 20 mA heeft vaak 30 mA als absolute maximale beoordeling.

Opmerkingen

  • Niet echt. 3 en je hebt ‘ geen licht gekregen, omdat 3 x 2V > 5V, en 2 jij ‘ Ik heb hetzelfde probleem, alleen 1V daling in plaats van 3V. Ik heb aan mijn antwoord toegevoegd om het nu uit te schakelen!
  • Ik ben de tel kwijtgeraakt hoe vaak ik die berekening hier in antwoorden heb geschreven. Ik zou er een script voor moeten hebben 🙂
  • LEDs zijn ontworpen om te werken met een bepaalde maximale stroomsterkte. Spanning die ze aandrijft, betekent dat de stroom ongecontroleerd is. Poorten zijn gemaakt om een bepaalde maximale stroom te leveren. Ze kortsluiten of overbelasten KAN leiden tot pin of vernietiging van de hele IC of gewoon subtiele bedieningsproblemen veroorzaken. Of niet.
  • @ JohnR.Strohm Ik zou ‘ het geen industriestandaard noemen.
  • @ JohnR.Strohm – Net als m. Alin zegt dat ‘ geen industriestandaard is. Digikey vermeldt 10mA nominale LEDs variërend van 0,4 mcd tot 1000 mcd, en 20mA LEDs variërend van 0,1 mcd tot 54000 mcd. Er ‘ staat er geen lijn in, en er is geen garantie dat uw 10mA LED goed zichtbaar zal zijn. Spanning van rode leds varieert doorgaans van 1,8 V tot 2,2 V. Voor een rode LED is 1.6V uitzonderlijk laag.

Antwoord

40plot,

Ik moet zeggen dat het besturen van een LED zonder weerstand NIET AANBEVOLEN wordt, tenzij je weet wat je doet. Als u echter begrijpt hoe een led zich gedraagt, kunt u er veilig op rijden zonder weerstand. In feite is het besturen van een LED zonder stroombegrenzingsweerstand vaak beter.

Waarom zou je een LED zonder weerstand aansturen? Eenvoudig, om uw circuit energiezuiniger te maken.

Moet u uw LED aansturen met PWM ingesteld op een constante inschakelduur (bijv. 5V PWM bij 34% inschakelduur) cyclus om een gemiddelde spanning van 1,7 V te bereiken)?

Ja en nee. Het gebruik van PWM kan net zo goed werken als het toepassen van een specifieke spanning (als u voorzichtig bent), maar er zijn betere manieren. Dingen om je zorgen over te maken bij het nemen van de PWM-benadering.

  1. De frequentie van de PWM is belangrijk.Wanneer u in dit scenario PWM gebruikt, vertrouwt u op het vermogen van de componenten van uw circuit om tijdelijk hoge stromen aan te kunnen. Uw grootste zorgen zullen zijn hoe de LED een tijdelijke hoge stroom verwerkt en hoe het uitgangscircuit van uw chip een tijdelijke hoge stroom. Als die informatie niet is gespecificeerd in de datasheet, dan waren de datasheet-auteurs lui. MAAR !!! Als die informatie op de datasheet staat, dan kun je er veilig van profiteren. Bijvoorbeeld de LED die ik hierna heb voor mij heeft een maximale stroomsterkte van 40 mA. Het heeft echter ook een ” Peak Forward Current ” beoordeling van 200mA, met een opmerking dat de stroom niet langer dan 10 us op 200mA kan blijven. Zoooo … ik kan de LED aansturen met 1.7V (de typische voorwaartse spanning van de LEDs uit de datasheet). Met een duty cycle van 34% en een voeding van 5V (34 % van 5V = 1.7V) zal een gemiddelde spanning van 1.7V produceren, ik moet er alleen voor zorgen dat mijn PWM op tijd 10us of minder is. n-tijd zal de stroom door de LED waarschijnlijk stijgen tot ongeveer 58mA (58mA = typische stroomafname bij 1,7 V van mijn diode gedeeld door 34%). 58mA overschrijdt mijn maximale constante stroomsterkte van 40mA met 18 mA. Eindelijk … Ik zou een PWM-frequentie van 33,3 kHz of hoger nodig hebben om mijn LED veilig aan te sturen (33,3 kHz = het omgekeerde van [10us AAN-tijd gedeeld door 34% om de PWM-periode te krijgen]). In REALITY kon ik PWM veilig gebruiken om mijn LED van stroom te voorzien met een langzamere PWM-frequentie. De reden hiervoor is: Datasheets specificeren meestal niet alle geldige besturingsscenarios van een component. Ze specificeren die scenarios niet omdat de leverancier geen tijd wil investeren in het specificeren en ondersteunen van het gebruik van hun component voor hoekgebruik. Bijvoorbeeld, met mijn LED, als ik de LED voor altijd op 40mA kan gebruiken (40mA is de constante maximale stroomsterkte) en ik de LED gedurende 10us op 200mA kan gebruiken. Dan kan ik er 99,99999% zeker van zijn dat ik dat kan gebruik de LED veilig op 100mA gedurende een bepaalde periode langer dan 10us, waarschijnlijk dichtbij 20us.

OPMERKING: Alle componenten kunnen veilig omgaan met tijdelijke stroompieken boven hun maximale nominale waarden zolang de duur van de huidige pieken zijn KLEIN GENOEG . Sommige componenten zullen vergevingsgezinder zijn dan andere, en als je geluk hebt, kunnen de componenten datasheet zal specificeren hoe goed het kan omgaan met stroompieken.

  1. Het voltage van uw PWM is belangrijk. Ik zal mijn punt demonstreren met een voorbeeld in plaats van met een uitleg. Als we de LED gebruiken waarnaar ik eerder verwees, weten we dat een inschakelduur van 34%, bij 33,3 kHz, bij 5 V veilig is. Als ons voltage echter 12 V was, zouden onze berekeningen moeten herwerken om dezelfde hoeveelheid stroom door de LED te laten stromen. Onze duty cycle zou moeten dalen tot 14,167% (1,7 V gedeeld door 12 V) en onze minimale PWM-frequentie zou afnemen tot 14,285 kHz (het omgekeerde van [ 10us gedeeld door 14,167%]). ECHTER! is dit reden tot bezorgdheid. In het 5V-scenario passen we 5V toe voor 10us en in het 12V-scenario passen we 12V toe voor 10us. We hebben de spanning tijdens die 10us meer dan verdubbeld, er moeten enkele consequenties zijn. En ja, die zijn er! Mijn LED-datasheet geeft me niet de gegevens die nodig zijn om te weten hoe hoog van een spanning die ik kan gebruiken voor 10us voordat ik mijn LED beschadig. Zeker 1000V voor 10us zal mijn LED bakken. Maar hoe weet ik of 5V bij 10us mijn LED zal bakken? of 12V voor 10us? Als er geen specificatie voor is, neemt u een risico. Dus … 5V voor 10us is riskant, maar hoogstwaarschijnlijk veilig.

OPMERKING: je kunt een condensator aan het circuit toevoegen om het gemiddelde uit de PWM te halen en dit probleem te laten verdwijnen.

  1. Je moet ook op de hoogte zijn van de mogelijkheden van de outputpin waarmee je je LED hebt verbonden. De belangrijkste parameter is de maximale uitgangsstroom. Voor de Arduino Uno denk ik dat dat 40mA is. U moet een PWM-duty-cycle kiezen waarvan de gemiddelde spanning ervoor zorgt dat de stroom door de LED onder de 40mA blijft. Om te weten welke voltages zoveel stroom zullen produceren, moet u naar de LED IV-curve kijken (stroom vs. spanningsgrafiek). Voor een typische LED is een spanning tussen 0,7V (typische minimumspanning die nodig is om licht van de LED uit te stralen) en 1,25V vrijwel zeker veilig. Waarom is 1,25 V waarschijnlijk veilig? Welnu, de meeste LEDs zullen de 40mA bij 1,25V niet overschrijden, zelfs niet zonder een stroombegrenzende weerstand. Een ander ding dat iemand helpt beschermen in het geval dat ze te veel spanning toepassen, is dat het digitale uitgangscircuit van de Arduino zijn eigen uitgangsimpedantie heeft, die uitgangsimpedantie zal laag zijn, maar zelfs een uitgangsimpedantie van 20 ohm zou een niet te verwaarlozen hoeveelheid bescherming bieden. De arduino uno heeft een digitale uitgangsimpedantie van ongeveer 250 ohm. Om een lang verhaal kort te maken, als je een LED zou besturen met PWM op 1,0 V bij een hoge frequentie is er voor een typische LED geen kans dat u uw digitale output op een Arduino Uno beschadigt.

  2. De PWM-benadering stuurt de LED in een open lus (en dat geldt ook voor 1.7V voeding zonder PWM). U past een gemiddelde spanning toe op de LED die precies de juiste waarde heeft om de LED in te schakelen, maar niet hoog genoeg om te beschadigen de led. Helaas is het spanningsbereik van AAN (en helder genoeg om te zien) tot beschadigde LED erg klein (dat bereik op mijn LED is ongeveer 0,7V). Er zijn verschillende redenen waarom de 1.7V die u denkt toe te passen niet altijd 1.7V zal zijn …

a. Veranderingen in de omgevingstemperatuur. Wat als u een motordriver, spanningsregelaar, enz. in een gesloten doos die ook de LED bevatte. Het zou niet ongebruikelijk zijn dat die andere componenten de omgevingstemperatuur in de behuizing verhogen van 25 ° C naar 50 ° C. Deze temperatuurstijging ZAL het gedrag van je LED, je spanningsregelaar, enz. Veranderen. Je ooit veilige 1,7 V zal geen langer 1,7V is en je LED die vroeger op 2,5V bakte, zal nu op 2,2V bakken.

b. Veranderingen in uw voedingsspanning. Wat als uw voorraad een batterij was? Naarmate de batterij leegloopt, daalt de spanning aanzienlijk. Wat als je je schakeling zo hebt ontworpen dat hij goed werkt met een licht gebruikte 9V-batterij, maar dan heb je een nieuwe 9V-batterij toegevoegd. Gloednieuwe 9V-loodzuurbatterijen hebben doorgaans een werkelijke spanning van 9,5V. Afhankelijk van het circuit dat de 5V levert die voor de PWM wordt gebruikt, kan die extra 0,5V uw 5V PWM verhogen naar 5,3V. Wat als u een oplaadbare batterij zou gebruiken? Ze hebben een nog groter spanningsbereik gedurende hun gehele ontladingscyclus.

c. Er zijn andere scenarios, zoals geïnduceerde stroom van EMI (motoren zullen dit doen).

Het hebben van een stroombegrenzende weerstand bespaart u veel van deze problemen.

Het gebruik van PWM om een LED aan te sturen is geen erg goede oplossing, is er een betere manier waarvoor” geen stroombegrenzende weerstand “nodig is?

Ja! Doe wat ze doen in LED-lampen voor uw huis. Bestuur de LED met een stroomregelaar. Stel de stroomregelaar in om de stroom te sturen waarvoor uw LED geschikt is.

Met de juiste stroomregelaar , kan dramatisch worden verhoogd, en u kunt veilig de LED aansturen zonder u zorgen te maken over de meeste problemen die komen kijken bij het aansturen van een LED met open lus.

De keerzijde: Je hebt een huidige controller nodig en je hebt de complexiteit van het circuit met 10x verhoogd. Wees echter niet ontmoedigd. U kunt stroomcontroller-ICs, LED-driver-ICs kopen of uw eigen stroomgestuurde boost-omzetter maken. Het is niet zo moeilijk. Neem wat tijd uit uw drukke schema en leer meer over boost- en buck-converters. Leer meer over het schakelen van voedingen. Zij zijn de energiebronnen van uw computer en ze zijn buitengewoon energiezuinig. Bouw vervolgens een geheel nieuwe of koop een goedkope IC om het meeste werk voor je te doen.

Natuurlijk, zoals bij alle elektronische ontwerpen, zijn er altijd meer dingen die je kunt doen om je circuit te verbeteren. Bekijk figuur 3 in de volgende pdf om te zien hoe complex zelfs een led-lamp voor huishoudelijk gebruik tegenwoordig kan zijn …

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

Samengevat: Je moet zelf beslissen hoeveel risico je bereid bent te nemen neem mee met je circuit. Het gebruik van 5V PWM om je LED aan te sturen zal waarschijnlijk prima werken (vooral als je een condensator toevoegt om de PWM-blokgolf af te vlakken en je PWM-frequentie maximaal te benutten). Wees niet te bang om je elektronica naar buiten te duwen van hun gebruikelijke op werkomstandigheden, wees gewoon op de hoogte wanneer u het doet, weet welke risicos u neemt.

Geniet ervan!

Ter info: het verbaast me hoeveel mensen onmiddellijk naar het antwoord springen, ” JE MOET EEN HUIDIGE BEPERKENDE WEERSTAND ” GEBRUIKEN. Dat is goed bedoeld, maar overdreven veilig advies.

Ort

Opmerkingen

  • I ‘ Ik ben verrast om te zien hoeveel mensen dit antwoord als waardevol ontwerpadvies beschouwden. Het besturen van een LED zonder stroombeperking met behulp van PWM is net zo slecht voor de LED als wat het OP doet, en het genereert EMI- en VCC-rimpelachtige rimpels.
  • @DmitryGrigoryev, ik realiseerde me dat ik het helemaal niet kon aanpakken de maximale uitgangsstroom van de digitale uitgang. Ik heb een nieuwe kogel toegevoegd om dat te verbergen. Met PWM kan iemand veilig een LED besturen zonder een stroombegrenzende weerstand. EMI- en VCC-rimpel ontstaan elke keer dat u belastingen aandrijft met een digitaal signaal, maar dit komt vaak voor (bijv. H Bridge, Boost Converter, Hobby Servo Control, enz.) En is nauwelijks een reden om PWM te vermijden. Er zijn redelijke oplossingen om EMI- en VCC-rimpel indien nodig aan te pakken. De meeste mensen zullen zich ‘ niet bekommeren om de kleine hoeveelheden EMI- en VCC-rimpel die wordt veroorzaakt door het aansturen van een LED met PWM.

Antwoord

U kunt de ingebouwde pullup-weerstanden gebruiken zoals voorgesteld hier :

De pullup-weerstanden leveren voldoende stroom om een LED die is aangesloten op een pin die als ingang is geconfigureerd, zwak te verlichten.

Opmerkingen

  • Niet voor LEDs, dit kan gebruikt worden voor knoppen maar voor LEDs is er een gevaar om de uitvoer te breken
  • als het niet veilig is, waarom zeggen de officiële documenten dat dan? (Ik ‘ heb mezelf ook geprobeerd en het werkte zoals beschreven.)
  • Lees het OUTPUT vermeldt dat het een serieweerstand nodig heeft: ” Dit is voldoende stroom om een LED helder te laten branden (niet ‘ vergeet de serieweerstand) , of laat bijvoorbeeld veel sensoren lopen, maar niet genoeg stroom om de meeste relais, solenoïdes of motoren te laten werken. ”
  • @MenelaosVergis het is veilig om dit te doen wanneer de pin in INPUT_PULLUP-modus staat, het is niet veilig om te doen met een pin in OUTPUT-modus. Dit wordt duidelijk in de documenten als je beide secties leest (en uit het geciteerde fragment in dit antwoord).

Antwoord

Het korte antwoord is, ja en nee, het hangt af van je arduino en het hangt af van de kleur van je led. Een 3.3V bord heeft bijvoorbeeld geen weerstand nodig in serie met een kleine groene LED, omdat de doorlaatspanning van de LED behoorlijk hoog is, zie dit . De interne weerstand is ongeveer 25 Ohm, neem (3.3 – 3) / 25 = 12mA, dus dit is nog steeds prima, je mag de maximale stroom per pin niet overschrijden die 40mA is voor de 328p atmel processor die op de UNO-kaarten wordt gebruikt (tenzij je gebruikt een afgeleide van de 328p waar het een ander verhaal kan zijn). Voor een Arduino die op 5V werkt, zullen er echter problemen optreden met een infrarood-LED die een veel lagere voorwaartse spanning heeft, typisch 1,2V, (5-1,2) / 25 = 150mA, en dit is absoluut te veel, dus gebruik een stroombegrenzer zoals als een weerstand om dat soort LEDs aan te sturen. Pin 13 op de Arduino boards (of een andere pin op varianten) heeft al een led en een weerstand in serie. Ook heeft de voeding naar het bord een maximale classificatie, typisch 200mA, en moet je onder dit niveau blijven, en je kunt niet meer dan een bepaalde hoeveelheid mA per groep pinnen trekken, dit wordt uitgelegd hier . Als je veel LEDs wilt aansturen, overweeg dan om een matrix LED-driver te gebruiken die het multiplexen voor je doet, zie bijvoorbeeld mijn youtube-gedeelte waar ik de MAX7219CNG-driver demonstreer. Maar ook Arduino Unos kunnen het multiplexen voor je doen, zie mijn IR-thermometer met 4 zeven segment-LEDs op youtube. Veel plezier met hacken.

Answer

Het antwoord van stevenvh legt uit wat je moet doen, maar je moet ook de vermogensdissipatie over de led berekenen, zodat je de spanningsvalweerstand niet doorbrandt. Als de voedingsspanning bijvoorbeeld 5 V is en de voorwaartse spanning van de weerstand 1,0 V is, daalt de 4 V. Het gebruik van een weerstand van 220 ohm resulteert in een stroomsterkte van (I = V / R) van 18 mA en een vermogen dissipatie (P = IV) van 72mW.

0402 weerstanden met imperiale afmetingen (1005 metrisch) zijn over het algemeen 1 / 16W, wat 62,5mW is. Dus in dit geval zou dit niet werken; het zou de weerstand oververhitten en verkort de levensduur. U zou dus moeten overschakelen naar een 0402-weerstand met een vermogen van 1 / 10W, of een grotere 0603-weerstand.

Telkens als u berekeningen zoals deze uitvoert, voegt u deze toe aan het schema, zodat de recensent kan uw werk gemakkelijk dubbel controleren.

Merk op dat de voorwaartse spanning (en dus de weerstandswaarde) een functie is van de led, en dat verschillende kleuren leds verschillende waarden hebben. Blauwe leds hebben in het bijzonder een hoge voorwaartse spanning (~ 3.0V typ.) Dus als je probeert om vier verschillende LEDs dezelfde helderheid te geven, dan moet je de berekeningen voor elke LED herhalen. Om het echt goed te doen, kijkt u naar de optische kenmerken van elke LED bij zijn nominale stroom en past u deze dienovereenkomstig aan.

Antwoord

JA! Het kan gedaan worden.

Ook al is wat er is gezegd juist … er is een andere manier. Een energiezuinigere manier om LEDs aan te sturen met 5v.

Dit is een beetje ongedocumenteerd en het is is niet bekend of de oplossing de LEDs zal slijten, maar het kan worden gedaan. Ik “doe het eigenlijk.

PWM gebruiken door hardware: hier” is een voorbeeld :

#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 kan ook worden gesimuleerd met behulp van software en de avrs-timers. U kunt een voorbeeld vinden in de lufa-bibliotheek, genaamd LEDNotifier.c.

Mijn conclusie: het is mogelijk om een led op 5V aan te sturen.

PROS: Geen weerstand nodig. Wat energie besparing ook (~ 50%)

Nadelen: ik weet niet of het onderdeel gestrest is en over de verkorting van de levensduur.

Er is een man die dit experiment ook op Stanford heeft gedaan en wat info heeft gepost op zijn site .

Reacties

  • Dit lijkt ‘ gewoon geen goed idee. Jij ‘ hij haalt waarschijnlijk meer stroom uit de controller dan waarvoor ‘ s is beoordeeld, zelfs als u ‘ het niet erg lang doet.
  • Zoals gezegd is dit niet gecumuleerd. De Arduino UNO output IO kan ongeveer 40ma-50ma aandrijven. Dat is constant. Ik kan zeker zeer korte pulsen met meer stroom aan. Kijk eens naar wikipedia .
  • In de Arduino-omgeving kan men PWM gemakkelijker krijgen met analogWrite() op de corresponderende pin. niet zeker of dit een goed idee is, maar in ieder geval voor IR-leds is het ‘ gebruikelijk dat de gegevensbladen aanzienlijk hogere piekstromen toestaan voor inschakelduur van minder dan 100% .
  • Ik ‘ ben er vrij zeker van dat de energiebesparing negatief zal zijn in vergelijking met een op weerstand gebaseerde oplossing, omdat de LED-efficiëntie lager wordt naarmate de stroom toeneemt.
  • @ScottSeidman Waarom is dat geen goed idee ‘? alleen omdat de meeste mensen denken dat het niet wordt aanbevolen om een LED zonder weerstand te gebruiken? dit antwoord bewees onderzoek, een zeer respectvolle bron als Stanford University en van wat ik kan experimenteren, het werkt. Ik hou absoluut van neergestemde berichten omdat ze vertellen dat degenen die hebben weggestemd, gewoon bevooroordeeld zijn. Wat een paradox …

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *