Elektrizitätslehre für Hobby-Elektroniker - [Teil 1]

Teil 1

Elektrizitätslehre für Hobby-Elektroniker und solche, die es werden wollen. Warum wir manchmal eine externe Spannungsversorgung brauchen.

Das Faszinierende an unseren kleinen Micro-Computern und Micro-Controllern ist ja, dass sie uns nicht nur in die Welt der Programmierung (neudeutsch: computational thinking) einführen, sondern auch Zugang verschaffen zu elektronischen Schaltungen (neudeutsch: physical computing).


Man macht nichts verkehrt, wenn man Bücher oder Kurse über Scratch, Python, C oder C++ studiert, denn wenn man das Prinzip der Schleifen und Verzweigungen verstanden hat, lernt man auch (fast) jede andere Programmiersprache.

Die Bücher und Tutorials über den Raspberry Pi oder die Arduino-Familie beginnen häufig mit dem Programm „Hallo Welt“, bei denen genau dieser Text auf dem Bildschirm ausgegeben wird. Und dann kommen schon bald erste Versuche mit LEDs und Widerständen. Das Pendant zu „Hallo Welt“ ist hier die im Sekundentakt blinkende Leuchtdiode. Alle Angaben für die Schaltung sind vorgegeben: rote LED und Vorwiderstand 330 Ohm. Das lange Beinchen der LED an einen GPIO-Pin, das kurze mit dem Widerstand, die andere Seite des Widerstands mit dem Ground-Anschluss (GND) verbinden.

Aber warum ist das so? Kann ich ggf. auch eine grüne LED und einen 220 Ohm Widerstand benutzen? Die Grundlagen dazu hatte vor rund 200 Jahren Georg Simon Ohm gelegt, als er einen linearen Zusammenhang zwischen der Spannung und dem Strom in einem Leiter entdeckte.

Wie bestimme ich nun die Größe des erforderlichen Widerstands, wenn ich doch auch die anderen Größen nicht kenne? Unser Rechtslehrer sagte immer: „Der Blick ins Gesetzbuch erhellt schlagartig die Rechtslage“. Es bleibt uns also nicht erspart, das Datenblatt oder die Dokumentation zu studieren.

Bei der Spannung haben wir die Wahl zwischen den großen Arduinos mit 5 Volt an den Pins und den Raspberry Pis, ESPs und kleinen Arduinos, die – aufgepasst – trotz einer Versorgungsspannung von 5V (meist geliefert vom USB-Port) an den GPIOs (für General Purpose Input/Output)  nur 3,3 Volt vertragen.

Die maximale Stromstärke an einem Pin wird in der Größenordnung 15mA, also nur 0,015A angegeben. Jetzt kommt das Ohm’sche Gesetz zum Einsatz: 3,3V / 0,015A = 220 Ω oder größer, denn wir müssen die maximale Stromstärke ja nicht ausschöpfen. Häufig gibt es auch einen Maximalwert für alle Pins. Da die Stromstärke im Nenner steht: größerer Widerstand bedeutet kleinerer Strom.

Tatsächlich sieht es in unserem Stromkreis mit LED und Widerstand etwas anders aus: Das Ohm’sche Gesetz gilt nur für lineare Verbraucher (Synonym für Widerstand). Unsere LED hat aber andere physikalische Eigenschaften, worauf das letzte Wort im Namen bereits schließen lässt: Light Emitting Diode.

Eine Diode lässt den Strom nur in eine Richtung durch (deshalb die unterschiedlich langen Beinchen) und auch in Durchlassrichtung bedarf es einer Mindestspannung, der sogenannten Flussspannung  (engl. forward voltage), damit die LED leuchtet. Diese Mindestspannung liegt je nach Farbe der LED zwischen 1,2 und 3,5 Volt. Wenn diese Spannung überschritten wird, kann der Strom (fast) unbehindert fließen und muss deshalb von einem Vorwiderstand begrenzt werden.

Also die Rechnung von oben noch einmal: (Spannung am Pin (3,3 oder 5V) minus Flussspannung) geteilt durch max. Strom ergibt des Mindestwert für den Widerstand. Wir bleiben dennoch in der Größenordnung 200 bis 330
Ω, um nichts falsch zu machen.

Und warum muss ein Pull-up-Widerstand 4,7 oder sogar 10 Kilo-Ohm (kΩ), also 10.000 Ohm betragen?

Neue Situation und ein neuer Begriff, der zunächst erklärt werden muss:

