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




<<< pi-top[4]         Internet der Dinge >>>

Physical computing

Das Video zum Thema


Warnung!

GPIO steht für General Purpose Input Output, also Vielzweck Ein- Ausgabe Pin. Mit diesen können Verbraucher geschaltet und Sensordaten eingelesen werden. Durch unsachgemäße Verschaltung der GPIOs kann der verwendete Mikrocontroller oder Computer zerstört werden! Die hier gezeigten Schaltungen sind mit "Sicherheitsreserven" konzipiert, aber es gibt nie eine Garantie, dass ihr euren Raspberry Pi oder Arduino nicht doch beschädigt, wenn ihr mit den GPIOs arbeitet. Ich möchte euch in diesem Kapitel zeigen, wie ihr LEDs, Elektromotoren und Servos ansteuern und Signale einlesen könnt. Das Einlesen von Sensordaten und das Schalten von Verbrauchern per Computer bezeichnet man auch als Physical computing und ist eine hochinteressante Sache. Ich finde es immer wieder schön, wenn eine Schaltung funktioniert und sich Objekte "wie von Geisterhand geführt" bewegen. Solltet ihr bereits Erfahrungen in Lötarbeiten gesammelt haben und besitzt Grundwissen bezüglich Halbleitertechnik, könnte dieses Kapitel interessant für euch sein.
Es besteht die Möglichkeit euren Raspberry Pi zu zerstören, euch die Finger zu verbrennen, Netzteile abzurauchen und vieles mehr, während ihr eure eigenen Platinen baut. Ihr wisst wovon ich spreche? Falls nicht, könnt ihr die folgenden Zeilen lesen, aber bevor ihr anfangt zu handeln, solltet ihr euch das nötige Basiswissen aneignen oder zu kommerziellen Erweiterungsplatinen greifen, die sowohl für den Raspberry Pi als auch für den Arduino in großer Vielfalt erhältlich sind! Das führt schneller zum Erfolg.

Grenzwerte

Raspberry Pi and Arduino Uno
Abbildung 1:
Beim Umgang mit GPIOs sind die Grenzwerte für Strom und Spannung unbedingt zu beachten! Der Raspberry Pi arbeitet mit einer Spannung von 3.3V, der Arduino hingegen mit 5V an den Pins. Diese Spannungen dürfen unter keinen Umständen überschritten werden!
Neben der ausgegebenen Spannung ist der maximal mögliche Strom durch einen Pin von größter Bedeutung! Beim Arduino darf dieser 40mA, beim Raspberry nur 2mA nicht überschreiten. Wir dürfen also kein Bauteil an einen Pin anschließen, durch das ein höherer Strom fließt, da ansonsten der Mikrocontroller oder der Computer umgehend zerstört wird! Nach dem Ohmschen Gesetz können wir den Widerstand berechnen, bei dem dieser Maximalstrom fließt. Für den Arduino erhalten wir 5V / 40mA = 125Ω und für den Raspberry Pi 3.3V / 2mA = 1650Ω als kleinstmöglichen Widerstand für einen Verbraucher, also für ein anzuschließendes Bauteil. Geht man nicht ganz an die Grenzen des physikalisch machbaren, so sollte der Widerstand nicht unter 150Ω beziehungsweise 2kΩ fallen. Die maximal mögliche elektrische Leistung beträgt 5V x 40mA = 200mW beziehungsweise 3.3V x 2mA = 6.6mW.

Maximalstrom der GPIOs des Raspberry Pi

Die GPIOs können einen Ausgangsstrom von bis zu 16mA verkraften, so lange der Gesamtstrom aller GPIOs 51mA nicht überschreitet. In der ursprünglichen Auslegung des Raspberry Pi wurden die 3mA pro GPIO zu Grunde gelegt, wobei die Stromversorgung in der Lage sein sollte, den Gesamtstrom bereitzustellen. Wird nicht aus allen GPIOs Strom gezogen, so kann der Gesamtstrom entsprechend auf die verwendeten Pins aufgeteilt werden, so lange 16mA an einem Pin nicht überschritten werden. Aus den 17 Pins des Ur-Raspberry Pi ergibt sich ein Strom von 3mA pro pin (17 * 3mA = 51mA).
Danke an Alexander für die Richtigstellung.
Eure Schaltungen auf einen Maximalstrom von nicht mehr als 2 bis 3mA pro GPIO auszulegen ist die sichere Herangehensweise!

Anschlüsse

Raspberry Pi GPIO numbers
Abbildung 2:
Beim Anschließen eurer Schaltungen müsst ihr natürlich wissen, welcher Pin welche Funktion bereitstellt. Das Board des Arduino Uno ist entsprechend beschriftet, was die Verwechslungsgefahr minimiert. Für den Raspberry Pi habe ich die Beschriftungen auf dieser Abbildung angebracht. Die Nummeriereung der GPIOs erfolgt dabei nach dem Schema der auf drogon.net erhällichen Software "WiringPi".
Die mit roten Punkten markierten GPIOs sind während des Bootvorgangs eingeschaltet. Der interne Pullup-Widerstand an GPIO 8 und 9 (etwa 1.5kΩ) kann nicht per Software deaktiviert werden.

Color code power pins
Abbildung 3:
Um Verwechslung weiter zu minimieren solltet ihr für die Masseleitung schwarze, für +3.3V orange und für +5V rote Leitungen verwenden. Wird eine externe Spannungsquelle mit +12V verwendet, sollte diese mit gelben Kabeln verbunden werden. Dieses Farbschema wird auch bei Computernetzteilen verwendet.

Ausgabemodus

GPIO in output mode
Abbildung 4:
Ist ein Pin im Modus "Ausgabe" ausgeschaltet, so liegt eine Spannung von etwa 0V zwischen Masse, also dem Minuspol des Computers und dem betreffenden Pin an. Wird der Pin per Software eingeschaltet, so liegt zwischen Pin und Minuspol eine Spannung von 5V beim Arduino beziehungsweise 3.3V beim Raspberry Pi an. Im Video ist zu sehen, dass diese Idealwerte nicht ganz gemessen werden können - mit leichten Abweichungen ist immer zu rechnen. Zum einen ist die Messabweichung digitaler Multimeter zu beachten und zum anderen gibt es Fertigungstoleranzen in den Schaltkreisen des Arduino beziehungsweise des Raspberry Pi. Ferner weicht die Spannung bei angeschlossener Last immer etwas vom unbelasteten Zustand ab.

Digital zu Analog Konverter

Schaltplan Digital zu Analog Konverter
Abbildung 5:

Mit Hilfe ohmscher Widerstände kann ein 2-Kanal 8-Bit "Frequenzgenerator" aufgebaut werden, den ich im Video zum Raspberry Pi gezeigt habe. Dabei handelt es sich im eigentlichen Sinne um einen schnell geschalteten Digital zu Analog Converter (DAC). Die Qualität des Generators ist nicht sehr gut (schlechte Frequenzstabilität, kein symmetrisches Ausgangssignal, nur 1kHz Maximalfrequenz). Andererseits ist dieser einfach nachzubauen. Alles was benötigt wird sind ein paar Widerstände mit zwei unterschiedlichen Werten (der Wert von R1 muss doppelt so hoch sein wie der von R2 - genau, nicht ungefähr). Aus oben genannten Gründen sollten diese deutlich größer als 180Ω beim Arduino bezehungsweise 2kΩ beim Raspberry Pi sein. Ich habe 100kΩ und 200kΩ Widerstände verbaut. Die Schaltung kann verwendet werden, um die Funktionsweise von Digital zu Analog Konvertern zu demonstrieren oder Lissajous-Figuren auf einem Oszilloskop anzuzeigen.

Schalten von LEDs

LEDs
Abbildung 6:
Ein einfacher elektrischer Verbraucher ist eine LED. Ein derartiges Bauteil darf niemals direkt an einen Pin angeschlossen werden, da der elektrische Widerstand einer LED im Betrieb sehr niedrig ausfällt. Um den maximal fließenden Strom zu begrenzen muss also ein Widerstand in Reihe zu der LED angeschlossen werden (=Vorwiderstand, Reihenwiderstand) - beim Arduino ist das mindestens ein 180Ω Widerstand, beim Raspberry Pi ein 2kΩ Widerstand. Im Video habe ich LEDs verwendet, die einen Strom von bis zu 60mA vertragen. Der Nachteil dieses Typs liegt darin, dass die LEDs am Raspberry Pi nur sehr schwach leuchten. Für eure Experimente rate ich zum Kauf sogenannter low current LEDs, die schon bei sehr geringem Strom hell leuchten. Der Typ L-934LID benötigt einen Strom von nur 2mA. Damit muss natürlich ein größerer Vorwiderstand von mindestens 5V / 2mA = 2.5kΩ beim Arduino verwendet werden, da die LED ansonsten zerstört wird!
Weiterhin ist die Polung einer LED zu beachten. Wird diese vertauscht, so kann die LED nicht leuchten. Bei LEDs ist der Minuspol (Kathode) oft durch eine Abflachung am Bund des Gehäusesockels markiert, ferner ist der Pin am Pluspol (Anode) länger als derjenige am Minuspol.

GPIO in output mode
Abbildung 7:
Die LED mit dem Reihenwiderstand kann auf zwei Arten angeschlossen werden:
Möglichkeit (1) besteht darin, die LED-Widerstands-Kombination zwischen Pluspol und Ausgabepin anzuschließen. Verwendet den 3.3V Pluspol beim Raspberry Pi und den 5V Pluspol beim Arduino! Die LED leuchtet in diesem Fall, wenn der Pin ausgeschaltet wird. Der Strom fließt dann vom Pluspol über den Widerstand und die LED in den Pin. Man spricht vom sink current, der Pin wirkt als Stromsenke.
Möglichkeit (2) besteht darin, den Verbraucher zwischen Ausgabepin und Masse (Minuspol) zu schalten. Die LED leuchtet, wenn der Pin eingeschaltet wird. Der Strom fließt dann aus dem Pin über den Verbraucher hin zum Minuspol. Der Pin wirkt als Stromquelle, man spricht vom source current.

Feldeffekttransistoren

Sollen Ströme oberhalb von 2mA beim Raspberry Pi beziehungsweise 40mA beim Arduino geschaltet werden, so muss das Signal der GPIOs verstärkt werden, wozu sich am einfachsten Feldeffekttransistoren eignen.
Amplifying with field-effekt transistor
Abbildung 8:
Ein Feldeffekttransistor besitzt 3 Anschlüsse, die als Source, Gate und Drain bezeichnet werden. Wo sich welcher Anschluss befindet, ist im Datenblatt vermerkt und diese dürfen keinesfalls vertauscht werden! Im Video habe ich für die Schaltungen N-Kanal Feldeffekt-Transistoren vom Typ 2N7000 verwendet. Der Source-Anschluss des Transistors wird direkt mit dem Minuspol und der Drain-Anschluss über die LED und den Reihenwiderstand mit dem Pluspol verbunden. Aus Sicherheitsgründen sollte für erste Versuche zu Transistorschaltungen der +3.3V Anschluss verwendet werden. Der Gateanschluss wird mit dem GPIO verbunden. Diese Verbindung kann direkt erfolgen, aber ich schalte meist einen Reihenwiderstand dazwischen, um den Strom zu begrenzen für den Fall das etwas schief läuft. Ein zweiter Widerstand wird als Pulldown-Widerstand zwischen Source und Gate des Transistors geschaltet. Dieser sorgt dafür, dass der Transistor ausgeschaltet ist, wenn der Pin vom Transistor getrennt wird. Der Reihenwiderstand und der Pulldown-Widerstand bilden einen Spannungsteiler: Je höher der Reihenwiderstand und je kleiner der Pulldown-Widerstand, um so geringer die effektive Spannung am Gate des Feldeffekttransistors. Bei einem 16kΩ Reihenwiderstand und einem 100kΩ Pulldown-Widerstnd liegen am Gate anstelle der 3.3V nur noch 3.3V / (116k&Omega) * 100kΩ = 2.84V an, unter Verwendung eines 200kΩ Pulldown-Widerstands sind es 3.3V / (216k&Omega) * 200kΩ = 3.05V. Wird ein zu großer Pulldownwiderstand verbaut (>1MΩ), wird der Transistor nicht mehr ausgeschaltet, wenn der Gateanschluss vom GPIO getrennt wird. Ein 10kΩ Reihenwiderstand und ein 200kΩ Pulldown-Widerstand sind grobe Richtwerte. Der 16kΩ Reihenwiderstand mit dem 1MΩ Pulldown-Widerstand die im Video verwendet werden, sind grenzwertig, funktionieren aber gut mit dem verwendeten 2N7000. Wenn ihr eurer Sache sicher seid (d.h. ihr habt ausreichend Erfahrung mit Transistorschaltungen), könnt ihr den Reihenwiderstand weglassen und einen Pulldown-Widerstand von 2kΩ verwenden.
Liegen an dem GPIO 0V an d.h. der Pin ist ausgeschaltet, so beträgt der Widerstand der Source-Drain-Strecke des Transistore einige Megaohm. Es fließt kein Strom durch die LED, der Transistor ist "ausgeschaltet".
Liegen 3.3V beim Raspberry beziehungsweise 5V beim Arduino am eingeschalteten GPIO, so wird der Transistor eingeschaltet. Der Widerstand der Source-Drain-Strecke sinkt auf wenige Ohm und die LED leuchtet.

