Mikrocontroller/ Arduino Board und Software

Aus Wikibooks

Arduino Entwicklungs-Boards[Bearbeiten]

OSH Logo
Offenheit, Transparenz, Zusammenarbeit: Wissen wird mehr, wenn man es teilt.
Das OLIMEXINO-32U4 ist eine Variante des Arduino-Leonardo Entwicklungs-Boards.

Wir verwenden Mikrocontroller Entwicklungs-Boards wie z.B. das Arduino-UNO mit seinem ATmega328-Mikrocontroller. Alle Arduino-Boards haben gemeinsam, dass sie mit Hilfe der Arduino-Software, die eine komplette Entwicklungsumgebung (IDE) mit unzähligen Beispielen und Anregungen bietet, einfach zu programmieren sind.

Sowohl die Hardware als auch die Software werden als „frei“ und „offen“ bezeichnet: Open Source Harware und Freie Software, d.h. Programme und Designs können frei verwendet, verändert und weitergegeben werden. Jeder kann die Software zu Hause installieren und frei für jeden Zweck verwenden.

Wichtig sind für uns insbesondere einige Daten aus dem Datenblatt sowie die Aus- und Eingänge (Schnittstellen) des jeweiligen Arduino-Boards:

Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Digital I/O Pins 14 (of which 6 provide PWM output)
Input Voltage (limits) 6-20V
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Clock Speed 16 MHz

Wir haben sechs analoge Eingänge sowie 14 digitale Ein-/Ausgänge zur Verfügung. Ob ein digitaler Pin als Eingang oder Ausgang Verwendung findet, wird im Programm definiert. Sechs der digitalen Ausgänge bieten die Möglichkeit der "‘Pulse Width Modulation"’ (PWM). Durch schnelles Ein– und Ausschalten des Ausgangs kann man z.B. die Leuchtstärke einer LED kontinuierlich, wie sonst nur mit analogen Ausgängen möglich, regeln.

Ansteuerung einer LED[Bearbeiten]

Wir wollen mit dem Arduino-Board eine LED ansteuern. Was ist zu beachten?

  • Die LED darf nicht zerstört werden, soll aber hell genug leuchten.
  • Der Mikrocontroller darf nicht zerstört werden. Wir müssen sicherstellen, dass wir den maximalen Ausgangsstrom von 40 mA nicht überschreiten.
Schaltkreis einer LED mit Vorwiderstand .

Betrachten wir einen einfachen Schaltkreis bestehend aus Spannungsversorgung, LED und Widerstand. Elektronische Bauteile werden in Datenblättern genau beschrieben. Dem Datenblatt eines Bauelements kann man alle wichtigen Informationen wie Betriebsspannung, maximaler Strom, Abmessungen und vieles mehr entnehmen.

Die an unserer LED anliegende Spannung darf nach Datenblatt 2.5 V nicht überschreiten. Der Arduino liefert aber 5 V Ausgangsspannung. Wir müssen also einen Vorwiderstand verwenden. Ebenfalls aus dem Datenblatt der LED entnehmen wir den Strom, mit dem unsere LED maximal betrieben werden sollte:

Nun können wir vereinfacht annehmen, die LED selbst habe gar keinen Widerstand. Der Vorwiderstand soll für diesen Fall den maximal fließenden Strom auf begrenzen. Die Berechnung des Vorwiderstands ist dann sehr einfach und wir sind in jedem Fall auf der sicheren Seite. Mit dem Ohmschen Gesetz erhalten wir:

Um den Widerstand exakt zu berechnen, müssen wir den Spannungsabfall an der LED (nach Datenblatt maximal 2.5 V) mit berücksichtigen. In diesem Fall erhalten wir für den Vorwiderstand (es gilt ):

Unser Vorwiderstand sollte zwischen den berechneten Werten liegen. Wir wählen und sind damit auf der sicheren Seite. Unsere LED leuchtet auch mit diesem Widerstand ausreichend hell.

Abschließend berechnen wir, welchen Widerstand Bauteile mindestens besitzen müssen, um das Arduino-Board nicht zu überlasten. Wir haben: . Es folgt für den gerade noch erlaubten, kleinsten Widerstand:

Sicherheitshalber wählen wir die Grenze bei .

Merke:
  • Bauteile, die einen Widerstand kleiner als ca. haben, nie direkt an das Arduino-Board anschließen!
  • Diese Bauteile benötigen einen Vorwiderstand, um den maximal fließenden Strom zu begrenzen.

Ansteuerung leistungsstarker Bauteile[Bearbeiten]

Wie erwähnt dürfen die Ausgänge des Arduino–Boards mit je maximal 40 mA belastet werden. Leistungsstarke Bauteile erfordern größere Ströme und evtl. auch eine von der Ausgangsspannung des Arduino-UNO Boards (5 V) abweichende Versorgungsspannung.

Um sie anzusteuern, verwenden wir einen Transistor, den man sich als elektronischen Schalter oder auch Verstärker vorstellen kann. In der Schaltung rechts wird eine Glühlampe L mittels eines Transistors angesteuert. Die Lampe L hat ihre eigene Versorgungsspannung , die unabhängig von der Ausgangsspannung des Arduinos ist.

Wenn man nun eine hinreichend große Spannung zwischen Basis B und Emitter E des Transistors anlegt, so und "‘schaltet"’ dieser "‘durch"’: Die Lampe L leuchtet. Dabei kann der Strom, der durch die Lampe L über Kollektor C und Emitter E zur Masse fließt wesentlich größer sein, als der Basisstrom, der unseren Mikrocontroller belastet. Wird die Basis B hingegen auf LOW geschaltet (), so sperrt der Transistor, die Lampe L erlischt.

Anstelle der Lampe L können ebenso andere Bauelemente wie Leuchtdioden, Motoren o.ä. angeschlossen werden. Der maximal zulässige Strom wird nun nicht mehr durch den Mikrocontroller, sondern durch den Transistor bzw. die Spannungs-/Stromversorgung limitiert.

Aufbau der Schaltung[Bearbeiten]

Interne Kontaktierung des Breadboard-Rasters (erstellt mit Fritzing).

Zum Aufbau von Schaltungen haben sich Konventionen entwickelt, die Übersicht und Verständlichkeit erleichtern:

  • Für positive Versorgungsspannung verwendet man möglichst rote Kabel.
  • Für Masse (GND) sollte man Schwarz/dunkle Farben verwenden.
  • Für Signalkabel bietet sich demnach zur Unterscheidung ebenfalls eine individuelle Farbe an. Wichtig ist Übersichtlichkeit und ein klarer, verständlicher Aufbau.

Versorgungsspannung und Masse (GND) sollten überall leicht und einheitlich erreichbar sein. Im Breadboard sind die Kontakte wie in der Abbildung gezeigt intern verbunden.

Software[Bearbeiten]

In diesem Abschnitt soll die verwendete Software kurz vorgestellt werden. Es handelt sich dabei um sog. freie Software, die für jeden Zweck ausgeführt, studiert, modifiziert und weiterverbreitet werden darf.

Arduino[Bearbeiten]

Programmieren des Arduino Boards mit der gleichnamigen Software.

Zum Programmieren des Arduino Boards bietet sich die gleichnamige Software „Arduino“ an. Sie enthält eine komplette Entwicklungsumgebung (IDE: Integrated Development Environment) und zahlreiche Beispiele.

Erste Schritte[Bearbeiten]

Nachdem man das Board per USB (USB: Universal Serial Bus) mit dem Rechner verbunden hat, muss man:

  • unter Tools Board das verwendete Board und
  • unter Tools Serial Port die zugehörige Schnittstelle wählen.

Beispielprogramme finden sich unter File Examples.

Grundsätzlicher Aufbau eines Programms[Bearbeiten]

Programm-Kopf/Header[Bearbeiten]

Am Anfang jeder Programm-Datei steht der sogenannte „header“ (engl. „Kopfteil“). Er beschreiben das Programm und enthält weitere wichtige Informationen wie z.B. die Lizenz, unter der das Programm steht. Alle diese Angaben sind in die Kommentarzeichen /* und */ eingefasst. Aller Text zwischen diesen Zeichen spielt für den Ablauf des Programms keine Rolle, ist aber für den Programmierer umso wichtiger. Einzelne Zeilen(-teile) werden mit // „auskommentiert“.

setup()-Funktion[Bearbeiten]

Die setup()-Funktion wird nach dem Einschalten einmal ausgeführt. Sie initialisiert den Mikrocontroller und definiert den Typ diverser Ein- und Ausgänge.

loop()-Funktion[Bearbeiten]

Die loop()-Funktion wird nach der Initialisierung wiederholt ausgeführt. Ist also ihr Ende erreicht, beginnt die Ausführung einfach wieder von vorne.

Fritzing[Bearbeiten]

Prototyping mit Fritzing

Zum Anfertigen von Schaltplan und Aufbauskizze bietet sich das ebenfalls freie Programm „Fritzing“ an.

Auch für Fritzing finden sich viele Beispiele für Schaltungen unter File Open Example.