Praktischer Einstieg in die Elektronik mit dem Arduino

Arduino Uno

Dieser Leitfaden soll technikbegeisterten Einsteigern die Anfänge in die umfangreiche Welt der Elektronik und der Programmierung des Arduino leichter und verständlicher machen. Ziel ist es, nach dem sorgfältigen Durcharbeiten dieses Beitrags nicht nur einen Überblick über die Möglichkeiten und Grenzen des Arduino zu bekommen, sondern auch die ersten eigenen Projekte und Ideen umzusetzen.
Wer allerdings tiefer in die Materie der Elektrotechnik, Elektronik oder Mikrocontroller- Programmierung einsteigen möchte, dem werden an den entsprechenden Stellen weiterführende Links angegeben.

Einleitung

Voraussetzungen

Für das Verstehen der Inhalte dieses Beitrags sollten die Grundbegriffe der Physik ausreichen, wie sie in der Schule gelehrt werden. Da aber meine Schulzeit auch schon einige Zeit zurückliegt, werde ich an den entsprechenden Stellen dieses Wissen auffrischen bzw. nützliche Links angeben. Für kompaktes Wissen eignet sich eine Formelsammlung, wie z.B. Formelsammlung Elektrotechnik

Sicherheits-Hinweise

Generell sollte man mit dem Umgang mit elektrischem Strom immer passende Sicherheitsvorkehrungen treffen, um sich oder andere Menschen zu schützen und Gefahren durch Brände/Explosionen o.ä. zu vermeiden.
Es werden hier keinerlei Hinweise im Umgang mit Netzspannung (=110V/240V) gegeben und ich rate auch ausdrücklich davon ab, irgendwelche Versuche damit zu unternehmen!
(siehe auch: Verordnung über Allgemeine Bedingungen für den Netzanschluss und dessen Nutzung für die Elektrizitätsversorgung in Niederspannung)

Material und Ausrüstung

Um die Beispiele in diesem Leitfaden nachzubauen (und daran auch weiter zu experimentieren), sind folgende Bauteile notwendig:

Einige zusätzliche Hilfsmittel und Werkzeuge machen das Leben im Umgang mit den oft kleinen elektronischen Komponenten einfacher:

Viele Komponenten kann man einfach und günstig auch aus Starterkits beziehen, z.B.:

Natürlich kann man die einzelnen Komponenten mit ihren spezifischen Werten auch direkt beziehen. Dies ist vor allem nützlich, wenn man genauere Vorstellungen hat, was man bauen will und welche Komponenten man in welcher Zahl benötigt. Einige Bezugsquellen werden auf der Seite mit den Links genannt.
Will man zusätzlich auch einfache Lötarbeiten durchführen, ist die Anschaffung der folgenden Dinge notwendig bzw. hilfreich:

Bevor wir uns aber dem Arduino selbst widmen, werden einige essentielle Grundlagen geschaffen, damit die wichtigsten Begriffe und der Umgang mit den häufigsten Bauteilen verstanden werden. Ungeduldige können die Grundlagen natürlich auch einfach überspringen.

Grundlagen

Größen und Einheiten

Die folgenden 5 Größen gehören zu den wichtigsten Kennzahlen in der Elektrik/Elektronik und werden sehr häufig mit ihren entsprechenden Symbolen verwendet:

Spannung

Die (elektrische) Spannung ist eine grundlegende Größe der Elektrotechnik. Sie kann vorhanden sein, ohne dass Strom fließt und gibt einfach gesagt die "Stärke" einer Spannungsquelle (=elektrische Energiequelle; z.B. Batterie) an. Zur Anschauung kann sie mit dem Wasserdruck in einer Rohrleitung verglichen werden: je höher der "Druck", desto höher die Spannung.
Formelzeichen: U
Einheit: Volt; abgekürzt V
Beispiel: Die Netzspannung in Europa beträgt 230 Volt, d.h. UNetz = 230 V
Im Hobby-Bereich werden üblicherweise Spannung zwischen 0 Volt und 16 V verwendet.

Stromstärke

Die (elektrische) Stromstärke gibt die Menge an elektrischer Energie an, die pro Zeit durch eine Leitung fließt.
Formelzeichen: I
Einheit: Ampere; abgekürzt A
Beispiel: Durch die LED fließt ein Strom von 7 Milliampere, d.h. ILED = 7 mA
Im Hobby-Bereich wird vor allem im Bereich von Milliampere (mA) gearbeitet.

Leistung

Mit der elektrischen Leistung ist hier das Produkt aus Spannung und Stromstärke gemeint und kann beispielsweise angeben, wieviel Hitze ein elektronisches Bauteil abgibt.
Formelzeichen: P
Einheit: Watt; abgekürzt W
Beispiel: Die Glühbirne hat eine Leistung von 60 Watt, d.h. P = 60 W
Im Hobby-Bereich wird vor allem im Bereich von Milliwatt (mW) gearbeitet.

Widerstand

Der (elektrische) Widerstand ist ein Maß dafür, welche elektrische Spannung erforderlich ist, um eine bestimmte elektrische Stromstärke durch einen elektrischen Leiter fließen zu lassen.
(Diese Größe ist nicht zu verwechseln mit dem gleichnamigen elektrischen Bauteil, s.u.)
Formelzeichen: R
Einheit: Ohm; abgekürzt Ω
Beispiel: Der Innenwiderstand der Batterie beträgt 2 Ohm, d.h. RBatt = 2 Ω
Üblicherweise ist der Bereich der verwendeten Widerstände (Bauteile) zwischen Milliohm (mΩ) Kiloohm (kΩ) und Megaohm (MΩ)

Kapazität

Der Begriff der (elektrischen) Kapazität ist vereinfacht gesagt die Menge von gespeicherter elektrischer Energie. (Manchmal wird "Kapazität" auch als Ladungsmenge gespeicherter Energie in Batterien/Akkus angegeben). Formelzeichen: C
Einheit: Farad; abgekürzt F
Beispiel: Die Kapazität des Kondensators beträgt 470 Mikrofarad, d.h. C = 470 µF
Im Hobby-Bereich wird im Bereich von Pico- (pF), Nano- (nF), und Mikrofarad (µF) gearbeitet.

Stromkreis

Strom kann nur in einem geschlossenen Kreis fließen, d.h. eine Strecke, die beim Gleichstrom vom Pluspol zum Minuspol einer Stromquelle führt. Innerhalb dieses Stromkreises liegen ein oder mehrere elektrische Bauteile (z.B. Glühlampe, Motor), die eine bestimmte Funktion erfüllen. Ist ein Stromkreis an irgendeiner Stelle unterbrochen, fließt kein Strom mehr. Strom kann ebenso wenig fließen, wenn gleichnamige Pole einer Stromquelle verbunden sind.

Gleichstrom & Wechselstrom

Im Hobbybereich und auch in diesem Leitfaden werden wir nur den Gleichstrom betrachten, d.h. Stromkreise, in denen der Strom immer nur in eine Richtung fließt, vom Pluspol zum Minuspol.
Nur zu erwähnen sei hier der Wechselstrom, der für besondere Anwendung oder Bauteile wichtig ist (z.B. Lautsprecher) bzw. im gebräuchlichen Stromnetz verfügbar ist. Beim Wechselstrom tauschen sich die elektrischen Pole -d.h. die Stromrichtung- in schneller zeitlicher Abfolge.

Weitere Informationen zu Einheiten, Größen und Formeln können auch in der Wissensdatenbank nachgelesen werden.

Leiter & Isolatoren

Kabel

Damit Strom fließen kann, benötigt man einen Leiter. Dies ist meist ein Material aus Metall (z.B. oder Kupfer, Aluminium, Silber, Stahl) oft in Form eines Kabels (mit Drähten bzw. Litzen) oder gedruckter Leiterbahnen auf einer Platine. Generell kann man jedes Material als Leiter bezeichnen, welches Strom in halbwegs ungehinderter Form durchläßt, ohne nennenswert Leistung (s.o.) aufzunehmen.
Um den Stromfluss an bestimmten Stellen zu verhindern, werden isolierende Materialien verwendet, z.B. als Ummantelung eines Kabels. Ein nicht-isoliertes Kabel könnte bei Berührung mit der Haut oder anderen Metalle den Stromfluss unkontrolliert umleiten. Als Nicht-Leiter oder Isolator versteht man jeden Stoff, der den Strom nicht nennenswert durchfließen lässt, z.B. viele Kunststoffe, Keramik, Glas oder Porzellan.
Als Kurzschluss wird ein Zustand bezeichnet, in welchem der Stromfluss dort stattfindet, wo er nicht stattfinden sollte. Dies kann vor allem bei hohen Spannungen und Stromstärken zu sehr gefährlichen Situationen führen, z.B. elektrischer Schock beim Menschen oder Explosionen und Brände bei Anlagen oder Geräten.
Wasser in Verbindung mit gelösten Salzen (Leitungswasser und v.a. Meerwasser) kann ebenfalls zu einem recht guten Leiter werden, daher sollte jegliche offene Elektrik und Elektronik von Feuchtigkeit und Wasser ferngehalten werden.

Halbleiter

Halbleiter sind Materialien, deren elektrische Leitfähigkeit in etwa zwischen Leitern und Isolatoren liegt. Oftmals ist deren Leitfähigkeit auch von der Temperatur abhängig. Sie werden vor allem in der Elektronik verwendet, wo ihre Leitfähigkeit gezielt angepasst werden kann und so z.B. das Verhalten von bestimmten elektronischen Bauteilen beeinflusst. Verwendet werden Halbleitermaterialien unter anderem in Transistoren, Solarzellen, Leuchtdioden, etc.

Spannungsquelle/Stromquelle

Batterien

Obwohl die Begriffe der Stromquelle und Spannungsquelle in der Elektrotechnik unterschiedliche Bedeutung haben, wird der Begriff Stromquelle im Folgenden vereinfacht als die Quelle zur Lieferung des elektrischen Stromes mit einer bestimmten Spannung verwendet. Dies kann sowohl ein (Strom-)Generator, eine Solarzelle, eine Batterie, ein Akku aber auch das Stromnetz sein. Üblicherweise wird bei jeder Stromquelle die anliegende Spannung mit angegeben, z.B. 1,5V bei einer AA-Batterie. Stromspeicher wie Akkus oder Batterien werden oft zusammen mit ihrer Kapazität genannt, welche eigentlich die Ladungsmenge meint und oft in Amperestunden Ah (oder mAh) angegeben wird.
Warnung: Niemals beide Pole einer Stromquelle direkt miteinander verbinden, da dies zu einem Kurzschluss führt!
(siehe auch Liste gängiger Batterien und Akkus)

Schaltzeichen und Schaltpläne

Elektrische Schaltungen werden üblicherweise in sogenannten Schaltplänen mit speziellen Schaltzeichen (Symbolen) visualisiert. Dies hat den Vorteil, dass der Schaltkreis leichter zu verstehen ist und etwaige Fehler vor dem Aufbau der Schaltung schon erkannt werden können. Außerdem ist ein Schaltplan universell und global lesbar und benötigt (ähnlich wie einer chemischen Formel) keinerlei Kenntnis einer fremden Sprache.
Beispiele für wichtige Symbole können unter Grundlegende Bauelemente gefunden werden.

Schaltplan für einen 9V LED-Blitzer
Abb.: Beispiel für einen einfachen elektrischen Schaltplan; hier für einen 9V LED-Blitzer

Am oben gezeigten Schaltplan sieht man, dass man im Stromkreis auch Abzweigungen erstellen kann. Die Eigenschaften und Werte der betroffenen Bauteile bestimmten dann, wieviel Strom in den verschiedenen Sektionen fließen wird.

Aufbau einer Schaltung

