Projekt 29: Entwicklungsplatine für Mikrocontroller entwerfen und ansteuern
Autoren: Andre Merkel, Anika Leinhäuser
Betreuer: Prof. Göbel
Aufgabe
Entwicklungsplatine für Arduino Uno bauen und ansteuern. Bausteine sind mindestens Drehencoder, LEDs inkl. Transistorstufe, RGB-LED inkl. Transistorstufe, MOSFET für große Last, H-Brücke, EEPROM, 3 Potis, Display.
Erwartungen an Ihre Projektlösung
- Erstellung eines Konzepts
- Entwurf des Schaltplans in Multisim/Ultiboard
- Erstellung der Platine als ArduinioShield (ggf. in mehreren Iterationen)
- Programmierung mit C
- Ansteuern/Auslesen der Aktoren/Sensoren
- Programmierung von Beispielanwendungen
- Test und wiss. Dokumentation
- Dokumentation der technischen Funktion der verwendeten Bauteile
- Live Vorführung während der Abschlusspräsentation
Schwierigkeitsgrad
Anspruchsvoll (***)
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 14/15)
Einleitung
Im Rahmen der Lehrveranstaltung „Angewandte Elektrotechnik“ des Studiengangs „Business and Systems Engineering“ im Wintersemester 2014/15 gab es die Aufgabe, ein Projekt im Bereich der Elektro- und Regelungstechnik durchzuführen. Die vorliegende Dokumentation befasst sich mit dem Entwurf und der Ansteuerung einer Entwicklungsplatine für einen Mikrocontroller.
Detailliert bestand die Aufgabe darin, eine Entwicklungsplatine für den Mikrocontroller des Arduino Uno zu bauen und anzusteuern. Dabei waren mindestens die Bauelemente Drehencoder, LEDs inklusive Transistorstufe, RGB-LED inklusive Transistorstufe, MOSFET für große Lasten, H-Brücke, EEPROM, drei Potentiometer sowie ein Display zur Ansteuerung zu verwenden. Die gestellten Erwartungen lagen in der Erstellung eines Konzepts sowie in einem Entwurf des Schaltplans in der Software Multisim bzw. Ultiboard. Des Weiteren sollte die Entwicklungsplatine als ArduinoShield erstellt werden. Neben der Programmierung in C wurden ein Ansteuern der Aktoren sowie ein Auslesen der Sensoren gefordert, sofern diese verbaut wurden. Darüber hinaus beinhaltete die Aufgabe die Programmierung von Beispielaufgaben. Außerdem waren Tests der entwickelten Platine durchzuführen und wissenschaftlich zu dokumentieren. Die Dokumentation der technischen Funktion der verwendeten Bauteile und eine Live-Vorführung während der Abschlusspräsentation stellten ebenfalls Erwartungen dar.
Konzept (Projektplanung)
Die folgenden Punkte geben das Projektkonzept stichwortartig wieder:
0. Festlegung des Projektthemas innerhalb der Auftaktveranstaltung
1. Projektvorbereitung
1.1. Recherche und Austausch von Informationen zur Aufgabenstellung
1.2. Organisation und Planung der anstehenden Aufgaben
1.3. Erstellung der Materialiste (BOM)
2. Projektdurchführung
2.1. Detaillierte Konzepterstellung (Schaltungsidee als Black-Box-Modell entwerfen)
2.2. Entwicklung der Ansteuerungssoftware und Testen dieser mittels Realisierung der Schaltungen auf einem Steckbrett und ggf. Verbesserung durchführen
2.3. Schaltungsentwurf in Multisim
2.4. Erstellung des Platinenlayouts in Ultiboard
2.5. Fertigen der Platinen und Anlöten der Bauteile
2.6. Vereinigung von Hardware und Software
2.7. Testen der Ansteuerung und ggf. Verbesserung durchführen
3. Projektabschluss
3.1. Auswertung des Projekts
3.2. Dokumentation abschließen
Die detaillierte Projektplanung werden durch das Gantt-Diagramm und durch die Zeitachse erfasst, welche mit MS Project 2013 erstellt wurden. Während der Projektzeit (19.09.2014-16.01.2015) erfolgte eine stetige Verfolgung, ob alle Vorgänge und Meilensteine rechtzeitig einghalten wurden. Das Gantt-Diagramm ist auf der linken Seite dargestellt. Die Zeitachse befindet sich auf der rechten Seite.
Realisierung
Idee
Die Idee für die Entwicklungsplatine war der Entwurf einer DC-Motorsteuerung. Dabei sollte der Motor jedoch nicht nur einfach ein- bzw. ausgeschaltet werden, sondern mithilfe einer PWM angesteuert werden. Dadurch sind unterschiedliche Geschwindigkeiten des Motors möglich. Neben diesen DC-Motor war noch ein weiterer DC-Motoranschluss für schwere Lasten vorgesehen. Der Einsatz von Potentiometern, Drehencoder, EEPROM sowie einem LCD-Modul sollten dabei dem Anwender unterschiedliche Möglichkeiten bei der Motorsteuerung ermöglichen.
Um die Idee für die Entwicklungsplatine besser zu verdeutlich, wird ein Black-Box Modell herangezogen (siehe Abbildung des Black Box Modells). In der Abbildung ist der Arduino Uno in einem roten Kasten zu erkennen. Dieser stellt in diesem Modell den Hauptausgangspunkt dar, da über diesen gesteuert wird. Dabei stellen die roten Pfeile eine direkte Verbindung und die blauen eine indirekte Verbindung zum Arduino Uno dar. Weiterhin gibt die Pfeilrichtung die Richtung der Signale an. Das bedeutet, dass vom Arduino wegführende Pfeile eine Ansteuerung und zum Arduino führende ein Einlesen darstellen. Beispielhaft wird hier der Drehencoder aufgeführt. Dabei wird die „Drehrichtung“ eingelesen (Impuls) und verarbeitet. Weiterhin gibt das Modell einen groben Aufschluss über die Funktionsweise der Entwicklung. Dadurch soll ein schneller Überblick über die Platine gegeben werden, ohne dass es einer langen Auseinandersetzung mit dem Schaltplan benötigt. So geht bspw. aus dem Black-Box Modell deutlich hervor, dass wenn der „einfache“ DC-Motor angesteuert werden soll, dies nur über die H-Brücke und einer 9V Batterie (eine andere externe 9V Quelle ist ebenfalls einsetzbar) möglich ist. Die dazugehörige Datei kann hier heruntergeladen werden (zum öffnen wird MS Visio 2013 benötigt): Datei:Blackbox-Modell.zip
Verwendete Bauteile
In diesem Abschnitt erfolgt die Auflistung aller verwendeten Bauteile im Projekt. Die wichtigsten Bauteile werden in den entsprechenden Unterkapiteln näher betrachtet.
Auf der Platine verbaute Teile:
Widerstand 1x 10 kOhm
Widerstände 2x 4,7 kOhm
Widerstand 2x 33 Ohm
Widerstände 3x 1 kOhm
Widerstände 2x 200 Ohm
Widerstand 1x 470 Ohm
Potentiometer 3x PO4M-LIN 100K
EEPROM 1x 24LC256-I/P
RGB-LED 1x Kingbright L-154A4SU
bipolare Transistoren 7x BC547B
MOSFET Transistor 1x IRLIZ44N
Diode 1x 1n4007
H-Brücke 1x L293D
Drehencoder 1x STEC12E07
LED 1x rot
LED 1x grün
Bauteile außerhalb der Platine:
DC-Motor 1x einfache Lasten (bis 9 V)
DC-Motor 1x schwere Lasten (bis 50 V)
Batterieclip 1x
LCD-Modul 1x TC1602E-01
Drehencoder
Der Drehencoder (siehe Bild) ist ein richtungsweisender „Schalter“. Äußerlich ähnelt dieser einem Potentiometer. Allerdings bieten einige Drehencoder nicht nur die Möglichkeit zu drehen, sondern ebenfalls einen Tastendruck. Das entscheidende bei diesen Bauteilen ist, dass die Drehbewegung vom Mikrocontroller erkannt werden kann, um somit softwaretechnisch die Bewegung auszunutzen. So ist es möglich z.B. die Rechtsbewegung auszulesen und dadurch in der Software die Inkremmentierung eines PWM-Wertes hervorzurufen. Dies ermögliche bspw. einen Motor manuell zu steuern. Die Erkennung, um welche Drehrichtung es sich handelt, ist durch den Signalverlauf in der Abbildung zu erkennen. So entsteht bei einer Drehbewegung nach rechts zuerst ein Viereckssignal auf A und dann auf B. Bei einer Linksdrehung genau umgekehrt. Die Verdrahtung dieses Bauteils kann hier([12]) entnommen werden. [2]
RGB-LED
Die RGB-LED besteht eigentlich aus drei LEDs mit den Farben rot, grün und blau, welche in einem Gehäuse untergebracht wurden. In der Regel haben RGB-LEDs vier Pins (es gibt auch welche mit weniger und mehr Pins). Drei von den vier Pins sind jeweils für die Ansteuerung der roten, grünen und blauen LED da. Der vierte Pin stellt meistens die gemeinsame Kathode dar. Allerdings gibt es auch RGB-LEDs mit einer gemeinsamen Anode. In diesem Projekt wurde eine RGB-LED mit einer gemeinsamen Kathode verwendet. Die Verdrahtung der RGB-LED ist hier([13]) wiederzufinden. [4]
H-Brücke
Die Brückenschaltung wurde in diesem Projekt in Form eines IC verwendet. Die Besonderheit einer H-Brücke ist, dass damit bspw. DC-Motoren im Uhrzeigersinn und gegen den Uhrzeigersinn bewegt werden können. Um eine schematische Funktionsweise einer H-Brücke besser darlegen zu können, wurden die Abbildungen rechts eingefügt. Aus diesen geht deutlich die Funktionsweise hervor. Wird Schalter S1 und S4 geschlossen, so dreht der Motor in die eine Richtung und bei S1 und S3 in die andere. Wie die H-Brücke angeschlossen werden kann ist an dieser ([14]) Stelle hinterlegt. [8]
LCD-Modul
Das LCD-Modul erlaubt es dem Anwender auf einem 16x2 Display eigene Ausgaben darzustellen. Der Verwendungszweck eines solchen Displays ist facettenreich und hängt vom Entwickler ab. Allerdings bringt das LCD-Modul auch Nachteile, da es mindestens sechs Pins für den Betrieb benötigt. Weiterhin muss eine Bibliothek in den Quellcode inkludiert werden, um das Modul ansprechen zu können. Dies resultiert in einem größeren Speicherverbrauch. Die Verdrahtung des LCD-Moduls kann hier([15]) entnommen werden.
EEPROM
Das EEPROM (engl. electrically erasable programmable read-only memory, dt. elektrisch löschbarer programmierbarer Nur-Lese-Speicher) dient zum Speichern von Daten. Diese können ebenfalls gelesen und gelöscht werden. Der EEPROM ist ein nicht-flüchtiger Speicher. Dadurch gehen die Daten beim ausschalten des Mikrocontrollers nicht verloren und können zu einem späteren Zeitpunkt aufgerufen werden. [11]
Schaltplan
Die Entwicklung des Schaltplans erfolgte, wie es aus der Aufgabenstellung gefordert war, mithilfe des Programms Multisim. Insgesamt wurden zwei Platinen (Iterationen) erstellt. Diese Aufteilung hatte mehrere Gründe. Zu einem ist die Shieldgröße für ein Arduino Uno nicht beliebig erweiterbar. Zum anderen, was einen größeren Enfluss auf die Aufteilung hatte, war die Entstehung einer hohen Temperatur bei Benutzung eines MOSFETs unter hoher Last. Die Entstehende Temperatur könnte umliegende Bauteile nachteilig beeinflussen. Obwohl auf dem zweiten Shield ebenfalls sich Bauteile befinden, sind diese jedoch weitestgehend weit vom MOSFET entfernt. Weiterhin bietet die Aufteilung den Vorteil des Verwechslungsschutzes. Das bedeutet, dass für schwere Lasten das entsprechende Shield genutzt werden muss und dadurch nicht ausversehen Bauteile beschädigt werden, welche nur für einfache Lasten ausgelegt sind.
An dieser Stelle gilt es anzumerken, dass die Shields für das Arduino Uno entwickelt wurden. Das nutzen dieser Shield unter Verwendung eines anderen Arduinos kann zu Schädigung der Shields oder des Arduinos führen.
Shield 1:
Auf diesem Shield wurden die meisten Bauteile verbaut. Die Besonderheit dieses Schaltplans liegt im Motor und dem LCD-Modul. Obwohl diese auf dem Schaltplan aufgeführt sind, liegen diese Bauteile außerhalb der Platine. Der Grund hierfür liegt in der Größe und Austauschbarkeit der Komponenten. Da dieses Shield der Entwicklung dienen sollte, ist es besser keinen Motor vorzugeben, sondern es steht dem Entwickler frei den DC-Motor zu wählen. Anstelle des Motors wurden zwei Anschlüsse auf die Platine gesetzt, an welche der Motor angeschlossen werden kann. Ähnlich verhält es sich mit LCD-Modul. Weiterhin ist die RBG-LED als drei LEDs in den entsprechenden Farben dargestellt. Der Grund für die Aufteilung der RGB-LED in drei LEDs liegt in der besseren Übersicht. Außerdem lassen sich die LEDs in der verbauten RGB-LED ebenfalls einzeln ansprechen. Weiterhin sind die Bauteile wie der EEPROM und die H-Brücke auf dem Schaltplan so realisiert (Pinanschlüsse), wie es in den entsprechende Datenblätter abgebildet ist.
Der Aufbau des Schaltplans orientiert sich an dem Arduino Uno. Auf der rechten Seite des Schaltplans sind die digitalen Anschlüsse des Arduino Unos zu erkennen, während auf der linken unteren Seite die anlogen Anschlüssen zu sehen sind. Jedes Bauteil ist an einen entsprechend Pin verbunden und kann somit über das Arduino Uno gesteuert werden. Die Datei für Schaltung kann hier heruntergeladen werden (zum öffnen wird Multisim 13 benötigt): Datei:Schaltung Projekt 29.zip
Shield 2:
Auf dem zweiten Shield ist ebenfalls ein Motor zu erkennen. Allerdings ist dieser, wie auf dem ersten Shield, nicht auf der Platine aufgesetzt, sondern nur die Anschlüsse. Neben dem Motor wurde auf dieser Platine zwei LEDs inkl. Transistorstufe realisiert. Diese arbeiten unabhängig vom Motor. Der Schaltplan ist unter folgendem Link herunterzuladen (Schaltplan benötigt Multisim 13 zum öffnen): Datei:Schaltung2 Projekt 29 (2).zip
Platinenlayout
Das Layout der Platinen wurde, wie in der Aufgabenstellung zu entnehmen ist, mittels Ultiboard erstellt. Die Geometrie der Shields orientieren sich an dem Arduino Uno.
Shield 1:
Bei dieser Platine wurden Leiterbahnen an der unteren und oberen Seite erstellt. Diesem Konzept liegen die Bauteile mit vielen Pins zugrunde, welche unterschiedlich an den Ardunio Uno angeschlossen werden müssen. Zwar führt solch ein Layout zu einer längeren Fertigungszeit, aber es sollte sicherstellen das die Leiterbahnen sich nicht kreuzen.
Durch die Geometrie des Shields, ist es sofort ersichtlich wie dieses auf das Arduino Uno gesteckt werden muss. Weiterhin kann das Layout ebenfalls als Vorlage für zukünftige Arduino Uno Shields verwendet werden. Das Platinenlayout kann hier heruntergeladen werden (zum öffnen wird Ultiboard 13 benötigt): Datei:Schaltung Projekt 29 Layout.zip
Shield 2:
Bei dieser Platine wurden Leiterbahnen, aufgrund weniger Bauteile, nur auf der Unterseite erstellt. Dies bringt den Vorteil einer schnellen Fertigung. Besonders bei dieser Platine wurde beim erstellen des Layouts auf den GND geachtet. Da dieses Shield für hohe Lasten ausgelegt ist, muss ein guter Zugang (breite Bahn) zur Masse gewährleistet sein. Das Platinenlayout kann hier heruntergeladen werden (zum öffnen wird Ultiboard 13 benötigt): Datei:Schaltung2 Projekt 29 Layout(2).zip
Software zur Ansteuerung
In diesem Abschnitt werden die Quellcodes für die Ansteuerungen behandelt.
DC-Motorsteuerung mit einer H-Brücke: [16]
LCD-Modul ansteuern: [17]
EEPROM ansteuern: [18]
DC-Motor ansteuern (hohe Last): [19]
RGB-LED und LEDs ansteuern: [20]
Potentiometer auslesen: [21]
Drehencoder auslesen: [22]
Fazit
Das vorliegende Projekt war sehr interessant und sorgte für einen hohen Erfahrungswert. So konnte mit diesem Projekt Wissen von der theoretischen Entwicklung eines Schaltplans über die Fertigung (Platine fräsen/Bauteile löten) bis hin zur Ansteuerung gesammelt werden. Des Weiteren zeigt dieses Projekt eine Entwicklung eines "Produktes" von Anfang bis zum Ende auf, ähnlich wie es auch im Unternehmen abläuft. Die beiden fertigen Shields können jetzt in weiteren Projekten eingesetzt werden. Aufgrund des bereitgestellten Quellcodes in dieser Dokumentation, muss dieser nicht mehr vom Anwender umständlich auf unterschiedlichen Web-Seiten rausgesucht werden.
Ausblick
Das vorliegende Projekt bietet aufgrund diverser Bauteile, wie H-Brücke, EEPROM, LCD-Modul oder RGB-LED unterschiedliche Einsatzzwecke. Obwohl das Projekt abgeschlossen ist und die Ergebnisse vorliegen, sind Erweiterungen dieser denkbar. Beispielsweise könnte das LCD-Modul gegen ein Farbdisplay für Arduino gewechselt werden, sodass aktuelle Daten grafisch aufbereitet angezeigt werden können (z.B. Diagramme). Außerdem könnten die Shields um Schieberegister erweitert werden, welche ebenfalls eine Vielzahl an Anwendungsmöglichkeiten bieten. Auf der softwaretechnischen Seite könnten Simulink-Modelle für die vorliegenden Shields entwickelt werden, um bspw. darüber einen Motor zu steuern und die aktuellen Ergebnisse auf dem LCD-Display anzeigen oder auch im EEPROM zu speichern, damit diese später ausgewertet werden können. Insgesamt betrachtet bietet das vorliegende Projekt, samt Ergebnissen, eine solide Basis für Entwicklungen und Erweiterungen.
Quellen
- ↑ [1]Drehencoder. Website von reichelt. Abgerufen am 09. Oktober 2014.
- ↑ [2]Information zum Drehencoder. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
- ↑ [3]RGB-LED. Website von conrad. Abgerufen am 09. Oktober 2014.
- ↑ [4]Information zur RGB-LED (siehe Datenblatt). Website von conrad. Abgerufen am 09. Oktober 2014.
- ↑ [5]H-Brücke (H-Bridge). Website von reichelt. Abgerufen am 09. Oktober 2014.
- ↑ [6]H-Brücke-Funktionsweise. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
- ↑ [7]H-Brücke-Funktionsweise. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
- ↑ [8]Information zur H-Brücke. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
- ↑ [9]LCD-Modul. Website von Vatronix. Abgerufen am 09. Oktober 2014.
- ↑ [10]LCD-Modul. Website von Solarbotics. Abgerufen am 09. Oktober 2014.
- ↑ [11]Information zur H-Brücke. Website von ITWissen. Abgerufen am 09. Oktober 2014.