Amplifying with field-effekt transistor
Abbildung 9:
Der im Video verwendete Kleinsignal-Feldeffekttransistor vom Typ 2N7000 benötigt am Gate typischerweise eine Spannung von 2.1V, um eingeschaltet zu werden. Diese Spannung wird als Gate Threshold Voltage (VGSS)bezeichnet. Aufgrund von Streuungen in der Produktion kann die Schwellspannung aber auch schon bei 0.8V oder erst bei 3.0V erreicht werden. Die 3.3V des Raspberry Pi reichen auf jeden Fall aus, um diesen Transistor einzuschalten, die 5V des Arduino erst recht. Weitere Kennwerte sind der maximale Drain Strom, der bei 200mA liegt, die maximale Drain-Source Spannung, die bei 60V und die maximale Gate-Source Spannung, die bei 20V liegt.

Amplifying with field-effekt transistor
Abbildung 10:
Mit dem Transistor kann auch eine Last an einer externen Spannungsquelle geschaltet werden. So kann z.B. ein Lüftermotor an 12V Betriebsspannung geschaltet werden. Dazu muss die Masse (Minuspol) der externen Spannungsquelle (z.B. Batterie) mit Masse des Computers direkt verbunden werden. Der Pluspol der externen Spannungsquelle darf keinesfalls mit dem Pluspol des Arduino oder des Raspberry oder mit irgend einem anderen Pin direkt verbunden werden, da die Computer durch die zu hohe Spannung umgehend zerstört würden! Versichert euch also, dass ihr wirklich den Minuspol der externen Spannungsquelle mit dem Minuspol der Computer verbindet! Verwendet zur Verbindung schwarze Kabel, um diese besondere Leitung kenntlich zu machen. Der Drain-Pin des Transistors wird jetzt über den Lüftermotor mit dem Pluspol der Batterie verbunden. Wird jetzt der Pin eingeschaltet, so wird der Lüftermotor mit 12V betrieben und läuft mit seiner maximalen Drehzahl. Ist die Drehzahl zu hoch, kann Pulsweitenmodulation eingesetzt werden, um diese zu verringern.

Relais

Amplifying with Relay
Abbildung 11:
Anstelle des Lüftermotors kann auch die Spule eines Relais von dem Kleinsignaltransistor angesteuert werden. Fließt ein Strom durch diese Spule, so wird durch die Magnetkraft ein Kontaktpaar geschlossen, womit der Verbraucher am Ausgangsstromkreis der Relais eingeschaltet wird. 12V sind eine übliche Spulenspannung und dabei fließt ein Strom von etwa 100mA-200mA durch diesen Elektromagneten. Vor Anschließen des Relais sollte durch ein Blick in das Datenblatt oder durch Messen mit einem Amperemeter der fließende Spulenstrom ermittelt werden!
Beim Schalten induktiver Lasten (Motor, Spule) sollte zur Unterdrückung von Störspannungen eine Diode (D1) parallel zur Last in Sperrrichtung zur Versorgungsspannung in die Schaltung eingefügt werden. Die Wirkungsweise dieser Freilaufdiode ist im Kapitel zur Pulsweitenmodulation erklärt.

Amplifying with Relay
Abbildung 12:
Durch Kaskadieren von Relais können Ströme von über 100A geschaltet werden, was bei 12V Spannung einer elektrischen Leistung von 1.2kW entspricht.

Amplifying with Relay
Abbildung 13:
Aus zwei Relais mit Wechselschaltern kann eine elektromechanische H-Brücke aufgebaut werden. Der Motor dreht sich nicht, wenn beide GPIOs eingeschaltet oder beide GPIOs ausgeschaltet sind. Wird nur GPIO 1 eingeschaltet, so dreht sich der Motor in die eine Richtung, wenn nur GPIO 2 eingeschaltet ist, in die entgegengesetzte Richtung.
T1, T2 = 2N7000, R1, R4 = 16kΩ, R2, R3 = 200kΩ - 1MΩ

Leistungsstufe

Amplifying with power transistors
Abbildung 14:
Sollen hohe Ströme geschaltet werden, so kommen Leistungs-Feldeffektransistoren zum Einsatz. Diese müssen meist mit einer Source-Gate-Spannung von 10V und mehr angesteuert werden. Da weder der Arduino noch der Raspberry Pi derartige Spannungen an ihren GPIOs zur verfügung stellen, muss ein Kleinsignaltransistor als Vorverstärker verwendet werden. Wird von dem GPIO jetzt eine Spannung von 0V ausgegeben, so liegt am Gate des Leistungstransistors 12V an, womit dieser eingeschaltet wird und der Motor mit maximaler Drehzahl läuft. Wird der Pin eingeschaltet, so liegen hier 3.3V an, wodurch auch der Kleinsignaltransistor eingeschaltet wird. Zwischen Source und Drain des Kleinsignaltransistors und somit am Gateanschluss des Leistungstransistors liegen jetzt 0V an, womit der Leistungstransistor ausgeschaltet wird und der Motor stoppt. Der Raspberry oder Arduino kann den Motor sauber einschalten, jedoch muss der Pin ausgeschaltet werden um den Motor einzuschalten und umgekehrt - das Schaltverhalten ist invertiert.
Mögliche Werte für die Widerstände sind: R1 = 16kΩ, R2 = 1MΩ und R3 = 2kΩ.

Amplifying with field-effekt transistor
Abbildung 15:
Beim Schalten von Elektromotoren sollte zur Unterdrückung von Störspannungen eine Diode parallel zum Motor in Sperrrichtung zur Versorgungsspannung in die Schaltung eingefügt werden. Die Wirkungsweise dieser Freilaufdiode ist im Kapitel zur Pulsweitenmodulation erklärt.

Amplifying with field-effekt transistor
Abbildung 16:
Soll eine LED in den Vorverstärkerkreis eingebaut werden (was bei Versuchsschaltungen ganz hilfreich sein kann), so empfiehlt es sich, einen etwa 10kΩ-Widerstand (R4) parallel zur Diode zu schalten. Im ausgeschalteten Zustand ist der Widerstand des Kleinsignaltransistors zwar hoch, aber nicht unendlich. Der Widerstand einer LED ist nur dann sehr klein, wenn diese leuchtet. Ist der Strom durch eine LED zu gering, um diese zum Leuchten zu bringen, so ist auch der Widerstand einer LED recht hoch. Wird - wie im Video - ein Multimeter parallel zum Kleinsignaltransistor geschaltet, so ist der Messwert auf Grund des Innenwiderstands des Multimeters von normalerweise 1MΩ kleiner als erwartet. Durch den parallel geschalteten Ohmschen Widerstand wird der Gesamtwiderstand aus LED und R4 auf maximal 10kΩ begrentzt. Es fällt somit - insbesondere beim Parallelschalten eines Messgerätes - eine höhere Spannung am ausgeschalteten Transistor ab.

Amplifying with field-effekt transistor
Abbildung 17:
Ein Scheibenwischermotor wird über den Leistungstransistor geschaltet. Für derart hohe Lasten muss unbedingt ein Kühlkörper an dem Leistungstransistor angebracht werden!

Amplifying with power transistor
Abbildung 18:
Das Schaltverhalten des Motors verläuft synchron zum Ausgabepin, wenn eine zweite Kleinsignal-Verstärkerstufe in den Schaltkreis eingebaut wird. Diese zweite Stufe invertiert das Signal des GPIOs erneut, womit wieder das normale Schaltverhalten erreicht wird: Bei eingeschaltetem Ausgabepin wird der Verbraucher am Leistungstransistor ebenfalls eingeschaltet, bei ausgeschaltetem GPIO wird der Verbraucher ausgeschaltet.
T1 = T2 = 2N7000, T3 = IRLZ24N, R1 = 16kΩ, R2 = 1MΩ, R3 = R4 = 2kΩ

Operationsverstärker

Power transistor H bridge
Abbildung 19:
Anstelle eines Kleinsignaltransistors kann auch ein Operationsverstärker eingesetzt werden. Dazu wird mittels eines Spannungsteilers eine feste Spannung von z.B. 2.5V an den invertierenden Eingang gelegt. Der GPIO wird mit dem nichtinvertierenden Eingang verbunden. Ist der GPIO ausgeschaltet, so liegen 0V am nichtinvertierenden Eingang, was kleiner ist als die Spannung am invertierenden Eingang. Damit geht der Operationsverstärker auf LOW-Pegel und gibt 0V aus. Wird der GPIO eingeschaltet, so liegt mit 3.3V (5V) eine höhere Spannung als am invertierenden Eingang. Der Operationsverstärker geht auf HIGH-Pegel und gibt die Versorgungsspannung aus (z.B. 12V).
Der Vorteil bei der Verwendung eines Operationsverstärkers anstelle eines Kleinsignaltransistors liegt darin, dass die Schwelle, ab der geschaltet wird, durch den Spannungsteiler auf einen beliebigen Wert eingestellt werden kann. Mit einem Spannungsteiler aus einem 100kΩ und einem 27kΩ Festwiderstand ergibt sich an 12V Versorgungsspannung eine Spannung von 12V / 127kΩ x 27kΩ = 2.55V. Wie weiter oben beschrieben, liegt bei einem Feldeffekttransistor die Gate Threschold Voltage fest und unterliegt recht großen Fertigungstoleranzen.

Power transistor H bridge
Abbildung 20:
Wird die feste Spannung an den nichtinvertierenden Eingang gelegt und der GPIO mit dem invertierenden Eingang verbunden, so ist das Schaltverhalten des Operationsverstärkers invertiert: Der Ausgang geht auf HIGH-Pegel, wenn der GPIO auf LOW-Pegel (=ausgeschaltet) ist.

Transistor H-Brücke

Power transistor H bridge
Abbildung 21:
Die Drehrichtung eines Elektromotors kann auch mit Transistoren verändert werden. Eine sehr ausführliche Beschreibung zu diesen Schaltkreisen inklusive Video gibt's im Kapitel zu H-Brücken.

Power transistor H bridge
Abbildung 22:
T1 = T2 = 2N7000
T3 = T4 = IRLZ24N
T5 = T6 = IRF9Z34N
R1 = R5 = 16kΩ
R2 = R6 = 200kΩ - 1MΩ
R3 = R4 = 2kΩ

Digitale Eingänge

GPIO im Eingabemodus
Abbildung 23:
Im Modus "Eingabe" gibt ein GPIO eine logische "0" an die Software, wenn eine bestimmte Spannung zwischen Masse und diesem Pin unterschritten wird. Es wird eine logische "1" zurückgegeben, wenn ein vorgegebener Spannungswert überschritten wird. Die Schwellspannung, ab der eine "1" bei steigender Spannung ausgegeben wird ist normalerweise höher als die Schwellspannung ab der bei fallender Spannung wieder eine "0" zurückgegeben wird. Dieses Verhalten bezeichnet man als Hysterese.
Die im Video gemessenen Schwellspannungen liegen bei 1.34V und 1.17V beim Raspberry Pi beziehungsweise bei 2.49V und 2.23V beim Arduino Uno.

Störspannungen
Abbildung 24:
Eine Gleichspannung ist nie völlig konstant, sondern diese ist immer von Störsignalen überlagert. Wären beide Schwellspannungen gleich groß und befände sich die Eingangsspannung nahe dieser Schwellspannung, so würde der Eingang durch die kleinste Störung ständig zwischen "0" und "1" wechseln.

Schalter an GPIO
Abbildung 25:
Die einfachste Möglichkeit, die korrekte Spannung an einen Eingabepin zu legen, ist die Verwendung eines Schalters oder eines Tasters mit zwei Widerständen im Bereich zwischen 10kΩ und 100kΩ. Ein Anschluss des Tasters wird mit Masse des Computers verbunden und der zweite Anschluss mit beiden Widerständen. Das zweite Ende von R1 wird mit +3.3V beim Raspberry und mit +5V beim Arduino verbunden. Das zweite Ende von R2 wird mit dem Eingabepin verbunden. Ist der Schalter offen, so liegt an dem Eingabepin eine Spannung von (fast) 5V beziehungsweise 3.3V an und von der Software wird eine "1" zurückgegeben. Wird der Taster geschlossen, so fällt die Spannung am Eingabepin auf 0V und von der Software wird eine "0" zurückgegeben. Per Software kann mit dieser Schaltung der Zustand des Tasters abgefragt werden. R1 dient als Pullup-Widerstand, R2 ist eine Sicherkeitsvorkehrung: Ist der Pin versehentlich als Ausgang geschaltet und auf HIGH-Pegel während der Schalter geschlossen ist, so fließt ohne den Widerstand ein so hoher Strom, dass euer Computer oder Mikrocontroller umgehend zerstört wird. Der Widerstand begrenzt den Strom auf ungefährliche Werte. Fehlerfreie Software gibt es nicht - daher sind derartige Schutzmechanismen immer einzuplanen!
Beachtet, dass der interne Pullup-Widerstand an GPIO 8 und 9 beim Raspberry Pi nicht per Software deaktiviert werden kann, weshalb diese Schaltung nicht an P1-3 und P1-5 verwendet werden darf! Der interne Pullup-Widerstand an diesen beiden Pins beträgt etwa 1.5kΩ, weswegen auch dann ein HIGH-Signal erkannt wird wenn der Schalter geschlossen ist!
Vergesst nicht, die Pullup- / Pulldown-Widerstände an den Pins per Software auszuschalten, wenn ihr dieses Layout verwendet!

Analoge Eingänge

Potentiometer an Analogeingang
Abbildung 26:
Der Arduino Uno verfügt über 6 analoge Eingabepins. Diese erkennen nicht nur, ob die Spannung an diesen Pins über oder unter einem bestimmten Schwellwert liegt, sondern es kann der genaue Spannungswert erfasst werden. Dieser Spannungswert wird in einen Zahlwert zwischen 0 und 1023 umgerechnet, welcher von der Software ausgelesen werden kann.
Es ist zu beachten dass auch die Spannung an einem Analogeingang des Arduino Uno nie über 5V steigen darf! Im einfachsten Fall kann ein Potentiometer zwischen Masse und +5V angeschlossen werden. Der mittlere Pin des Potentiometers wird mit dem Analogeingang verbunden - sicherheitshalber wieder über einen Widerstand von etwa 10kΩ. So kann die Stellung des Potentiometers eingelesen werden.

Servos

Potentiometer an Analogeingang
Abbildung 27:
Ein Servo hat drei Anschlüsse: Plus, Minus und die Signalleitung. Theoretisch können die 5V des Raspberry beziehungsweise des Arduino verwendet werden, um ein Servo mit elektrischer Energie zu versorgen, aber diese Anschlüsse sind nur für kleine Ströme geeignet und durch Standardservos fließen unter Last Ströme bis zu 500mA. Ein einzelnes Micro-Servo kann durchaus über den 5V-Pin des Arduino, der Ströme bis 400mA verkraftet, betrieben werden, da hier der Strom unter Last bei etwa 200mA liegt. Die schwarze oder braune Masseleitung wird mit Masse des Arduino verbunden, die rote Plus-Leitung mit dem 5V-Pin. Die Signalleitung, die üblicherweise orange oder weiß markiert ist, wird mit einem Pulsweiten-Pin des Arduino verbunden. Da Servos in der Robotik sehr häufig eingesetzt werden, besitzen sowohl der Arduino, als auch der Raspberry vorprogrammierte Routinen, um das spezielle Pulsweitensignal zu generieren.

Potentiometer an Analogeingang
Abbildung 28:
Am Raspberry wird für das Standardservo eine externe Spannungsquelle von 5 bis 6V benötigt. Im Video wird ein Akku mit 6V Nennspannung verwendet, dessen Minuspol mit dem Minuspol des Computers und des Servos verbunden werden muss. Der Pluspol der Batterie wird mit der roten Plusleitung des Servos verbunden. Beim Raspberry wird unter Umständen ein Kleinsignaltransistor als Pegelumsetzer auf 5V benötigt, da nicht alle Servos mit den 3.3V sauber angesteuert werden können. Das Pulsweitensignal wird durch den Pegelumsetzer wie bereits gezeigt, invertiert - das muss durch die Software ausgeglichen werden.

Platinen

Potentiometer an Analogeingang
Abbildung 29:
Verlötet in der Praxis eure Bauteile auf einer Platine oder verwendet Steckbretter für experimentelle Schaltungen! Achtet darauf, eine Platine nie auf eine Metallplatte oder eine andere leitfähige Oberfläche wir z.B. ein Computergehäuse zu legen (Kurzschluss!).
Stromleitungen sollten immer mit einem Knickschutz versehen werden. Ich habe schon so manche Stunde damit verbracht, eine abgeknicktes Kabel zu identifizieren...
Direkt am Knickschutz des Flachbandkabels, das zu den GPIOs des Raspberry führt, ist eine Reihe mit 16kΩ-Widerständen zu sehen, die wie in diesem Kapitel beschrieben, als Strombegrenzung dienen, sollte etwas auf der Platine nicht so funktionieren wie beabsichtigt.
Verwendet passende Stecker anstelle einzelner Leitungen. Werden trennbare Verbindungen benötigt, so sollten unbedingt verpolungssichere Stecksysteme verwendet werden! Ich habe schon so manches Bauteil auf Grund falscher Polung zerschossen und ihr werdet unhöfliche Worte aussprechen, wenn euch das passiert!

Spannungsversorgung

Potentiometer an Analogeingang
Abbildung 30:
Als externe Spannungsquelle kann das Netzteil eines alten Computers verwendet werden. Die schwarzen Leitungen sind Masse, an den oragefarbenen Leitungen liegt +3.3V, an den roten Leitungen +5V und an den gelben Leitungen +12V Spannung. Das grüne Kabel muss auf Masse gelegt werden, um das Netzteil einzuschalten.



<<< pi-top[4]         Internet der Dinge >>>


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





Twitter YouTube Hackaday Patreon TPO