PowerPoint-Präsentation

Werbung
Hardwareprogrammierung mit
MATLAB/Simulink
WARR-Workshop im WiSe 2014
von
Martin Dziura ([email protected])
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Teilnehmer / Teameinteilung
Team
Mitglied 1
Mitglied 2
Mitglied 3
1
Alexander Schmitt
Martin Hacker
Björn Wagner
2
Joachim Sturm
Andreas Lindner
3
Sebastian Reigber
Maximilian Bambauer
4
Jonas Pfisterer
Thomas Lausenhammer
5
Daniel Bart
Xaver Lamprecht
6
Alexander Frericks
7
Felix Rößler
Philipp Neumann
8
Stefan Raab
Yannick Apfel
9
Danel Eiringhaus
Ralf Süss
10
Florian Ettemeyer
Johannes Kugele
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Martin Schlecker
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Hardwareprogrammierung mit MATLAB/Simulink
Schaltungsgrundlagen
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Digital vs. Analog
Analoge Schaltung
 Veränderliche Spannungen
 Strom oft relevant
 Sensoren, Aktoren, Verstärker, …
Digitale Spannung
 Zwei Spannungspegel (Low und High)
 Strom i.d.R. irrelevant
 Logikschaltungen (An/Aus), digitale Signale
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Digitale Schaltungen / Signale
Die Digitale Information entspricht dem Spannungspegel.
Die Bedeutung ist abhängig von der Beschaltung.
Information
Digital
Pegel
Spannung
An
1
High
> 0.7 * VCC
Aus
0
Low
< 0.2 * VCC
undefiniert
undefiniert
undefiniert
dazwischen
Aus
1
High
> 0.7 * VCC
An
0
Low
< 0.2 * VCC
undefiniert
undefiniert
undefiniert
dazwischen
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Pull-Up und Pull-Down
Leere Leitung / floating
µC
R1
Pull-Up Widerstand
typ. 10KOhm
µC
R2
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Undefinierter
Spannungspege
l
Pull-Down Widerstand
typ. 10KOhm
Definierter
Spannungspege
l
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Beschaltung von LEDs / Verbrauchern
Möglichkeit 1:
Direkt an den µC-Pin
Vorteil: Einfach
Nachteil: Hoher Strom durch µC
(begrenzt auf 20mA!)
Auslegung des Vorwiderstands:
U = R·I und LED-Datenblatt
Möglichkeit 2:
Steuerung über Transistor
Basiswiderstand-Berechnung:
http://www.mikrocontroller.net/
articles/Basiswiderstand
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
LEDs dimmen mit PWM
PWM: Puls-Weiten-Modulation
Bei hoher Frequenz ergibt sich
durch Kapazitäten und Trägheit
der LED ein effektiver Strom
abhängig von der Pulsbreite.
Frequenz für LEDs ~200Hz
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Beschaltung von Tastern
Beispiel: Schaltung gegen GND
mit PullUp-Widerstand
Alternative 1: Mikrocontroller hat
einen internen PullUpWiderstand
Alternative 2: Schaltung gegen
VCC mit PullDown-Widerstand
+ Entprellen mit Kondensator
+ evtl. Operationsverstärker
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Hardwareprogrammierung mit MATLAB/Simulink
Vorstellung der Workshop-Hardware
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
STM32 F4 Discovery
Kernkomponenten
• Entwicklungsboard mit
STM32F4 Mikrocontroller
• 168 MHz Betriebssfrequenz
• Integrierter JTAG-Debugger
Onboard-Peripherie
• 4 User-LEDs
• 1 User-Button, 1 Reset-Button
• 3F-Motion-Sensor (LIS3DSH)
• Mikrofon (MP45DT02)
• Audio DAC (CS43L22)
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
STM32 F4 Discovery
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Mikrocontroller STM32F407
• Moderner Mikrocontroller min vielen
Funktionen und Schnittstellen
• Programmierung „von Hand“ wäre
extrem aufwändig
 Abstraktionsebene notwendig!
 Bibliotheken für viele Sprachen
 Oder: Simulink-Blockset!
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Mikrocontroller-Familie STM32
Mehr Infos auf der Hersteller-Webseite www.st.com
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Waijung-Blockset verfügbar
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Hardwareprogrammierung mit MATLAB/Simulink
Das Waijung Blockset
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Wer oder Was ist Waijung?
Idee:
• Verwendung von Simulink mit
Simulink Coder und Targets
Für den STM32F4 / STM32F0:
• Waijung or ไวจัง
(Thai slang for so fast)
Problem:
• Offizielle Unterstützung von
MATLAB für Hardware ist
rudimentär (nur einfaches I/O)
Waijung-Features:
• Zahlreiche Hardwaretreiber
• Generiert C-Code aus Blöcken
• Auto Compile and Download
• Echtzeitfähiger Code
• Nahtlos in Simulink integriert
Lösung:
• Custom oder User-Generated
Blocksets für bessere
Hardwareunterstützung
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
 Echtes Plug and Play!
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Beispiele für Waijung-Blöcke
Konfiguration
Block Target Setup muss in
jedem Projekt als erstes
hinzugefügt werden.
Dieser initialisiert alle SimulinkEinstellungen und das Target.
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Einfache IO-Blöcke
Einfache Ein- und Ausgabe von
logischen Signalen erfolgt über
ebenso einfache Blöcke:
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Hardwareprogrammierung mit MATLAB/Simulink
Installation und Verwendung von Waijung
(Live-Vorführung)
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Zeit für Fragen!
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Hardwareprogrammierung mit MATLAB/Simulink
Übungsaufgaben zu Waijung
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Aufgabe 2-1: Installation
Installiert das Waijung Blockset
Alle notwendigen Dateien liegen auf dem Server unter
/08_Kleinprojekte/Workshops/2014 Simulink Hardware/Software
Befolgt exakt die Installationsanleitung
http://waijung.aimagin.com/
(Get Started > Software Installation)
a)
b)
c)
d)
Installieren des ST-Link Utility (und ggf. Treiber für Windows 8)
Installieren des FTDI USB Driver
Anschließen und Test der Verbindung (und ggf. Firmware-Update)
Entpacken und Installieren von Waijung (als Administrator!)
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Aufgabe 2-2: Blinkende LEDs
Bringt die vier User-LEDs auf dem Board zum Blinken
Alle Datenblätter liegen auf dem Server unter
/08_Kleinprojekte/Workshops/2014 Simulink Hardware/Datasheets
Öffnet die Datei STF32F4-Discovery User Manual.pdf
a)
b)
c)
d)
e)
f)
Findet heraus an welchen Port/Pin die vier LEDs liegen.
Sind die LEDs Active Low oder Active High?
Erstellt ein neues Projekt mit Waijung-Block Target Setup
Fügt für die LEDs ein Output-Block hinzu und benennt die BlockPorts intuitiv (z.B. LED Grün, …)
Verbindet den Source-Block Pulse Generator mit den LEDs
Ladet euer erstes Simulink-Hardware-Programm auf das Board 
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Aufgabe 2-3: Noch cooler blinkende LEDs
Lasst die LEDs nun mit einem Sinus sanft blinken. Um die LED zu
Dimmen benötigt ihr ein PWM-Signal. Verwendet hierfür den Block
PWM Generator
Veranschaulicht euch grafisch die Block-Parameter
Switching frequency (Hz) und Sample Time
In wie vielen Schritten kann das PWM das Signal auflösen, wenn die
Einstellungen auf 100Hz und 1E-4s gesetzt sind? Wie können bei
gleicher Auflösung 150Hz erreicht werden?
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Termin 2 - 23. Oktober 2014
Hardwareprogrammierung mit MATLAB/Simulink - Martin Dziura
Aufgabe 2-4: Inputs und State Machine
1.
Lasst eure LEDs nun im Uhrzeigersinn auf und ab dimmen.
Tipp: Ändert hierfür nur einen Parameter des Sinus-Blocks 
2.
Findet heraus an welchem Pin/Port der User-Button liegt und fügt
dem Projekt einen entsprechenden Input-Block hinzu. Ist das Signal
logisch 1 oder 0, wenn der Button gedrückt ist?
3.
Ändert nun die Richtung des Blinkens (Gegenuhrzeigersinn),
während der Button gedrückt ist.
4.
Fügt dem Modell nun ein Stateflow-Chart mit zwei Zuständen für die
beiden Richtungen hinzu. Das Modell soll die Richtung nun bei
jedem Knopfdruck umschalten, der Knopf soll nicht mehr gedrückt
gehalten werden. Verwendet den Block Edge Detector aus dem
Blockset Simscape, um aus dem Button-Signal einen Event-Puls zu
generieren.
Wissenschaftliche Arbeitsgemeinschaft
für Raketentechnik und Raumfahrt
Lehrstuhl für Raumfahrttechnik
Technische Universität München
Herunterladen