Die neue Situation besteht nun darin, dass wir unseren GPIO-Pin nicht als Ausgang betreiben, um eine LED blinken zu lassen, sondern als Eingang, um z.B. abzufragen, ob ein Taster gedrückt wurde oder nicht. Wenn Spannung anliegt, ist der Zustand HIGH, wenn der Eingang „gegroundet“ ist, also an Ground anliegt, ist der Zustand LOW.

Die erste Idee, über einen Taster eine Spannung anzulegen (HIGH) oder eben nicht, führt dann leider zu einem undefinierten Zustand des Eingangs. Die Verbindung zur Spannung wieder unterbrechen bedeutet nämlich nicht, dass jetzt Verbindung zu GND hergestellt ist. Wir benötigen für unsere Logik jedoch eindeutig HIGH oder LOW und deshalb brauchen wir, je nach Situation, eben diese Pull-up- oder Pull-down-Widerstände, über die der Zustand des GPIO nach dem Loslassen des Tasters entweder auf 3,3V (HIGH) oder auf GND (LOW) gezogen wird.

Da die meisten Micro-Controller und Raspberry Pis interne (und damit programmierbare) Pull-up-Widerstände haben und der Taster dann gegen Ground (GND) geschaltet wird, möchte ich hier den Pull-down-Widerstand erklären.

Der Pull-down-Widerstand sorgt dafür, dass der Normalzustand des Eingangs „unten“ auf Ground liegt (Bild "Taster geöffnet"). Das bedeutet, dass die anliegende Spannung null ist. Tatsächlich betrachtet der Prozessor jede Spannung unterhalb ca. 1,4V als LOW, und alles über ca. 1,8V als HIGH. Das hilft uns Bastlern ungemein, denn wir müssen nur den schmalen Bereich um 3,3V/2 vermeiden.


Wenn wir jetzt mit dem Taster den an Ground liegenden Pin mit Spannung verbinden (Bild "Taster geschlossen"), fließt ein Strom! Die Frage ist nur: Wie hoch ist er und wie hoch darf er sein? 

Dafür betrachten wir einen Spannungsteiler mit einem 1kΩ - und einem 10kΩ - Widerstand. Der Name rührt daher, dass diese Anordnung die Spannung von 3,3V im Verhältnis der Widerstände, also 1 : 10 aufteilt. (Erklärung: Durch beide Widerstände fließt der gleiche Strom.) Damit liegen an dem 10kΩ - Widerstand 3V und an dem 1kΩ – Widerstand 0,3V an. Bei 3,3V und zusammen 11 kΩ fließt ein Strom von 0,3mA und der liegt im zulässigen Bereich.

Wenn unser Taster also gedrückt wird, liegen die 3V an unserem GPIO-Pin an; das wird als HIGH erkannt. Wenn der Taster losgelassen wird, liegt der Eingangs-Pin wieder (über den Pull-down-Widerstand) an Ground, also LOW.

Aber noch einmal: der Normalfall ist heute der interne Pull-up-Widerstand in Kombination mit einem Taster, der gegen Ground schaltet. Einen externen Pull-up-Widerstand brauchen Sie aber zum Beispiel für die Signalleitung am Eindraht-Bus (z.B. Temperatur Sensor DS18B20). 

Dritter Anwendungsbereich für unsere kleinen Berechnungen: LEDs sind eigentlich doch nur für Kontrollleuchten; in unseren Schaltungen sind sie in der Lern- oder Testphase nur Platzhalter für richtige Verbraucher, die ggf. mehr Spannung, aber vor allem auch mehr Strom brauchen. Darunter fallen z.B. Relais und Gleichstrommotoren einschl. Servomotoren und Schrittmotoren. Deren Energiehunger wird häufig in Watt oder Kilo-Watt angegeben. Aber was bedeutet z.B. 5W?

Bei unseren 5V fließt dann 1A Strom, denn die Leistung errechnet sich aus Spannung mal Stromstärke (P = U * I). Der Strom liegt also um Größenordnungen höher als zulässig. Keiner der kleinen Micro-Controller kann also Motoren direkt vom GPIO-Pin versorgen, die GPIOs dienen nur als Signalgeber, der „Saft“ muss aus einer externen Spannungsversorgung, z.B. einer Batterie, erfolgen.

Als Lösung für größere Spannungen und Ströme bieten sich mehrere Möglichkeiten an, die hier vorgestellt werden sollen.

Im ersten Fall betrachten wir den Ultraschall-Entfernungsmesser. Das Funktionsprinzip ist einfach: Der Sender schickt einen Ultraschallimpuls. Der Empfänger empfängt das Echo. Das Programm errechnet aus der Laufzeit den Abstand.

Um Entfernungen bis 4,50 m messen zu können, soll die Versorgungsspannung 5 V betragen. Das Gute ist, dass für das Triggersignal die 3,3V genügen, die der Raspberry Pi oder die kleinen Mikro-Controller am GPIO liefern, wir können den Triggeranschluss also direkt anschließen. Aber das Echo-Signal hat 5 V und kann deshalb nicht direkt an einen GPIO-Pin angeschlossen werden.
Wir benötigen wieder einen Spannungsteiler, z.B. mit zwei 10 kOhm Widerständen. Die Spannung von 2,5 V dazwischen wird an einem GPIO-Pin als HIGH erkannt.

Die Software 

Hier der Python Code unter Verwendung von gpiozero: 

#! /usr/bin/python3
# Entfernungsmessung mit dem HC-SR04
import time # Modul time importieren
from gpiozero import DistanceSensor # Import aus dem Modul gpiozero
# GPIO pins definieren
pinTrigger = 11
pinEcho = 13
sensor = DistanceSensor(echo=pinEcho, trigger=pinTrigger)
print("Ultraschall-Entfernungsmessung")
try:
# Wiederholung der Messung alle 0,5 Sekunden
while True:
print("Distanz: %.1f cm" % sensor.distance * 100)
time.sleep(0.5)
# Unterbrechen mit CTRL+C
except KeyboardInterrupt:
print("... und tschüß")

Auch wenn wir die UART-Schnittstellen (TX/RX über Kreuz) zwischen Raspberry Pi (3,3V) und Arduino (5V) verbinden wollen, benötigen wir zwei Spannungsteiler, z.B. 4,7 kOhm und 10 kOhm.

Noch eleganter löst man das Problem mit einem sogenannten Pegelwandler wie dem hier abgebildeten TXS0108E 8 Kanal Logic Level Converter.

Mit dem eben vorgestellten Pegelwandler kann man auch unterschiedliche Signalpegel zwischen Micro Computer und Micro Controller oder anderen elektronischen Bauteilen (ICs) an der SPI - oder I2C – Schnittstelle ausgleichen. Aber auch nicht mehr als Signale mit den kleinen Strömen, die dann fließen.

Wenn wir richtige Verbraucher mit einer höheren Spannung als den 3,3 V von einem GPIO-Pin steuern wollen, benötigen wir eine Art Verstärker. In einfachen Fällen wie den blauen oder UV-LEDs, deren Flussspannung ja sehr nahe an oder sogar über 3,3 V liegen können, genügt dafür ein einfacher Transistor, dessen Basis über einen hochohmigen Widerstand am GPIO-Pin, dessen Emitter an GND und dessen Collector über die LED mit Vorwiderstand an 5 V (Pin2 oder 4) angeschlossen werden.

Wenn der GPIO auf LOW geschaltet ist, fließt kein Strom von der Basis zum Emitter, der Transistor wirkt wie ein offener Schalter, es fließt kein Strom durch die LED.

Wenn der GPIO auf HIGH geschaltet ist, fließt ein durch den hochohmigen Widerstand begrenzter Strom von der Basis zum Emitter, der Transistor wirkt wie ein geschlossener Schalter, es fließt Strom durch die LED, der durch einen Vorwiderstand begrenzt werden muss.

Wenn wir mehrere Verbraucher anschließen wollen, bietet sich die Kombination aus folgenden Bauteilen an: Für die Spannungsversorgung am Breadbord benutzen wir eine externe Spannungsquelle an dem unten abgebildeten Power Supply Modul, das direkt auf die Stromschienen des Breadbords gesteckt werden kann und wahlweise 3,3 V oder 5 V liefert (wählbar mit dem gelben Kurzschlussstecker/Jumper).


Achtung: Bei externer Spannungsversorgung die GND-Anschlüsse des Micro Computers/Controllers und der externen Spannungsquelle verbinden.

Und anstelle einzelner Transistoren verwenden wir ein Darlington-Transistor Array wie den ULN2803.     Der Begriff Darlington-Transistor geht auf einen Ingenieur gleichen Namens zurück, der die Reihenschaltung zweier Transistoren für höhere Stromstärken vorgeschlagen hatte. Und Array bedeutet, dass auf dem ULN2803A insgesamt acht Darlington-Transistoren integriert sind, die bis zu 500 mA Strom bei 5, 6, 9 oder 12 Volt vertragen. Wer noch höhere Ströme benötigt, kann auch zwei Darlington-Transistoren parallel schalten. Dieser IC kostet übrigens weniger als ein Euro.



Für die Schaltung muss man berücksichtigen, dass der Verstärker das Signal invertiert (der kleine runde Kreis an der Spitze des Verstärkersymbols). Das Input-Signal stellt also die Verbindung der LED zu GND her.

An dieser Stelle bietet sich eine Unterbrechung an. Wir haben das Ohm’sche Gesetz wiederholt, den Unterschied zwischen niederohmigen Vorwiderständen und hochohmigen Pull-up oder Pull-down-Widerständen kennengelernt und wir sind sensibilisiert für die Beachtung der 3,3V-Grenze der meisten GPIOs. Im zweiten Teil werden wir weitere nicht-lineare Bauteile betrachten.

Auf vielfachen Wunsch hier der Download des Blog-Beitrags als pdf-Dokument.

 

9 Kommentare

Bernd Albrecht

Bernd Albrecht

Aufgrund des Hinweises von Andreas Reber von der HS-Pforzheim habe ich den Begriff Masse in Ground geändert, obwohl man diese Gleichsetzung in der Elektronik bei Beschreibungen im Internet immer wieder sieht und das Wort Ground auch mit Masse übersetzt werden kann.
Mit Ground meinen wir das Bezugspotential in unseren Schaltungen, egal ob es der Minuspol einer Batterie oder der mit GND bezeichnete Pin des Micro-Controllers ist. Spannung ist nichts anderes als die Differenz des höheren Potentials (Pluspol der Batterie o.ä.) gegenüber diesem Bezugspotential.

Heckewald

Heckewald

Ich bin begistert !!!

Stephan

Stephan

Danke. Gut erklärt. Was ich nicht ganz verstanden habe, warum brauch’ ich am Input einen 1k PullUp-Widerstand? Strombegrenzung?? Ich hatte den bisher weggelassen…

Andreas

Andreas

Überall in den Schaltplänen wird Gnd angegeben, der Text spricht dann von Masse. Masse ist aber nicht gleich Gnd. Bitte im Text “Masse” durch “Gnd” ersetzten, damit Text und Zeichnungen übereinstimmen und nicht schon in einem Einsteiger-Seminar der Fehler mit Masse = Gnd gelegt wird.

Alnoor Ratansi

Alnoor Ratansi

Very Good tutorial, Thanks, please continue with more

EloMarco

EloMarco

ein schöner Beitrag und gut beschrieben, auch die Bereitstellung als Pdf.
Man sieht aber auch wie einfach die Programminerung mit “Python” ist,
welches auf dem Rasbian-Linux Standart ist. Weiter so…

Hans-Georg Gebhard

Hans-Georg Gebhard

Sehr guter Beitrag. Ich hoffe, vor allen Dingen auch in Eurem eigenen Interesse, dass Ihr diese Serie noch intensiv fortsetzt.
So bin ich in Produktbewertungen bei Euch vor kurzer Zeit über eine zu den Servos mit Kunststoffgetriebe gestolpert. In dieser hat ein Kunde sich sehr über hohe Ausfallquoten beschwert.
Sicherlich kann es schonmal eine sehr sehr schlechte Charge einer Elektrokomponente geben, jedoch schlich sich bei mir der Gedanke ein, dass dieser Kunde doch eher die Leistungsfähigkeit des Produktes falsch eingeschätzt haben könnte.
Somit könnte ich mir vorstellen, dass ein Thema zu elektromagnetischen Komponenten, wie eben Servos, Motore, Elektromagnetetn….etc., und in diesem Zusammenhang mit Drehmomenten, Halteströmen, Dauer- und Impulsbelastungen, und ganz besonders die Umrechnung von Drehmomenten in elektrische Leistungen, durchaus von großen Interesse sein dürfte.
Freundlichen Gruß
HGG

Heiko

Heiko

Sehr gute Erklärung, ohne viel Ballast – weiter so…

Karl

Karl

Im Großen und Ganzen nicht schlecht, aber an einigen Stellen etwas ungenau und möglicherweise dadurch verwirrend.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert