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-
© Copyright 2024 ExpyDoc