Normalerweise werden die Bauteile von elektronischen Schaltungen möglichst robust miteinander verbunden, damit keine ungewollten Kurzschlüsse auftreten können. Dafür werden die Anschlussstellen meist mit weichem Metall (Silber- oder Bleilegierung) verlötet und ergeben somit eine leitende und sehr stabile Verbindung.
Experimentiert man aber viel oder will eine Schaltung öfters umbauen, so ist ein Verlöten umständlich und mit hohem Zeitaufwand verbunden und so man kann sich einer lötfreien Technik bedienen: dem Steckbrett (=Breadboard). Hier werden die Bauteile in ein Raster von teilweise verbundenen Leitungen gesteckt.
Hinweis zum Aufbau jeder Schaltung: Die Stromquelle sollte immer erst dann angeschlossen werden, wenn der restliche Aufbau der Schaltung fertig und geprüft ist!

Aufbau einer elektrischen Schaltung auf einem Breadboard
Abb.: Beispiel für den Aufbau einer elektrischen Schaltung auf einem Breadboard

Um zu wissen, welche Steckkontakte miteinander verbunden sind, sollte man sich den inneren Aufbau des Breadboards kennen: siehe dazu Wikipedia: Steckplatine

Abb.: Vergleich: leeres Steckbrett/Breadboard (links); leere Platinen mit Raster aus Lötpunkten (rechts)

Elektronische Bauelemente

Elektronische Bauelemente (auch Komponente genannt) sind zentraler Bestandteil einer elektrischen Schaltung, die verschiedene Eigenschaften und Funktionen besitzen. Jedes Bauelement besitzt meist genau eine Funktion, kann aber aus unterschiedlichen Bauteilen zusammengesetzt sein. Jedes Bauteil gibt es oft in unzähligen verschiedenen Ausprägungen und Varianten. Manche der Komponenten sind direkt beschriftet, jedoch sind sie meist zu klein, um alle Eigenschaften darauf abzubilden. Dafür wird meist ein sogenanntes Datenblatt vom Hersteller zur Verfügung gestellt, welches in umfangreicher Form über Zweck, Verwendungsarten, Leistungspotential und Eigenschaften informiert. Datenblätter sind für Laien nicht leicht zu lesen, stellen aber oft essentielle Daten zur Verfügung, die ausschlaggebend für das Gelingen einer elektronischen Schaltung sind.
Einige wichtige Bauelemente, die auch in den späteren Versuchen mit dem Arduino vorkommen, werden in den folgenden Unterpunkten erklärt:

Widerstand

Verschiedene Widerstände
Abb.: Verschiedene bedrahtete Widerstände (beige: Kohleschichtwiderstand; blau: Metalloxidschichtwiderstand) mit den typischen farbigen Ringen zur Visualisierung der Widerstands-Werte.

Widerstände sind häufig verwendete Bauelemente, die es in vielen verschiedenen Formen und Varianten gibt. Sie begrenzen den Strom in einem Stromkreis um ein gewisses Maß. Dies ist wichtig, weil manche Bauteile nur eine Höchstmenge Strom durchfließen darf oder sie nur auf eine bestimmte Maximalspannung ausgelegt sind.
Die im Hobbybereich verwendeten Widerstände sind meist bedrahtete Kohle- oder Metalloxidschichtwiderstände, die durch einige farbige Ringe auf ihrer Außenseite den Wert ihres elektrischen Widerstandes angeben. Üblicherweise können sie eine Maximalleistung von 0,25 Watt aufnehmen. Dieser Wert wird dann wichtig, wenn das Produkt aus Stromstärke und Spannung 0,25 überschreitet. Es können dann Beschädigungen am Widerstands-Bauteil auftreten (verkohlen bzw. durchbrennen), weil der blockierte/gebremste Strom in Wärmeenergie umgewandelt wird.

In der ersten Schaltung wird eine Stromquelle (oft auch VCC genannt; hier eine 9V-Batterie) und ein Widerstand mit dem Wert von 10kΩ in einem Stromkreis wie folgt verschaltet:

Schaltplan
Abb.: Schaltplan für den ersten Versuch. Man erkennt hier die Schaltsymbole für eine Gleichstromquelle (VCC) und einen Widerstand (R1).

Bauen wir diese Schaltung nun auf einem Breadboard nach, so ergibt sich folgendes Bild:

Aufbau der Schaltung
Abb.: Aufbau des ersten Versuches auf einem Breadboard. Oft werden die Drahtfarben für Pluspol in rot und für Minuspol in schwarz dargestellt.

Ist die Batterie nun angeschlossen und der Strom fließt, kann man dies nicht visuell erkennen. Mit dem ohmschen Gesetz kann man für diese Schaltung ausrechnen, durch den Widerstand ein Strom von 0,9mA (=900µA) fließt. Dies entspricht einer Leistung von 8,1mW und ist damit weit unter den 0,25W (=250mW), die solch ein Widerstand aushalten könnte. Der Widerstand wird durch den sehr geringen Stromfluss auch nur unmerklich wärmer. (Könnte mit Thermometer geprüft werden)

Ob Widerstände in einem Stromkreis nacheinander (seriell) oder nebeneinander (parallel) geschaltet werden, hat einen großen Einfluss auf Stromstärke und Spannungsabfall in diesem Stromkreis. Weitere Informationen dazu in Parallelschaltungen und Reihenschaltungen von Widerständen.

Potentiometer

Dreh-Potentiometer
Abb.: Dreh-Potentiometer mit beschrifteten Anschlüssen

Potentiometer (kurz: Potis) sind eine spezielle Variante von Widerständen, denn sie sind regelbar. Sie werden oft als Drehregler oder Schieberegler überall dort verwendet, wo der elektrische Widerstand veränderbar sein soll, z.B. beim Dimmen einer Glühbirne oder der Lautstärkeeinstellung eines Verstärkers.
Potentiometer können innerhalb eines festgelegten Maximalwertes ihren Widerstand stufenlos einstellen. Verbreitete Werte sind 10kΩ, 50kΩ, 100kΩ oder 500kΩ.

Schalter und Taster

Mikrotaster und Kippschalter
Abb.: Mikrotaster (links) und Kippschalter (rechts)

