Projekt 29: Entwicklungsplatine für Mikrocontroller entwerfen und ansteuern

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

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 (***)


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 wurde 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 im Folgenden in der linken Abbildung dargestellt. Die Zeitachse befindet sich auf dem rechten Bild (siehe Abbildung 2).


Abbildung 1: Projektablaufplan des Projekts 29


Abbildung 2: Zeitachse des Projekts 29



















Realisierung

Idee

Abbildung 3: Darstellung des Black-Box Modells für die Entwicklung

Die Idee für die Entwicklungsplatine ist der Entwurf einer DC-Motorsteuerung. Dabei soll der Motor jedoch nicht nur einfach ein- bzw. ausgeschaltet werden können, sondern mithilfe einer PWM angesteuert werden. Dadurch sind unterschiedliche Geschwindigkeiten des Motors möglich. Neben dem DC-Motor für einfache Lasten ist noch ein weiterer DC-Motoranschluss für schwere Lasten vorgesehen. Der Einsatz von Potentiometern, Drehencoder, EEPROM sowie einem LCD-Modul schaffen dem Anwender unterschiedliche Möglichkeiten bei der Motorsteuerung.

Um die Idee für die Entwicklungsplatine besser zu verdeutlichen, wird ein Black-Box Modell herangezogen (siehe Abbildung des Black Box Modells). In der Abbildung 3 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 hinführende ein Einlesen darstellen. Beispielhaft wird hier der Drehencoder aufgeführt. Dabei wird die „Drehrichtung“ (Impuls) eingelesen 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 bedarf. 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 (bzw. einer externen 9V Quelle) 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.


Die folgende Tabelle zeigt die auf der Platine verbaute Teile:

Tabelle 1: Materialliste Teil 1
Bauteil Bezeichnung/Größe/Art Anzahl
bipolare Transistoren BC547B 7
Diode 1n4007 1
Drehencoder STEC12E07 1
EEPROM 24LC256-I/P 1
H-Brücke L293D 1
RGB-LED Kingbright L-154A4SU 1
LED grün 1
LED rot 1
MOSFET Transistor IRLIZ44N 1
Potentiometer PO4M-LIN 100K 3
Widerstand 10 kOhm 1
Widerstand 33 Ohm 2
Widerstand 200 Ohm 2
Widerstand 470 Ohm 1
Widerstand 1 kOhm 3
Widerstand 4,7 kOhm 2


Die folgende Tabelle zeigt die Bauteile außerhalb der Platine:

Tabelle 2: Materialliste Teil 2
Bauteil Bezeichnung/Größe/Art Anzahl
Batterieclip 1
DC-Motor einfache Lasten (bis 9 V) 1
DC-Motor schwere Lasten (bis 50 V) 1
DC-Motor schwere Lasten (bis 50 V) 1
LCD-Modul TC1602E-01 1

Drehencoder

Abbildung 4: Drehencoder[1]

Der Drehencoder (siehe Abbildung 4) ist ein richtungsweisender „Schalter“. Äußerlich ähnelt dieser einem Potentiometer. Allerdings bieten einige Drehencoder nicht nur die Möglichkeit einer Drehbewegung, sondern ebenfalls die eines Tastendrucks. 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öglicht bspw. die manuelle Steuerung eines Motors. Die Erkennung, um welche Drehrichtung es sich handelt, ist durch den Signalverlauf in der Abbildung 4 ebenfalls 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

Abbildung 5: LED[3]

Die RGB-LED besteht im Allgemeinen aus drei LEDs mit den Farben rot, grün und blau, welche in einem einzigen 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

Abbildung 6: H-Brücke[5]
Abbildung 7: H-Brücke-Schema 1[6]
Abbildung 8: H-Brücke-Schema 2[7]

Die Brückenschaltung wurde in diesem Projekt in Form eines IC verwendet (siehe Abbildung 6). 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 7 und 8 eingefügt. Aus diesen geht deutlich die Funktionsweise hervor. Werden Schalter S1 und S4 geschlossen, so dreht sichder Motor in die eine Richtung und bei geschlossenen Schaltern S1 und S3 in die andere. Wie die H-Brücke angeschlossen werden kann, ist an dieser ([14]) Stelle hinterlegt.[8]











LCD-Modul

Abbildung 9: LCD-Modul[9]

Das LCD-Modul erlaubt es dem Anwender auf einem 16x2 Display eigene Ausgaben darzustellen (siehe Abbildung 9). Der Verwendungszweck eines solchen Displays ist facettenreich und hängt individuell vom Entwickler ab. Allerdings bringt das LCD-Modul auch den Nachteil, 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. Folglich gibt es einen größeren Speicherverbrauch. Die Verdrahtung des LCD-Moduls kann hier([15]) entnommen werden.





EEPROM

Abbildung 10: EEPROM[10]

Das EEPROM (engl. electrically erasable programmable read-only memory, dt. elektrisch löschbarer programmierbarer Nur-Lese-Speicher) dient der Datenspeicherung (siehe abbildung 10). Die Daten können ebenfalls gelesen und gelöscht werden. Das 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. Wie das EEPROM mit dem Arduino Uno verbunden werden kann, um dies zu beschreiben und zu lesen, ist an dieser Stelle ([16]) hinterlegt.[11]







Schaltplan

Die Entwicklung des Schaltplans erfolgte, wie es aus der Aufgabenstellung gefordert war, mithilfe des Programms Multisim. Insgesamt wurden zwei Platinen (Iterationen) erstellt (siehe Abbildung 11 und 12). Diese Aufteilung hatte mehrere Gründe. Zum einen 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 des MOSFETs unter hoher Last. Die entstehende Temperatur könnte umliegende Bauteile nachteilig beeinflussen. Obwohl sich auf dem zweiten Shield ebenfalls Bauteile befinden, besitzen diese einen ausreichenden Sicherheitsabstand vom MOSFET (siehe Abbildung 12). Weiterhin bietet die Aufteilung den Vorteil des Verwechslungsschutzes. Das bedeutet, dass für schwere Lasten das dafür zweite vorgesehene Shield genutzt wird und dadurch keine Bauteile (aus Versehen) beschädigt werden, welche nur für einfache Lasten ausgelegt sind.

An dieser Stelle gilt es anzumerken, dass die Shields (ausschließlich) für das Arduino Uno entwickelt wurden. Das Nutzen dieser Shields unter der Verwendung eines anderen Arduino kann zu einer Schädigung der Shields oder des Arduino führen.

Shield 1:

Abbildung 11: Schaltplan 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, wird kein Motor vorgegeben, sodass der Entwickler den DC-Motor frei wählen kann. Anstelle des Motors wurden zwei Anschlüsse auf die Platine gesetzt, an welchen 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 aufgeteilt dargestellt. Der Grund für die Aufteilung der RGB-LED in die 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 das EEPROM und die H-Brücke auf dem Schaltplan so realisiert worden (Pinanschlüsse), wie es in den entsprechende Datenblättern 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 Uno zu erkennen, während auf der linken unteren Seite die analogen Anschlüsse zu sehen sind. Jedes Bauteil ist an dem dazugehörigen Pin verbunden und kann somit über das Arduino Uno gesteuert werden. Die Datei für die Schaltung kann hier heruntergeladen werden (zum Öffnen wird Multisim 13 benötigt): Datei:Schaltung Projekt 29.zip


Shield 2:

Abbildung 12: Schaltplan 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 dessen Anschlüsse. Neben dem Motor wurden auf dieser Platine zwei LEDs inkl. Transistorstufe realisiert. Diese arbeiten unabhängig vom Motor. Der Schaltplan ist unter folgendem Link herunterzuladen (zum Öffnen des Schaltplans wird Multisim 13 benötigt): 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 orientiert sich an die Geometrie des Arduino Uno.

Shield 1:

Abbildung 13: Layout Shield 1
Abbildung 14: 3D-Ansicht Shield 1

Bei dieser Platine wurden Leiterbahnen an der unteren und an der oberen Seite erstellt (siehe Abbildung 13). 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:

Abbildung 15: Layout Shield 2
Abbildung 16: 3D-Ansicht Shield 2

Bei der zweiten Platine wurden die Leiterbahnen, aufgrund weniger Bauteile, nur auf der Unterseite erstellt (siehe Abbildung 15). 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: [17]

LCD-Modul ansteuern: [18]

EEPROM ansteuern: [19]

DC-Motor ansteuern (hohe Last): [20]

RGB-LED und LEDs ansteuern: [21]

Potentiometer auslesen: [22]

Drehencoder auslesen: [23]

Bilder der Shields

In diesem Abschnitt werden die Bilder der Ergebnisse des Projekts 29 aufgezeigt. Die Bilder sind dabei mit Nummern und Pfeilen gekenzeichnet, sodass die wichtigsten Bauteile leicht im Bild wiedergefunden werden können.

Abbildung 17: Shield 1

Das Shield 1 besitzt die meisten Bauteile, d.h. außer dem MOSFET und der LEDs sind alle Bauteile hier wiederzufinden (siehe Abbildung 17). Wie aus dem Bild hervorgeht, ist das LCD-Modul nicht auf der Platine fixiert. Dies bietet allerdings den Vorteil, dass beim Verwenden des Shields das LCD-Modul in eine gewünschte Position gebracht werden kann. Dadurch kann das Shield auch in ein Gehäuse verbaut werden, während die Anzeige im Blickfeld bleiben kann. In Abbildung 17 sind folgende Bauelemente zu erkenennen:
1 - Motoranschluss (Minuspol)
2 - Motoranschluss (Pluspol)
3 - Potentiometer
4 - H-Brücke
5 - Drehencoder
6 - EEPROM
7 - RGB-LED
8 - Batterie-Klemme
9 - LCD-Modul

Abbildung 18: Shield 2





Das zweite Shield ist mit dem MOSFET und den LEDs (inkl. Transistorstufe) ausgelegt (siehe Abbildung 18). Dieses Shield kann direkt oder auch iterativ auf das Arduino Uno gesteckt werden. Unter iterativ ist das Aufstecken des zweiten Shields auf das erste Shield zu verstehen, sodass sich der Aufbau Arduino, erstes Shield und zweites Shield ergibt. In Abbildung 18 sind folgende Bauelemente zu erkenennen:
1 - Motoranschluss (Minuspol)
2 - Motoranschluss (Pluspol)
3 - Anschluss externe Spannungsversorgung (Minuspol)
4 - Anschluss externe Spannungsversorgung (Pluspol)
5 - MOSFET
6 - rote LED
7 - grüne LED






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 nun 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. Die am 16.01.2015 gehaltene Projektpräsentation kann als PDF (Datei:Projekt 29 Präsentation PDF.zip) oder Powerpoint (Datei:Projekt 29 Präsentation PPT.zip) heruntergeladen 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.

Youtube-Video

Zum Projektabschluss fand eine Videoaufnahme für Youtube statt, um die wichtigsten Ergebnisse dieses Projekts aufzuzeigen. Das Youtube-Video befindet sich unter folgendem Link Link folgt in Kürze


Quellen

  1. [1]Drehencoder. Website von reichelt. Abgerufen am 09. Oktober 2014.
  2. [2]Information zum Drehencoder. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
  3. [3]RGB-LED. Website von conrad. Abgerufen am 09. Oktober 2014.
  4. [4]Information zur RGB-LED (siehe Datenblatt). Website von conrad. Abgerufen am 09. Oktober 2014.
  5. [5]H-Brücke (H-Bridge). Website von reichelt. Abgerufen am 09. Oktober 2014.
  6. [6]H-Brücke-Funktionsweise. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
  7. [7]H-Brücke-Funktionsweise. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
  8. [8]Information zur H-Brücke. Website von dieelektronikerseite. Abgerufen am 09. Oktober 2014.
  9. [9]LCD-Modul. Website von Vatronix. Abgerufen am 09. Oktober 2014.
  10. [10]LCD-Modul. Website von Solarbotics. Abgerufen am 09. Oktober 2014.
  11. [11]Information zum EEPROM. Website von ITWissen. Abgerufen am 09. Oktober 2014.



→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 14/15)