Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Gadgets    Kontakt   




<<< Mikrocontroller-Set         LED Matrix >>>

LEDs mit Hilfe von GPIOs schalten

Das Video zum Schalten von LEDs


GPIO

GPIO eines Raspberry Pi
Abbildung 1:
GPIO steht für General Purpose Input/Output, die jeweiligen Pins können also je nach Verwendungszweck als Schnittstelle zum Einlesen oder zur Ausgabe von Signalen verwendet werden. Um wie in diesem Kapitel einen Verbraucher schalten zu können, wird der Ausgabe-Modus benötigt.
In diesem Modus kann an einen der Pins per Software entweder eine Spannung von 0V oder 3.3V beim Raspberry Pi beziehungsweise 5V am Arduino gelegt werden. Gemessen wird die Spannung dabei immer zwischen Masse und dem betreffenden Pin. Schaltet man einen Verbraucher zwischen den GPIO und Masse, so verhält sich der Pin als Spannungsquelle und es fließt der technisch definierte Strom aus dem Pin durch den Verbraucher zur Masse. Wie jede reale Spannungsquelle, so kann auch ein GPIO-Pin nur einen begrenzten Strom liefern. Wird der Grenzwert überschritten, so führt das zur Zerstörung des jeweiligen Rechners!

LEDs

LED in rundem Gehäuse
Abbildung 2:
Als Verbraucher werden in diesem Kapitel LEDs verwendet. Diese Licht emittierenden Dioden müssen mit der korrekten Polung betrieben werden; dabei muss die Kathode in Richtung Masse des Stromkreises zeigen. An diesen LEDs mit rundem Gehäuse ist die Kathode durch eine Abplattung zu erkennen. Ferner ist der Pin der Kathode kürzer als derjenige der Anode. Die Anode muss zum Betrieb in Richtung der positiven Spannung zeigen.
GPIO und LED
Abbildung 3:
Eine LED darf niemals direkt mit einem GPIO und Masse verbunden werden,...
GPIO mit LED und Vorwiderstand
Abbildung 4:
...es muss immer ein sogenannter Vorwiderstand in Reihe geschaltet sein.
Durch diesen Reihenwiderstand wird der maximal fließende Strom begrenzt. Für den Wert des Vorwiderstands müssen zwei Größen beachtet werden:
Der maximal zulässige Strom durch die LED, der im Datenblatt gelistet ist und für diesen Typ 20mA beträgt und der maximal zulässige Strom, den der betreffende GPIO-Pin liefern kann.

Stromquelle oder Stromsenke

GPIO als Stromquelle, Arduino
Abbildung 5:
Schaltet man einen Verbraucher zwischen GPIO und Masse, so fließt bei eingeschalteter LED der technisch definierte, positive Strom aus dem betreffenden GPIO durch die beiden Verbraucher hin zur Masse. Man spricht in diesem Fall vom GPIO als Stromquelle, im Englischen von Source Current.

GPIO als Stromsenke, Arduino
Abbildung 6:
Die LED inklusive Vorwiderstand kann aber auch zwischen den GPIO und +5V beim Arduino...
GPIO als Stromsenke, Raspberry Pi
Abbildung 7:
...oder +3.3V beim Raspberry Pi geschaltet werden.
Beim Raspberry Pi muss die Last unbedingt zwischen dem GPIO und dem +3.3V-Pin angeschlossen werden, da eine Spannung von +5V zur Zerstörung des Pi führen würde!
Bei eingeschaltetem GPIO ist die LED ausgeschaltet, da die Spannung an beiden Punkten des Stromkreises +3.3V beträgt, während bei ausgeschaltetem GPIO der positive, technisch definierte Strom vom +3.3V Pin über die Verbraucher in den GPIO fließt.
Man spricht in diesem Fall vom GPIO als Stromsenke, im Englischen vom "Sink Current".

Grenzwerte

GPIO mit angeschlossener Last
Abbildung 8:
Wie jede reale Spannungsquelle, so kann auch ein GPIO-Pin nur einen begrenzten Strom liefern. Wird dieser überschritten, so führt das zur Zerstörung des jeweiligen Rechners.
Raspberry Pi und Arduino mit LED und Vorwiderstand
Abbildung 9:
Begrenzt wird der Strom mit Hilfe eines Vorwiderstands, dessen Wert zwei Größen berücksichtigen muss:
Der maximal zulässige Strom durch die LED, der im Datenblatt gelistet ist und für diesen Typ 20mA beträgt und der maximal zulässige Strom, den der betreffende GPIO-Pin liefern kann. Für den Arduino Uno sind 20mA pro Pin das Limit für den Raspberry Pi 16mA. Somit kann der Arduino den Strom liefern den die LED verkraftet, während im zweiten Fall der Raspberry Pi das Limit setzt. Nach dem ohmschen Gesetz können wir den kleinstmöglichen Widerstand für einen Stromkreis in beiden Fällen unter Berücksichtigung der jeweiligen Ausgangsspannung errechnen. Für den Arduino erhalten wir einen Wert von 250 Ohm, für den Raspberry Pi ergibt sich 206.25 Ohm. Um nicht ganz an's Limit zu gehen verwende ich 270 Ohm für den Arduino und 220 Ohm für den Raspberry Pi.


Auch die LED kann das Limit setzen! Werden sogenannte "Low Current LEDs" verwendet, so kann der Maximalstrom, den diese Bauteile vertragen unter Umständen bei 3mA liegen. In diesem Fall ergibt sich als Vorwiderstand für den Arduino:

R = 5V / 0.003A = 1666Ω

und für den Raspberry Pi:

R = 3.3V / 0.003A = 1100Ω

Gesamtstrom

Mehrere GPIOs mit LED und Vorwiderstand
Abbildung 10:
Beim Schalten mehrerer LEDs sind weitere Stromlimits unbedingt zu beachten!
Beim Raspberry Pi darf der Gesamtstrom 100mA nicht überschreiten. Der hier rechts zu sehende Raspberry Pi 3 besitzt 28 GPIOs, womit sich etwas mehr als 3mA pro GPIO ergeben, wenn alle Ausgänge mit einer LED bestückt werden sollen:
I = 100mA / 28 = 3.57mA
Als minimaler Widerstand ergibt sich ein Wert von etwa einem Kiloohm, ohne Berücksichtigung des Spannungsabfalls an der LED:
R = 3.3V / 3.57mA = 924Ω
GPIO mit LED und unteschiedlichen Vorwiderständen
Abbildung 11:
Die mittlere LED leuchtet mit dem 1kΩ Vorwiderstand nur noch recht schwach. Anstatt den Reihenwiderstand wie bei der unteren LED auf nur 68Ω zu verringern, sollte man zu LEDs mit einem höheren Wirkungsgrad greifen.
Die hier zu sehende weiße LED leuchtet mit dem 1 kiloohm Vorwiderstand und einem sich daraus ergebenden Strom von weniger als einem Milliampere deutlich heller als die grüne LED.
Alle GPIOs als Stromquellen mit LED und Vorwiderstand
Abbildung 12:
Beim Arduino beträgt der Gesamtstrom 300mA, es gibt allerdings einen kleinen Unterschied beim Betrieb der GPIOs als Stromquelle oder Stromsenke. Werden die GPIOs wie in diesem Bild als Stromquelle betrieben, so verteilt sich der Gesamtstrom auf 2 Gruppen von Pins:
Pin 0 bis 4 und Pin 14 (A0) bis 19 (A5) = 150mA
Pin 5 bis 13 = 150mA
Auf der sicheren Seite bewegt man sich, wenn man den Strom pro Pin auf 10mA beschränkt. Ohne Berücksichtigung des Spannungsabfalls an der LED erhalten wir als Vorwiderstände:
R = 5V / 0.01A = 500Ω
Mit den hier zu sehenden 560Ω Widerständen leuchten die LEDs ausreichend hell, um zuverlässig zu erkennen, ob ein GPIO eingeschaltet ist.
Alle GPIOs als Stromsenken mit LED und Vorwiderstand
Abbildung 13:
Im Betrieb als Stromsenke verteilt sich der Gesamtstrom auf 3 Gruppen von Pins:
Pin 0 bis 4 = 100mA
Pin 5 bis 13 = 100mA
Pin 14 bis 19 = 100mA
Auch hier ist man mit einem Vorwiderstand von 560Ω auf der sicheren Seite.

Beim Arduino sollte der Strom pro GPIO auf 10mA, beim Raspberry Pi auf 3mA beschränkt werden! Als Vorwiderstand ergibt sich für den Arduino 560Ω, für den Raspberry Pi 1kΩ.

Innenwiderstand

Spannungsabfall an GPIO mit angeschlossener Last
Abbildung 14:
Wird an einen GPIO ein Verbraucher angeschlossen, so fällt die Ausgangsspannung.
Beim Arduino beträgt die Spannungsdifferenz 0.23V mit dem 270 Ohm-Reihenwiderstand und 0.33V mit dem 180 Ohm Reihenwiderstand.
Am Raspberry Pi messen wir 0.17V mit dem 220 Ohm Reihenwiderstand und 0.38V mit dem 68 Ohm Reihenwiderstand.
Mit steigender Last fällt die Ausgangsspannung an dem GPIO wie bei jeder realen Spannungsquelle.

Strom zwischen GPIOs

Strom zwischen GPIOs,
Abbildung 15:
Hier sind zwei LEDs inklusive Vorwiderstand zwischen zwei GPIOs geschaltet. Die Kathode der grünen LED zeigt dabei zum linken GPIO, die der roten LED zum rechten GPIO. Sind beide Pins auf LOW, so beträgt die Spannungsdifferenz 0V und keine der beiden LEDs leuchtet. Wird der rechte Pin auf HIGH geschaltet, so fließt ein Strom aus diesem Pin über die grüne LED und deren Reihenwiderstand in den linken Pin. Der rechte GPIO fungiert als Stromquelle, der linke GPIO als Stromsenke. Die rote LED ist in Sperrrichtung geschaltet, weshalb durch diesen Zweig kein messbarer Strom fließt und diese LED entsprechend nicht leuchtet.
Strom zwischen GPIOs, Arduino
Abbildung 16:
Wenn nun der rechte Pin auf LOW-Pegel geht und der linke Pin auf HIGH-Pegel geht fließt ein Strom aus dem linken Pin über die rote LED und deren Reihenwiderstand in den rechten Pin. Nun ist die grüne LED in Sperrrichtung geschaltet und leuchtet nicht, obwohl zwischen beiden Punkten des Stromkreises eine Spannung von 4.48V abfällt.
Strom zwischen GPIOs, Raspberry Pi
Abbildung 17:
Da je nach Zustand der beiden GPIOs immer nur eine der beiden LEDs in Vorwärtsrichtung geschaltet sein kann, genügt ein einzelner Reihenwiderstand, wie ich hier beim Raspberry Pi zeige.

Es kann also auch ein Strom zwischen GPIOs fließen wobei ebenfalls die Maximalwerte pro Pin nicht überschritten werden dürfen.
Ein Kurzschluss zwischen GPIOs kann den entsprechenden Rechner ebenfalls zerstören, weswegen beim Experimentieren immer passende, entsprechend isolierte Stecker verwendet werden sollten!

Software

Die in dem Video verwendeten Beispiele gibt's hier als Download.


<<< Mikrocontroller-Set         LED Matrix >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Gadgets    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO