Behöver jag verkligen motstånd när jag kontrollerar lysdioder med Arduino?

Jag försöker bara testa Arduino Uno för första gången med två blinkande lysdioder på en bräda. Alla tutorials på Internet verkar använda ett motstånd. Jag känner till motståndens funktion, men spelar det någon roll här? Dessa lysdioder fungerar bra utan motstånd.

Kommentarer

  • Det beror på om du vill att din lysdiod ska smälta eller inte. Om du inte tänker ’ tappar du motståndet. :-).

Svar

Stygg! :-). Om de säger att använda ett motstånd där är en bra anledning till det! Stäng av den, NU!

Motståndet är där för att begränsa lysdiodens ström. Om du utelämnar den nuvarande begränsningen måste komma från Arduinos utgång, och den kommer inte att tycka om den. Hur får du reda på vad motståndet måste vara? Du känner till Ohms lag? Om du inte skriver det med stora bokstäver:

\ $ V = I \ cdot R \ $

Spänning är lika med strömtider motstånd . Eller så kan du säga

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

Det är samma sak. Spänningen du känner: Arduino går på 5V. Men inte allt som kommer att gå över motståndet. LED-lampan har också ett spänningsfall, vanligtvis runt 2V för en röd lysdiod. Så det finns 3V kvar för motståndet. En typisk indikator-LED kommer att ha en nominell ström på 20mA, då

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

Arduino Uno använder ATmega328 mikrokontroller. Databladet säger att strömmen för alla I / O-stift inte bör överstiga 40 mA, vad som vanligtvis kallas absolut maximala betyg. Eftersom du inte har något att begränsa strömmen finns bara (låg !) motstånd hos utgångstransistorn. Strömmen kan så mycket väl vara högre än 40 mA, och din mikrokontroller kommer att drabbas av skador.

redigera
Följande graf från ATmegas datablad visar vad som kommer att hända om du kör lysdioden utan strömbegränsande motstånd:

ange bildbeskrivning här

Utan belastning är utspänningen 5V som förväntat. Men ju högre ström som dras desto lägre kommer utspänningen att vara, den kommer att sjunka cirka 100mV för varje extra 4mA-belastning. Det är ett internt motstånd av 25 \ $ \ Omega \ $. Sedan

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

Grafen går inte så långt, motståndet kommer att stiga med temperaturen, men strömmen förblir mycket hög. Kom ihåg att databladet gav 40 mA som absolut maximalt betyg. Du har tre gånger så mycket. Detta kommer definitivt att skada I / O-porten om du gör det länge. Och förmodligen LED också. En 20mA-indikatorlampa har ofta 30mA som absolut maximalt betyg.

Kommentarer

  • Inte riktigt. 3 och du får ’ inget ljus, eftersom 3 x 2V > 5V, och 2 du ’ Jag har samma problem, bara 1V faller istället för 3V. Jag lade till mitt svar för att stänga av det nu!
  • Jag tappade räkningen på hur många gånger jag har skrivit den beräkningen i svar här. Jag borde ha ett skript för det 🙂
  • Lysdioderna är utformade för att användas med en viss maxström. Spänning som driver dem betyder att strömmen är okontrollerad. Portar är gjorda för att ge en viss maxström. Kortslutning av dem eller överbelastning av dem KAN kopplas till att förstöra eller helt IC-förstörelse eller bara orsaka subtila driftsproblem. Eller inte.
  • @ JohnR.Strohm Jag skulle inte ’ t kallar det en industristandard.
  • @ JohnR.Strohm – Som m. Alin säger att ’ inte är en industristandard. Digikey listar 10mA nominella lysdioder som sträcker sig från 0,4mcd till 1000 mcd och 20mA LEDs från 0,1 mcd till 54000 mcd. Det finns ’ ingen rad i den och ingen garanti för att din 10mA LED kommer att vara bra synlig. Röd LED-spänning ligger vanligtvis från 1,8V till 2,2V. För en röd lysdiod är 1.6V exceptionellt låg.

Svar

40plot,

Jag måste säga att det inte rekommenderas att köra en LED utan motstånd om du inte vet vad du gör. Men om du förstår hur en LED beter sig kan du köra den utan motstånd på ett säkert sätt. I själva verket är det ofta bättre att köra en LED utan ett strömbegränsande motstånd.

