Ich probiere gerade zum ersten Mal Arduino Uno 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 spielt es hier wirklich eine Rolle? Diese LEDs funktionieren ohne Widerstand einwandfrei.
Frech! :-). Wenn sie sagen, dass sie einen Widerstand verwenden sollen, gibt es dafür einen guten Grund! Schalten Sie es aus, JETZT!
Der Widerstand dient dazu, den Strom der LED zu begrenzen. 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? Kennen Sie das Ohmsche Gesetz? Wenn nicht, schreiben Sie es in großen Buchstaben auf:
Spannung gleich Strom mal Widerstand. Oder könnte man sagen
Das ist gleich. Die Spannung, die Sie kennen: Arduino läuft mit 5 V. Aber nicht alles geht über den Widerstand. Die LED hat auch einen Spannungsabfall, typischerweise etwa 2 V für eine rote LED. Es bleiben also 3V für den Widerstand. Eine typische Anzeige-LED hat dann einen Nennstrom von 20mA
Der Arduino Uno verwendet den Mikrocontroller ATmega328 . Das Datenblatt besagt, dass der Strom für jeden I/O-Pin 40 mA nicht überschreiten sollte, was allgemein als absolute Maximalwerte bekannt ist. 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 Schaden nehmen.
Bearbeiten
Die folgende Grafik aus dem Datenblatt des ATmega zeigt, was passiert, wenn Sie die LED ohne Strombegrenzungswiderstand ansteuern:
Ohne Last beträgt die Ausgangsspannung wie erwartet 5V. Aber je höher der gezogene Strom ist, desto niedriger ist die Ausgangsspannung, sie fällt um etwa 100 mV für jede zusätzliche 4-mA-Last. Das ist ein Innenwiderstand von 25 . Dann
Der Graph geht nicht so weit, der Widerstand steigt mit der Temperatur, aber der Strom bleibt sehr hoch. Denken Sie daran, dass das Datenblatt 40 mA als absolute maximale Bewertung angegeben hat. Du hast das Dreifache. Dies wird definitiv den E/A-Anschluss beschädigen, wenn Sie dies über einen längeren Zeitraum tun. Und wahrscheinlich auch die LED. Eine 20-mA-Anzeige-LED hat oft 30 mA als absoluten Höchstwert.
40Grundstück,
Ich muss sagen, dass das Ansteuern einer LED ohne Widerstand NICHT EMPFOHLEN wird, es sei denn, Sie wissen, was Sie tun. Wenn Sie jedoch verstehen, wie sich eine LED verhält, können Sie sie sicher ohne Widerstand betreiben. Tatsächlich ist es oft besser, eine LED ohne Strombegrenzungswiderstand zu betreiben.
Warum sollten Sie eine LED ohne Widerstand ansteuern? Einfach, um Ihren Stromkreis energieeffizienter zu machen.
Sollten Sie Ihre LED mit PWM ansteuern, das auf ein konstantes Tastverhältnis eingestellt ist (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 man sich Sorgen machen sollte, wenn man den PWM-Ansatz wählt.
HINWEIS: Alle Komponenten können vorübergehende Stromspitzen über ihren maximalen Nennwerten sicher handhaben, solange die Dauer der Stromspitzen KLEIN GENUG ist . Einige Komponenten sind fehlerverzeihender als andere, und wenn Sie Glück haben, gibt das Datenblatt der Komponente an, wie gut sie mit Stromspitzen umgehen kann.
HINWEIS: Sie können der Schaltung einen Kondensator hinzufügen, um die PWM zu mitteln und dieses Problem zu beseitigen.
Sie müssen sich der Fähigkeiten des Ausgangspins bewusst sein, an den Sie auch Ihre LED angeschlossen haben. Der wichtigste Parameter wird der maximale Ausgangsstrom sein. Für den Arduino Uno glaube ich, dass das 40mA sind. Sie sollten ein PWM-Tastverhältnis wählen, dessen durchschnittliche Spannung den Strom durch die LED unter 40 mA hält. Um zu wissen, welche Spannungen so viel Strom erzeugen, müssen Sie sich die IV-Kurve der LEDs ansehen (Strom-Spannungs-Plot). Für eine typische LED ist eine Spannung zwischen 0,7 V (typische Mindestspannung, die benötigt wird, um Licht von der LED zu emittieren) und 1,25 V mit ziemlicher Sicherheit sicher. Warum sind 1,25 V wahrscheinlich sicher? Nun, die meisten LEDs überschreiten 40 mA bei 1,25 V nicht, auch ohne Strombegrenzungswiderstand. Eine andere Sache, die hilft, jemanden zu schützen, falls er zu viel Spannung anlegt, ist, dass die digitale Ausgangsschaltung des Arduino eine eigene Ausgangsimpedanz haben wird, diese Ausgangsimpedanz wird niedrig sein, aber selbst eine Ausgangsimpedanz von 20 Ohm würde einen nicht zu vernachlässigenden Schutz bieten. Das Arduino Uno hat eine digitale Ausgangsimpedanz um 250 Ohm. Um es kurz zu machen, wenn Sie eine LED mit PWM bei 1,0 V bei einer hohen Frequenz ansteuern, besteht bei einer typischen LED keine Chance, dass Sie Ihren digitalen Ausgang auf einem Arduino Uno beschädigen.
Der PWM-Ansatz treibt die LED im offenen Regelkreis an (ebenso wie die Verwendung einer 1,7-V-Stromversorgung ohne PWM). Sie legen eine durchschnittliche Spannung an die LED an, die genau der richtige Wert ist, 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 zu einer beschädigten LED sehr klein (dieser Bereich auf 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 anwenden, nicht immer 1,7 V sind ...
a. Änderungen der Umgebungstemp. Was wäre, wenn Sie einen Motortreiber, Spannungsregler usw. in einer geschlossenen Box hätten, die auch die LED enthielt? Es wäre nicht ungewöhnlich, dass diese anderen Komponenten die Umgebungstemperatur im Inneren des Gehäuses von 25 ° C auf 50 ° C erhöhen. Dieser Temperaturanstieg WIRD das Verhalten Ihrer LED, Ihres Spannungsreglers usw. ändern. Ihre einst sicheren 1,7 V sind nicht mehr 1,7 V und Ihre LED, die früher bei 2,5 V gebraten hat, wird jetzt bei 2,2 V braten.
b. Änderungen Ihrer Versorgungsspannung. Was wäre, wenn Ihre Versorgung eine Batterie wäre? Wenn die Batterie entladen wird, fällt die Spannung erheblich ab. Was wäre, wenn Sie Ihre Schaltung so konzipiert haben, dass sie mit einer leicht gebrauchten 9-V-Batterie gut funktioniert, aber dann eine neue 9-V-Batterie hinzugefügt haben? Brandneue 9-V-Blei-Säure-Batterien haben typischerweise eine tatsächliche Spannung von 9,5 V. Abhängig von der Schaltung, die die für die PWM verwendeten 5 V bereitstellt, können diese zusätzlichen 0,5 V Ihre 5-V-PWM auf 5,3 V erhöhen. Was wäre, wenn Sie einen Akku verwenden würden? Sie haben während ihres gesamten Entladezyklus einen noch größeren Spannungsbereich.
c. Es gibt andere Szenarien, wie induzierter Strom durch 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 einen besseren Weg, der keinen Strombegrenzungswiderstand erfordert?
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 ansteuert, für den Ihre LED ausgelegt ist.
Mit dem richtigen Stromregler kann der Strom drastisch erhöht werden, und Sie können die LED sicher ansteuern, ohne sich um die meisten Probleme kümmern zu müssen, die mit dem Ansteuern einer LED im offenen Regelkreis verbunden sind.
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 kaufen oder Ihren eigenen stromgesteuerten Aufwärtswandler herstellen. Es ist nicht so schwer. Nehmen Sie sich eine Auszeit von Ihrem vollen Terminkalender und lernen Sie Aufwärts- und Abwärtswandler kennen. Erfahren Sie mehr über Schaltnetzteile. Sie versorgen Ihren Computer mit Strom und sind äußerst energieeffizient. Bauen Sie dann entweder einen von Grund auf neu oder kaufen Sie einen kostengünstigen IC, der die meiste Arbeit für Sie erledigt.
Natürlich gibt es, wie bei allen elektronischen Designs, immer noch mehr Dinge, die Sie tun können, um Ihre Schaltung besser zu machen. Schauen Sie sich Abbildung 3 im folgenden PDF an, um zu sehen, wie komplex heutzutage sogar eine LED-Glühbirne für den Haushalt sein kann...
Zusammengefasst: Du musst selbst entscheiden, wie viel Risiko du bereit bist, mit deiner Schaltung einzugehen. Die Verwendung von 5-V-PWM zum Ansteuern Ihrer LED wird wahrscheinlich gut funktionieren (insbesondere wenn Sie einen Kondensator hinzufügen, um die PWM-Rechteckwelle zu glätten und Ihre PWM-Frequenz zu maximieren). Scheuen Sie sich nicht, Ihre Elektronik außerhalb ihrer üblichen Betriebsbedingungen zu betreiben, seien Sie einfach informiert, wenn Sie dies tun, und kennen Sie die Risiken, die Sie eingehen.
Genießen!
FYI: Ich bin überrascht, wie viele Leute sofort auf die Antwort springen: "SIE MÜSSEN EINEN STROMBEGRENZUNGSWIDERSTAND VERWENDEN". Das ist ein gut gemeinter, aber zu sicherer Rat.
Ort
Sie können die eingebauten Pullup-Widerstände wie hier vorgeschlagen verwenden :
Die Pullup-Widerstände liefern genügend Strom, um eine LED, die mit einem als Eingang konfigurierten Pin verbunden ist, schwach zu beleuchten.
OUTPUT
, dort wird erwähnt, dass ein Vorwiderstand benötigt wird: „Dies ist genug Strom, um eine LED hell zu beleuchten (vergessen Sie nicht den Vorwiderstand) oder zum Beispiel viele Sensoren zu betreiben, aber nicht genug Strom, um die meisten zu betreiben Relais, Solenoide oder Motoren.“Die kurze Antwort ist, ja und nein, es hängt von Ihrem Arduino ab und es hängt von der Farbe Ihrer LED ab. Beispielsweise benötigt eine 3,3-V-Platine keinen Widerstand in Reihe mit einer kleinen grünen LED, da die Durchlassspannung der LED ziemlich hoch ist, siehe hier. Der Innenwiderstand beträgt etwa 25 Ohm, nehmen Sie (3,3 - 3)/25 = 12 mA, also ist dies immer noch in Ordnung, Sie sollten nicht den maximalen Strom pro Pin überschreiten, der 40 mA für den 328p-Atmel-Prozessor beträgt, der auf den UNO-Boards verwendet wird (es sei denn Sie verwenden ein Derivat von 328p, wo es eine andere Geschichte sein könnte). Für ein Arduino, das mit 5 V läuft, treten jedoch Probleme mit einer Infrarot-LED auf, die eine viel niedrigere Durchlassspannung hat, typischerweise 1,2 V, (5-1,2) / 25 = 150 mA, und dies ist definitiv zu viel, also verwenden Sie einen Strombegrenzer wie z als Widerstand, um diese Art von LEDs anzusteuern. Pin 13 auf den Arduino-Boards (oder ein anderer Pin auf Varianten) hat bereits eine LED und einen Widerstand in Reihe. Außerdem hat die Stromversorgung der Platine eine maximale Nennleistung von typischerweise 200 mA, und Sie müssen unter diesem Wert bleiben, und Sie können nicht mehr als eine bestimmte Menge an mA pro Gruppe von Pins ziehen, dies wird erklärthier . Wenn Sie viele LEDs ansteuern möchten, sollten Sie einen Matrix-LED-Treiber verwenden, der das Multiplexing für Sie übernimmt, siehe zum Beispiel meinen YouTube-Bereich, in dem ich den MAX7219CNG-Treiber demonstriere. Aber auch Arduino Uno kann das Multiplexing für Sie übernehmen, siehe mein IR-Thermometer mit 4 Sieben-Segment-LEDs auf YouTube. Fröhliches Hacken.
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 beispielsweise 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 von (I=V/R) von 18 mA und einer Verlustleistung (P=IV) von 72 mW.
0402-Widerstände in imperialer Größe (metrisch 1005) haben im Allgemeinen 1/16 W, was 62,5 mW entspricht. In diesem Fall würde dies also nicht funktionieren; es würde den Widerstand überhitzen und seine Lebensdauer verkürzen. Sie müssten also zu einem 0402-Widerstand mit einer Nennleistung von 1/10 W oder einem größeren 0603-Widerstand wechseln.
Wann immer Sie Berechnungen wie diese durchführen, fügen Sie sie dem Schaltplan hinzu, damit der Prüfer Ihre Arbeit leicht überprüfen kann.
Beachten Sie, dass die Durchlassspannung (und damit der Widerstandswert) eine Funktion der LED ist und verschiedene Farben von LEDs unterschiedliche Werte haben. Insbesondere blaue LEDs haben eine hohe Durchlassspannung (~3,0 V typ.). Wenn Sie also versuchen, vier verschiedene LEDs mit der gleichen Helligkeit zu erhalten, müssen Sie die Berechnungen für jede LED wiederholen. Um es wirklich richtig zu machen, schauen Sie sich die optischen Eigenschaften jeder LED bei ihrem Nennstrom an und passen Sie sie entsprechend an.
JA! Es kann getan werden.
Auch wenn das Gesagte richtig ist.... es geht auch anders. Eine energieeffizientere Art, LEDs mit 5 V anzusteuern.
Dies ist etwas undokumentiert und es ist nicht bekannt, ob die Lösung die LEDs abnutzt, aber es kann getan werden. Ich mache es tatsächlich.
Verwenden von PWM per Hardware: Hier ist 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. Sie finden ein Beispiel in der lufa-Bibliothek namens LEDNotifier.c
.
Mein Fazit: Es ist möglich, eine LED mit 5V zu betreiben.
VORTEILE: Kein Widerstand erforderlich. Etwas Energieeinsparung auch (~50%)
NACHTEILE: Ich weiß nicht, ob die Komponente gestresst ist und ob ihre Lebensdauer verkürzt ist.
Es gibt einen Typen, der dieses Experiment auch in Stanford durchgeführt und einige Informationen auf seiner Website veröffentlicht hat .
analogWrite()
auf den entsprechenden Pin bekommen. 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 Arbeitszyklen von weniger als 100% zulassen.
Dan Sheppard