Mikrocontroller – Der Leitfaden für Maker - · PDF fileKlaus Dembowski...

11
Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8 D3kjd3Di38lk323nnm

Transcript of Mikrocontroller – Der Leitfaden für Maker - · PDF fileKlaus Dembowski...

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8

D3kjd3Di38lk323nnm

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.de/plus

Klaus Dembowski hat Nachrichtentechnik studiert und ist an der Technischen Universität Hamburg-Harburg tätig. Seine Schwer-punkte liegen in den Bereichen Mikrocontrollerentwicklung, Hard- und Software für Mikrosysteme sowie Energy Harvesting. Bei der Vermittlung aktueller Inhalte aus den Bereichen der Elektronik sowie der Informations- und Netzwerktechnik kann er auf eine langjährige Erfahrung als Autor und Dozent zurückgreifen. Die mittlerweile über 40 erschienenen Buchtitel zeichnen sich ebenso wie die regelmäßig erscheinenden Zeitschriftveröffentlichungen, Seminare und Vorträge durch eine verständliche und praxisorien-tierte Darstellung auch komplexer Sachverhalte aus.

Klaus Dembowski

Mikrocontroller – �Der Leitfaden für Maker

Schaltungstechnik und Programmierung von �Raspberry, Arduino & Co.

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8

Klaus Dembowski

Lektorat: Dr. Michael Barabas�Copy-Editing: Friederike Daenecke, Zülpich�Herstellung: Frank Heidt�Umschlaggestaltung: Helmut Kraus, www.exclam.de �Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN 978-3-86490-150-8

1. Auflage 2014�Copyright © 2014 dpunkt.verlag GmbH�Wieblinger Weg 17�69123 Heidelberg

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, �marken- oder patentrechtlichem Schutz unterliegen.Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der �Verwendung dieses Buches stehen. 5 4 3 2 1 0

v

Vorwort

Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend programmiert und eingesetzt wird. Lehr-bücher über Mikrocontroller konzentrieren sich fast ausschließlich auf theoreti-sche Gesichtspunkte, gehören nicht selten »zur trockenen Materie« und lassen einen aktuellen Praxisbezug oft vermissen. Mit diesem Buch wird versucht Theo-rie und Praxis anschaulich zu verbinden, wobei verschiedenste aktuelle Mikro-controller und Boards zum Einsatz kommen, die sowohl erläutert als auch einge-setzt werden.

Das erste Buch, das ich geschrieben habe, hat den Titel Intel-8096-Microcon-troller-Familie – Ein Handbuch für Programmierer und Systementwickler aus dem Jahre 1989. Der Intel 8096 war der erste 16-Bit-Microcontroller und wurde insbesondere für Embedded Systems wie beispielsweise bei Motorsteuerungen häufig eingesetzt. Fast 25 Jahre oder auch ca. 50 Bücher später, die sich vorwie-gend mit PC- und Netzwerktechnik beschäftigt haben, also wieder ein Mikrocon-trollerbuch.

Die Grundfunktionalität eines Mikrocontrollers hat sich in der Zwischenzeit zwar kaum verändert, allerdings ist diese Thematik nun nicht mehr allein den Programmierern und Systementwicklern vorbehalten, was insbesondere der Arduino- und der Raspberry-Pi-Plattform zu verdanken ist, die es mit einem fast spielerischen Ansatz erlauben, dass jedermann kostengünstig Projekte verwirkli-chen kann, die einen Mikrocontroller oder auch einen Single-Board-Computer einsetzen. Wer bereits erste Erfahrungen mit diesen oder ähnlichen Systemen gesammelt hat und weiter in die Elektronik und Programmierung einsteigen möchte, der kann mit diesem Buch auf einen verlässlichen Ratgeber und Leitfa-den zurückgreifen.

Die ersten Kapitel sind durchaus für Anfänger geeignet. Der Schwierigkeits-grad wird im Verlauf des Buches zunehmend höher, was der Tatsache geschuldet

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8

Vorwortvi

ist, dass die Funktionen der Einheiten, wie für das Energy Harvesting oder auch für Funksysteme notwendig sind, eben komplexer sind. Wer sich jedoch von Kapitel zu Kapitel »hocharbeitet«, wird zunehmend auch die komplizierteren Zusammenhänge erschließen können. Der Profi wird hingegen meist selektiv direkt die für ihn interessanten Teile anvisieren, weil sich das Buch vom Aufbau her auch als Nachschlagewerk eignet.

Klaus Dembowski �Februar 2014

vii

Inhaltsverzeichnis

1 Mikrocontrollergrundlagen 1

1.1 Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Complex und Reduced Instruction Set Computer . . . . . . . . . . . . . . 4

1.3 Start mit Mikrocontrollern der Firma Intel . . . . . . . . . . . . . . . . . . . 6

1.3.1 Low Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Spannungsversorgung, Oszillator und Reset . . . . . . . . . . . . . . . . . 10

1.5 Arbeitsspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6 Interrupt-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.8 Brown Out Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.9 JTAG-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.10 DMA-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.11 Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.12 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 Mikrocontrollerfamilien beurteilen und auswählen 27

2.1 8051-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.1.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2 Microchip-Mikrocontroller – PIC . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.2.1 Architektur und Ausstattungsmerkmale . . . . . . . . . . . . . . 36Oszillatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Reset-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40ICSP-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Programmspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8

Inhaltsverzeichnisviii

2.2.2 Konfigurationsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Taktgeneratoreinstellung . . . . . . . . . . . . . . . . . . . . . . . . . . 44Power Up Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Brown Out Detect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45CCP2Mux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Stack Overflow Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Low Voltage Programming . . . . . . . . . . . . . . . . . . . . . . . . 46Code Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Schreiben der Konfigurationsdaten . . . . . . . . . . . . . . . . . . . 46

2.2.3 PIC-Mikrocontrollerfamilien . . . . . . . . . . . . . . . . . . . . . . . 472.2.4 NanoWatt-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.2.5 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.3 Atmel-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.3.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562.3.2 AVR-Controller-Familien im Überblick . . . . . . . . . . . . . . . 582.3.3 Power-Save-Betriebsarten . . . . . . . . . . . . . . . . . . . . . . . . . 602.3.4 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.4 MSP430-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.4.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.4.2 MSP430-Controllerfamilien . . . . . . . . . . . . . . . . . . . . . . . . 672.4.3 Low Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.4.4 Entwicklungsumgebung und Programmierung . . . . . . . . . . 72

2.5 ARM-Prozessoren und -Mikrocontroller . . . . . . . . . . . . . . . . . . . . 77

2.5.1 ARM-Architektur und -Typen . . . . . . . . . . . . . . . . . . . . . . 782.5.2 Cortex-Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.5.3 EFM32-Gecko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Peripheral Reflex System . . . . . . . . . . . . . . . . . . . . . . . . . . 87Advanced Energy Monitoring . . . . . . . . . . . . . . . . . . . . . . 88Energy Aware Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Betriebsarten – Energy Modes . . . . . . . . . . . . . . . . . . . . . . 93Entwicklungsplattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

3 Single-Board-Systeme einsetzen 101

3.1 Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

3.1.1 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043.1.2 Netzwerkverbindung herstellen . . . . . . . . . . . . . . . . . . . . 109

Manuelle Konfigurierung . . . . . . . . . . . . . . . . . . . . . . . . 110SSH- und FTP-Verbindungen . . . . . . . . . . . . . . . . . . . . . . 112

ixInhaltsverzeichnis

3.1.3 Software und Programmierung . . . . . . . . . . . . . . . . . . . . 114

3.2 Beaglebone Black . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

3.3 mbed-Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

3.4 Gadgeteer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

3.5 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.5.1 Boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.5.2 Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.5.3 Start und Entwicklungsumgebung . . . . . . . . . . . . . . . . . . 131

4 Anwenderprogrammierbare Ein- und Ausgabeeinheiten 135

4.1 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

4.2 UART, USART und serielle Schnittstelle . . . . . . . . . . . . . . . . . . . 137

4.3 I2C-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.4 Serial Peripheral Interface – SPI . . . . . . . . . . . . . . . . . . . . . . . . . . 143

4.5 A/D-Wandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

4.6 D/A-Wandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

4.7 PWM-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

5 Spannungsversorgungen planen und aufbauen 153

5.1 Netzteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

5.2 Batterien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

5.3 Akkumulatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

5.3.1 Bleiakkumulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.3.2 Nickel-Cadmium-Akkumulator . . . . . . . . . . . . . . . . . . . . 1605.3.3 Nickel-Metall-Hydrid-Akkumulator . . . . . . . . . . . . . . . . 161

Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1625.3.4 Lithium-Ionen-Akkumulator . . . . . . . . . . . . . . . . . . . . . . 1625.3.5 Lithium-Polymer-Akkumulator . . . . . . . . . . . . . . . . . . . . 164

Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

5.4 Energy Harvesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

5.4.1 Solarzellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Funktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Elektrisches Verhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Standard Test Conditions . . . . . . . . . . . . . . . . . . . . . . . . 172Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8

Inhaltsverzeichnisx

5.4.2 Piezoelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Aufbau und Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Wandlerschaltung mit selbst gebautem Balkenschwinger . 179

5.4.3 Elektrodynamische Wandler . . . . . . . . . . . . . . . . . . . . . . . 1845.4.4 Thermogeneratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

5.5 Energiespeicher und Energiemanagement . . . . . . . . . . . . . . . . . . . 190

5.5.1 Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.5.2 Solid State Batteries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Thin-Film Batteries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195EnerChips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197EnerChips mit Power-Management-Logik . . . . . . . . . . . . 198Energy-Harvesting-Module und Energy Processor . . . . . . 200

6 Die Funkpraxis 207

6.1 ISM-Bänder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

6.2 Nahfunksysteme in der Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . 210

6.3 Modulationsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

6.4 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

6.5 Sensorknoten im WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

6.5.1 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2196.5.2 Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2206.5.3 Konfigurierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.5.4 Erweiterungsschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . 2236.5.5 Sensoren am SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2266.5.6 Steuerung mit Mikrocontroller . . . . . . . . . . . . . . . . . . . . . 227

6.6 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

6.6.1 Topologien und Implementierungen . . . . . . . . . . . . . . . . . 2306.6.2 Entwicklungssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

6.7 Bluetooth Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

6.7.1 Chips und Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.7.2 Software und Programmierung . . . . . . . . . . . . . . . . . . . . . 243

6.8 ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

6.8.1 Topologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476.8.2 ZigBee Green Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

6.9 ANT/ANT+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

6.10 Low-Power-Funklösungen – Low Power RF . . . . . . . . . . . . . . . . . 251

xiInhaltsverzeichnis

6.10.1 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.10.2 Transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2546.10.3 Datenrate und Reichweite . . . . . . . . . . . . . . . . . . . . . . . . 2576.10.4 Einfache Kommunikation aufbauen . . . . . . . . . . . . . . . . 2586.10.5 SimplicTI-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2606.10.6 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

6.11 EnOcean-Funktechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

6.11.1 Dolphin System Architecture . . . . . . . . . . . . . . . . . . . . . . 2666.11.2 Starter und Programmer Kit . . . . . . . . . . . . . . . . . . . . . . 2726.11.3 Entwicklung und Programmierung . . . . . . . . . . . . . . . . . 277

7 Mess- und Steuerschaltungen für den Raspberry Pi 291

7.1 GPIO-Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

7.2 A/D- und D/A-Wandlerplatine für SPI . . . . . . . . . . . . . . . . . . . . 293

7.2.1 Python und grafische Oberfläche . . . . . . . . . . . . . . . . . . . 303

7.3 Erweiterungen mit I2C-Bus-Schaltungen . . . . . . . . . . . . . . . . . . . 315

7.3.1 Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.3.2 LCD-Ansteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3257.3.3 A/D- und D/A-Messung . . . . . . . . . . . . . . . . . . . . . . . . . . 3267.3.4 Echtzeituhr stellen und lesen . . . . . . . . . . . . . . . . . . . . . . 331

8 Solarzellentester selbst gebaut 339

8.1 Verfahren für die Charakterisierung von Solarzellen . . . . . . . . . . 339

8.2 Schaltungsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

8.2.1 Spannungsversorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . 3428.2.2 Widerstandsmatrix und Peripherie . . . . . . . . . . . . . . . . . 3448.2.3 Relais und Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3478.2.4 Lichtsensor zur Messung der Beleuchtungsstärke . . . . . . 348

8.3 Programmablauf und Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . 350

8.4 Implementierung der Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

8.4.1 LCD- und Menüsteuerung . . . . . . . . . . . . . . . . . . . . . . . . 3538.4.2 Messen der Beleuchtungsstärke . . . . . . . . . . . . . . . . . . . 3558.4.3 Maximum-Power-Point-Messung . . . . . . . . . . . . . . . . . . 3608.4.4 Leerlaufspannung und Kurzschlussstrom messen . . . . . . 3628.4.5 Ausgabe der Messergebnisse . . . . . . . . . . . . . . . . . . . . . . 364

Index 377

Klaus Dembowski, Mikrocontroller – Der Leitfaden für Maker, dpunkt.verlag, ISBN 978-3-86490-150-8