ARDUINO
Günter Spanner
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
ARDUINO
te und flage e t i e b r u Übera ierte Neua lis aktua
• Von einfachen bis komplexen Projekten • Schnittstellen und Erweiterungen • Jetzt auch mit dem Elektor Uno uno R4
GÜNTER SPANNER
Dabei wird neben den erforderlichen theoretischen Grundlagen stets größter Wert auf eine praxisorientierte Ausrichtung gelegt. So werden wichtige Techniken wie AD-Wandlung, Timer oder Interrupts stets in Praxisprojekte eingebettet. Es entstehen Lauflichteffekte, ein Aufwachlicht, voll funktionsfähige Voltmeter, präzise Digitalthermometer, Uhren in allen Variationen, Reaktionszeitmesser oder mausgesteuerte Roboterarme. Und ganz nebenbei hat der Leser die Grundlagen der zugehörigen Controller-Technik verstanden und im wahrsten Sinne des Wortes begriffen.
DESIGN SHARE
ISBN 978-3-89576-326-7
SCHALTUNGSPROJEKTE FÜR PROFIS
●
Neben seiner Tätigkeit als Dozent hat er sehr erfolgreich Fachartikel und Bücher zum Thema Elektronik, Halbleitertechnik und Mikrocontroller veröffentlicht sowie Kurse und Lernpakete zu diesen Themen erstellt.
Günter Spanner LEARN DESIGN SHARE
LEARN
Der Autor des vorliegenden Kurses ist seit über 20 Jahren im Bereich der Elektronikentwicklung und der Physikalischen Technologie für verschiedene Großkonzerne tätig.
Mit Arduino – Schaltungsprojekte für Profis wird der Leser umfassend in die Hardware und Software der Arduino-Plattform eingeführt. Einfache, leicht verständliche Projekte am Anfang des Buches führen Schritt für Schritt in die Open-Source-Plattform ein. Die Projekte werden dann zunehmend komplexer, um dem Leser möglichst viele konkrete Lösungsmöglichkeiten aufzuzeigen, die mit dem Arduino-Mikrocontroller auch für angehende Profis zur Verfügung stehen.
ARDUINO – SCHALTUNGSPROJEKTE FÜR PROFIS
SCHALTUNGSPROJEKTE FÜR PROFIS
LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA
Arduino Schaltungsprojekte für Profis 2. Auflage Vom Elektronikeinsteiger zum Mikrocontroller-Profi
● Dr. Günter Spanner
an Elektor Publication LEARN
Arduino Spanner DE 170609.indd 3
DESIGN
SHARE
21-07-17 15:00
●
© 2017: Elektor Verlag GmbH, Aachen.
●
Alle Rechte vorbehalten.
2. Auflage 2017
Die in diesem Buch veröffentlichten Beiträge, insbesondere alle Aufsätze und Artikel sowie alle Entwürfe, Pläne, Zeichnungen und Illustrationen sind urheberrechtlich geschützt. Ihre auch auszugsweise Vervielfältigung und Verbreitung ist grundsätzlich nur mit vorheriger schriftlicher Zustimmung des Herausgebers gestattet. Die Informationen im vorliegenden Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Die in diesem Buch erwähnten Soft- und Hardwarebezeichnungen können auch dann eingetragene Warenzeichen sein, wenn darauf nicht besonders hingewiesen wird. Sie gehören dem jeweiligen Warenzeicheninhaber und unterliegen gesetzlichen Bestimmungen. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autor können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar. Umschlaggestaltung: Elektor, Aachen Satz und Aufmachung: D-Vision, Julian van den Berg | Oss (NL) Druck: Wilco, Amersfoort (NL)
●
ISBN 978-3-89576-326-7
Elektor-Verlag GmbH, Aachen www.elektor.de
Elektor ist Teil der Unternehmensgruppe Elektor International Media (EIM), der weltweit wichtigsten Quelle für technische Informationen und Elektronik-Produkte für Ingenieure und Elektronik-Entwickler und für Firmen, die diese Fachleute beschäftigen. Das internationale Team von Elektor entwickelt Tag für Tag hochwertige Inhalte für Entwickler und DIYElektroniker, die über verschiedene Medien (Magazine, Videos, digitale Medien sowie Social Media) in zahlreichen Sprachen verbreitet werden. www.elektor.de
LEARN
Arduino Spanner DE 170609.indd 4
DESIGN
SHARE
21-07-17 15:00
Inhalt Vorwort zur 2. Auflage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Kapitel 1 • Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 Das Arduino-Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2 Aufbau und Zielgruppe des Buches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Kapitel 2 • Aufbau und Funktion der Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Große Auswahl: Arduino-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Der Elektor UNO R4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3 In allen Variationen erhältlich: Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1 Proto Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.2 Motor Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.3 Ethernet Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 Ohne Power läuft nichts: Die Stromversorgung . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5 Der Controller – das Herz des Arduinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.6 Das USB-Interface – die gute Verbindung zum PC . . . . . . . . . . . . . . . . . . . . . . . 23 Kapitel 3 • Entwicklungsumgebung und Programmiergrundlagen . . . . . . . . . . . . . 24 3.1 Die Integrierte Entwicklungsumgebung (IDE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 Installation des Elektor UNO R4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3 Auch für Linuxfreunde: Die Arduino IDE unter UBUNTU . . . . . . . . . . . . . . . . . . . . 31 3.4 Einfacher Einstieg – der Warnblinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5 Die allgemeine Struktur eines Arduino Programms . . . . . . . . . . . . . . . . . . . . . . . 33 3.6 Grundelemente der Programmiersprache ´C´ für den Arduino . . . . . . . . . . . . . . . 35 3.7 Programm-Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.8 Arduino-spezifische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.9 Punkt und Komma für den Controller: Syntaxelemente . . . . . . . . . . . . . . . . . . . . 38 3.10 Elementare Datenspeicher: Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.11 Die hohe Kunst der Mathematik: Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.12 Für eindeutige Aussagen: Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.13 Unveränderliche Parameter: Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.14 Umgang mit größeren Datenmengen: Variablenfelder . . . . . . . . . . . . . . . . . . . . 44 3.15 Programmsteuerung und Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.16 Zeitsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
●5
Arduino Spanner DE 170609.indd 5
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage 3.17 Mathematische und trigonometrische Funktionen . . . . . . . . . . . . . . . . . . . . . . . 47 3.18 Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.19 Erweiterte Möglichkeiten: Einfügen von Bibliotheken . . . . . . . . . . . . . . . . . . . . . 48 Kapitel 4 • Elektronische Bauelemente und Low Cost „Freeduinos“ . . . . . . . . . . . 50 4.1 Breadboards – Einfach und effektiv ohne Löten . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2 Lochraster – Dauerhafte Aufbauten ohne Chemie . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3 Low Cost “Freeduinos” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.4 Arduino und seine Helfer: Die wichtigsten elektronischen Bauelemente . . . . . . . . . 52 4.4.1 USB-Kabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Widerstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.3 Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.4.4 Potentiometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.4.5 LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.4.6 RGB-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.4.7 Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.4.8 Siliziumdioden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.9 Transistoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Kapitel 5 • „Hello World“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.1 Lauflichter in allen Varianten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.2 Es geht auch heller: Ansteuerung von Power-LEDs . . . . . . . . . . . . . . . . . . . . . . . 59 5.3 POVino: Persistence of Vision-Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Kapitel 6 • Displays und Anzeigetechniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.1 Bargraph-Anzeigen – die Klassiker für Messanwendungen . . . . . . . . . . . . . . . . . . 63 6.2 Einfach und preisgünstig: Sieben-Segment-Displays . . . . . . . . . . . . . . . . . . . . . 64 6.3 4-stelliges 7-Segment-Display: Basis für Messgeräte und Uhren . . . . . . . . . . . . . . 67 6.4 LED-Matrix – Minimonitor für Zeichen und Graphik . . . . . . . . . . . . . . . . . . . . . . . 71 6.5 Das Dot-Matrix-Display als zweistellige Digitalanzeige . . . . . . . . . . . . . . . . . . . . . 75 6.6 Der Mikrocontroller lernt schreiben: Alphanumerisches Display . . . . . . . . . . . . . . 76 6.7 LCD Anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Kapitel 7 • Messtechnik und Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.1 Flexibel und schnell ablesbar: LED-Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2 Volt- und Amperemeter – präzise Messgeräte für das Hobbylabor . . . . . . . . . . . . . 87
●6
Arduino Spanner DE 170609.indd 6
21-07-17 15:00
Inhalt 7.3 Kiloohmmeter für individuelle Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.4 Nie mehr Ärger mit defekten Elkos - Kondensator-Tester „Elkodino“ . . . . . . . . . . . 94 7.5 picoFaradino: Messung kleiner Kapazitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.6 Transistortester „Transistino“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7.7 Ein einfaches NTC-Thermometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.8 Heiß oder Kalt? Temperaturmessung mit dem AD22100 . . . . . . . . . . . . . . . . . . 102 7.9 Fernthermometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.10 Thermodino – präzises Thermometer mit Sieben-Segment-Display . . . . . . . . . . 105 7.11 Wann fühlt man sich am wohlsten? - Hygrometer . . . . . . . . . . . . . . . . . . . . . 109 7.12 Akkudino - das Kapazitätsmessgerät für Akkus . . . . . . . . . . . . . . . . . . . . . . . . 111 7.13 Optosensoren – nicht nur beim Photographieren wichtig! . . . . . . . . . . . . . . . . . 116 7.14 Reflexlicht für Geo-Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.15 Für Profi-Photographen: Digitalluxmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 7.16 „Radarstation“ für zu Hause: Distanzmessung mit Ultraschall . . . . . . . . . . . . . 122 Kapitel 8 • Timer, Uhren und Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 8.1 Für Spaß am Morgen und am Abend: Formel-I-Zahnputzuhr . . . . . . . . . . . . . . . 129 8.2 Präzise und praktisch: Digitaluhr mit LED-Anzeige . . . . . . . . . . . . . . . . . . . . . . 136 8.3 Wer ist schneller? Ein Reaktionszeitmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 8.4 Timerino - ein Universaltimer mit Sieben-Segment-Display . . . . . . . . . . . . . . . . 143 8.5 Steckdosentimer erleichtern das tägliche Leben . . . . . . . . . . . . . . . . . . . . . . . . 147 8.6 Mit atomarer Präzision: DCF77-Funkuhr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 8.7 Ausgabe von Zeit und Datum auf die serielle Schnittstelle . . . . . . . . . . . . . . . . . 150 8.8 DCF77 Funkuhr mit LCD Display als Stand-Alone-Gerät . . . . . . . . . . . . . . . . . . . 152 Kapitel 9 • Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.1 Universell und einfach: Die I2C-Schnittselle . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.2 Wenn die Pins mal knapp werden: Porterweiterung . . . . . . . . . . . . . . . . . . . . . . 157 9.3 Mega-Lauflicht mit 24 LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 9.4 Hex-Debugger mit 2-stelliger Sieben-Segment-Anzeige . . . . . . . . . . . . . . . . . . . 161 9.5 LCD-Display-Steuerung via I2C und PCF8574 . . . . . . . . . . . . . . . . . . . . . . . . . . 164 9.6 Diesmal voll digital: LM75-Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . 166 9.7 Stromsparend: Real Time Clock mit Datumsanzeige . . . . . . . . . . . . . . . . . . . . . 170 9.8 Drahtlos – praktisch - gut: Die IR-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . 173
●7
Arduino Spanner DE 170609.indd 7
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage 9.9 Lampino, die IR-gesteuerte RGB-Lampe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 9.10 Luxus pur – Digitaluhr mit IR-Fernbedienung . . . . . . . . . . . . . . . . . . . . . . . . . 180 9.11 Optimal für Mikrocontroller: die PS/2-Schnittstelle . . . . . . . . . . . . . . . . . . . . . 183 9.12 Tastatur und Maus – als universelle Eingabemedien . . . . . . . . . . . . . . . . . . . . 184 9.13 Ein kompletter Mikrocomputer – mit LCD-Monitor und Tastatur . . . . . . . . . . . . 187 Kapitel 10 • Sound und Synthesizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.1 Schallwandler und Verstärker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.2 Einfache Töne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.3 Schnelle PWM macht’s möglich: nicht nur Töne - sondern Klänge . . . . . . . . . . . 195 10.4 Theremin – Die berührungslose Soundmaschine . . . . . . . . . . . . . . . . . . . . . . . 201 10.5 Audio-Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.5.1 VCO: Durchstimmbare Sinusquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.5.2 Digitales Signalprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.6 Klangwolken: Digitaler Synthesizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Kapitel 11 • Digitale Regelungstechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 11.1 Reglertypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 11.1.1 Der P-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 11.1.2 Der I-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 11.1.3 Der PI-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 11.1.4 Der PD-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 11.1.5 Der PID-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 11.2 Optimale Arbeitsplatzbeleuchtung: Digitaler Helligkeitsregler . . . . . . . . . . . . . . 216 11.3 Klassiker der Regelungstechnik: Der Gravitationskompensator . . . . . . . . . . . . . 219 Kapitel 12 • Physical Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 12.1 Servos steuern die Welt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 12.2 Photino, der 2-D-Kameraschwenker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 12.3 Kranino: Kransteuerung mit Maus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Kapitel 13 • Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 13.1 Arduino & Processing – ein erfolgreiches Duo . . . . . . . . . . . . . . . . . . . . . . . . 236 Kapitel 14 • Modulares Großprojekt „Wohnzimmerbox“ . . . . . . . . . . . . . . . . . . . 246 14.1 Immer nützlich: die Uhr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 14.2 Bedienung aus der Ferne: IR-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
●8
Arduino Spanner DE 170609.indd 8
21-07-17 15:00
Inhalt 14.3 230V-Steuerung für HiFi, TV oder Lampen etc. . . . . . . . . . . . . . . . . . . . . . . . . 248 14.4 Timer und Sensoren als Basis für die Heimautomatisierung . . . . . . . . . . . . . . . 248 14.5 Thermometer für Innen und Außen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.6 Nie mehr zu trockene Luft: Hygrometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.7 Die Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 14.8 Das Beispielprogramm zur Wohnzimmerbox . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Kapitel 15 • ANHANG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 15.1 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 15.2 Bezugsquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 15.3 Programme, Informationen und Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 15.4 Verzeichnis der Beispielsketche und -programme . . . . . . . . . . . . . . . . . . . . . . 255 15.5 Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 15.6 Tabellenverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
●9
Arduino Spanner DE 170609.indd 9
21-07-17 15:00
Vorwort zur 2. Auflage
Vorwort zur 2. Auflage Das „System Arduino“ hat sich seit der ersten Auflage dieses Buches in weiten Bereichen fest etabliert. In vielen Schulen aber auch an Technischen Hochschulen gehört der Arduino zum festen Bestandteil des Ausbildungsprogramms. Aber auch im professionellen Bereich konnte sich der Arduino etablieren. So werden heute in vielen kleinen und mittelständischen Betrieben Prüf- und Testsysteme auf Arduinobasis entwickelt. Als die erste Auflage erschien, war die Arduino Gemeinde gerade dabei, den Umstieg auf die Version 1.0 der Arduino-Programmierumgebung zu vollziehen. Inzwischen ist die IDE-Version 1.8. verfügbar. Alle im Buch vorgestellten Programme und „Sketche“ wurden daher überarbeitet und auf den neuesten Stand gebracht. Zudem wurde der in den Elektor-Labs entwickelte Arduino R4 mit in die Hardwarebeschreibung aufgenommen. Dieses Board verfügt über einige zusätzliche Möglichkeiten und Funktionen, die beim Standard-Arduino UNO nicht vorhanden sind. Der Arduino fasziniert bis heute sowohl Jugendliche als auch „Maker“ im fortgeschrittenen Alter. In einer zunehmend technisierten Welt, in der bald führerlose Fahrzeuge durch die Straßen fahren werden und immer größere Datenmengen die Menschheit beglücken oder aber auch bedrohen, wird ein Lernsystem wie der Arduino mit Sicherheit auch in Zukunft seinen Platz finden und so zu einer fundierten technischen Grundbildung beitragen. Danksagung Ich möchte mich an dieser Stelle besonders bei Hr. Ferdinand te Walvaart für die freundliche Unterstützung und anregende Gespräche auf der Electronica-Messe in München bedanken. Ohne ihn wäre die 2. Auflage dieses Buches nicht zu Stande gekommen. Hr. Volker Bombien und dem Team des Elektor-Verlags gilt mein Dank für Korrekturen, die Umschlaggestaltung und den Satz des Werks.
● 11
Arduino Spanner DE 170609.indd 11
21-07-17 15:00
Kapitel 1 • Einführung
Kapitel 1 • Einführung Für den großen Erfolg des Arduinos lassen sich zwei Ursachen finden. Zum einen wird durch das fertige Prozessorboard der Einstieg in die Hardware enorm erleichtert. Die typischen Anfängerprobleme wie Quarze, die Aufgrund falscher Lastkapazitäten nicht anschwingen, falsche Spannungsversorgungen oder Probleme mit den Einstellungen der Konfigurationsparameter („Fuse-Bits“) sind beim Arduino unbekannt. Das Board wird einfach mit der USB-Schnittstelle des PCs oder Laptops verbunden - und los geht’s. Selbst Jugendliche, aber auch angehörige der älteren Generation, die noch niemals mit Elektronik in Berührung gekommen sind, haben hier keinerlei Probleme. Der zweite Erfolgsfaktor ist die zugehörige Programmieroberfläche. Diese wird kostenlos als Open-Source-Version zur Verfügung gestellt. Darüber hinaus ist sie ohne Installation sofort einsetzbar. Einfache Einstiegsbeispiele sorgen für den schnellen Erfolg. Eine komplizierte Auswahl von Parametern, wie etwa Prozessorversion oder Schnittstelleneinstellungen, ist nicht erforderlich. Die ersten Beispielprogramme können innerhalb weniger Minuten auf den Arduino geladen und getestet werden. Des Weiteren wird der Arduino-Anwender durch eine Fülle von Software-Bibliotheken unterstützt. Die praktisch täglich wachsende Flut von „Libraries“ stellt dann aber den Einsteiger oft vor erste Probleme. Nach einfachen Einführungsbeispielen ist der weitere Weg bisweilen nicht mehr klar erkennbar. Hier mangelt es oft an detaillierten Beschreibungen und Erläuterungen. Die Vielzahl der im Internet mehr oder weniger gut beschriebenen Projekte führt eher zur Verwirrung. Ein klar erkennbarer roter Faden fehlt, da die Anwendungen natürlich von einer Vielzahl einzelner Personen erstellt wurden, die alle jeweils ein ganz individuelles Ziel vor Augen hatten. Hier setzt das vorliegende Buch an. Es werden auf systematische Weise Projekte vorgestellt, die in verschiedene Themengebiete einführen. Dabei wird neben den erforderlichen theoretischen Grundlagen stets größter Wert auf eine praxisorientierte Ausrichtung gelegt. Wichtige Techniken wie AD-Wandlung, Timer oder Interrupts werden daher stets in Praxisprojekte eingebettet. Es entstehen Lauflichteffekte, voll funktionsfähige Voltmeter, präzise Digitalthermometer, Uhren in allen Variationen, Reaktionszeitmesser oder mausgesteuerte Roboterarme. Ganz nebenbei lernt der Leser die „Basics“ der zugehörigen Controllertechnik zu verstehen oder im wahrsten Sinne des Wortes zu begreifen. Die vorgestellten Praxisprojekte bleiben dabei aber nicht im Status eines „Laborprototyps“ haften. Durch entsprechende Tipps und Hinweise entstehen vielmehr praxistaugliche Geräte, die in Haushalt, Hobby und Beruf eingesetzt werden können. Die Projekte lassen sich dabei stets kostengünstig mit gängigen Komponenten realisieren. Auf den Einsatz teurer und schwer zu beschaffender Spezialteile wurde vollständig verzichtet. Im Abschlusskapitel wird schließlich eine Arduino-basierte „Wohnzimmerbox“ vorgestellt. Diese ist modular aufgebaut und kann an die individuellen Bedürfnisse angepasst werden. Hier kann das erlernte Wissen noch einmal praktisch umgesetzt werden und es entsteht außerdem ein alltagstaugliches, aber dennoch nicht alltägliches Gerät.
● 13
Arduino Spanner DE 170609.indd 13
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
1.1 Das Arduino-Projekt Die Idee „Arduino“ wurde am Institut für Interaktives Design in Ivrea, Italien im Jahre 2005 geboren. Die Suche nach einem kostengünstigen Mikrocontrollersystem für Design-Studenten resultierte in einer handlichen Leiterplatte mit allen erforderlichen elektronischen Bauelementen. Hauptziel war die Entwicklung eines preisgünstigen Controllerboards, das auch von Kunst- und Designstudenten ohne Vorkenntnisse in den Bereichen Elektronik und Programmierung schnell und unkompliziert eingesetzt werden konnte. Die erste Version des Arduinos bestand aus einem Hardware-Bausatz, der einfach und schnell zusammen gelötet werden konnte. Dieser erste Bausatz war innerhalb kürzester Zeit ausverkauft, und rasch folgten weitere Auflagen. Designer und Künstler aus anderen Regionen nahmen die Idee auf, so dass sich das „Arduino-Prinzip“ zunächst in Italien, dann in Europa und schließlich weltweit verbreitete. Schnell wuchs das Interesse auch bei anderen Anwendergruppen außerhalb von Kunstakademien und Designerschulen. Das Konzept einer einfachen und kostengünstigen Hardwareplattform in Verbindung mit einer frei verfügbaren, leicht zu erlernenden Programmiersprache wurde bald auch von Hobbyanwendern geschätzt. Schließlich erkannten auch Schulen und Hochschulen im wissenschaftlichen und technischen Bereich das enorme Potential der Arduino-Idee. Es entstanden neue Hardware-Versionen und sogenannte Shields, also aufsteckbare Erweiterungsplatinen. Die Einsatzgebiete des Arduinos waren nur noch durch die Phantasie des Anwenders begrenzt. Inzwischen haben die Verkaufszahlen, alle Arduino-Versionen eingeschlossen, die Anzahl von 100.000 Stück bei Weitem überschritten. Wenn man zusätzlich noch die Eigen- und Nachbauten berücksichtigt, dürfte mittlerweile sogar die Grenze von einer Million überschritten worden sein. Es ist somit sicherlich nicht übertrieben, wenn behauptet wird, dass der Arduino das erfolgreichste Mikrocontroller-Board aller Zeiten ist. 1.2 Aufbau und Zielgruppe des Buches Das vorliegende Buch wendet sich an alle, die schon einige grundlegende Erfahrungen auf dem Gebiet der Elektronik gesammelt haben. Allerdings sind bereits klassische Schulkenntnisse zu Stromkreis, ohmschen Gesetz etc. vollkommen ausreichend. Zudem werden in Kapitel 4 die prinzipiellen Funktionen und Eigenschaften der wichtigsten Bauelemente erläutert. Im weiteren Verlauf des Buches finden sich aber auch sehr anspruchsvolle Projekte, so dass dort durchaus auch Studenten oder Dozenten technischer Fächer neue Herausforderungen finden werden. Die Projekte sind einzelnen Themengruppen zugeordnet, wobei aber auch darauf geachtet wurde, dass die technisch weniger anspruchsvollen Themen am Anfang des Buches behandelt werden. Für Einsteiger ist es also sicher sinnvoll, die Kapitel des Buches der Reihe nach durchzugehen, auch wenn nicht jedes einzelne Projekt realisiert wird.
● 14
Arduino Spanner DE 170609.indd 14
21-07-17 15:00
Kapitel 2 • Aufbau und Funktion der Hardware
Kapitel 2 • Aufbau und Funktion der Hardware Das Arduino-Board war in seiner ursprünglichen Form mit einem ATmega8-Mikrocontroller und einem einfachen RS232-Pegelumsetzer bestückt. Damit konnte es direkt über die serielle Schnittstelle eines PCs oder Laptops programmiert werden. Im Laufe der Zeit haben sich aus diesem Urtyp eine Vielzahl von Updates und Varianten entwickelt. Da immer weniger PCs mit seriellen Schnittstellen ausgestattet wurden und Laptops dieses sogenannte „Legacy“-Interface so gut wie gar nicht mehr aufwiesen, bestand einer der ersten Fortschritte in der Arduino-Entwicklung im Einsatz eines USB-zu-RS232-Konverters. Hierfür wurde zunächst ein spezieller FTDI-Chip eingesetzt. Im Arduino „UNO“ wurde dieser verhältnismäßig teure Chip durch einen ATmega8U2 ersetzt. Dieser kann mittels einer speziellen Firmware ebenfalls USB-Signale in das RS232-Protokoll umsetzen. Auch der ursprünglich als Hautprozessor eingesetzte ATmega8 wurde durch die leistungsfähigeren Typen ATmega168 und ATmega328 ersetzt. Parallel zu den Hauptentwicklungslinien sind im Laufe der Jahre viele mehr oder weniger kompatible Ableger entstanden. So gibt es etwa sogenannte „Rugged“-Versionen, bei denen alle Ports besonders gegen Überspannungen oder Kurzschüsse geschützt sind, oder Spezialentwicklungen mit angepassten Formfaktoren und Pinabständen. 2.1 Große Auswahl: Arduino-Typen Neben dem klassischen Arduino sind inzwischen auch zahlreiche Varianten in verschiedenen Größen und Formen erhältlich. Genannt sei hier der Arduino MEGA, der mit einem ATmega1280 oder ATmega2560 bestückt ist. Diese Prozessoren weisen einen erheblich erweiterten Funktionsumfang auf und auch die Anzahl der verfügbaren Pins ist deutlich größer. Wegen der zahlreichen I/O-Pins weisen die Boards im Vergleich zum klassischen Arduino auch etwa die doppelte Größe auf.
Abb. 2.1: Arduino Uno
● 15
Arduino Spanner DE 170609.indd 15
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Wenn man hingegen möglichst kleine und kompakte Geräte bauen möchte, kann man auf die Mini- oder Nano-Versionen zurückgreifen. Diese Boards haben nur noch die Größe einer Briefmarke. Anstelle der Kontaktbuchsen verfügen sie einfach nur über Lötpunkte. Diese können direkt mit Kabeln verlötet werden. Alternativ sind hier auch Stiftleisten einlötbar, so dass diese kompakten Boards direkt in ein sogenanntes Breadboard oder aber in eine IC-Fassung eingesetzt werden können. Erwähnenswert ist hier auch noch das „LillyPad“. Es zeichnet sich durch seine besondere Bauform aus: Bei dieser Arduino-Variante besteht die Basis nicht aus einer rechteckigen Leiterplatte, sondern einer kreisförmigen Platine. Die Hauptanwendungsgebiete dieser interessanten Spielart liegen im Bereich des „Wearable Computing“, d. h. das LilliPad wird auf Kleidungsstücke aufgenäht und über dünne Drähte oder leitende Fäden mit LEDs, Sensoren oder Aktuatoren verbunden. Abschließend sei hier noch auf die „Pin-Abstands-Falle“ hingewiesen. Leider wurden bei der Entwicklung der klassischen Arduino-Variante nicht alle Buchsen im gängigen Rastermaß von 1/10 Zoll bzw. 2,54 mm angeordnet. So weisen die beiden oberen Buchsenleisten einen Abstand von nur 1/20 Zoll auf. Somit lassen sich leider Lochrasterplatinen mit Standardrastermaß nicht direkt über Stiftleiten mit allen Buchsen verbinden. Hier muss man also immer auf Sonderlösungen zurückgreifen. Ob das Layout absichtlich so gewählt wurde, um etwa einfache Nachbauten von sogenannten Shields, d. h. aufsteckbaren Zusatzmodulen, zu erschweren, oder ob diese Ungereimtheit ganz einfach übersehen wurde, war Thema umfangreicher Diskussionen in diversen Internetforen. Inzwischen werden natürlich alle Arduino-Varianten mit diesem Schönheitsfehler hergestellt, da man nun aus Gründen der Kompatibilität mit den vielen kommerziell erhältlichen Shields die Buchsen-Anordnung nicht mehr ändern kann. Die folgende Abbildung zeigt die Belegung der Arduino-Pins. Darüber hinaus sind auch noch die Bezeichnungen für die Prozessor-Ports des Controllers angeführt. Auf diese Weise wird eine einfache Verbindung zwischen der Arduino-Welt und dem Bereich der professionellen Mikrocontroller-Technologie hergestellt. Zunächst ist natürlich ein einfaches Verständnis der Arduino-Bezeichnungen vollkommen ausreichend. Später allerdings, wenn auch fortgeschrittenere Anwendungen realisiert werden sollen, kann die Arduino Pin Map nützliche Dienste leisten.
● 16
Arduino Spanner DE 170609.indd 16
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Kapitel 3 • Entwicklungsumgebung und Programmiergrundlagen Das Arduino-Board wird über eine spezielle, anfängerfreundliche Programmieroberfläche (IDE = Integrated Design Environment = Integrierte Entwicklungsoberfläche) programmiert. Der große Vorteil im Vergleich zu einer klassischen „Tool-Chain“ liegt darin, dass sie sehr intuitiv bedient werden kann. Neben dem Arduino-Board selbst ist diese spezielle Entwicklungsumgebung sicher einer der Hauptfaktoren für den großen Erfolg des Arduino-Konzeptes. 3.1 Die Integrierte Entwicklungsumgebung (IDE) Die IDE erfordert keine langwierige Installation. Die ersten Programme können direkt nach dem Start der IDE auf den Mikrocontroller geladen werden. Die aktuelle Version der IDE kann kostenlos unter http://arduino.cc/en/Main/Software geladen werden. Es stehen verschiedene Versionen für die gebräuchlichsten Betriebssysteme (Windows, MAC OS und Linux) zur Verfügung. Die vollständigen Programmpakete liegen als komprimierte ZIP-Archive vor und können in ein beliebiges Verzeichnis extrahiert werden. Alternativ kann auch eine Komplettinstallation gewählt werden. Diese erfordert aber die entsprechenden Administrator-Rechte auf dem betreffenden PC.
Abb. 3.1: Typisches Arduino-Verzeichnis
● 24
Arduino Spanner DE 170609.indd 24
21-07-17 15:00
Kapitel 3 • Entwicklungsumgebung und Programmiergrundlagen
Das Verzeichnis enthält dann alle zur Programmierung des Freeduinos erforderlichen Komponenten. Darüber hinaus sind unter „examples“ noch verschiedene Beispielprogramme verfügbar. Das Unterverzeichnis „libraries“ enthält nützliche Programmbibliotheken, die unter anderem die Ansteuerung von • • • •
Schrittmotoren und Modellbauservos LCD-Displays externen Komponenten wie Taster, EEPROMs oder Sensoren etc. etc.
unterstützen. Darüber hinaus können die Möglichkeiten des Arduinos noch mit zusätzlichen Spezialbibliotheken ergänzt werden. Mehr zu diesem Thema findet sich in Kapitel 3.19. Nach dem Entpacken des ZIP-Archivs befindet sich im Verzeichnis ..\arduino-xxxx das Startprogramm für die IDE: arduino.exe .
Abb. 3.2: Icon für den Start der Arduino- IDE Nach erfolgreichem Start erscheint das folgende Informationsfenster mit den üblichen Angaben zu den Autoren des Programms.
Abb. 3.3: Info-Screen der Arduino IDE
● 25
Arduino Spanner DE 170609.indd 25
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Kapitel 4 • Elektronische Bauelemente und Low Cost „Freeduinos“ Vom Standpunkt der Betriebssicherheit aus ist eine gut gelötete Leiterplatte kaum zu übertreffen. Deshalb werden so gut wie alle elektronischen Schaltungen im industriellen Bereich als bestückte Platinen ausgeliefert. Auch das Arduino-Board selbst besteht aus einer solchen industriell gefertigten Leiterplatte. Im Umfeld der Schaltungsentwicklung haben solche Leiterplatten aber einen gravierenden Nachteil: Wenn sie einmal fertig entwickelt sind, kann die Schaltung praktisch nicht mehr verändert werden. Selbst kleine Anpassungen oder Erweiterungen erfordern eine komplette Überarbeitung (ein sogenanntes „Redesign“). Für Laborzwecke gibt es deshalb Lochrasterplatinen. Hier werden die Bauteile auf ein Standardraster aus Lötpunkten oder Leiterbahnen gesetzt und gegebenenfalls zusätzlich mit Schaltdraht verbunden. Im nachfolgenden Kapitel sind hierzu weitere Informationen zu finden. 4.1 Breadboards – Einfach und effektiv ohne Löten Noch einen Schritt weiter geht man bei den sogenannten Steckplatinen, die auch unter der Bezeichnung „Breadboards“ bekannt sind. Hier können Schaltungen ganz ohne Löten aufgebaut werden. Steckfedern aus Metall im inneren dieser Boards sorgen für elektrisch leitende Verbindungen zwischen den elektronischen Bauelementen. In der Abbildung sind diese Verbindungen durch schwarze Linien angedeutet.
Abb. 4.1: Breadboard Abb. 4.1 zeigt ein solches Breadboard. Natürlich erreichen diese Steckplatinen nicht die Zuverlässigkeit von gelöteten Leiterplatten. Trotzdem können sorgfältig aufgebaute Breadboardschaltungen über Jahre hinweg einwandfrei funktionieren. Diese Aufbautechnik ist also nicht nur auf kurzlebige Experimentieraufbauten beschränkt. Bei normalen Umgebungsbedingungen, d. h. nicht zu großen Temperaturschwankungen oder übermäßig hohen Luftfeuchtigkeiten, können Geräte auf Breadboardbasis durchaus mit professioneller Elektronik konkurrieren. Bei anspruchsvollen Anwendungen, wie beispielsweise in mobilen Geräten oder im Fahrzeugeinsatz, ist eine Breadboardschaltung natürlich ungeeignet. Aufgrund der hier auftretenden Vibrationen kann man in diesen Bereichen nicht mit einer allzu hohen Zuverlässigkeit rechnen und man muss auf Lochrasterplatinen oder besser noch auf
● 50
Arduino Spanner DE 170609.indd 50
21-07-17 15:00
Kapitel 4 • Elektronische Bauelemente und Low Cost „Freeduinos“
geätzte Platinen ausweichen. 4.2 Lochraster – Dauerhafte Aufbauten ohne Chemie Wenn also eine bestimmte Schaltung vollständig ausgetestet ist und einwandfrei funktioniert, kann man sich daran machen, diese auf einer Lochrasterplatine aufzubauen. Im Handel sind verschiedene Versionen zu finden. Die gängigsten Typen sind die Streifenrastervariante und Leiterplatten mit einzelnen Lötaugen. Im ersten Fall kommt man meist mit wenigen Drahtverbindungen aus, dafür müssen häufiger Leiterbahnen mechanisch durchtrennt werden. Bei den Platinen mit einzelnen Lötaugen müssen alle elektrischen Verbindungen einzeln erstellt werden, dafür ist keine mechanische Bearbeitung der Leiterplatte erforderlich.
Abb. 4.2: Streifenrasterplatine
Abb. 4.3: Leiterplatte mit einzelnen Lötaugen. Auch bei einfachen Schaltungen sollte man sich immer einen sogenannten Layout-Plan anfertigen. In diesem Plan werden zuerst alle erforderlichen Bauelemente platziert. Die Platzierung sollte solange optimiert werden, bis die Anzahl und Länge der erforderlichen Drahtverbindungen minimal wird. Nach einem abschließenden Vergleich mit dem Schaltplan kann mit der Bestückung begonnen werden. Hierbei empfiehlt es sich, immer mit den kleinen Komponenten wie Kondensatoren und Widerständen zu beginnen. Dann folgen die größeren Bauelementen wie Leistungstransistoren oder große Elkos. Zuletzt werden alle erforderlichen Verbindungen mit versilbertem Kupferdraht erstellt. Eine sorgfältig aufgebaute Lochrasterplatine muss
● 51
Arduino Spanner DE 170609.indd 51
21-07-17 15:00
Kapitel 5 • „Hello World“
Kapitel 5 • „Hello World“ Eine der einfachsten Mikrocontroller-Anwendungen ist das Schalten von LEDs. Diese sind für den Betrieb mit Mikrocontrollern bestens geeignet. Klassische Versionen benötigen einen Strom von ca. 20 mA. Dieser kann ohne Weiteres von einem Mikrocontroller-Pin zur Verfügung gestellt werden. Sogenannte Low-Current-Typen kommen bereits mit 2 mA aus. In diesem ersten größeren Projekt werden 10 Dioden angesteuert. Abb. 5.1 zeigt den Aufbau der Schaltung. Geradezu ideal sind die bereits im Abschnitt 4.4.5 angesprochenen 5V-LEDs. Diese können direkt an die Ausgänge des Arduinos geschaltet werden. Die in Abb. 5.1 dargestellten strombegrenzenden Vorwiderstände sind dann nicht erforderlich, da diese ja bereits in die LED integriert sind. 5.1 Lauflichter in allen Varianten Wenn mehrere LEDs eingesetzt werden, lassen sich problemlos Lauflichteffekte z. B. für Case Modding oder Modelleisenbahnen realisieren.
Abb. 5.1: LED-Lauflicht
● 57
Arduino Spanner DE 170609.indd 57
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Im Programm werden zunächst die LED-Pins als Array definiert. Die Variable „direction“ legt die Laufrichtung des Lichtpunktes fest, die Variable „LED“ enthält die Portnummer der jeweils aktuell aktivierten Leuchtdiode. Im Setup werden zunächst alle beschalteten Ports als Ausgänge definiert und auf LOW-Potential gelegt. In der Hauptschleife wird dann die erste LED mit digitalWrite(ledPin[LED], HIGH);
eingeschaltet. Nach einer kurzen Wartepause von 50 ms wird genau diese LED wieder ausgeschaltet und anschließend die Variable LED um den Wert „direction“ erhöht. Wenn also direction = 1 gilt, wandert der Lichtpunkt in Richtung höhere Portnummern, also z. B. nach rechts. Bei direction = -1 wandert der leuchtende Punkt in die entgegengesetzte Richtung. Durch zwei if-Abfragen wird das Ende der Lichterkette ###bei LED Nr. 0 der LED Nr. 9(???)###erkannt und die Laufrichtung umgedreht. Listing 5‑2: LED_chaser ____________________________________________________________________ // LED Chaser byte ledPin[] = {2,3,4,5,6,7,8,9,10,11}; int direction = 1; int LED = 0; void setup() { // all LED pins as outputs and LEDs off for (int x=0; x<10; x++) {
pinMode(ledPin[x], OUTPUT); digitalWrite(ledPin[x], LOW);
} } void loop() { // turn on current LED digitalWrite(ledPin[LED], HIGH); delay(50); // turn off current LED digitalWrite(ledPin[LED], LOW); LED += direction; // change direction if we reach the end if (LED == 9) {direction = -1;} if (LED == 0) {direction = 1;} } ____________________________________________________________________
● 58
Arduino Spanner DE 170609.indd 58
21-07-17 15:00
Kapitel 6 • Displays und Anzeigetechniken
Kapitel 6 • Displays und Anzeigetechniken Displays sind die wichtigsten Schnittstellen zwischen dem Menschen und der Maschine. In den letzten Jahren hat es gerade in diesem Bereich enorme Fortschritte gegeben. Bis Ende der 90er Jahre dominierten im Computer-Bereich Röhrenmonitore mit oftmals flimmernden Bildern, geringer Auflösung und einem enormen Energieverbrauch. Mit dem Aufkommen der Flachbildschirme hat sich die Situation grundlegend verbessert. Nun stehen Monitore mit Bildschirmdiagonalen von über einem Meter und in voller HD-Auflösung zur Verfügung. Aber auch den Bereich der mobilen Geräte hat die Displaytechnik revolutioniert. Ohne brillante, ultraflache und robuste Displays wären Geräte wie IPod, IPad, Digitalkameras oder Smartphones aller Varianten undenkbar. Prinzipiell sind natürlich auch hochauflösende Farbdisplays mit einem Mikrocontroller ansteuerbar. Allerdings ist ein Arduino hier doch etwas überfordert. Dennoch stehen auch für kleinere Controller verschiedene attraktive Displays zur Verfügung. Angefangen von einfachen Bargraph-Anzeigen, über 7-Segment-Displays, LED-Punktmatrizen bis hin zu LCD-Textdisplays lässt die Technik hier kaum Wünsche offen. Natürlich steht im Mikrocontrollerbereich die Anzeige und Visualisierung von Messwerten und Daten im Vordergrund, hochauflösende Graphiken und schnelle Videospiele bleiben vorerst noch leistungsstärkeren Prozessoren vorbehalten. 6.1 Bargraph-Anzeigen – die Klassiker für Messanwendungen Eine einfache Display-Version wurde schon beim POV-Projekt eingesetzt: die LED-Bargraph-Anzeige. Diese besteht aus Einzeldioden in rechteckiger Bauform, die in einem gemeinsamen Gehäuse aneinander gereiht werden. Neben POV-Applikationen lassen sich damit auch sehr einfach optische Effekte wie variable Leuchtbänder oder Lauflichter erzeugen. Achten Sie beim Einsatz von LED-Bargraphanzeigen immer auf geeignete Vorwiderstände. Wird immer nur jeweils ein einzelnes LED-Element aktiviert, so genügt ein einziger Widerstand in der für alle Elemente gemeinsamen Zuleitung. Wenn mehrere LEDs gleichzeitig leuchten sollen, hat die Verwendung eines gemeinsamen Vorwiderstandes den Nachteil, dass die einzelnen Segmente immer dunkler werden, je mehr LEDs gleichzeitig leuchten. Dieses Verhalten ergibt sich daraus, dass mit steigendem Strom der Spannungsabfall über dem gemeinsamen Widerstand wächst. Damit verbleibt für die LEDs eine immer geringere Arbeitsspannung. Bei der POV-Anwendung ist dieser Effekt nicht problematisch. Bei Bargraph-Displays sollte man aber immer einen eigenen Vorwiderstand pro Leuchtelement vorsehen - dann leuchten alle LEDs immer gleich hell. Weitere Details und Beispiele zum Einsatz von Bargraph-Anzeigen sind in Kapitel 7 zu finden.
● 63
Arduino Spanner DE 170609.indd 63
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Erweiterungen und Übungen: • Übertragen Sie das Lauflichtprogramm aus Kap. 5.1 auf die Bargraph-Anzeige aus der POV-Anwendung. 6.2 Einfach und preisgünstig: Sieben-Segment-Displays Zur Darstellung von Ziffern sind sogenannte Sieben-Segment-Anzeigen bestens geeignet. Sie bestehen aus sieben (mit Dezimalpunkt auch acht) LED-Elementen. Diese LED-Segmente sind in der Form einer Acht angeordnet. Durch Aktivieren bestimmter Elemente können so die Ziffern von 0 bis 9 gut lesbar dargestellt werden. Zusätzlich lassen sich auch noch einige Großbuchstaben anzeigen (z. B. A, C, E, F etc.) In anderen Fällen, wie z. B. beim Großbuchstaben B, würde die Anzeige dagegen mit einer „8“ identisch sein. Hier kann man auf Kleinbuchstaben ausweichen. Andere Buchstaben wie Beispielsweise M oder V lassen sich dagegen kaum gut lesbar symbolisieren. Hier müsste man auf Sechzehn-Segment-Anzeigen umsteigen. Diese sind aber vergleichsweise ungebräuchlich und daher teuer. Sie werden deswegen hier nicht näher beschrieben. Eine andere Möglichkeit zur Buchstabenanzeige stellen die im nachfolgenden Kapitel beschriebenen Punktmatrix-Displays dar.
Abb. 6.1: Typische Pinbelegung einer einzelnen Sieben-Segment-Anzeige Die Beschaltung einer Sieben-Segment-Anzeige zeigt Abb. 6.2. Da bei der Anzeige einer Ziffer natürlich mehrere Segmente gleichzeitig leuchten, würde man nach den Ausführungen in Kapitel 6.1 erwarten, dass jedes LED-Segment einen eigenen Vorwiderstand (ca. 220 W) benötigt. Wie in der Beschreibung der Ansteuersoftware aber genauer erläutert wird, kann man bei Verwendung des sogenannten Multiplex-Verfahrens mit nur einem gemeinsamen Widerstand auskommen.
● 64
Arduino Spanner DE 170609.indd 64
21-07-17 15:00
Kapitel 7 • Messtechnik und Sensoren
Kapitel 7 • Messtechnik und Sensoren Was die Sinne für den Menschen sind, sind Sensoren für die Technik. Nahezu alle menschlichen und tierischen Sinne können mit technischen Mitteln nachgebildet werden. Kameras oder in einfachen Fällen Photodioden können als technische Augen betrachtet werden. Mikrophone oder andere Schallwandler erfassen Geräusche mit ähnlicher Empfindlichkeit wie menschliche Ohren. Aber auch Temperatur- und Tastsinn können durch Sensoren ersetzt werden. Daneben weist die Elektronik aber auch noch weitergehende Möglichkeiten auf. So sind etwa Größen, für die der Mensch kein direktes Sinnesorgan besitzt, wie etwa elektrische Ströme und Spannungen oder aber auch radioaktive Strahlung, technisch leicht erfassbar. 7.1 Flexibel und schnell ablesbar: LED-Voltmeter Der Arduino erlaubt es, mit einem sehr geringem Aufwand an zusätzlichen Bauelementen ein recht praxistaugliches Spannungsmessgerät aufzubauen. Es sind lediglich ein paar 5V-LEDs erforderlich, um ein sogenanntes Bargraphvoltmeter zu realisieren. Bekannt ist diese Anzeigeart von den Pegelmessinstrumenten an hochwertigen HiFi-Anlagen. Aber auch in der Automobiltechnik, etwa bei digitalen Tachometern, wird diese Art der Messwertanzeige häufig eingesetzt, da sie ein schnelles Erfassen einer sich rasch ändernden Größe ermöglicht. So kann die Länge eines Leuchtbalkens deutlich schneller erkannt werden als eine konventionelle Ziffernanzeige, insbesondere auch dann, wenn die Ziffern infolge sich schnell ändernder Werte rasch durchlaufen. Die Schaltung zu einer Bargraphanzeige zeigt Abb. 7.1. Beachten Sie, dass in dieser Variante jedes LED-Element seinen eigenen Vorwiderstand (220 W) benötigt. Für Testzwecke kann man auch nur einen einzelnen Vorwiderstand verwenden, so wie bei der POV-Schaltung. Man erkennt dann sehr schön, wie bei zunehmender Anzahl aktiver Elemente die einzelnen LEDs immer dunkler werden.
● 85
Arduino Spanner DE 170609.indd 85
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Abb. 7.1: Schaltskizze zum Bargraphvoltmeter Listing 7‑11: Bargraph_Voltmeter ____________________________________________________________________ // Bargraph Voltmeter byte ledPin[] = {2,3,4,5,6,7,8,9,10,11}; int value; int delta = 50; void setup() { // all LED pins as outputs and LEDs off for (int x=0; x<10; x++) pinMode(ledPin[x], OUTPUT); }
● 86
Arduino Spanner DE 170609.indd 86
21-07-17 15:00
Kapitel 8 • Timer, Uhren und Interrupts
Kapitel 8 • Timer, Uhren und Interrupts Da auf dem Arduino-Board bereits ein Quarz integriert ist, eignet es sich auch bestens zum Bau von präzisen Uhren und Timern. Mit einer Quarzzeitbasis können Präzisionen im ppm-Bereich (ppm = parts per million) erreicht werden. Das bedeutet, dass Frequenzabweichungen nicht größer als 1:1.000.000 sind. In Zeiten umgerechnet heißt das, dass eine Uhr innerhalb eines Monats nur um wenige Sekunden vor- oder nachgeht. Noch höhere Präzision lässt sich mit einem DCF-77-Funkmodul erzielen. Dieses empfängt die Zeitsignale eines Senders bei Frankfurt. Damit wird die maximale Zeitabweichung auf weniger als eine Sekunde in 10.000 Jahren reduziert. Das sollte für alltägliche Erfordernisse mehr als ausreichend sein. Aber nicht immer geht es nur um die maximal erreichbare Präzision. Vielmehr kann der Arduino auch dazu genutzt werden, um kleine nützliche oder auch witzige Helfer für den Alltag aufzubauen. Das Projekt im folgenden Kapitel ist ein Beispiel dafür. 8.1 Für Spaß am Morgen und am Abend: Formel-I-Zahnputzuhr Zähneputzen ist eine alltägliche Routineaufgabe. Die in diesem Kapitel vorgestellte Zahnputzuhr kann mehr Spannung in diese tägliche Aufgabe zu bringen. Besonders für Kinder kann mit solchen Gadgets die Motivation für die tägliche Mundhygiene deutlich verbessert werden. Als Display kommt die LED-Matrix zum Einsatz. Dabei wird hier von der Tatsache Gebrauch gemacht, dass ein Matrixdisplay nicht nur Ziffern und Zahlen darstellen kann, sondern eben auch einfache Graphiken. Die nachfolgenden Abbildungen zeigen die Symbole zum Putzen der linken und der rechten oberen Zahnreihe. Analoge Symbole werden für den Unterkiefer dargestellt. Abschließend symbolisiert ein Smiley den Abschluss der Mundhygiene.
Abb. 8.1: Graphische Anzeigen zur Zahnputzuhr Auf der Hardwareseite wird das Matrixdisplay standardmäßig (s. Kapitel 6.4) an den Arduino angeschlossen. Zusätzlich kommt noch ein piezoelektrischer Schallwandler zwischen Pin 13 und GND zum Einsatz. Damit wird ein akustisches Signal erzeugt, wenn der nächste Zahnquadrant an der Reihe ist. Die Putzdauer für die einzelnen Kieferquadranten kann im Programm natürlich frei gewählt werden und ist so den individuellen Bedürfnissen anpassbar.
● 129
Arduino Spanner DE 170609.indd 129
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Um das Formel-I-Feeling komplett zu machen, werden zusätzlich noch eine rote, eine gelbe und eine grüne LED angesteuert. Diese liefern die korrekte Abfolge der Verkehrsampelphasen:
rot – rot/gelb – grün – gelb – rot
Somit steht also der täglichen Zahnhygiene-Ralley nichts mehr im Wege.
Abb. 8.2: Der Countdown der Zahnputzuhr ist aktiv Die gesamte Elektronik kann in ein kleines Standardgehäuse eingebaut werden. Wenn ein Gehäuse mit transparentem Deckel verwendet wird (s. Abb. 8.2), kann auf Aussparungen in einer Frontplatte verzichtet werden, da die Anzeigeelemente durch den Deckel sichtbar sind. Man erhält so ein formschönes und spritzwassergeschütztes Gerät. Insbesondere die letztere Eigenschaft ist bei Badezimmeranwendungen von nicht zu unterschätzendem Wert.
● 130
Arduino Spanner DE 170609.indd 130
21-07-17 15:00
Kapitel 9 • Schnittstellen
Kapitel 9 • Schnittstellen In digitalen Geräten müssen häufig Daten zwischen verschiedenen Bausteinen ausgetauscht werden. Hierfür wurden verschiedene Bussysteme entwickelt. Jedes dieser Systeme weist spezifische Vor- und Nachteile auf. Einige Busse sind besonders robust gegenüber Störeinstrahlungen, andere erlauben das Überbrücken größerer Distanzen. Im Bereich der Mikrocontrollertechnik hat sich ein Bussystem besonders durchgesetzt: der sogenannte I2C-Bus (oft „I Quadrat C-Bus“ ausgesprochen). 9.1 Universell und einfach: Die I2C-Schnittselle Der I2C-Bus zeichnet sich dadurch aus, dass er mit geringstem Hardwareaufwand auskommt. Die Bezeichnung „I2C“ steht dabei für IIC oder Inter-IC bzw. Inter-Integrated-Circuit-Bus. Entwickelt und spezifiziert wurde der Bus von der Firma Philips, er ist deshalb insbesondere auch in vielen Geräten der Unterhaltungselektronik zu finden. Der I2C-Bus ermöglicht eine synchrone serielle Zweidrahtverbindung zwischen einem Master und mehreren Slaves. Auf einer Leitung (SCL = Serial Clock) wird der Takt gesendet, auf der zweiten Leitung (SDA = Serial Data) werden die Daten übertragen. Daten können sowohl vom Controller (Master) zum Slave, als auch vom Slave zum Master gesendet werden. Die Takterzeugung wird dagegen immer vom Master übernommen. Prinzipiell ist es auch möglich an einem Bus mehrere Master zu betreiben. Man spricht dann vom sogenannten Multi-Master-Bus. In diesem Fall muss sichergestellt werden, dass es nicht zu Buskollisionen kommt, d. h., ein Master darf den Bus nur dann übernehmen, wenn der Bus gerade nicht von einem anderen Master belegt ist. Diese Betriebsart ist jedoch vergleichsweise selten anzutreffen und wird hier nicht näher beschrieben. Der I2C-Bus verfügt über vier Geschwindigkeitsstufen: • 100 kHz Takt: Standard-Mode • 400 kHz-Takt: Fast-Mode • 1,0 MHz-Takt: Fast-Mode Plus • 3,4 MHz-Takt: High Speed Mode Meist werden inzwischen Taktraten bis zu 1MHz unterstützt. Den prinzipiellen Aufbau eines I2C-Bussystems zeigt Abb. 9.1.
Abb. 9.1: Prinzipieller Aufbau des I2C-Busses
● 155
Arduino Spanner DE 170609.indd 155
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Da alle ICs elektrisch parallel an einem einzigen Bus angeschlossen sind, ist ein Adressierungssystem erforderlich, um die einzelnen Empfänger zu selektieren. Jeder I2C-Baustein kann daher über eine 7 Bit breite Adresse angesprochen werden. Daneben existiert noch ein neueres, jedoch abwärtskompatibles 10-Bit-Adresssystem. Dieses kann zusammen mit dem 7-Bit-System gemeinsam an einem Bus eingesetzt werden. Die 7-Bit-Adressierung lässt nur 128 verschiedene Adressen zu, mit der 10-Bit-Adressierung können dagegen bis zu 1024 Adressen angesprochen werden. Da die 10-Bit-Version im nichtprofessionellen Umfeld jedoch kaum eingesetzt wird, soll hier nicht näher darauf eingegangen werden. Die nachfolgende Abbildung zeigt die Bitfolge in einem I2C-Telegramm. Das 8. Bit im Adressbyte gibt an, ob auf den Baustein lesend oder schreibend zugegriffen werden soll. Die folgenden Bytes sind dann vom jeweiligen Baustein abhängig. Geräte-
Adresse
Start
0
1
0
Subadresse 0
x
x
x
R/W
1
Daten
ACK
x
x
x
x
x
x
x
x
Stopp
Abb. 9.2: Bitfolge in einem I2C-Telegramm Der Takt SCL des I2C-Busses wird vom Takt des Controllers abgeleitet. Natürlich lassen sich nicht bei jedem Controller-Takt exakt 100 kHz oder 400 kHz erzeugen, dies ist jedoch unkritisch, da es beim I2C-Takt ohnehin nicht auf höchste Frequenzgenauigkeit ankommt. Wesentlich ist nur, dass der erzeugte Takt nicht über der höchstzulässigen Taktfrequenz der angeschlossenen ICs liegt.
Abb. 9.3: I2C-Timing Wenn Daten über den Bus übertragen werden sollen, muss der Controller diesen zunächst aktivieren. Dazu prüft der Master die Spannungspegel auf den beiden Leitungen SCL und SDA. Nur wenn beide Leitungen High-Pegel führen, beginnt der Master mit der Datenübertragung. Deshalb sind für beide Busleitungen auch PulI-Up-Widerstände erforderlich. Diese können extern von P5V auf den Bus geschaltet werden, die typischen Werte für die PullUps liegen bei 4,7 kΩ. Der ATmega verfügt aber auch bereits über interne Pull-Ups, so dass in diesem Anwendungsfall die externen Widerstände u. U. auch entfallen können. Dann zieht der Master die Datenleitung SDA auf Ground, während die Taktleitung SCL noch
● 156
Arduino Spanner DE 170609.indd 156
21-07-17 15:00
Kapitel 10 • Sound und Synthesizer
Kapitel 10 • Sound und Synthesizer Neben der optischen Informationsausgabe über LEDs, LCD-Displays oder Ziffernanzeigen eignen sich Mikrocontroller auch bestens zur Erzeugung von akustischen Signalen. Die bekanntesten Beispiele hierfür sind die Ausgabe kurzer Töne als Warnsignale. Simple akustische Signale lassen sich mit Mikrocontrollern sehr einfach erzeugen, da Frequenzen im Hörbereich zwischen 16 Hz und 16 kHz liegen und entsprechende Signale für Controller keine Herausforderung darstellen. Darüber hinaus ist aber auch sie Ausgabe komplexer Klangstrukturen möglich, welche ganz erstaunliche akustische Eindrücke liefern. Das Spektrum reicht hier von simplen elektronischen Orgelklängen bis hin zu ausgefeilten Synthesizern. Prinzipiell ist sogar eine rudimentäre synthetische Spracherzeugung mit der Rechenleistung des Arduinos möglich. Allerdings sind die Ergebnisse in diesem Bereich naturgemäß noch nicht ganz zufriedenstellend. Man kann aber davon ausgehen, dass sich hier in Zukunft noch einiges tun wird. 10.1 Schallwandler und Verstärker Die einfachste Möglichkeit, die Signale eines Mikrocontrollers hörbar zu machen besteht im direkten Anschluss eines piezoelektrischen Schallwandlers an einen Prozessorpin. Allerdings liefert ein Piezo zum einen nur eine relativ geringe Lautstärke, zum anderen ist die erzielbare Klangqualität sehr bescheiden. Piezos werden daher meist nur zur Wiedergabe sehr einfacher Signaltöne eingesetzt. Eine deutlich bessere Klangqualität lässt sich mit einem sogenannten dynamischen Lautsprecher erzielen. Dieser weist jedoch typischerweise eine Impedanz von nur wenigen Ohm auf. Er kann daher nicht direkt an einen Prozessorpin angeschlossen werden, da der Pin sonst überlastet werden könnte. Hier ist also ein Verstärker erforderlich. Mit dem LM386 steht ein für diese Anwendung hervorragend geeigneter Baustein zur Verfügung. Für den Aufbau eines vollständigen Verstärkers sind nur wenige externe Bausteine erforderlich. Das zugehörige Schaltbild ist in Abb. 10.1 dargestellt. Neben dem eigentlichen Verstärker kommt noch ein Audio-Filter zum Einsatz. Der 2,2µF-Kondensator sorgt einerseits für eine gleichspannungsmäßige Entkopplung des Verstärkers und andererseits für eine gewisse Hochpasswirkung. Der 1µF-Kondensator dagegen hat einen Tiefpasseffekt. Dieser ist insbesondere dann erwünscht, wenn Audiosignale über PWM-Verfahren erzeugt werden. In diesem Fall wird die hohe PWM-Frequenz gut unterdrückt, während die Nutzfrequenzen im unteren kHz-Bereich an den nachfolgenden Verstärker weiter geleitet werden.
● 191
Arduino Spanner DE 170609.indd 191
21-07-17 15:00
Arduino - Schaltungsprojekte für Profis 2. Auflage
Abb. 10.1: Schaltbild zum Audio-Verstärker mit LM386 Der Verstärker findet bequem auf einem kleinen Breadboard Platz. Abb. 10.2 zeigt einen entsprechenden Aufbauvorschlag. Wenn der Verstärker über einen längeren Zeitraum hinweg eingesetzt werden soll, empfiehlt sich eine Lochrasterplatine.
Abb. 10.2: Aufbauphoto zum Audio-Verstärker
● 192
Arduino Spanner DE 170609.indd 192
21-07-17 15:00
Kapitel 11 • Digitale Regelungstechnik
Kapitel 11 • Digitale Regelungstechnik Die Grundprinzipien der Regelung sind nicht nur in der Technik weit verbreitet. Sie sind auch in praktisch allen Bereichen der belebten und der unbelebten Natur zu finden. Ohne Regelungen wäre Leben praktisch unmöglich. So müssen in vielen biologischen Prozessen ganz bestimmte Bedingungen und Werte in engen Toleranzbereichen gehalten werden. Einer der bekanntesten Regelkreise in diesem Bereich ist die Konstanthaltung der Körpertemperatur. Ein weiterer sehr wichtiger Regelkreis sorgt für einen weitgehend konstanten Zuckerspiegel im Blut. Biologische Glucose-Sensoren erfassen die Blutzuckerkonzentration und die Bauchspeicheldrüse schüttet Insulin aus, sobald sich der Blutzuckerspiegel über den Normalwert erhöht. Das Insulin sorgt für eine erhöhte Aufnahme von Glucose durch die Körperzellen und der Zuckerspiegel wird wieder reduziert. Weitere Beispiele für biologische Regelkreise sind der aufrechte Gang, Blutdruck und Herzfrequenz, Pupillengröße und Umgebungshelligkeit usw. In der Technik wird allgemein der Fliehkraftregler von James Watt als erster bedeutender Schritt hin zur Regelungstechnik angesehen. Der Engländer regelte damit die Drehzahl seiner ersten Dampfmaschine. Seit dieser Zeit hat die Regelungstechnik in allen Gebieten des modernen Lebens Einzug gehalten. Temperaturregler in Heizungsanlagen, Gefrierund Kühlschränken, Belichtungsautomatismen in Fotoapparaten, ABS-und ESP-Systeme in Fahrzeugen oder die Frequenzregelung im Stromversorgungsnetz sind hier nur einige wenige Beispiele. Umgangssprachlich wird oft nicht zwischen Regelungen und Steuerungen unterschieden. In der Technik sind diese beiden Begriffe allerdings sehr wohl zu trennen. Unter Steuern versteht man einen Prozess ohne jegliche Rückkopplung. Die Ausgangsgröße wird dabei nicht überwacht und kann sich durch Störungen von außen verändern. Beispiele hierfür sind die Helligkeitssteuerung einer Glühlampe durch einen Dimmer, oder die Geschwindigkeitssteuerung eines Motors mit einer einstellbaren Gleichspannung. Im zweiten Fall können beispielsweise Lastschwankungen die Drehzahl des Motors beeinflussen, so dass die ursprünglich gewünschte Drehzahl nicht erreicht wird. Genau hier setzt nun die Regelungstheorie an. Wenn etwa eine Drehzahl konstant gehalten werden soll, ist eine Rückkopplung erforderlich, um die steuernde Spannung anzupassen. Genau diese Rückkopplung kennzeichnet einen Regelkreis. Unter „Regeln“ versteht man also einen Vorgang, bei dem die Ausgangsgröße, im obigen Beispiel also die Drehzahl, kontinuierlich überwacht und bei einer Abweichung über die Stellgröße, im Beispiel die Motorspannung, korrigiert wird. Der sich dabei ergebende Wirkungsablauf kann durch einen geschlossenen Kreis, den sogenannten Regelkreis, beschrieben werden.
● 213
Arduino Spanner DE 170609.indd 213
21-07-17 15:01
Arduino - Schaltungsprojekte für Profis 2. Auflage
Abb. 11.1: Regelkreis Die wesentlichen Größen in einem Regelkreis sind folgende: • der Istwert x • der Sollwert w • die Regelabweichung e = w – x • die Stellgröße y • die Störgröße z Basierend auf diesen Größen kann das Verhalten des Reglers genau berechnet und optimiert werden. Die unterschiedlichsten Anwendungsfälle können dabei mit drei grundlegenden Reglertypen abgedeckt werden. 11.1 Reglertypen Die Aufgabe eines Reglers besteht darin, die Regelgröße zu erfassen, sie mit dem vorgegebenen Sollwert zu vergleichen und bei eventuellen Abweichungen die Stellgröße so zu variieren, dass Soll- und Istwert der Regelgröße nur minimal voneinander abweichen oder im Idealfall vollständig übereinstimmen. Das Zeitverhalten und die erforderliche Regelungspräzision sind die wichtigsten Kriterien für die Auswahl eines geeigneten Reglertyps. Nach der klassischen Regelungstheorie kann ein Regler im Allgemeinen aus drei Grundreglertypen zusammengesetzt werden: • dem Proportional- oder P-Regler • dem Integral- oder I-Regler • dem Differential- oder D-Regler Nachfolgend sollen diese drei Reglertypen etwas genauer betrachtet werden. 11.1.1 Der P-Regler Reine P-Regler multiplizieren die aktuelle Regelabweichung mit einem festen Verstärkungsfaktor Kp und leiten diesen Wert verzögerungsfrei weiter. Der Nachteil dieses einfachsten Reglertyps ist die stets verbleibende endliche Regelabweichung. Wenn dieser Regler in Software implementiert wird, lautet die Übertragungsfunktion folgendermaßen:
● 214
Arduino Spanner DE 170609.indd 214
21-07-17 15:01
Kapitel 12 • Physical Computing
Kapitel 12 • Physical Computing Das noch relativ junge Fachgebiet des Physical Computing beschäftigt sich mit der Erfassung von Umweltdaten und der Steuerung und Regelung mechanischer Größen. Während Umweltdaten elektronisch sehr leicht mit verschiedenen Sensoren erfasst und quantitativ bestimmt werden können, ist die Steuerung mechanischer Größen meist mit etwas größerem Aufwand verbunden. Häufig wird die Bezeichnung „Physical Computing“ auch für Projekte aus dem künstlerischen Bereich oder bei Designer-Applikationen verwendet. Das Gebiet der Robotik und der autonomen Maschinen lässt sich mit diesem Begriff ebenfalls in Verbindung bringen. Speziell im Umfeld des Physical Computing wurden mit Arduino-Unterstützung bereits ganz erstaunliche Projekte realisiert. Zu den bekanntesten zählen eine Laserlichtharfe, Arduino-basierte Steuerungen für Hochgeschwindigkeitsphotographie oder auf zwei Rädern balancierende Roboterfahrzeuge. Als Aktuatoren stehen verschiedene Systeme zur Verfügung. Eine der einfachsten Möglichkeiten stellt die Ansteuerung eines Gleichstrommotors dar. Bei geringer Leistung kann dieser direkt an einen Controller-Pin angeschlossen werden. Bei höheren Motorleistungen ist eine Transistorstufe erforderlich (s. z. B. Abb. 5.2). Zusätzlich sind spezielle Maßnahmen zur Unterdrückung von Induktionsspannungen, wie z. b. Abblockkondensatoren und Freilaufdioden, notwendig. Mit Gleichstrommotoren lassen sich allerdings nur relativ einfache Anwendungen realisieren. Wenn höhere Präzision gefragt ist, empfiehlt sich der Einsatz von Schrittmotoren. Dieser Motortyp zeichnet sich dadurch aus, dass er bestimmte Positionen mit hoher Präzision anfahren kann. Allerdings sind für die Ansteuerung von Schrittmotoren auch spezielle Treiber notwendig. Darüber hinaus können mit Schrittmotoren durch das Abzählen der Einzelschritte nur Relativbewegungen gesteuert werden. Für absolute Positionierungen sind wiederum Rückkopplungsmechanismen erforderlich. Wesentlich einfacher ist die Ansteuerung von Servomotoren. Hierbei handelt es sich um komplette Antriebssysteme, inklusive einer Motorsteuerung und eines Positionierungssystems. Bei einfachen Servosystemen besteht das Positionierungssystem aus einem Getriebe und einem Potentiometer. Das als Spannungsteiler betriebene Potentiometer ist über das Getriebe fest mit der Motorachse verbunden, so dass die Poti-Spannung ein direktes Maß für die genaue aktuelle Motorposition liefert. Über eine integrierte Regelschleife kann ein Servo daher mittels eines einfachen digitalen Steuersignals sehr präzise positioniert werden. Damit sind derartige Servosysteme bestens für eine Ansteuerung durch Mikrocontroller geeignet. Bislang wurden mit dem Arduino entweder optische oder akustische Signale erzeugt. Neben diesen klassischen Ausgabemedien sollen in den folgenden Kapiteln mittels der Servotechnologie nun auch komplexere mechanische Elemente angesteuert werden.
● 225
Arduino Spanner DE 170609.indd 225
21-07-17 15:01
Arduino - Schaltungsprojekte für Profis 2. Auflage
12.1 Servos steuern die Welt Die wohl bekanntesten Beispiele für Servos sind die im Modellbau gebräuchlichen Rudermaschinen. Hier werden die vom Fernsteuersender auf dem Funkweg übertragenen Signale in Steuerbewegungen für Flug-, Schiffs- oder Automodelle umgesetzt. Durch Massenfertigung in Fernost sind Modellbauservos sehr preisgünstig erhältlich. Die Ansteuerung der Servos erfolgt durch eine spezielle Art der Pulsweitenmodulation. Dadurch sind sie bestens für die Anbindung an einen Mikrocontroller geeignet. Abb. 12.1 zeigt einen entsprechenden Signalverlauf.
Abb. 12.1: Servosignal Der Pulsabstand von ca. 20 ms ist an dieser Stelle von untergeordneter Bedeutung. Die meisten Servotypen kommen hier mit vergleichsweise großen Toleranzen klar. Wesentlich ist die Dauer des Steuerimpulses. Diesbezüglich hat sich folgender Quasi-Standard durchgesetzt: Pulsdauer
Ruderposition
1 ms
Linksanschlag
1,5 ms
Mittelstellung
2 ms
Rechtsanschlag
Tab. 18: Timing von Servosignalen
● 226
Arduino Spanner DE 170609.indd 226
21-07-17 15:01
Arduino - Schaltungsprojekte für Profis 2. Auflage
Kapitel 13 • Processing Processing ist das Gegenstück zur Arduino-IDE für den PC. Oft wird sogar auch die Programmiersprache für den Arduino als Processing bezeichnet. In Abb. 13.1 wird die nahe Verwandtschaft der beiden Programme offensichtlich.
Abb. 13.1: Die Processing-Oberfläche Auch die Steuericons haben die gleichen Bedeutungen wie beim Arduino, natürlich mit dem Unterschied, dass mit dem run-Symbol das aktuelle Programm nicht zum Arduino gesendet, sondern direkt vom PC ausgeführt wird. Das Programm kann kostenlos unter http://processing.org/ geladen werden. Wie bei der Arduino-Version werden viele interessante Beispielprogramme mitgeliefert. Allein das Austesten dieser Beispiele ist schon eine umfangreiche, aber hochinteressante und sehr lehrreiche Aufgabe. 13.1 Arduino & Processing – ein erfolgreiches Duo Processing wurde entwickelt, um Schülern und Studenten auch außerhalb des Fachbereichs der Informationswissenschaften die Möglichkeit zu geben, komplexe und beeindruckende Computergraphiken und Animationen zu erstellen. Die mitgelieferten Sketche geben hierzu
● 236
Arduino Spanner DE 170609.indd 236
21-07-17 15:01
Kapitel 13 • Processing
einen sehr informativen ersten Eindruck. Aber auch für die Zusammenarbeit mit dem Arduino ist Processing bestens geeignet. Die Einarbeitung in Processing fällt den Arduino-Anwendern sogar besonders leicht, da viele Grundlagen bereits bekannt sind. So enthält ein Processing-Sketch ebenfalls die beiden Funktionsblöcke void setup() und void draw() (anstelle von void loop()). Ein simples “Hello World” Programm sieht damit so aus: Listing 13‑56: Hello World (.ino) ____________________________________________________________________ // Hello World int x = 30; PFont fontA; void setup() { size(200, 120); background(102, 100, 210); fontA = loadFont(“Ziggurat-HTF-Black-32.vlw”); textFont(fontA, 32); noLoop(); } void draw() { fill(200, 100, 0); text(“Hello”, x, 60); fill(250, 10, 30); text(“World”, x, 95); } ____________________________________________________________________
Dieser Sketch zaubert ein recht buntes Fenster auf den PC-Bildschirm. Mit den entsprechenden Bibliotheken werden Arduino und Processing zu einem unschlagbaren Duo. Eine detaillierte Darstellung der Sprache Processing würde den Rahmen dieses Kapitels sprengen. In den nachfolgenden Abschnitten werden allerdings zwei Anwendungsbeispiele erläutert, welche die Möglichkeiten des Zusammenspiels von Arduino und graphischer Darstellungen mit Processing demonstrieren sollen. Aufbauend auf diesen Grundlagen können die Anwendungen schrittweise ergänzt und erweitert werden.
● 237
Arduino Spanner DE 170609.indd 237
21-07-17 15:01
Arduino - Schaltungsprojekte für Profis 2. Auflage
Kapitel 14 • Modulares Großprojekt „Wohnzimmerbox“ Im letzten Kapitel soll ein etwas größeres Projekt vorgestellt werden. Es handelt sich dabei um eine „Wohnzimmerbox“, d. h. ein voll praxistaugliches Gerät, das ganz nach den Wünschen seines Besitzers gestaltet werden kann und durchaus nützliche Aufgaben übernimmt. Der modulare Aufbau der Box garantiert eine optimale Flexibilität bezüglich der Anpassung des Projekts an die Vorstellungen des Erbauers. Natürlich bilden auch die hier vorgeschlagenen Features nur einen kleinen Teil der denkbaren Anwendungen ab. Es steht jedem frei, bei Bedarf weiter Sensoren, Displays etc. hinzuzufügen. Mit dem durch die Lektüre dieses Buches erworbenem Wissen sollte dies keine Probleme mehr bereiten. Die Box erhält ein ca. 32 cm x 22 cm x 8 cm großes, formschönes Gehäuse, so dass auch die Frau im Hause keinen Einspruch gegen das Aufstellen der Eigenbauelektronik in der guten Stube erhebt. Alle Daten, welche die Box liefert, sollen auf einem LCD-Display dargestellt werden. Um für Ergänzungen und Erweiterung auch noch genügend Spielraum zu lassen, ist ein 4x16- oder sogar ein 4x20-Zeichen Typ empfehlenswert. Damit eine Vielzahl von Anwendungen mit einem einzelnen Controller gesteuert werden kann, wird intensiv von den Möglichkeiten des I2C-Busses Gebrauch gemacht. Neben dem Arduino selbst kann die Box eine größere Steckplatine enthalten. Diese dient als Basis für alle peripheren Einheiten. Über die üblichen zentralen Steckbereiche hinaus ist es vorteilhaft, wenn die Platte noch mehrere sogenannte Stromversorgungsschienen aufweist. Dann können die Versorgungsspannungen und die Signale SCL und SDA besonders leicht in der Box verteilt werden. Oftmals sind solche Schienen an ein Basis-Breadboard ansteckbar.
Abb. 14.1: Außenansicht der Wohnzimmerbox
● 246
Arduino Spanner DE 170609.indd 246
21-07-17 15:01
Kapitel 14 • Modulares Großprojekt „Wohnzimmerbox“
Abb. 14.2: Display mit Uhrzeit, Innen- und Außentemperatur sowie Akkuspannung
Abb. 14.3: Das Innere der Box Die Hardware zur Wohnzimmerbox wird in Abschnitt 14.7 beschrieben. 14.1 Immer nützlich: die Uhr Die Basis der Wohnzimmerbox bildet eine Uhr. Sie sollte in keinem Wohnzimmer fehlen, damit man seine Lieblingssendungen im Fernsehen nicht verpasst. Die Uhrzeit wird mit Stunden, Minuten und Sekunden in der ersten Zeile auf dem LCD-Display dargestellt. Durch die Verwendung eines Uhrenquarzes wird eine sehr hohe Ganggenauigkeit garantiert. Für das Herz der Uhr soll der RTC-Timer-Baustein PCF8583 zum Einsatz kommen. Dieser wird über einen 3,8V-MiMH-Akku gepuffert. Die entsprechenden Details finden sich im Kapitel 9.7. Wenn der Arduino mit Strom versorgt wird, d. h. entweder eine externe Spannungsversorgung oder ein USB-Kabel eingesteckt sind, wird der Akku automatisch geladen. Bei Stromausfall oder wenn die Box einmal an einer anderen Stelle aufgestellt werden soll, läuft die Uhr weiter, und nach der Wiederherstellung der Versorgungsspannung wird immer noch automatisch die korrekte Zeit angezeigt.
● 247
Arduino Spanner DE 170609.indd 247
21-07-17 15:01
Index
Index Symbolen 2-D Kameraschwenkarm
I 229
A Akkus 111 Analogkanäle 238 Arduino 13 arithmetische Operatoren 40 Audio-Prozessing 203
B Balkengrafik 238 Bandpassfilter 207 Bargraphvoltmeter 85 Bibliotheken 48 Breadboards 50
D Dämmerungsschalter 116 Datenlogger 242 DCF-77 Funkmodul 129 DCF77-Modul 150 Digitaluhr 136
E Elektrolytkondensatoren 94 Elektromagnet 232 Elkos 94 externen Spannung 21
F Feuchtesensoren 110 Fototransistor 117 Fuse-Bits 13
I2C-Bus 155 IDE 24 Inter-Integrated-Circuit-Bus 155 IR-Empfänger 175 IR-Fernbedienung 180 IR-Schnittstellen 173
K Kalibrierung 91 Konstanten 43 Kranino 232
L LCD-Displays 80 Leiterplatte 50 lichtempfindliche Bauelemente 116 Lichtschranken 116 Lochrasterplatine 51 Logische Verknüpfungen 40 Luxmeter 120
M Magnet 221 Minimal-Arduino 52 Mood-Lights 178
N Nachhall 207 Netzrelais 147 Netzspannungsgeräte 147 NiMH-Akkumulatoren 111 NTCs 99
P G Geo-Caching 118 Gravitationskompensator 219
H Hallfedern 207 Hallplatten 207 Helligkeitsregler 216 HEX-Debugger 161
PCF8583 170 PC-Tastaturen 183 PD-Regler 223 Photodioden 116 Physical Computing 225 Power-LED 218 Processing 236 PS/2-Mäuse 183 PS/2-Schnittstelle 183
● 261
Arduino Spanner DE 170609.indd 261
21-07-17 15:01
Arduino - Schaltungsprojekte für Profis 2. Auflage
Pulsweitenmodulation 195 Punktmatrix-Anzeigen 71
VCO 205 Verify 28 Verstärker 191
Q Quarz 129
R RC5 Code 173 Reaktionszeit 141 Regelkreis 213 Regelung 213 relativen Luftfeuchte 110 RGB-LED 178 Ringspeicher 207 RTC-Baustein 170
W Warnblinker 33 Widerstände 53 Wohnraumhygrometer 110 Wohnzimmerbox 246
Z Zahnputzuhr 129 Zufallszahlen 48
S Schwebezustand 222 Sensoren 85 Shields 19 Shift-Operatoren 41 Steckplatinen 50 Steuericons 236 Steuerungen 213 Stromversorgung 21 Strukturen 44 Synthesizer 191
T Temperatursensor 102 Theremin 201 Thermometer 101, 105 Timer 143 Transistorparameter 98
U UBUNTU 31 Ultraschallkapseln 122 Ultraschallmessgeräte 122 Upload 28 USB-Kabel 27
V Variablen 39 Variablenfelder 44 Variablentypen 39
● 262
Arduino Spanner DE 170609.indd 262
21-07-17 15:01
ARDUINO
Günter Spanner
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
ARDUINO
te und flage e t i e b r u Übera ierte Neua lis aktua
• Von einfachen bis komplexen Projekten • Schnittstellen und Erweiterungen • Jetzt auch mit dem Elektor Uno uno R4
GÜNTER SPANNER
Dabei wird neben den erforderlichen theoretischen Grundlagen stets größter Wert auf eine praxisorientierte Ausrichtung gelegt. So werden wichtige Techniken wie AD-Wandlung, Timer oder Interrupts stets in Praxisprojekte eingebettet. Es entstehen Lauflichteffekte, ein Aufwachlicht, voll funktionsfähige Voltmeter, präzise Digitalthermometer, Uhren in allen Variationen, Reaktionszeitmesser oder mausgesteuerte Roboterarme. Und ganz nebenbei hat der Leser die Grundlagen der zugehörigen Controller-Technik verstanden und im wahrsten Sinne des Wortes begriffen.
DESIGN SHARE
ISBN 978-3-89576-326-7
SCHALTUNGSPROJEKTE FÜR PROFIS
●
Neben seiner Tätigkeit als Dozent hat er sehr erfolgreich Fachartikel und Bücher zum Thema Elektronik, Halbleitertechnik und Mikrocontroller veröffentlicht sowie Kurse und Lernpakete zu diesen Themen erstellt.
Günter Spanner LEARN DESIGN SHARE
LEARN
Der Autor des vorliegenden Kurses ist seit über 20 Jahren im Bereich der Elektronikentwicklung und der Physikalischen Technologie für verschiedene Großkonzerne tätig.
Mit Arduino – Schaltungsprojekte für Profis wird der Leser umfassend in die Hardware und Software der Arduino-Plattform eingeführt. Einfache, leicht verständliche Projekte am Anfang des Buches führen Schritt für Schritt in die Open-Source-Plattform ein. Die Projekte werden dann zunehmend komplexer, um dem Leser möglichst viele konkrete Lösungsmöglichkeiten aufzuzeigen, die mit dem Arduino-Mikrocontroller auch für angehende Profis zur Verfügung stehen.
ARDUINO – SCHALTUNGSPROJEKTE FÜR PROFIS
SCHALTUNGSPROJEKTE FÜR PROFIS
LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA