Labor-Versuch 3

Aufgabe 3, Motor Controll
Labor Mikrocontroller mit NUC130
Prof. Dr.-Ing. F. Kesel
Dipl.-Ing. (FH) J. Hampel
Dipl.-Ing. (FH) A. Reber
04.08.2016
Inhalt
1
Einführung ........................................................................................................................2
1.1
1.1.1
Grundlagen zu Schrittmotoren .................................................................................. 2
Impulsfolge ....................................................................................................................... 2
1.2
Grundlagen zu Timern im One-Shot Mode ................................................................ 3
1.3
Timer als Steuerkomponente .................................................................................... 3
2
Literatur ............................................................................................................................3
3
Aufgaben ..........................................................................................................................4
3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.3
3.3.1
3.3.2
3.3.3
3.4
3.4.1
3.4.2
Aufgabe 3.1 Pulsfolge erzeugen ............................................................................... 4
Aufgabenpunkte für 3.1 .................................................................................................... 5
Fragen zu 3.1 ................................................................................................................... 5
Abnahmepunkte für 3.1 .................................................................................................... 5
Aufgabe 3.2 Steuerung mit An/Aus & Links/Rechts................................................... 6
Aufgabenpunkte für 3.2 .................................................................................................... 6
Fragen zu 3.2 .................................................................................................................. 6
Abnahmepunkte für 3.2 .................................................................................................... 7
Aufgabe 3.3 Geschwindigkeitsregelung .................................................................... 7
Aufgabenpunkte für 3.3 .................................................................................................... 7
Fragen zu 3.3 .................................................................................................................. 7
Abnahmepunkte für 3.3 .................................................................................................... 8
Aufgabe 3.4 Behebung der Probleme von 3_3 .......................................................... 8
Problembeschreibung für Aufgabe 3_3 ............................................................................ 8
Abnahmepunkte für 3.4 .................................................................................................... 8
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-1-
1
Einführung
Ein Anwendungsgebiet der Mikrocontroller ist die Ansteuerung von Aktoren. Im Auto werden zum Beispiel die Außenspiegel mittlerweile mit kleinen Motoren bewegt. Im aktuellen Laborversuch soll ein kleiner Schrittmotor angesteuert werden.
1.1
Grundlagen zu Schrittmotoren
Ein Schrittmotor wird im Gegensatz zu allen anderen Motoren mit Impulsen angesteuert. Das bedeutet,
der Motor bewegt seine Drehachse um einen definierten Winkel weiter, sobald er einen Impuls erhält.
Dieser Schrittwinkel ist das Hauptkennzeichen eines Schrittmotors. Die in der Industrie am meisten
eingesetzten Motoren haben 200 Schritte pro Umdrehung, was einem Schrittwinkel von 1.8° entspricht.
Der Motor selbst besteht aus 2 oder 3 Spulen, eventuell mit Mittelabgriff und einer entsprechenden Anzahl von Permanentmagneten. Die Spulen werden jetzt in einem bestimmten Muster mit Spannung
versorgt. Dies geschieht in der Regel mit Hilfe eines Schrittmotortreibers, der die Eingangsimpulse in
Abhängigkeit des Richtungssignals dann auf die Spulen verteilt. Diese Step/Dir-Ansteuerung ist sehr
verbreitet, da pro Motor nur 2 Portpins benötigt werden.
Damit wird die Ansteuerung recht einfach, da mit jedem Impuls der Motor um seinen Schrittwinkel in die
gewünschte Richtung weiterdreht. Der Nachteil ist allerding, dass die Geschwindigkeit der Impulse, also
die Ansteuer-Frequenz nicht beliebig sein darf. Ein Motor in Ruhelage muss mit einer niederen Frequenz gestartet werden, als seine normale Lauffrequenz. Sie steht entweder direkt im Datenblatt oder
kann mit Hilfe des Spulenwiderstandes und deren Induktivität berechnet werden. Die maximale Lauffrequenz ist von den Eigenschaften des Motors und der angelegten Spannung abhängig. Auch das Anhalten aus hoher Frequenz ist dann problematisch, wenn bei großen angekoppelten Massen (Räder), der
Motor von der Energie der drehenden Masse weiterbewegt wird.
Im Labor erfolgt die Spulenansteuerung vom Mikrocontroller aus, wofür vier Pins und eine kleine Treiberplatine benötigt werden.
1.1.1
Impulsfolge
Je nach Betriebsmode (Vollschritt, Halbschritt, Microschritt) wird eine Tabelle benötigt, die die Reihenfolge bestimmt, welche Spulen bestromt werden. Der Motor selbst hat fünf Anschlüsse, einen Anschuss
für die Versorgungsspannung und vier Pins für die Spulenenden.
State
Pin
Farbe
1
2
3
4
1
Blau
On
On
Off
Off
2
Pink
Off
On
On
Off
3
Gelb
Off
Off
On
On
4
Orange
On
Off
Off
On
Obige Tabelle erzeugt das Muster für den Vollschritt-Mode. Je nach gewünschter Drehrichtung muss
die Tabelle von links nach rechts bzw. umgekehrt durchlaufen werden.
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-2-
1.2
Grundlagen zu Timern im One-Shot Mode
Die Timerblöcke von Mikrocontrollern sind für viele unterschiedliche Aufgaben konfigurierbar. Eine Gemeinsamkeit ist jedoch die Tatsache, dass sie unabhängig vom aktuell laufenden Programm arbeiten.
Ihr „Arbeitstakt“ ist zwar meist vom Systemtakt abgeleitet, doch können Timer auch mit externen Takten
arbeiten. Ist ein Timer des NUC130 als One-Shot initialisiert, so beginnt er nach dem Schreiben des
Zählwertes in das Compare-Register und der anschließenden Freigabe mit dem eigentlichen Zählen.
Nach dem der Zählwert vom Timer den Wert im Compare-Register erreicht hat, setzt er sein TIF-Flag
auf 1 und zeigt damit an, das die gewünschte Zeit abgelaufen ist. Sollen genaue Zeiten eingehalten
werden, wird der Interrupt des Timers freigeschaltet und im NVIC-Controller dieser Interrupt freigegeben. Damit erzeugt der Timer nach dem Ablauf dann automatisch einen Interrupt.
1.3
Timer als Steuerkomponente
Die Steuerkomponente für den Schrittmotor wird mit Hilfe von Timer1 realisiert, der im One-Shot Mode
mit freigegebenem Interrupt arbeiten soll. Der Timer selbst arbeitet mit einem Zähltakt von 1µs. In der
ISR wird einfach das aktuell notwendige Muster aus einer LookUp-Tabelle auf die entsprechenden
Portpins geschrieben. Die Drehrichtung des Motors ist abhängig davon, wie die LookUp-Tabelle durchlaufen wird, von links nach rechts oder umgekehrt.
Für den Fall, dass sich der Motor nicht drehen soll, darf keine der Spulen eingeschaltet sein.
Aus dem Abstand zwischen zwei Interrupts ergibt sich die Ansteuerfrequenz für den Motor. Soll er
schneller werden, muss der Abstand verkürzt werden, langsamer bedeutet längerer Abstand.
2
Literatur
µVision User's Guide http://www.keil.com/
C_Programmierung_mit_dem_M_Dongle.pdf, HS Pforzheim
Kapitel aus der Vorlesung
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-3-
3
Aufgaben
Die aktuelle Aufgabe zeigt den Weg von der einfachen Mustererzeugung mit Hilfe eines Timers bis zur
kompletten Steuerung mit ein/aus, rechts/links, Drehzahlsteuerung und Problembeseitigung.
Ein Nebeneffekt beim Testen der Software wird dann die Erkenntnis sein, dass sich der Motor an manchen Punkten seltsam verhält. Durch Einfügen von Softwarefunktionen kann dann dieses Verhalten
ausgeschlossen werden.
3.1
Aufgabe 3.1 Pulsfolge erzeugen
Der Motor wird über den LED-Port (BU9) angesteuert, d.h. es werden die LEDs LD2 bis LD5 benutzt.
Erstellen Sie ein Projekt und initialisieren zusätzlich noch den Timer1 im One-Shot Mode. Da er Interrupts erzeugen muss, sind die entsprechenden Arbeiten zu erledigen.
Die Hauptarbeit findet im TMR1_IRQHandler statt.
Dazu ist die folgende Tabelle zu vervollständigen, damit die Werte für die LookUp-Tabelle erzeugt werden kann.
Dazu müssen mit Hilfe des User-Manuals vom M_Dongle und dem Schaltplan des Treibermoduls die
Portpins ermittelt werden, die zu angegeben Farben (Spulen) gehören. Ein gesetztes Bit schaltet die
Spule ein, ein gelöschtes Bit schaltet die Spule aus.
Tragen Sie in den grünen Feldern die 1 oder 0 ein und bilden daraus dann für jeden Sx eine Zahl, die in
das zugehörige gelbe Feld eingetragen wird.
Denken sie an die Wertigkeit der Stelle in Abhängigkeit vom Portpin bei der Summenerzeugung für Sx.
State
Kabelfarbe
Port
pin
Wertigkeit
Aus
Farbe
1
2
3
4
Blau
On
On
Off
Off
Blau
0
Pink
Off
On
On
Off
Rosa
0
Gelb
Off
Off
On
On
Gelb
0
Orange
On
Off
Off
On
Orange
0
S0
S1
S2
S3
0
Tabelle 1 für Mustererzeugung
In der ISR wird nun einfach der Zeiger in der LookUp-Tabelle verschoben und da sich der Motor ja dauerhaft drehen soll, ist dafür zu sorgen, dass der Zeiger auch immer an die richtige Stelle zeigt.
Ist die Software fertig, wird die korrekte Funktion mit Hilfe des Logik-Analysers überprüft. Erst nach
Überprüfung erfolgt der Anschluss des Motors.
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-4-
3.1.1
•
•
•
•
•
•
•
•
3.1.2
Aufgabenpunkte für 3.1
Anleitung und die notwendigen Kapitel aus dem Vorlesungsscript lesen
Eigenrecherche zu Schrittmotoren
Datenblatt zum 28BYJ-48 / 5V Typ lesen
Ermitteln der max. Startfrequenz und umrechnen in Pulszeit
Tabelle 1 ausfüllen für Muster
PAP für das Hauptfile & die ISR erstellen und mitbringen
Projekt anlegen
Software mittels Logik-Analyser testen (Pulsfolge korrekt)
Fragen zu 3.1
•
Wie groß ist die maximale Startfrequenz ? ______ Hz bzw. Pulszeit in ms: _______
•
Wie groß ist die maximale Lauffrequenz ?
•
Was muss mit der LU-Tabelle passieren, damit der Motor im Halbschritt-Mode laufen kann ?
______ Hz bzw. Pulszeit in ms: _______
________________________________________________________________________
•
Was ist der Unterschied zwischen einem Uni- und einem Bipolaren Schrittmotor ?
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
•
Was passiert, wenn nach dem Anhalten nicht alle Spulen abgeschaltet werden ?
________________________________________________________________________
3.1.3
□
□
□
□
□
Abnahmepunkte für 3.1
Das funktionierende Programm wurde vorgeführt
PAP für die Main-Schleife und ISR
Tabelle für Muster ausgefüllt
Korrekte Endlosschleife
Code korrekt formatiert (Allman Style)
Unterschrift:____________________________________________
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-5-
3.2
Aufgabe 3.2 Steuerung mit An/Aus & Links/Rechts
Die Aufgabe von 3_1 soll nun so erweitert werden, dass der Motor ein- bzw. ausgeschaltet werden kann
und seine Drehrichtung wählbar ist.
Nehmen Sie dazu ihre Aufgabe 3_1 als Vorlage und erweitern Sie die Timer ISR um die notwendigen
Abfragen für Ein/Aus und Links/Rechts. Die Steuervariablen dafür werden in der Main mittels JoystickAbfrage bearbeitet.
Damit die Joystick-Erfassung problemlos wird, soll sie vom SysTick (25ms Zeitbasis) angestoßen werden (siehe Kapitel 5.1.1 aus C_Programmierung_mit_dem_M_Dongle.pdf).
Ein/Aus wird mit dem Joystick-Taster realisiert und dem abgewandelten Automaten aus Aufgabe 2_3
realisiert. Links/Rechts wird mit den entsprechenden Joystick-Richtungen ohne Automat realisiert (ähnlich On/Off Aufgabe 2_3).
Es muss eine Sicherung eingefügt werden, damit der Motor nach dem Reset
nicht unabsichtlich bestromt wird.
Der aktuelle Status soll auf dem LCD ausgegeben werden.
Zugehörige LCD-Ansicht nach dem Start:
Stepper-Tester
Motor:
Aus
Richtung:
Rechts
Pulszeit us: 2000
3.2.1
•
•
•
•
•
•
•
3.2.2
•
Aufgabenpunkte für 3.2
Anleitung und die notwendigen Kapitel aus dem Vorlesungsscript lesen
PAP für das Hauptfile und die ISRs erstellen und mitbringen
C-File von Aufgabe 3_1 kopieren und in 3_2 umbenennen
Endlosschleife erweitern (SysTick, Joystickabfrage und Ausgabe LCD)
Timer ISR erweitern
Software mittels Logik-Analyser testen (Umschaltung und Ein/Aus korrekt)
Sicherung gegen Bestromung einfügen
Fragen zu 3.2
Wie kann die Muster-LookUp Tabelle für den Stepper sicherer gemacht werden ?
________________________________________________________________________
In den verschiedenen Peripherien müssen bestimmte Flags abgefragt bzw. gesetzt werden. Ergänzen
Sie die Verbindungen.
ISR SysTick
Hauptprogramm
ISR Timer
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-6-
3.2.3
□
□
□
□
□
Abnahmepunkte für 3.2
Sicherung eingefügt
Das funktionierende Programm wurde vorgeführt
PAP für das Hauptfile
PAP für ISR Timer bzw. SysTick
Code korrekt formatiert (Allman Style)
Unterschrift:____________________________________________
Aufgabe 3.3 Geschwindigkeitsregelung
3.3
Erweitern Sie ihre Aufgabe 3.2 um eine Analogwert-Abfrage. Mit Hilfe dieses Wertes soll die Geschwindigkeit des Motors einstellbar sein. Der SysTick fordert die Analogwandlung an, wobei vier Werte pro
Sekunde erzeugt werden sollen (siehe Aufgabe 1_4). Die Grenzen für Timerwerte müssen so gewählt
werden, dass die höchste Betriebsfrequenz nicht überschritten wird.
Zugehörige LCD-Ansicht nach dem Start:
Stepper-Tester
Motor:
Aus
Richtung:
Rechts
Pulszeit us: 2000
3.3.1
•
•
•
•
Aufgabenpunkte für 3.3
Anleitung und die notwendigen Kapitel aus dem Vorlesungsscript lesen
PAP für das Hauptfile inkl. ADC-Wertebearbeitung erstellen und mitbringen
PAP für SysTick ISR erweitern und mitbringen
Hauptfile 3_2 kopieren (nur C-File), umbenennen und einbinden
3.3.2
•
Fragen zu 3.3
Welche Probleme treten beim Bedienen auf (An/Aus & Links/Rechts) ?
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
In den verschiedenen Peripherien müssen bestimmte Flags abgefragt bzw. gesetzt werden. Ergänzen
Sie die Verbindungen.
ISR SysTick
Hauptprogramm
ISR Timer
ADC
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-7-
3.3.3
□
□
□
□
Abnahmepunkte für 3.3
Das funktionierende Programm wurde vorgeführt
PAP für das Hauptfile
PAP für die erweiterte SysTick ISR
Code korrekt formatiert (Allman Style)
Unterschrift:____________________________________________
3.4
Aufgabe 3.4 Behebung der Probleme von 3_3
Die beim Testen der Software von Aufgabe 3_3 aufgetretenen Probleme sollen nun behoben werden.
3.4.1
Problembeschreibung für Aufgabe 3_3
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
3.4.2
□
□
□
□
Abnahmepunkte für 3.4
Start/Stopp ok
Links/Rechts ok
Einfügen der Änderungen in die zugehörigen PAPs
Code korrekt formatiert (Allman Style)
Unterschrift:____________________________________________
__________________________________________________________________________________________
Mikrocontroller Labor MEC
-8-