Varför skulle du köra en LED utan motstånd? Enkelt, för att göra din krets mer energieffektiv.

Om du kör din lysdiod med PWM inställd på en konstant arbetscykel (dvs 5V PWM vid 34% drift cykel för att uppnå en genomsnittlig spänning på 1,7V)?

Ja och nej. Att använda PWM kan fungera lika bra som att applicera en specifik spänning (om du är försiktig), men det finns bättre sätt. Saker att oroa sig för när man tar PWM-metoden.

  1. PWM: s frekvens är viktig.När du använder PWM i det här scenariot förlitar du dig på förmågan hos dina kretskomponenter att tillfälligt hantera höga strömmar. Din största oro kommer att vara hur LED-lampan hanterar en tillfällig hög ström och hur utgångskretsen på ditt chip kan hantera en hög ström. Om den informationen inte anges i databladet, var databladförfattarna lat. MEN !!! Om den informationen specificeras i databladet kan du säkert dra nytta av den. Till exempel lysdioden jag har nästa för mig har den maximala strömklassen 40mA. Den har dock också en ” Peak Forward Current ” 200mA, med en anteckning att strömmen inte kan förbli på 200mA längre än 10us. Såååå … Jag kan köra lysdioden med 1,7V (lysdioderna är typiskt framspänning från databladet). Med en arbetscykel på 34% och en strömförsörjning på 5V (34 % av 5V = 1,7V) producerar en genomsnittlig spänning på 1,7V, jag behöver bara se till att min PWM i tid är 10us eller mindre. n-tid kommer strömmen genom lysdioden sannolikt att stiga till cirka 58mA (58mA = typisk strömförbrukning vid 1,7V av min diod dividerat med 34%). 58mA överstiger mina lysdioder med konstant ström på 40 mA med 18 mA. Slutligen … Jag skulle behöva en PWM-frekvens 33,3 kHz eller högre för att säkert köra min lysdiod (33,3 kHz = Den inversa av [10us PÅ-tid dividerad med 34% för att få PWM-perioden]). I REALITY kunde jag säkert använda PWM för att driva min lysdiod med en långsammare PWM-frekvens. Anledningen är detta: Datablad anger vanligtvis inte alla giltiga driftsscenarier för en komponent. De specificerar inte dessa scenarier eftersom säljaren inte vill investera tid i att specificera och stödja användningen av deras komponent för hörnanvändning Till exempel, med min lysdiod, om jag kan använda lysdioden vid 40mA för alltid (40mA är den jämna strömmen max) och jag kan använda lysdioden vid 200mA i 10us. Sedan kan jag vara 99,99999% säker på att jag kan använd lysdioden säkert vid 100mA under en längre tid än 10us, troligen nära 20us.

OBS: Alla komponenter kan säkert hantera tillfälliga strömspikar över sina maximala värden så länge som varaktigheten nuvarande toppar är LITT NUG . Vissa komponenter är mer förlåtande än andra, och om du har tur är komponenten databladet kommer att specificera hur bra det kan hantera strömspikar.

  1. Spänningen i din PWM är viktig. Jag kommer att visa min poäng med exempel istället för via förklaring. Om vi använder den lysdiod som jag hänvisade till tidigare vet vi att 34% arbetscykel vid 33,3 kHz, vid 5 V är säker. Men om vår spänning var 12 V, skulle behöva bearbeta våra beräkningar för att hålla samma mängd ström som strömmar genom lysdioden. Vår arbetscykel skulle behöva sjunka till 14,167% (1,7 V dividerat med 12 V) och vår minsta PWM-frekvens skulle minska till 14,285 kHz (den inversa av [ 10us dividerat med 14,167%]). Dock! , detta är anledning till oro. I 5V-scenariot använder vi 5V för 10us och i 12V-scenariot använder vi 12V för 10us. Vi mer än fördubblade spänningen under de 10us, det måste få några konsekvenser. Och ja, det är! Mitt LED-datablad ger mig inte de uppgifter som behövs för att veta hur hög av en spänning som jag kan använda i 10us innan jag skadar min lysdiod. Visst kommer 1000V för 10us att steka min LED. Men hur vet jag om 5V vid 10us kommer att steka min LED? eller 12V i 10us? Om det inte finns någon specifikation för det tar du en risk. Så … 5V för 10us är riskabelt, men troligtvis säkert.

OBS: Du kan lägga till en kondensator i kretsen för att medelvärdena PWM och få problemet att försvinna.

  1. Du måste vara medveten om funktionerna hos utgångsstiftet som du också har anslutit din lysdiod. Den viktigaste parametern är den maximala utströmmen. För Arduino Uno tror jag att det är 40 mA. Du bör välja en PWM-arbetscykel vars genomsnittliga spänning håller strömmen igång LED-lampan under 40 mA. För att veta vilka spänningar som producerar så mycket ström måste du titta på lysdiodernas IV-kurva (ström vs. spänningsdiagram). För en typisk lysdiod är en spänning mellan 0,7V (typisk minsta spänning som behövs för att avge ljus från lysdioden) och 1,25V nästan säkert. Varför är 1.25V förmodligen säkert? De flesta lysdioder kommer inte att överstiga 40 mA vid 1,25 V, även utan strömbegränsande motstånd. En annan sak som hjälper till att skydda någon i fallet att de applicerar för mycket spänning är att den digitala utgångskretsen i Arduino kommer att ha sin egen utgångsimpedans, att utgångsimpedansen kommer att vara låg, men till och med en 20 ohm utgångsimpedans skulle ge en icke försumbar mängd skydd. Arduino uno har en digital utgångsimpedans runt 250 ohm. Lång historia kort, om du körde en LED med PWM vid 1.0V vid en hög frekvens, för en typisk lysdiod, finns det ingen chans att du kommer att skada din digitala utgång på en Arduino Uno.

  2. PWM-metoden driver lysdioden på ett öppet sätt (och det gör också 1.7V strömförsörjning utan PWM). Du använder en genomsnittlig spänning på lysdioden som är precis rätt värde för att tända PÅ LED men inte tillräckligt hög för att skada lysdioden. Tyvärr är spänningsområdet från PÅ (och tillräckligt ljust för att se) till skadad LED mycket litet (Det intervallet på min LED är ungefär 0,7 V). Det finns olika anledningar till att 1.7V som du tror att du använder inte alltid är 1.7V …

a. Förändringar i omgivningstemperaturen. Vad händer om du hade en motorförare, spänningsregulator etc. i en sluten låda som också innehöll lysdioden. Det skulle inte vara ovanligt att de andra komponenterna höjer omgivningstemperaturen inuti höljet från 25C till 50C. Denna temperaturhöjning Ska ändra din LED, din spänningsregulator osv. Din en gång säkra 1.7V kommer inte att längre vara 1,7V och din LED som brukade steka vid 2,5V kommer nu att steka vid 2,2V.

b. Förändringar i din matningsspänning. Tänk om din leverans var ett batteri. När batteriet tappar sjunker spänningen avsevärt. Vad händer om du utformade din krets för att fungera bra med ett lite använt 9V-batteri, men sedan lade du till ett nytt 9V-batteri. Helt nya 9V blybatterier har vanligtvis en faktisk spänning på 9,5V. Beroende på kretsen som tillhandahåller 5V som används för PWM, kan ytterligare 0,5V öka din 5V PWM till 5,3V. Vad händer om du använde ett uppladdningsbart batteri? De har ett ännu större spänningsområde genom hela sin urladdningscykel.

c. Det finns andra scenarier, som inducerad ström från EMI (motorer kommer att göra detta).

Att ha ett strömbegränsande motstånd sparar dig från många av dessa problem.

Att använda PWM för att driva en LED är inte en mycket bra lösning. Finns det ett bättre sätt som inte kräver ett strömbegränsande motstånd?

Ja! Gör vad de gör i LED-glödlampor för ditt hem. Kör lysdioden med en strömregulator. Ställ in den aktuella styrenheten för att driva den ström som din LED är klassad för.

Med rätt strömkontroll , kan ökas dramatiskt och du kan säkert köra LED-lampan utan att behöva oroa dig för de flesta av problemen med öppen slinga som kör en LED.

Nackdelen: Du behöver en strömstyrenhet och du har förstärkt kretsens komplexitet med 10 gånger. Men bli inte avskräckt. Du kan köpa IC: er för styrenheter, IC: er för LED-drivrutiner eller skapa din egen strömstyrda boost-omvandlare. Det är inte så svårt. Ta dig lite tid på ditt hektiska schema och lär dig mer om boost- och buck-omvandlare. Lär dig mer om hur du byter strömförsörjning. Det är det som driver din dator och de är extremt energieffektiva. Bygg antingen en från grunden, eller köp en billig IC för att göra det mesta av jobbet åt dig.

Naturligtvis, som med alla elektroniska mönster, finns det alltid fler saker du kan göra för att göra din krets bättre. Se figur 3 i följande PDF för att se hur komplex även en hushålls-LED-lampa kan vara i dessa dagar …

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

Sammanfattningsvis: Du måste själv bestämma hur stor risk du är villig att ta med din krets. Om du använder 5V PWM för att driva din LED kommer det troligtvis att fungera bra (speciellt om du lägger till en kondensator för att jämna ut PWM-fyrkanten och maximera din PWM-frekvens). av deras vanliga op rensa förhållanden, var bara informerad när du gör det, känn de risker du tar.

Njut!

FYI: Jag är förvånad över hur många som omedelbart hoppar till svaret, ” DU MÅSTE ANVÄNDA EN AKTUELL BEGRÄNSNINGSMOTSTÄNDARE ”. Det är välmenande, men alltför säkra råd.

Ort

Kommentarer

  • I ’ Jag är förvånad över att se hur många människor ansåg att detta svar var värdefull designråd. Att köra en LED utan strömbegränsning med PWM är lika dåligt för LED som vad OP gör, plus det kommer att generera EMI och VCC krusning som crasy.
  • @DmitryGrigoryev, jag insåg att jag helt misslyckades med att adressera den maximala utgångsströmmen för den digitala utgången. Jag lade till en ny kula för att täcka det. PWM Låter någon säkert köra en lysdiod utan ett strömbegränsande motstånd. EMI- och VCC-krusningar skapas när du kör laddningar med en digital signal, men detta är vanligt (t.ex. H Bridge, Boost Converter, Hobby Servo Control, etc.) och är knappast en anledning att undvika PWM. Rimliga lösningar finns för att hantera EMI- och VCC-krusningar om det behövs. De flesta människor ’ bryr sig inte om de små mängderna EMI- och VCC-krusningar som skapas genom att köra en lysdiod med PWM.

Svar

Du kan använda de inbyggda pullup-motstånden som föreslagits här :

Uppdragningsmotstånden ger tillräckligt med ström för att svagt tända en LED ansluten till en stift som har konfigurerats som ingång.

Kommentarer

  • Inte för lysdioder, detta kan användas för knappar men för lysdioder finns det risk för att produktionen bryts
  • om det inte är säkert varför de officiella dokumenten säger det? (Jag ’ har också provat mig själv och det fungerade som beskrivet.)
  • Vänligen läs ner till OUTPUT, det nämner att den behöver ett seriemotstånd: ” Detta är tillräckligt med ström för att lysa upp en lysdiod (don ’ glöm inte seriemotståndet) , eller kör till exempel många sensorer, men inte tillräckligt med ström för att köra de flesta reläer, solenoider eller motorer. ”
  • @MenelaosVergis det är säkert att göra detta när stiftet i INPUT_PULLUP-läge, det är inte säkert att göra med en stift i OUTPUT-läge. Detta är tydligt i dokumenten om du läser båda avsnitten (och från det citerade utdraget i detta svar).

Svar

Det korta svaret är, ja och nej, det beror på din arduino och det beror på färgen på din led. Till exempel behöver ett 3.3V-kort inte ett motstånd i serie med en liten grön lysdiod, eftersom LED-spänningen framåt är ganska hög, se detta . Det interna motståndet är runt 25 Ohm, ta (3.3 – 3) / 25 = 12mA, så det här är fortfarande bra, du bör inte gå över den maximala strömmen per stift som är 40mA för 328p atmel-processorn som används på UNO-korten (såvida inte du använder ett derivat av 328p där det kan vara en annan historia). Men för en arduino som körs med 5V uppstår problem med en infraröd lysdiod som har en mycket lägre framspänning, vanligtvis 1,2V, (5-1,2) / 25 = 150mA, och detta är definitivt för mycket, så använd en strömbegränsare som sådan som ett motstånd för att driva den typen av lysdioder. Stift 13 på Arduino-korten (eller en annan stift på varianter) har redan en ledning och ett motstånd i serie. Strömförsörjningen till kortet har också ett maximalt betyg, vanligtvis 200 mA, och du måste hålla dig under denna nivå, och du kan inte rita mer än en viss mängd mA per grupp av stift, detta förklaras här . Om du vill köra många lysdioder, överväga att använda en matris-LED-drivrutin som gör multiplexing åt dig, se till exempel mitt youtube-område där jag visar MAX7219CNG-drivrutinen. Men även Arduino Uno kan göra multiplexing åt dig, se min IR-termometer med 4 sju segment-lysdioder på youtube. Happy hacking.

Svar

Svaret från stevenvh förklarar vad du behöver göra, men du måste också beräkna effektförlusten över lysdioden så att du inte bränner ut spänningsfallsmotståndet. Till exempel, om matningsspänningen är 5V och motståndets framspänning är 1,0V, kommer du att släppa 4V. Om du använder ett 220 ohm motstånd kommer det att resultera i en ström på (I = V / R) på 18mA och en effekt försvinnande (P = IV) på 72mW.

0402 Motstånd i imperialstorlek (1005 metriska) är i allmänhet 1 / 16W, vilket är 62,5mW. Så i det här fallet skulle detta inte fungera; det skulle överhettas motståndet och förkorta dess livslängd. Så du måste byta till ett 0402-motstånd med 1 / 10W-betyg eller ett större 0603-motstånd.

När du gör sådana beräkningar, lägg till dem i schemat, så att granskaren kan enkelt kontrollera ditt arbete.

Observera att framspänning (och därmed motståndsvärde) är en funktion av lysdioden och att olika färger på lysdioder kommer att ha olika värden. en hög framspänning (~ 3,0 V typ). Så om du försöker få fyra olika lysdioder att ha samma ljusstyrka måste du upprepa beräkningarna för varje lysdiod. För att verkligen göra det rätt, titta på de optiska egenskaperna för varje lysdiod vid dess märkström och justera därefter.

Svar

JA! Det kan göras.

Även om det som sägs är korrekt …. finns det ett annat sätt. Ett mer energieffektivt sätt att köra lysdioder med 5v.

Detta är lite pappersfritt och det är okänt om lösningen kommer att släcka lysdioderna, men det kan göras. Jag gör det faktiskt.

Med PWM av hårdvara: Här är en exempel :

#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 också simuleras med programvara och avrs-timers. Du hittar ett exempel i lufa-biblioteket, kallat LEDNotifier.c.

Min slutsats: Det är möjligt att köra en led på 5V.

PROS: Inget behov av ett motstånd. Lite energi sparar också (~ 50%)

Nackdelar: Jag vet inte om komponenten är stressad och om dess livstidsminskning.

Det finns en kille som också gjorde detta experiment i Stanford och publicerade lite info på hans webbplats .

Kommentarer

  • Det här verkar bara inte ’. Du ’ hämtar förmodligen mer ström från styrenheten än den ’ klassas för, även om du ’ inte gör det så länge.
  • Som sagt är detta okomponerat. Arduino UNO-utgången IO kan köra runt 40ma-50ma. Det är konstant. Jag kan säkert hantera mycket korta pulser med mer ström. Ta en titt på wikipedia .
  • I Arduino-miljön kan man få PWM lättare med analogWrite() på motsvarande stift. Fortfarande inte säker på att detta är en bra idé, men åtminstone för IR-lysdioder är det ’ vanligt att datablad tillåter betydligt högre toppströmmar för arbetscykler mindre än 100% .
  • Jag ’ är ganska säker på att energibesparingar kommer att vara negativa jämfört med en motståndsbaserad lösning, eftersom LED-verkningsgraden blir lägre när strömmen ökar.
  • @ScottSeidman Varför är inte ’ det en bra idé? bara för att de flesta tror att det inte rekommenderas att använda en LED utan motstånd? detta svar bevisade utredning, en mycket respektfull källa som Stanford University och från vad jag kan experimentera fungerar det. Jag älskar definitivt nedröstade inlägg eftersom de säger att de som röstade ner är bara partiska. Vilken paradox …

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *