Brauche ich wirklich Widerstände, um LEDs mit Arduino zu steuern?

47

Ich probiere gerade Arduino Uno zum ersten Mal mit 2 blinkenden LEDs auf einem Steckbrett aus. Alle Tutorials im Internet scheinen einen Widerstand zu verwenden. Ich kenne die Funktion von Widerständen, aber ist es hier wirklich wichtig? Diese LEDs funktionieren einwandfrei ohne Widerstand.

40Grundstück
quelle
8
Das hängt davon ab, ob Ihre LED schmelzen soll oder nicht. Wenn Sie nichts dagegen haben, lassen Sie den Widerstand weg. :-).
Dan Sheppard

Antworten:

78

Frech! :-). Wenn sie sagen, dass sie einen Widerstand benutzen sollen, gibt es einen guten Grund dafür! Schalte es JETZT aus!

Der Widerstand dient zur Begrenzung des LED-Stroms. Wenn Sie es weglassen, muss die Strombegrenzung vom Ausgang des Arduino kommen, und es wird ihm nicht gefallen. Wie finden Sie heraus, was der Widerstand sein muss? Sie kennen das Ohmsche Gesetz? Wenn nicht, schreiben Sie es in großen Buchstaben auf:

V=IR

Spannung entspricht Strom mal Widerstand. Oder du könntest sagen

R=VI

Das ist gleich. Die Spannung, die Sie kennen: Arduino läuft mit 5V. Aber nicht alles, was über den Widerstand geht. Die LED hat auch einen Spannungsabfall, typischerweise um 2 V für eine rote LED. Es verbleiben also 3V für den Widerstand. Eine typische Anzeige-LED hat dann einen Nennstrom von 20 mA

R=5V2V20mA=150Ω

Der Arduino Uno verwendet den ATmega328- Mikrocontroller. Das Datenblatt besagt, dass der Strom für einen E / A-Pin 40 mA nicht überschreiten sollte, was allgemein als absolute maximale Nennwerte bezeichnet wird. Da Sie nichts haben, um den Strom zu begrenzen, gibt es nur den (niedrigen!) Widerstand des Ausgangstransistors. Der Strom kann durchaus höher als 40 mA sein und Ihr Mikrocontroller wird beschädigt.

Bearbeiten
Die folgende Grafik aus dem Datenblatt des ATmega zeigt, was passiert, wenn Sie die LED ohne Strombegrenzungswiderstand betreiben:

Bildbeschreibung hier eingeben

Ohne Last beträgt die Ausgangsspannung erwartungsgemäß 5V. Aber je höher der aufgenommene Strom ist, desto niedriger ist die Ausgangsspannung, die bei jeder zusätzlichen Last von 4 mA um 100 mV abfällt. Das ist ein Innenwiderstand von 25 . Dann Ω

I=5V2V25Ω=120mA

Der Graph geht nicht so weit, der Widerstand steigt mit der Temperatur, aber der Strom bleibt sehr hoch. Denken Sie daran, dass das Datenblatt 40mA als absolute maximale Bewertung angibt. Sie haben das Dreifache. Dies wird definitiv den I / O-Port beschädigen, wenn Sie dies für längere Zeit tun. Und wahrscheinlich auch die LED. Eine 20-mA-Anzeige-LED hat häufig 30 mA als absolute maximale Nennleistung.

stevenvh
quelle
2
Nicht wirklich. 3 und Sie werden kein Licht bekommen, weil 3 x 2V> 5V, und 2 Sie werden das gleiche Problem haben, nur 1V Abfall anstelle von 3V. Ich habe zu meiner Antwort hinzugefügt, um sie jetzt auszuschalten!
Stevenvh
21
Ich habe nicht gezählt, wie oft ich diese Berechnung in Antworten hier geschrieben habe. Ich hätte ein Skript dafür :-)
Stevenvh
2
LEDs sind für den Betrieb mit einem bestimmten Maximalstrom ausgelegt. Eine Spannung, die sie antreibt, bedeutet, dass der Strom nicht kontrolliert wird. Ports sind so ausgelegt, dass sie einen bestimmten Maximalstrom liefern. Ein Kurzschluss oder eine Überlastung kann zur Zerstörung des Pins oder des gesamten IC führen oder nur subtile Betriebsprobleme verursachen. Oder nicht.
Russell McMahon
4
@ JohnR.Strohm Ich würde es nicht als Industriestandard bezeichnen.
m.Alin
2
@ JohnR.Strohm - Wie m.Alin sagt, ist das kein Industriestandard. Digikey listet 10-mA-Nenn-LEDs im Bereich von 0,4 mcd bis 1000 mcd und 20-mA-LEDs im Bereich von 0,1 mcd bis 54000 mcd auf. Es gibt keine Linie und es gibt keine Garantie dafür, dass Ihre 10-mA-LED gut sichtbar ist. Rote LED - Spannung typischerweise im Bereich von 1,8V bis 2,2V. Für eine rote LED ist 1,6V außergewöhnlich niedrig.
Stevenvh
22

40 Grundstück,

Ich muss sagen, dass das Fahren einer LED ohne Widerstand NICHT EMPFOHLEN wird, es sei denn, Sie wissen, was Sie tun. Wenn Sie jedoch wissen, wie sich eine LED verhält, können Sie sie ohne Widerstand sicher betreiben. Tatsächlich ist es oft besser, eine LED ohne Strombegrenzungswiderstand zu betreiben.

Warum sollten Sie eine LED ohne Widerstand betreiben? Einfach, um Ihre Schaltung energieeffizienter zu machen.

Sollten Sie Ihre LED mit PWM auf ein konstantes Tastverhältnis einstellen (dh 5 V PWM bei 34% Tastverhältnis, um eine durchschnittliche Spannung von 1,7 V zu erreichen)?

Ja und nein. Die Verwendung von PWM kann genauso gut funktionieren wie das Anlegen einer bestimmten Spannung (wenn Sie vorsichtig sind), aber es gibt bessere Möglichkeiten. Dinge, über die Sie sich Sorgen machen müssen, wenn Sie den PWM-Ansatz wählen.

  1. Die Frequenz der PWM ist wichtig. Wenn Sie in diesem Szenario PWM verwenden, verlassen Sie sich auf die Fähigkeit der Komponenten Ihrer Schaltung, vorübergehend mit hohen Strömen umzugehen. Ihre größten Bedenken werden sein, wie die LED mit einem vorübergehend hohen Strom umgeht und wie der Ausgangsschaltkreis Ihres Chips mit einem vorübergehend hohen Strom umgeht. Wenn diese Informationen nicht im Datenblatt angegeben sind, waren die Datenblattautoren faul. ABER!!! Wenn diese Informationen auf dem Datenblatt angegeben sind, können Sie sie ohne Bedenken nutzen. Zum Beispiel hat die LED, die ich neben mir habe, eine maximale Stromstärke von 40mA. Es hat jedoch auch einen "Peak Forward Current" -Wert von 200 mA, wobei zu beachten ist, dass der Strom nicht länger als 10 us bei 200 mA bleiben kann. Soooo ... ich kann die LED mit 1.7V betreiben (die LEDs typische Durchlassspannung aus dem Datenblatt). Bei einem Arbeitszyklus von 34% und einer Stromversorgung von 5 V (34% von 5 V = 1,7 V) wird eine durchschnittliche Spannung von 1,7 V erzeugt. Ich muss nur sicherstellen, dass meine PWM-Einschaltdauer 10 us oder weniger beträgt. Während der Einschaltdauer steigt der Strom durch die LED wahrscheinlich auf ca. 58 mA (58 mA = typische Stromaufnahme bei 1,7 V meiner Diode geteilt durch 34%). 58mA überschreiten meinen LED-Dauerstrom von maximal 40mA um 18mA. Schließlich ... würde ich eine PWM-Frequenz von 33,3 kHz oder mehr benötigen, um meine LED sicher anzusteuern (33,3 kHz = Inverse von [10us EIN-Zeit geteilt durch 34%, um die PWM-Periode zu erhalten]). In REALITY könnte ich PWM sicher verwenden, um meine LED mit einer langsameren PWM-Frequenz zu versorgen. Der Grund ist folgender: Datenblätter geben normalerweise nicht alle gültigen Betriebsszenarien einer Komponente an. Diese Szenarien werden nicht spezifiziert, da der Anbieter dies nicht tut. ' Sie möchten keine Zeit investieren, um die Verwendung ihrer Komponenten für Eckanwendungsfälle zu spezifizieren und zu unterstützen. Zum Beispiel mit meiner LED, wenn ich die LED für immer bei 40 mA betreiben kann (40 mA ist der maximale Dauerstrom) und ich kann die LED für 10 us bei 200 mA betreiben. Dann kann ich zu 99,99999% sicher sein, dass ich die LED für einen Zeitraum von mehr als 10us, wahrscheinlich in der Nähe von 20us, sicher bei 100mA betreiben kann.

ANMERKUNG: Alle Komponenten können temporäre Stromspitzen über ihren Maximalwerten sicher verarbeiten, solange die Dauer der Stromspitzen KLEIN GENUG ist . Einige Komponenten sind fehlerverzeihender als andere. Wenn Sie Glück haben, können Sie dem Datenblatt der Komponente entnehmen, wie gut sie mit Stromspitzen umgehen kann.

  1. Die Spannung Ihres PWM ist wichtig. Ich werde meinen Standpunkt anhand eines Beispiels und nicht anhand einer Erklärung demonstrieren. Wenn wir die LED verwenden, auf die ich mich früher bezogen habe, wissen wir, dass ein Tastverhältnis von 34% bei 33,3 kHz und 5 V sicher ist. Wenn unsere Spannung jedoch 12 V betrug, mussten wir unsere Berechnungen überarbeiten, um die gleiche Strommenge zu erhalten, die durch die LED fließt. Unser Arbeitszyklus müsste auf 14,167% (1,7 V geteilt durch 12 V) abfallen, und unsere minimale PWM-Frequenz würde auf 14,285 kHz abfallen (das Gegenteil von [10us geteilt durch 14,167%]). JEDOCH!Dies gibt Anlass zur Sorge. Im 5V-Szenario legen wir 5V für 10us an und im 12V-Szenario legen wir 12V für 10us an. Wir haben die Spannung während dieser 10us mehr als verdoppelt, es muss einige Konsequenzen geben. Und ja, das gibt es! In meinem LED-Datenblatt sind nicht die Daten angegeben, die erforderlich sind, um festzustellen, wie hoch die Spannung ist, die ich für 10us verwenden kann, bevor ich meine LED beschädige. Sicherlich wird 1000V für 10us meine LED braten. Aber woher weiß ich, ob 5V bei 10us meine LED braten? oder 12V für 10us? Wenn es keine Spezifikation dafür gibt, gehen Sie ein Risiko ein. Also ... 5V für 10us ist riskant, aber höchstwahrscheinlich sicher.

ANMERKUNG: Sie können der Schaltung einen Kondensator hinzufügen, um die PWM zu mitteln und dieses Problem zu beheben.

  1. Der PWM-Ansatz steuert die LED in einer offenen Schleife (und verwendet auch eine 1,7-V-Stromversorgung ohne PWM). Sie legen eine Durchschnittsspannung an die LED an, die genau dem richtigen Wert entspricht , um die LED einzuschalten, aber nicht hoch genug, um die LED zu beschädigen. Leider ist der Spannungsbereich von EIN (und hell genug, um zu sehen) bis zur beschädigten LED sehr klein (dieser Bereich bei meiner LED beträgt etwa 0,7 V). Es gibt verschiedene Gründe, warum die 1,7 V, von denen Sie glauben, dass Sie sie anlegen, nicht immer 1,7 V sein werden ...

ein. Änderungen der Umgebungstemperatur Was wäre, wenn Sie einen Motortreiber, Spannungsregler usw. in einer geschlossenen Box hätten, die auch die LED enthielt. Es ist nicht ungewöhnlich, dass diese anderen Komponenten die Umgebungstemperatur im Gehäuse von 25 ° C auf 50 ° C erhöhen. Dieser Temperaturanstieg VERÄNDERT das Verhalten Ihrer LED, Ihres Spannungsreglers usw. Ihre einst sicheren 1,7 V werden nicht mehr 1,7 V sein, und Ihre LED, die früher bei 2,5 V brannte, wird jetzt bei 2,2 V braten.

b. Änderungen in Ihrer Versorgungsspannung. Was wäre, wenn Ihre Lieferung eine Batterie wäre? Wenn der Akku leer ist, sinkt die Spannung erheblich. Was ist, wenn Sie Ihre Schaltung so entworfen haben, dass sie mit einer leicht verbrauchten 9-V-Batterie gut funktioniert, aber dann eine neue 9-V-Batterie hinzugefügt haben? Brandneue 9-V-Blei-Säure-Batterien haben normalerweise eine tatsächliche Spannung von 9,5 V. Abhängig von der Schaltung, die die für die PWM verwendeten 5 V liefert, können diese zusätzlichen 0,5 V Ihre 5 V-PWM auf 5,3 V erhöhen. Was ist, wenn Sie einen Akku verwenden? Sie haben während ihres gesamten Entladezyklus einen noch größeren Spannungsbereich.

c. Es gibt andere Szenarien, wie z. B. induzierter Strom von EMI (Motoren tun dies).

Ein Strombegrenzungswiderstand erspart Ihnen viele dieser Probleme.

Die Verwendung von PWM zum Ansteuern einer LED ist keine sehr gute Lösung. Gibt es eine bessere Möglichkeit, bei der kein Strombegrenzungswiderstand erforderlich ist?

Ja! Tun Sie, was sie in LED-Glühbirnen für Ihr Zuhause tun. Treiben Sie die LED mit einem Stromregler an. Stellen Sie den Stromregler so ein, dass er den Strom liefert, für den Ihre LED ausgelegt ist.

Mit dem richtigen Stromregler kann die LED drastisch erhöht werden, und Sie können die LED sicher ansteuern, ohne sich um die meisten Probleme kümmern zu müssen, die beim Ansteuern einer LED mit offenem Regelkreis auftreten.

Der Nachteil: Sie benötigen einen Stromregler und haben die Komplexität der Schaltung um das 10-fache erhöht. Lassen Sie sich jedoch nicht entmutigen. Sie können Stromregler-ICs, LED-Treiber-ICs oder Ihren eigenen stromgesteuerten Aufwärtswandler kaufen. Es ist nicht so schwer. Nehmen Sie sich etwas Zeit für Ihren vollen Terminkalender und lernen Sie die Boost- und Buck-Wandler kennen. Erfahren Sie mehr über das Schalten von Netzteilen. Sie versorgen Ihren Computer mit Strom und sind äußerst energieeffizient. Dann bauen Sie entweder einen von Grund auf neu oder kaufen Sie einen kostengünstigen IC, um die meiste Arbeit für Sie zu erledigen.

Natürlich gibt es, wie bei allen elektronischen Designs, immer mehr Dinge, die Sie tun können, um Ihre Schaltung zu verbessern. Schauen Sie sich Abbildung 3 im folgenden PDF an, um zu sehen, wie komplex selbst eine Haushalts-LED-Glühbirne heutzutage sein kann ...

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

Fazit: Sie müssen selbst entscheiden, wie viel Risiko Sie mit Ihrer Strecke eingehen wollen. Die Verwendung von 5 V PWM zur Ansteuerung Ihrer LED funktioniert wahrscheinlich einwandfrei (insbesondere, wenn Sie einen Kondensator hinzufügen, um die PWM-Rechteckwelle zu glätten und die PWM-Frequenz zu maximieren). Haben Sie keine Angst davor, Ihre Elektronik außerhalb der normalen Betriebsbedingungen zu bringen. Seien Sie informiert, wenn Sie dies tun, und kennen Sie die Risiken, die Sie eingehen.

Genießen!

Zur Info: Ich bin überrascht, wie viele Leute sofort zur Antwort "SIE MÜSSEN EINEN STROMBEGRENZUNGSWIDERSTAND VERWENDEN" springen. Das ist ein gut gemeinter, aber zu sicherer Rat.

Ort

ort
quelle
Ich bin überrascht zu sehen, wie viele Leute diese Antwort als wertvollen Rat für das Design ansehen. Das Ansteuern einer LED ohne Strombegrenzung mit PWM ist für die LED genauso schlecht wie für das OP. Außerdem werden EMI- und VCC-Wellen erzeugt.
Dmitry Grigoryev
1

Sie können die hier vorgeschlagenen integrierten Pullup-Widerstände verwenden :

Die Pullup-Widerstände liefern genug Strom, um eine LED, die mit einem als Eingang konfigurierten Pin verbunden ist, schwach zu beleuchten.

eadmaster
quelle
Nicht für LEDs, dies kann für Tasten verwendet werden, aber für LEDs besteht die Gefahr, dass der Ausgang unterbrochen wird
Menelaos Vergis
Wenn es nicht sicher ist, warum sagen es die offiziellen Dokumente? (Ich habe es auch selbst ausprobiert und es hat wie beschrieben funktioniert.)
eadmaster
Bitte lesen Sie weiter bis OUTPUT, es wird erwähnt, dass ein Vorwiderstand benötigt wird: "Dies ist genug Strom, um eine LED hell aufleuchten zu lassen (vergessen Sie nicht den Vorwiderstand), oder führen Sie zum Beispiel viele Sensoren aus, aber nicht genug Strom, um die meisten zu betreiben Relais, Magnete oder Motoren. "
Menelaos Vergis
0

Die Antwort von stevenvh erklärt, was Sie tun müssen, aber Sie müssen auch die Verlustleistung über die LED berechnen, damit Sie den Spannungsabfallwiderstand nicht durchbrennen. Wenn zum Beispiel die Versorgungsspannung 5 V beträgt und die Durchlassspannung des Widerstands 1,0 V beträgt, fallen 4 V ab. Die Verwendung eines 220-Ohm-Widerstands führt zu einem Strom (I = V / R) von 18 mA und einer Verlustleistung (P = IV) von 72 mW.

0402 Widerstände mit imperialer Größe (1005 metrisch) haben im Allgemeinen eine Leistung von 1/16 W, was 62,5 mW entspricht. In diesem Fall würde das also nicht funktionieren. Dies würde den Widerstand überhitzen und seine Lebensdauer verkürzen. Sie müssten also zu einem 0402-Widerstand mit 1 / 10W Nennleistung oder zu einem größeren 0603-Widerstand wechseln.

Wenn Sie solche Berechnungen durchführen, fügen Sie sie dem Schema hinzu, damit der Prüfer Ihre Arbeit problemlos überprüfen kann.

Beachten Sie, dass die Durchlassspannung (und damit der Widerstandswert) eine Funktion der LED ist und unterschiedliche Farben der LEDs unterschiedliche Werte haben. Insbesondere blaue LEDs haben eine hohe Durchlassspannung (~ 3,0 V typ.). Wenn Sie also versuchen, vier verschiedene LEDs auf dieselbe Helligkeit einzustellen, müssen Sie die Berechnungen für jede LED wiederholen. Um es wirklich richtig zu machen, überprüfen Sie die optischen Eigenschaften jeder LED bei ihrem Nennstrom und passen Sie sie entsprechend an.

Reparieren Sie es, bis es kaputt ist
quelle
0

Die kurze Antwort lautet: Ja und Nein, es hängt von Ihrem Arduino ab und es hängt von der Farbe Ihrer LED ab. Zum Beispiel ist ein 3,3V Board keinen Widerstand in Serie mit einem kleinen grünen LED benötigen, weil die Vorwärtsspannung der LED ziemlich hoch ist, sehen diese. Der Innenwiderstand liegt bei 25 Ohm. Nehmen Sie (3,3 - 3) / 25 = 12 mA. Dies ist also immer noch in Ordnung. Sie sollten den maximalen Strom pro Pin von 40 mA für den 328p-Atmel-Prozessor, der auf den UNO-Karten verwendet wird, nicht überschreiten (sofern nicht anders angegeben) Sie verwenden eine Ableitung des 328p (wo es eine andere Geschichte sein könnte). Für ein Arduino mit 5 V treten jedoch Probleme mit einer Infrarot-LED auf, die eine viel niedrigere Durchlassspannung aufweist, typischerweise 1,2 V (5-1,2) / 25 = 150 mA, und dies ist definitiv zu viel. Verwenden Sie daher einen Strombegrenzer, z als Widerstand, um diese Art von LEDs anzusteuern. Pin 13 auf den Arduino-Platinen (oder ein anderer Pin bei Varianten) hat bereits eine LED und einen Widerstand in Reihe. Außerdem hat die Stromversorgung der Platine eine maximale Nennleistung, normalerweise 200 mA, und Sie müssen unter diesem Wert bleiben, und Sie können nicht mehr als einen bestimmten Betrag von mA pro Gruppe von Pins ziehen, wie dies erläutert wirdhier . Wenn Sie viele LEDs ansteuern möchten, sollten Sie einen Matrix-LED-Treiber verwenden, der das Multiplexing für Sie übernimmt. Sehen Sie sich beispielsweise meinen YouTube-Bereich an, in dem ich den MAX7219CNG-Treiber vorführe. Aber auch Arduino Unos können das Multiplexen für Sie erledigen, siehe mein IR-Thermometer mit 4 Sieben-Segment-LEDs auf Youtube. Viel Spaß beim Hacken.

Ejo60
quelle
-3

JA! Es kann getan werden.

Auch wenn das Gesagte richtig ist ... es gibt einen anderen Weg. Eine energieeffizientere Art, LEDs mit 5 V zu betreiben.

Dies ist ein bisschen undokumentiert und es ist unbekannt, ob die Lösung die LEDs abnutzt, aber es kann getan werden. Ich mache es tatsächlich.

Verwendung von PWM per Hardware: Hier ein Beispiel :

#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 kann auch mit Software und den avrs-Timern simuliert werden. In der lufa-Bibliothek finden Sie ein Beispiel namens LEDNotifier.c.

Mein Fazit: Es ist möglich eine LED mit 5V zu betreiben.

PROS: Kein Widerstand erforderlich. Auch ein wenig Energie sparen (~ 50%)

Nachteile: Ich weiß nicht, ob die Komponente unter Spannung steht und wie sich die Lebensdauer verkürzt.

Es gibt einen Typen, der dieses Experiment auch in Stanford durchgeführt und einige Informationen auf seiner Website veröffentlicht hat .

Gaspar de Elias
quelle
2
Das scheint einfach keine gute Idee zu sein. Sie beziehen wahrscheinlich mehr Strom vom Controller, als für ihn vorgesehen ist, selbst wenn Sie dies nicht sehr lange tun.
Scott Seidman
Wie gesagt das ist undocummented. Der Arduino UNO-Ausgang IO kann zwischen 40 und 50 mA fahren. Das ist konstant. Ich kann mit Sicherheit sehr kurze Impulse mit mehr Strom verarbeiten. Bitte werfen Sie einen Blick auf Wikipedia .
Gaspar de Elias
In der Arduino-Umgebung kann man PWM leichter mit analogWrite()dem entsprechenden Pin erhalten. Ich bin mir immer noch nicht sicher, ob dies eine gute Idee ist, aber zumindest für IR-LEDs ist es üblich, dass die Datenblätter erheblich höhere Spitzenströme für Einschaltdauern von weniger als 100% zulassen.
Microtherion
Ich bin mir ziemlich sicher, dass die Energieeinsparung im Vergleich zu einer widerstandsbasierten Lösung negativ sein wird, da die LED-Effizienz mit zunehmendem Strom geringer wird.
Dmitry Grigoryev