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


→ 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.


Projektablaufplan des Projekts 29


Zeitachse des Projekts 29



















Realisierung

Idee

Darstellung des Black-Box Modells für die Entwicklung

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.


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

Drehencoder [1]

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. [2]






RGB-LED

LED[3]

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. [4]







H-Brücke

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

Die Brückenschaltung wurde in diesem Projekt in Form eines IC verwendet. Die Besonderheit einer H-Brücke ist, dass damit bspw. DC-Motoren in 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. [8]











LCD-Modul

LCD-Modul[9]

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 fünf 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.





EEPROM

EEPROM[10]

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 bei 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:

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, 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.


Shield 2:

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 die Anschlüsse. Neben dem Motor wurde auf dieser Platine zwei LEDs inkl. Transistorstufe realisiert. Diese arbeiten unabhängig vom Motor.







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:

Layout Shield 1
3D-Ansicht 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.






Shield 2:

Layout Shield 2
3D-Ansicht 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.







Software zur Ansteuerung

In diesem Abschnitt werden die Quellcodes für die Ansteuerungen behandelt.

DC-Motorsteuerung mit einer H-Brücke: [12]

LCD-Modul ansteuern: [13]

EEPROM ansteuern: [14]

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

RGB-LED und LEDs ansteuern: [16]

Potentiometer auslesen: [17]

Drehencoder auslesen: [18]



Fazit

Ausblick

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 zur H-Brücke. Website von ITWissen. Abgerufen am 09. Oktober 2014.