Schalter und Taster gehören funktionsmäßig zu den einfachsten Bauteilen und dienen dazu, einen Stromkreis zu schließen oder zu öffnen, um damit den Stromfluss zu unterbrechen. Taster unterscheiden sich meist von den Schaltern nicht nur in der Art ihrer Bedienung, sondern auch, dass sie wieder in den Anfangszustand gehen, wenn sie losgelassen werden, wobei Schalter meist den geschalteten Zustand mechanisch erhalten. Es gibt hier die verschiedensten Varianten, aber für die ersten Versuch kann mit Mikrotastern und Kippschaltern experimentiert werden.

In der folgenden Schaltung wird der Stromkreis vom vorherigen Versuch durch einen zwischengeschalteten Taster S1 ergänzt. Dieser ist im Normalfall offen, d.h. es wird kein Strom fließen, sobald man die Batterie angeschlossen hat.

Schaltplan
Abb.: Schaltplan für den zweiten Versuch mit einem Taster (Schalter)
Aufbau der Schaltung
Abb.: Schaltkreis des zweiten Versuchs auf einem Breadboard aufgebaut. Der Schalter unterbricht den Stromkreis, bis er gedrückt wird.

LED

LED mit Anschlüssen
Abb.: Rote LED (3mm) mit Anschlüssen

LED ist die Abkürzung von "lichtemittierende Diode" bzw. "light-emitting diode" und ist ein Bauteil mit zwei wichtigen Eigenschaften. Sie strahlt Licht in einer bestimmten Farbe ab und lässt Strom nur in einer Richtung hindurch. Heutzutage kann fast das gesamte Lichtspektrum abgedeckt werden und gibt es unzählige Bauformen und Typen. Wir verwenden hier bedrahtete LEDs (3mm oder 5mm Durchmesser).
Hinweis: Niemals LEDs direkt an eine Stromquelle anschließen oder ohne einen Vorwiderstand betreiben, dies kann zur Beschädigung der LEDs führen!
Hinweis: LEDs sollten nicht in Sperrrichtung betrieben werden, dies kann ebenfalls zur Beschädigung der LEDs führen!

In dem folgenden Versuch wird der vorherige Schaltkreis um eine LED erweitert. Wichtig ist hier vor allem, die Polarität der LED zu beachten, da sie sonst beschädigt werden könnte bzw. auch in Sperrrichtung nicht leuchten wird.

Schaltplan
Abb.: Schaltplan für den dritten Versuch mit einer LED
Aufbau der Schaltung
Abb.: Schaltkreis des dritten Versuchs auf einem Breadboard aufgebaut. Die LED leuchtet nur, wenn der Taster gedrückt wird.

Kondensator

Keramikkondensator und Elektrolyt-Kondensator
Abb.: Keramikkondensator (links; Wert = 22pF) und Elektrolyt-Kondensator (rechts; Wert = 3300µF, 6,3V)

Kondensatoren sind Bauteile, welche elektrische Energie speichern und wieder abgeben können. Im Unterschied zu Batterien oder Akkus ist die gespeicherte Energie sehr gering, kann aber in extrem kurzer Zeit wieder bereitgestellt werden. Die Verwendungsmöglichkeiten von Kondensatoren sind recht vielfältig, z.B. Glättung einer Spannung, Abblocken von Spannungsschwankungen, oder als frequenzabhängiger Widerstand. Dementsprechend gibt es auch viele Varianten und Bauformen, von denen wir im Weiteren die Keramikkondensatoren und die Elektrolyt-Kondensatoren (Elkos) verwenden werden.
Elkos niemals in verpolter Richtung betreiben, es besteht Explosionsgefahr!

Im vierten Versuch ergänzen wir die vorherige Schaltung mit einem Elektrolyt-Kondensator wie in dem unten gezeigten Schaltplan. Der Wert sollte mehr als 100µF aufweisen, sonst wird der Effekt nicht so deutlich. Drückt man nun auf den Taster, so leuchtet die LED eine kurze Zeit auf und erlöscht dann recht schnell. (Es kann sein, dass sie noch ein wenig weiterglimmt).

Schaltplan
Abb.: Schaltplan für den vierten Versuch mit einem in Reihe geschalteten Elektrolyt-Kondensator (C1 = 100µF).
Aufbau der Schaltung
Abb.: Schaltkreis des vierten Versuchs auf einem Breadboard aufgebaut. Die LED erlischt schnell wieder nach Drücken des Tasters. Auf mehrmaliges Betätigen lässt die LED nicht wieder aufleuchten.

Ursache für dieses Verhalten ist die Eigenschaft des Kondensators, dass er leitend ist, solange er noch nicht vollständig mit elektrischer Energie aufgeladen wurde. Ist dies geschehen, so leitet er den Strom nicht mehr. Kondensatoren können ihre gespeicherte Energie nicht lange halten und entladen sich nach wenigen Stunden oder evtl. Tagen. Vorsicht: Geladene Kondensatoren können gefährliche Schocks verursachen, vor allem wenn ihre Spannung hoch ist (siehe Beschriftung des Bauteils)!

Der nächste Versuch mit demselben Elektrolyt-Kondensator macht sich die Speicherfähigkeit anders zu nutze. Hier wird der Elko nicht in Reihe, sondern parallel zur LED und Widerstand geschaltet. Beim Drücken des Tasters leuchtet die LED gewohnt auf, jedoch erlischt sie nicht sofort nach Loslassen des Tasters. Sie leuchtet eine kurze Zeit nach und erlischt dann langsam.

Schaltplan
Abb.: Schaltplan für den fünften Versuch mit dem parallel geschalteten Elektrolyt-Kondensator.
Aufbau der Schaltung
Abb.: Schaltkreis des fünften Versuchs auf einem Breadboard aufgebaut. Je höher die Kapazität des Elkos ist (z.B. 500µF oder 1000µF, desto länger leuchtet die LED nach, wenn der Taster losgelassen wurde.

Transistor

Kleinsignal-NPN-Transistoren (Typ BC547)
Abb.: Kleinsignal-NPN-Transistoren (Typ BC547)

Transistoren sind die weitaus wichtigsten aktiven elektrischen Bauteile, sie werden u.a. in der Nachrichtentechnik, der Leistungselektronik und in Computersystemen verwendet. Einfach gesagt handelt es sich hierbei um einen elektrisch steuerbaren Widerstand, welcher in der Lage ist, sowohl Stromkreise zu unterbrechen als auch zu verstärken. In den folgenden beiden Versuchen werden beide Fälle ausprobiert.
Transistoren haben drei Anschlüsse und können als elektrisch regelbare Ventile verstanden werden. Ein Anschluss bildet sozusagen den Regler, während die anderen den Stromfluss ermöglichen. Durch die Unmenge an verschiedenen Typen und Varianten von Transistoren ist es besonders wichtig, das Datenblatt des zu verwendeten Transistors zu lesen und versteht. In diesem Beitrag wird der BC547 verwendet, ein Kleinsignal-NPN-Transistor, welcher universell einsetzbar ist, wenn keine allzu hohen Ströme fließen.

Im 6ten Versuch verwenden wir einen Transistor als Schalter und besteht aus zwei parallelen Stromkreisen: Über einen Schalter/Taster und einen 100kΩ-Widerstand geht eine Verbindung in die sog. Basis des Transistors. Der andere Stromkreis geht vom Pluspol über den Kollektor zum Emitter des BC547, dann weiter über einen 1kΩ-Widerstand, eine LED zurück zum Minuspol.

Schaltplan
Abb.: Schaltplan für den 6ten Versuch mit dem einem Transistor als Schalter. (Anschlüsse des BC547 beachten!)

Wird nun der Taster gedrückt, so leuchtet die LED so lange auf, bis der Taster wieder losgelassen wird. Dies liegt daran, dass ein (geringer) Strom über den geschlossenen Taster und den 100kΩ-Widerstand durch die Basis des Transistors fließt und so über die Kollektor-Emitter-Strecke eine derartige Verstärkung durchführt, so dass die LED leuchten kann. (Der 100kΩ-Widerstand ist wichtig, denn die Basis eines Transistors darf nicht mit zu hohen Strömen belastet werden!)
Natürlich kann der Taster -wie im ersten Versuch gezeigt- direkt den Stromkreis unterbrechen, dieser Aufbau ist nur als Anschauung für die Funktionsweise des Transistors gedacht.

Aufbau der Schaltung
Abb.: Schaltkreis des 6ten Versuchs auf einem Breadboard aufgebaut. Die LED leuchtet nur, wenn der Taster gedrückt, d.h. der Strom über die Basis des Transistors fließt.

Im 7ten Versuch verwenden wir denselben Transistor BC547 als regelbares Verstärker-Element. Ein Motor soll mit einem Potentiometer geregelt werden, welcher den Taster aus dem 6ten Versuch in der Basis-Strecke ersetzt. Um den Versuch so einfach wie möglich zu halten wird der Motor direkt in die Kollektor-Emitter-Strecke geschaltet. (Wie man Gleichstrom-Motoren richtig/sicher anschließt, kann man unter "DC-Motoren steuern" nachlesen.

Schaltplan
Abb.: Schaltplan für den 7ten Versuch mit einem über den Transistor regelbaren Motor.

Abhängig von U1, R2 und dem verwendeten Motor kann der Motor schon anlaufen, sobald die Batterie angeschlossen wird. Dreht man nun am Potentiometer so wird der Motor schneller oder langsamer laufen, je nach Einstellung des Potentiometers.

Aufbau der Schaltung
Abb.: Schaltkreis des 7ten Versuchs auf einem Breadboard aufgebaut. Der Geschwindigkeit des Motors lässt sich mit dem Potentiometer regeln.

Integrierte Schaltkreise (ICs)

Taktgeber NE555
Abb.: Taktgeber NE555 als Beispiel für eine 8-beinige integrierte Schaltung

Eine besondere Gruppe Bauteile sind die integrierten Schaltkreise, die umgangssprachlich auch als "Mikrochips" bezeichnet werden. Die sind extrem verkleinerte Schaltungen, die häufig verwendete Funktionen besitzen. Sie können meist mit regulären Bauteilen aufgebaut werden, würden aber verhältnismäßig viel Platz und Strom verbrauchen.
In diese Gruppe fallen z.B. Spannungsregler, Taktgeber (z.B. NE555), Speicherchips, Operationsverstärker, Logikbausteine (z.B. Zähler), aber auch Mikrocontroller und Mikroprozessoren, die auch in den PCs oder Laptops verbaut sind.
Zentraleinheit des Arduino ist der Mikrocontroller Atmel ATmega328

Weitere Bauteile

Es gibt noch eine Vielzahl weiterer Bauteile, die hier nicht betrachtet werden, z.B. MOSFETs, Lautsprecher, Mikrophone, (Fein)Sicherungen, Motoren, Varistoren, (Elektronen)röhren, Thyristoren, Optokoppler, Spulen, Induktivitäten, Transformatoren, Quarzoszillatoren, Diacs, Triacs, (Brücken)Gleichrichter, Relais, ...
(siehe auch: Wikipedia - Liste elektrischer Bauelemente

Arduino

Der Name "Arduino" steht zwar für eine Plattform, hier wird er allerdings als Synonym für das Arduino Uno Board Rev3 verwendet. Dies ist eine kleine Platine, die als zentralen Bestandteil den programmierbaren Mikrocontroller Atmel ATmega328 besitzt. Um die Programmierung möglichst einfach zu machen, besitzt das Board einen USB-Anschluss für den PC sowie einen Anschluss für eine (optionale) unabhängige Stromversorgung.
Seit 2005, als der erste Arduino entwickelt wurde, sind etliche verschiedene Modelle mit unterschiedlichen Fähigkeiten auf den Markt gekommen. Für die folgenden Versuche werden ausschließlich der Arduino Uno Rev3 verwendet, der als besonders einsteigerfreundlich gilt.

Funktionen und Leistung

Mikrocontroller ATmega328P
Stromversorgung 7 V bis 12 V (max. 20 V)
Digitale Ein-/Ausgänge (=Pins) 14
Analoge Eingänge (=Pins) 6
Maximale Stromstärke pro Pin 20 mA
Flash-Speicher 32 kB
SRAM-Speicher 2 kB
EEPROM-Speicher 1 kB
Taktfrequenz 16 MHz

Sowohl die Größe des Speichers als auch die Taktfrequenz erscheinen dem Einsteiger im Vergleich zu aktuellen Computer-Prozessoren winzig, jedoch haben Mikrocontroller vollständig andere Aufgabe und müssen auch mit wesentlich geringerem Strom auskommen. In den folgenden (und eigenen) Versuchen wird man schnell sehen, dass für die meisten Anwendungen Geschwindigkeit und Speichergröße mehr als ausreichen.

Programmierumgebung einrichten

(Im Folgenden wird davon ausgegangen, dass ein PC mit Microsoft Windows verwendet wird.)
Um den Arduino überhaupt programmieren zu können ist, werden wir die Entwicklungsumgebung Arduino-IDE verwenden, die von der Arduino Foundation zum freien Download angeboten wird. Nachdem wir die neueste Version der Arduino-IDE heruntergeladen und installiert haben, starten wir sie. Es erscheint der Editor der Arduino-IDE, indem eine neue Datei mit dem Basis-Rumpf eines Arduino-Programms (sog. "Sketch") zu sehen ist:

void setup()
{
}

void loop()
{
}

Dieser Basis-Aufbau ist wichtig und besteht aus den zwei (leeren) Funktionen setup() und loop(). Diese sollten immer im Sketch vorhanden sein, auch wenn man eine davon nicht benötigen sollte, denn sie gewährleisten die korrekte Funktion des Programms.
Einfach gesagt stehen im Rumpf von setup() alle Anweisungen, die nur beim Starten des Programms benötigt werden und damit nur einmal ausgeführt werden. In loop() stehen Anweisungen, die immer und immer wieder hintereinander ausgeführt werden. Dies macht der Arduino automatisch und wir müssen uns nicht darum kümmern.

Kommunikation & Programmierung

Zunächst schließen wird den Arduino mittels eines USB-Kabels am PC an. Es sollte die grüne Betriebs-LEDs des Arduino aufleuchten und evtl. blinkt eine weitere, orange LED auf dem Board, um die wir uns aber momentan nicht kümmern.
Im Menüpunkt Werkzeuge prüfen wir zunächst, ob das richtig Board (Arduino Uno), der richtig Port (sollte automatisch erkannt werden) und der richtige Programmer (AVRISP mkII) ausgewählt sind.

Arduino IDE einrichten
Abb.: Arduino IDE einrichten und vorbereiten. Wenn die Einstellungen schon richtig sind, müssen keine Änderungen vorgenommen werden.

Obwohl der Arduino für die Steuerung von externen Bauteilen, Sensoren, etc. vorgesehen ist, werden wir zunächst ein Sketch schreiben, welches Daten zwischen dem Arduino und unserem PC austauscht und anzeigt. Dies wird oft verwendet, um z.B. Sensordaten anzuzeigen, in Diagrammen darzustellen oder um Fehler im Programm zu finden.
Unser erster Sketch sieht also folgendermaßen aus und sollte z.B. als "ex01.ino" gespeichert werden:

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.println(millis());
    delay(1000);
}

Im setup() besagt die Anweisung Serial.begin(9600);, dass wir für die Dauer des Programms die serielle Konsole (Schnittstelle zwischen Arduino und PC) mit der Rate von 9600 Baud verwenden wollen. (Semikolon am Ende jeder Anweisung nicht vergessen!)
In loop() stehen zwei Anweisungen, die vom Arduino zeitlich nacheinander ausgeführt werden: Serial.println(millis()); weist das Programm an, das die Anzahl der seit Programmstart vergangenen Millisekunden (millis()) auf der seriellen Konsole ausgegeben werden (Serial.println()). Die darauf folgende Zeile veranlasst das Programm für 1 Sekunde (=1000 Millisekunden) anzuhalten (delay(1000);). Und da wir gelernt haben, dass loop() immer wieder ausgeführt wird, sollte also jede Sekunde die Anzahl an Millisekunden ausgegeben werden.

Der Sketch kann nun zunächst auf etwaige (Tipp-)Fehler überprüft werden, indem der Button "überprüfen" gedrückt wird. Erscheinen keine Warnungen oder Fehlermeldungen im unteren Bereich, so ist alles bereit, das Programm auf den Arduino zu laden. Dies geschieht, sobald man den Button "Hochladen" drückt.

Arduino-Sketch überprüfen und hochladen

Jetzt öffnen wir noch die serielle Konsole durch Drücken des Lupen-Knopfs auf der rechten Seite der Menüleiste und es erscheint ein Fenster, in dem unsere Ausgabe nach kurzer Zeit erscheinen sollte:

Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: So ähnlich sollte die Ausgabe auf der seriellen Konsole der Arduino-IDE aussehen. Die Baud-Rate muss derselben im Sketch entsprechen (hier: 9600).

Experimente mit LEDs

Mit LEDs lassen sich viele Versuche zusammen mit dem Arduino durchführen, dass diese leicht zu verbinden und anzusteuern sind. Außerdem lassen sich Effekte schnell sehen, da LEDs nun mal leuchten. 😉

LED leuchten lassen

In diesem Versuch verbinden wird einen digitalen Pin des Arduino (hier: D4) mit einer LED, die noch einen Vorwiderstand besitzt. Um den Stromkreis zu schließen, verbinden wir den negativen Anschluss der LED mit GND des Arduino. Dies steht für "Ground" und bildet gewissermaßen den Minuspol.

Schaltplan
Abb.: Schaltplan zum Verbinden einer LED mit Vorwiderstand an einem digitalen Pin des Arduino
Aufbau auf dem Breadboard
Abb.: Aufbau auf dem Breadboard

Der folgende Sketch soll nun die zuvor angeschlossene LED zum Leuchten bringen:

void setup()
{
    pinMode(4, OUTPUT);
    digitalWrite(4, HIGH);
}

void loop() {}

In setup() sind zwei Anweisungen vorhanden:
pinMode(4, OUTPUT); weist den Arduino an, dass Pin #4 als Ausgang benutzt werden soll.
digitalWrite(4, HIGH); schreibt ein HIGH-Signal auf genau diesen Ausgang. HIGH bedeutet in unserem Fall 5 V und ist so etwas wie ein digitales AN oder TRUE. In Gegensatz dazu könnte man auch ein LOW senden, welches 0 V und damit AUS bzw. FALSE entsprechen würde. HIGH bewirkt in diesem Fall, dass die LED mit 5 V angesteuert wird und damit aufleuchtet.
Der Funktion loop() ist leer und wird nicht benutzt, d.h. der Arduino befindet sich quasi im Leerlauf, sobald die LED aufleuchtet.

LED blinken lassen

Natürlich benötigt man keinen Mikrocontroller wie den Arduino, um einfach eine LED leuchten zu lassen, daher bringen wir etwas mehr Logik in den gleichen Aufbau und schreiben den folgenden Sketch, um die LED an Pin 4 blinken zu lassen:

#define LED_PIN 4

void setup()
{
    pinMode(LED_PIN, OUTPUT);
}

void loop()
{
    digitalWrite(LED_PIN, HIGH);
    delay(500);
    digitalWrite(LED_PIN, LOW);
    delay(500);
}

In setup() finden wir wieder die Anweisung, dass der gewünschte Pin als Ausgang benutzt werden soll. Jedoch besitzt nun loop() vier Anweisungen:
Mit digitalWrite() wird ja bekanntermaßen die LED zu leuchten gebracht bzw. erlischt, je nachdem welchen Wert wir angeben (HIGH oder LOW). Damit das Blinken der LED auch vom menschlichen Auge sichtbar ist, müssen wir zwischen die LED-Schalt-Anweisungen noch eine kurze Pause einfügen. delay() kennen wir ja schon vom ersten Versuch.
Auffallend in diesem Sketch sollte noch die allererste Zeile sein. Dies ist eine Definition für eine Konstante, damit die "4" nicht überall im Sketch verteilt vorkommt, und man den Pin leicht an einer Stelle durch einen anderen ersetzen kann, wenn man das möchte.

An dieser Stelle sei auf die Arduino Sprachreferenz und einige Grundlagen der C-Programmierung verwiesen, die vor allem bei etwas größeren Programmen sehr nützlich sind.

Sensoren

Wenn man beginnt, sich mit dem Arduino zu beschäftigen, will man früher oder später irgendwelche Sensoren ansteuern, die Daten aus der Umwelt erfassen. Dies kann beispielsweise sichtbares Licht, UV-Licht, Infrarot-Licht, Temperatur, Luftfeuchtigkeit oder Luftdruck sein. Grundsätzlich kann der Arduino Daten von externen Komponenten entweder digital oder analog lesen. Oft sind die blanken Sensoren in einem speziellen Modul schon so aufgebaut und vorbereitet, dass sich die Daten sehr leicht mit dem Arduino verarbeiten lassen.

Daten digital einlesen

Digitale Daten liefern genau einen von zwei definierten Zuständen pro Zeiteinheit: HIGH oder LOW (d.h. 5V bzw. 0V). In dem folgenden Versuch lesen wir einen Mikrotaster ein und verarbeiten diese Daten im Arduino. Als Ausgabe verwenden wir eine LED. Daher müssen wir den Aufbau zum vorherigen Experiment nur um einen Taster ergänzen, den wir am digitalen Pin D8 anschließen.

Aufbau auf dem Breadboard
Abb.: Schaltplan, um den Zustand eines Mikrotasters einzulesen.
Aufbau auf dem Breadboard
Abb.: Aufbau auf dem Breadboard

Der Sketch zu diesem Versuch soll eine LED aufleuchten lassen, sobald der Mikrotaster 3× gedrückt wurde. Nach weiteren 3× soll die LED wieder ausgehen:

#define LED_PIN    4
#define BUTTON_PIN 8

void setup()
{
    Serial.begin(9600);
    pinMode(LED_PIN, OUTPUT);
    pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop()
{
    static byte numPressed = 0;

    if (digitalRead(BUTTON_PIN) == LOW) {
        Serial.println("Button pressed");
        numPressed++;
    }

    if (numPressed >= 3) {
        numPressed = 0;
        digitalWrite(LED_PIN, !digitalRead(LED_PIN));
        Serial.println("LED toggle to " + String(digitalRead(LED_PIN)));
    }
}

Dieser Sketch ist etwas umfangreicher und besitzt mehr Logik als der Vorhergehende. Zunächst definieren wir die beiden Pins für die LED und den Taster. In setup() starten wird die serielle Konsole (für spätere Kontrollausgaben) und legen den Pin der LED als Ausgang fest. Den Pin für den Mikrotaster legen wird als Eingang fest (der Wert INPUT_PULLUP aktiviert einen internen sog. Pullup-Widerstand ist aber nicht wichtig zum Verstehen dieses Sketches).
In loop() definieren wir zunächst eine Zähler-Variable, die die Anzahl der Klick auf den Taster registrieren soll.
Mit digitalRead(BUTTON_PIN) lesen wir den aktuellen (digitalen) Zustand des Eingangs und damit des Taster aus und prüfen in derselben Zeile, ob dieser gedrückt wurde. Wenn ja, dann erhöhen wir den Zähler (und schreiben eine Ausgabe auf die serielle Konsole).
In der nächsten if-Anweisung prüfen wir, ob der Zähler schon die dreimal Taster-Drücken registriert hat, und lassen die LED wahlweise aufleuchten oder erlöschen. Der Zähler wird wieder zurückgesetzt und eine weitere Kontroll-Ausgabe wird auf die serielle Konsole geschrieben.

Wenn der Sketch nun auf dem Arduino läuft und wir den Taster drücken, stellen wir fest, dass die LED sehr schnell flackert und die Ausgaben die serielle Konsole regelrecht fluten. Warum passiert das? Wir stoßen hier auf ein Problem, welches auftritt, wenn die digitale Welt mit der analogen Außenwelt -hier in Form von Menschen- zusammentrifft: Der Mensch ist zu langsam für den Computer! In der Zeit, in der wir den Taster auch noch so schnell drücken und wieder loslassen können, hat der Arduino schon etliche Male den Zustand abgefragt. Damit zählt unsere Zähler-Variable sehr schnell bis auf 3 und die LED schaltet ebenfalls schnell von HIGH nach LOW. Eine Lösung für dieses Problem wäre, nach jeder erfolgreichen Erkennung, dass der Taster gedrückt wurde, den Arduino eine Pause machen zu lassen, z.B. von einer halben Sekunde.
Dazu fügen wird nach der Zeile mit numPressed++; noch folgende Zeile ein:
delay(500);
Schon sollte unser Programm die folgende Ausgabe zeigen und sich richtig verhalten:

Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: Kontroll-Ausgabe auf der seriellen Konsole der Arduino-IDE

Diese Lösung ist zwar schnell gemacht, löst das Problem aber nicht zuverlässig. Es gibt noch einige andere Ansätze, welche ich z.B. in meinem Projekt für das Spiel Senso verwendet habe.

Daten analog einlesen

Analoge Daten haben keine fest definierten Zustände, sondern bewegen sich meist in einem bestimmten Bereich, im Speziellen heißt dies für den Arduino, dass wir an den analogen Eingängen einen maximalen Messbereich von 0 bis 1023 haben. Wie diese Werte interpretiert werden, kommt auf das Eingabegerät bzw. den jeweiligen Sensor darauf an.
In dem folgenden Versuch werden will als analoge Eingabe ein Potentiometer verwenden. Es kann ein beliebiger Wert (10kΩ, 100kΩ, ...) verwendet werden. Aufbau der Schaltung entspricht dem Beitrag "Potentiometer und Arduino", allerdings verwenden wir hier einen anderen Sketch:

#define POTENTIOMETER_PIN A2

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.println(analogRead(POTENTIOMETER_PIN));
    delay(50);
}

Der Arduino liest alle 50ms den Zustand am analogen Pin A2 ein und gibt in der seriellen Konsole aus. Man kann beobachten, dass es zwar größere Änderungen der Werte gibt, wenn man an dem Potentiometer dreht, aber ändern sich die Werte sogar minimal, obwohl keine Änderung erfolgt. Dies liegt an Störungen durch elektromagnetische Strahlen und vermutlich auch, dass ein Potentiometer kein präzises Messinstrument ist. Im Sketch von "Potentiometer und Arduino" ist diesem Problem entgegengewirkt, indem es eine gewisse Fehlertoleranz durch sensitivity eingebaut wurde.

Daten-Schnittstellen (I²C und SPI)

Viele Sensoren gibt es bereits als Arduino-kompatible Module zu kaufen, die oft eine von zwei häufig anzutreffenden Schnittstellen bedienen: SPI oder I²C. Dies sind genormte Schnittstellen, die mit Hilfe von vorprogrammierten Software-Libraries angesprochen werden können und das Auslesen der Sensoren somit deutlich einfacher machen.
Als Beispiel für eine I²C-Schnittstelle kann auf den Beitrag Luftdruck-Sensor BMP-180 verwiesen werden.

Sensoren und IoT

In vielen Fällen werden die gesammelten Sensor-Daten (z.B. Wetterdaten) nicht sofort verarbeitet, sondern als Rohdaten zu einem Dienst in die Cloud geschickt. Solch ein System ist dann Teil des Internet der Dinge (IoT = Internet of Things). Allerdings kann der Arduino Uno alleine nicht dafür verwendet werden, da er keine Möglichkeit hat, ins Internet zu gelangen. Entweder man behilft sich mit einer Erweiterung für WLAN oder Ethernet oder greift auf andere Plattformen wie z.B. den ESP32 oder den Raspberry Pi zurück.

Visualisierung von IoT
Abb.: Visualisierung des IoT, wie Sensor-Daten in der Cloud gespeichert und analysiert werden können: Eine meist mobile Einheit, die solar- oder batteriebetrieben Sensordaten sammelt, schickt diese Daten über WLAN, Ethernet, LoRa oder über das Mobilfunknetz an eine IoT-Plattform, die diese Daten entgegennimmt und speichert. Nun kann von jedem beliebigen Endgerät der Nutzer diese Daten auslesen, analysieren oder grafisch visualisieren.

Aktoren & Ausgabegeräte

Der Arduino kann aber nicht nur Daten von Sensoren sammeln, sondern auch unterschiedlichste Ausgabegeräte ansteuern oder Aktoren bedienen. Sei es, das Steuern der Haustechnik (z.B. Beleuchtung) oder eines Bewässerungssystems, aber auch Hilfsmittel, Spiele oder Kunstinstallationen sind denkbar.
Beispiele sind hierfür:

Shields

Die sogenannten Arduino-Shields sind meist Erweiterungsmodule, die der Form des Arduino-Boards angepasst sind und direkt aufgesteckt werden können, ohne ein separates Breadboard zu verwenden. Beispiele:

Weiterführende Themen

Nach diesem kleinen Überblick sollten die nächsten Schritte das Nachbauen und Experimentieren von kleineren Schaltungen mit dem Arduino sein, um dann bald auch eigene Ideen und Projekte umsetzen zu können.
Da der Arduino (wie alle Mikrocontroller-Plattformen) beschränkte Hardware-Spezifikationen besitzt, wird man bei dem einen oder anderen Projekt an Grenzen stoßen, die aber durchaus lösbar sind, z.B.:

Viel Spaß und Erfolg beim Nachbauen meiner Experimente und Projekte oder beim Erfinden neuer Schaltungen! 🧐

zurück