IP: Motorsteuerung
Transcription
IP: Motorsteuerung
Abschlussbericht Ingenieurspraxis Steuerung von Bürstenlosen ” Motoren“ Alexander Söhn Mat-Nr.: 03612164 Betreuung: Prof. Dr. Jörg Conradt Fachgebiet Neurowissenschaftliche Systemtheorie (NST) Beginn: Abgabe: 20.8.2012 14.11.2012 2 Ablauf des Praktikums Woche 1 Aufbau eines Referenzsystems mit einem käuflichem Motorsteller Ermittlung der Motorkennlinie mit einem käuflichem Motorsteller Einarbeitung in die Theorie zur Steuerung von Brushless-Motoren Woche 2+3 Hardwareanforderungen aufstellen STM32F405 ausgewält - in den Mikrocontroller einarbeiten - Einarbeitung in USART - Einarbeiten in Eagle - Entwicklung der ersten Platine - Einarbeiten in die Fräse und Fräsen der Platine Woche 4+5 Entwicklung der Steuerungssoftware - Einarbeiten in die Red Suite um den Code zu compilieren und auf den uC zu flashen - Programmieren der Software Woche 6+7 Fehlersuche und verbessern der Software Einführung eines zweiten Timers zur Kommutierung Woche 8 Entwicklung und Fertigung einer neuen Platine Woche 9 Anpassung des Codes an die neue Platine und Weiterentwicklung des Codes 3 INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Motovation 4 2 Bürstenlose Gleichstrommaschinen 2.1 Lageerkennung . . . . . . . . . . . . . . . . . . . 2.2 Kommutierungszeitpunkt mithilfe des BEMF . . . 2.2.1 Virtueller Sternpunkt . . . . . . . . . . . . 2.2.2 Nulldurchgang . . . . . . . . . . . . . . . . 2.3 Stromversorgung und Kommutierung des Motors 3 Implementierung 3.1 Hardware . . . . . . . . . . . . . . . . . . . . 3.1.1 Analog-Digitalwandeler . . . . . . . . . 3.1.2 Komparator . . . . . . . . . . . . . . . 3.1.3 Pulseweitenmoduliertes-Signal . . . . . 3.1.4 Mikrokontroller . . . . . . . . . . . . . 3.1.5 Verstärkerschaltung . . . . . . . . . . . 3.1.6 Analog-Digital-Konverter Verschaltung 4 Software 4.1 Erster Ansatz . . . . . . . . . . . 4.2 Zweiter Ansatz . . . . . . . . . . 4.2.1 Hardwarekonfiguration . . 4.2.2 Messung und Vergleich der 4.2.3 Kommutierung des Motors 5 Zusammenfassung . . . . . . . . . . . . . . . BEMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 5 7 8 . . . . . . . 8 8 8 9 9 9 9 10 . . . . . 11 11 11 11 11 11 12 4 1 2 BÜRSTENLOSE GLEICHSTROMMASCHINEN Motovation Am Lehrstuhl für Neurowissenschaftliche Systeme wird ein miniaturisierter Qudrocopterschwarm entwickelt. Quadrocopter sind helikopterähnliche Fluggeräte mit vier Rotoren. Jeder der Rotoren wird mit einem eigenen Motor betrieben. Zur Auswahl eines geeigneten Motors wurden Messungen an verschiedenen Motoren durchgeführt. Dabei stellte sich heraus, dass bürstenlose Gleichstrommaschinen gegenüber konventionellen Gleichstrommaschinen mehr mechanische Leistung bei geringerem Gewicht und geringerer Leistungsaufnahme liefern. Für diese Motoren werden allerdings spezielle Motorsteuerungen benötigt [Kapitel 2]. Da die für diese Motoren geeigneten Motorsteuerungen aus dem Modellbaubereich für miniaturisierte Quadrokopter zu langsam und unpräzise sind, soll eine geeignete Steuerung entwickelt werden. 2 Bürstenlose Gleichstrommaschinen Bürstenlose Gleichstrommaschinen besitzen anders als konventionelle Gleichstrommaschinen keinen mechanischen Kommutator. Die Schwierigkeit besteht nun darin ein elektromagnetisches Drehfeld im Stator zu erzeugen, dass immer rechtwinklig auf dem magnetischen Feld des Rotors steht. Dazu muss zunächst die Lage des Rotors bestimmt werden [Kapitel 2.1], daraus kann dann der Kommutierungszeitpunkt errechnet werden [Kapitel 2.2], um den Motor zum richtigen Zeitpunkt umzupolen [Kapitel 2.3]. 2.1 Lageerkennung Eine Möglichkeit der der Lageerkennug des Rotors ist die Verwendung von Sensoren (z.B.: Hallsensoren), die den Rotorwinkel bestimmen. Allerdings ist es aus Gewichtsgründen nicht sinnvoll Sensoren zu verwenden. Daher wird eine sensorlose Lösung entwickelt. Aufgrund der zu geringen Motorströme ( < 1 Ampere) ist die genaue Messung dieser Ströme nur sehr aufwendig und mit großen Verlusten möglich. Somit kann die Feldorientierte Vektorkontrolle (engl. Fieldorientated Vector Controll [FOC]) nicht verwendet werden. Aus diesen Gründen wird die Motorposition aus den induzierten Spannungen bestimmt (engl. Back Electromotive force [BEMF]). 2.2 Kommutierungszeitpunkt mithilfe des BEMF Diese Spannung wird durch die bewegten Magnete des Rotors in den Spulen des Stators induziert. Um diese Spannung zu messen, legt man an der Phase, an der man messen will kein Potential an. Damit ist die Spannung die man nun messen kann nur von der induzierten Spannung abhängig. Man spricht hier von einer floatenden 2.2 5 Kommutierungszeitpunkt mithilfe des BEMF Phase. Es gibt noch zwei weitere Zustände: (High(PWM) und Low. Der Motor hat 3 Phasen und für jede Phase sind diese drei Zustände möglich. Da jede Phase je Zustand nur einmal vorkommen darf, ergeben sich 3! = 6 Zustände (siehe Tabelle 1). Tabelle 1: Zustandsdiagramm Zustand 1 2 3 4 5 6 Phase A High High Flaoting Low Low Flaoting Phase B Low Floating High High Flaoting Low Phase C Floating Low Low Flaoting High High Jeder Zustand kommt einmal je elektrischen 360◦ vor, es muss also alle 60◦ umgepolt werden. Wird ein bürstenloser Motor mit einer konstanten Gleichspannung U versorgt, so fällt die Spannung der Phase mit dem Zustand Floating“ während der 60◦ ” von der U nach Ground ab, beziehungsweise steigt von Ground bis U, je nachdem ob die floatende Phase vorher High oder Low war. Dies ist in Abbildung 1 durch gestrichelte Linien angedeutet. Zum detektieren des Umschaltzeitpunkts bestimmt man nun die Zeit zwischen einem Kommutierungsvorgang und dem Zeitpunkt an dem diese Phase genau U/2 beträgt. Nun wartet man diese Zeit und kommutiert anschließend den Motor. Es werden jedoch keine diskreten Spannungen sondern PWM-Signale (engl. PulseWith-Modulated Signals) [Kapitel 3.1.3] verwendet, um den Motor zu bestromen wie in Abbildung 1 dargestellt wird. Das bedeutet, die halbe Spannung kann nicht mehr so einfach berechnet und gemessen werden. Es gibt zwei Wege den Zeitpunkt dennoch zu bestimmen. Entweder mit Hilfe eines virtuellen Sternpunktes oder durch Bestimmung des Nulldurchgangs. 2.2.1 Virtueller Sternpunkt Um den Kommutierungszeitpunkt zu ermitteln wird die Spannung der floatenden Phase mit der Sternpunktspannung verglichen. Der Zeitpunkt zu dem beide gleich groß sind, ist der vorher beschriebene Zeitpunkt. Bei den meisten Motoren kann die Sternpunktspannung nicht direkt gemessen werden, da sie im Dreieck verschalten sind, oder der Sternpunkt nicht zugänglich ist. Daher muss der Sternpunkt auf der Platine nachgebildet werden. 6 2 BÜRSTENLOSE GLEICHSTROMMASCHINEN Abbildung 1: Spannungsdiagramm [2] Dazu verwendet man ein Netzwerk aus Widerständen, das die Spannung der drei Phasen addiert. In Bild 2 ist ein virtueller Sternpunkt dargestellt, wobei die Widerstände gleich groß sein müssen: R1 = R2 = R3 Abbildung 2: virtueller Sternpunkt Abbildung 3 zeigt den mithilfe eines Oszilloskops aufgenommenen Spannungsverlauf an zwei Phasen (gelb und blau), den Spannungsverlauf am Sternpunkt (lila) und die Logikeingänge der Transistoren (grün). Wenn die Logikeingänge 8, 10 oder 12 den Zustand ändern bedeutet das, dass der Motor umgepolt wird. Schaut man nun wo sich die blaue und die lila Kurve, während die blaue Phase floated, schneiden (rote Punkte), so erkennt man, dass dies immer in der Hälfe zwischen 2.2 Kommutierungszeitpunkt mithilfe des BEMF 7 zwei Kommutierungen passiert. Allerdings wird der Motor dreimal häufiger umgepolt, als sich die lila und die blaue Kurve schneiden. Die restlichen Kommutierungen werden ausgelöst während die anderen beiden Phasen (gelb und hier nicht sichtbar) floaten und die Sternspannung (lila) schneiden. Abbildung 3: Spannungsverlauf am Motor 2.2.2 Nulldurchgang Auf den zusätzlichen Schaltungsaufwand des virtuellen Sternpunkts kann man verzichten, wenn man nur misst während das PWM-Signal aus ist. Verbindet man die Messpunkte, erhält man eine Kurve, die an einer Stelle Ground schneidet. Da Ground jedoch etwas später erreicht wird und es schwer wird in diesem Bereich zu messen, da Mikrocontroller nur Spannungen größer als Ground messen können, verwendet man Ground mit einem kleinen Offset als Vergleichswert. Dies ist in Abbildung 4 für die gelbe Phase beispielhaft dargestellt. Die roten Strecken stellen das fallende BEMF Signal dar, die weiße Gerade den Vergleichswert. Fällt das rote Signal unter den Vergleichswert, so bedeutet das, dass der Motor sich um elektrische 30◦ gedreht hat und sich um weitere 30◦ dreht bis umgepolt werden muss. 8 3 IMPLEMENTIERUNG Abbildung 4: Nulldurchgang bei BEMF Falling 2.3 Stromversorgung und Kommutierung des Motors Um die Zustände der Motorphasen aus Kapitel 2.2 zu schalten benötigt man eine steuerbare Verstärkerschaltung, wie sie in Kapitel 3.1.5 beschrieben ist. 3 3.1 Implementierung Hardware Zunächst wurden die Anforderungen an die Hardware aufgestellt, um anschließend passende Komponenten auszuwählen. 3.1.1 Analog-Digitalwandeler Zur Bestimmung des Kommutierungszeitpunktes muss eine analoge Spannung gemessen werden. Dazu verwendet man Analog-Digitalwandler(engl. Analog-DigitalConverter [ADC]), damit diese Werte anschließend von digitaler Logik weiterverarbeitet werden können. Es gibt ADCs als Logikbausteine zu kaufen und in den meisten Mikrocontrollern 3.1 Hardware 9 sind ADCs integriert. 3.1.2 Komparator Um die mit den ADCs gemessenen Werte mit dem Sollwert oder der Sternspannung vergleichen zu können, benötigt man einen Komparator. Auch dieser existiert als Logikbaustein oder ist in manchen Mikrocontrollern integriert. Eine andere Möglichkeit ist es den Komparator in Software auf einem Mikrocontroller zu implementieren. 3.1.3 Pulseweitenmoduliertes-Signal Um den Motor mit variablen Spannungen versorgen zu können, wird ein PWMSignal verwendet. Es ist aufwendig aus digitalen Vorgaben ein analoges Signal zu erzeugen und dies zu verstärken. Einfacher ist es das Signal einfach an und aus zu Schalten, und bei konstanter Frequenz die Dauer des eingeschalteten Zustands zu variieren. durch Spulen und Kondensatoren kann daraus wieder eine analoge Spannung generiert werden. Ein solches Signal nennt man PuslweitenmoduliertesSignal (engl. Pulswidthmodulatetd-Signal [PWM]). Dazu kann man Timerbausteine verwenden, die aber ebenfalls in den meisten Mikrocontrollern integriert sind. 3.1.4 Mikrokontroller Da ein Mikrocontroller variabler ist und die Schaltung kompakter ausfällt, fiel die Wahl auf einen Mikrocontroller. Bei der Auswahl war es sehr wichtig, dass er möglichst klein ist und mindestens zwei Motoren ansteuern kann. Also benötigt er sechs ADCs und sechs PWM-Ausgänge. Der STM32F405 ist in extrem Leitungsfähiger Cortex M4 Prozessor von STMicroelectronics der in einer sehr kompakten Bauform erhältich ist (ca. 4mm*4mm*0,5mm). Er besitzt 12 ADCs und genug Timer für vier Motoren und ist damit bestens geeignet. Außerdem existieren Entwicklungsboards sowie lötbare Exemplare dieses Controllers am Lehrstuhl. Daher wurde dieser Mikrocontroller ausgewählt. 3.1.5 Verstärkerschaltung Der Mikrocontroller kann jedoch nur kleine Ströme (einige Milliampere) ausgeben. Am Motor wurden jedoch bis 1,3 Ampere gemessen. Daher müssen die Signale des Controllers verstärkt werden. Meine Rechersche ergab, dass für diesen Zweck ein Inverter aus komplementären Feldeffektransistoren am Besten geeignet ist. Es muss an jede Phase ein solcher Verstärker angebracht werden. Diese Transistoren sind schnell, verlustarm und benötigen vernachlässigbar kleine Schaltströme, belasten also den Mikrocontroller nicht. Hier wird eine Halbbrücke aus einem N-Mos und einem P-Mos Transistor aufgebaut, wie in Abbildung 5 gezeigt. 10 3 IMPLEMENTIERUNG Abbildung 5: MOS-FET Transitoren Um einen P-Mos Transistor leitend zu schalten, muss man an das Gate Ground anlegen, um ihn zu sperren die Versorgungsspannung. Bei einem N-Mos Transistor ist es genau umgekehrt. Legt man Ground am Gate an sperrt er, legt man die Versorgungsspannung anm leitet er. Damit ergibt sich die in Tablle 2 gezeigte Zustandstabelle. Sperrt man den P-Mos Transistor und öffnet den N-Mos Transistor, so liegt die Phase auf Ground. Sperrt man dagegen den N-Mos und öffnet den P-Mos wird die Phase auf High geschalten. Sperrt man beide Transistoren, so erhält man den Zustand Floating. Öffnet man beide Transistoren erhlt man einen Kurzschluss bei dem sehr hohe Ströme über die Transistoren fließen, was die Transitoren zerstören kann. Dies sollte auf jeden Fall verhindert werden. Tabelle 2: Zustände der Transistoren Phase A PWM A (Ausgang) (Eingang P-MOS) Low High High Low Flaoting High ! verboten ! Low 3.1.6 GPIO A (Eingang N-MOS) High Low Low High Analog-Digital-Konverter Verschaltung Die Signale, die an der floatenden Phase und am Sternpunkt gemessen werden, sind oftmals verrauscht. Damit die Analog-Digital-Konverter zuverlässige Ergebnisse liefern, müssen die Eingangssignale gefiltert werden. Gleichzeitig liegt die Motorspannung oberhalb der Betriebsspannung des Mikrocontrollers und somit oberhalb der Maximalspannung der ADCs. Um einen sicheren Betrieb der ADCs zu gewährleisten wird für jeden Eingang ein Spannungsteiler eingesetzt und zur Filterung ein Kondensator zwischen Ground und den Eingang geschalten. 11 4 4.1 Software Erster Ansatz Im ersten Ansatz habe ich jedesmal, wenn das BEMF einen bestimmten Wert überoder unterschritten hat, kommutiert. Dies hat nur für geringe Geschwindigkeiten funktioniert und wenn die Geschwindigkeit geändert werden sollte, musste dieser Wert angepasst werden. Der Wert hätte für jede Drehzahl experimentell bestimmt werden müssen. 4.2 Zweiter Ansatz Hier wurde wie im ersten Ansatz die Erkennung des Nulldurchgangs zur Bestimmung des Kommutierungszeitpunktes verwendet. Allerdings wurde zusätzlich ein Timer eingeführt, der die 30◦ Versatz zwischen Umschaltzeitpunkt und gemessenem Nulldurchgang berücksichtigt. 4.2.1 Hardwarekonfiguration Es wird ein Timer konfiguriert, der ein PWM-Signal erzeugt, um die Motoren zu bestromen. Dieses PWM-Signal sollte in der Größenordnung zwischen 8 und 21kHz liegen. Ein weiterer Timer misst die Zeit zwischen dem letzten Kommutieren und dem Nulldurchgang, um anschließend die gleiche Zeit nochmal zu warten und den Kommutierungsvorgang zu starten. Die PWM-Ausgänge des Mikrocontrollers werden zu Beginn als normaler Ausgang auf High gesetzt, damit die P-Mos Transistoren sperren. Soll das PWM-Signal angelegt werden, wird die Art des Ausgangs auf PWM-Ausgang (Alternate Function) geändert. Um zu Beginn auch die N-Mos Transistoren zu sperren werden diese Ausgänge auf High gesetzt. 4.2.2 Messung und Vergleich der BEMF Wenn das PWM des Mikrocontrollers High ist, also der Transistor sperrt wird die Messung gestartet. Erreicht der Wert einen bestimmten Offset (unterschidlich, je nachdem ob die Phase vorher High oder Low war), wird der Timer, der für die Bestimmung des Kommutierungszeitpunktes zuständig ist, zurückgesetzt. Gleichzeitig wird der Wert des aus dem Counter-Register des Timers in das Compare-Register geschrieben. 4.2.3 Kommutierung des Motors Wird der Kommmutierungszeitpunkt erreicht, werden alle Phasenzustände geändert. Der Motor wird von einem Zustand in den Nächsten überführt, dreht sich also elektrische 60◦ bis zur nächsen Kommutierung. 12 5 LITERATUR Zusammenfassung Die Bestimmung des optimalen Umschaltzeitpunktes ist sehr komplex und ein kleiner Versatz des Kommutoierungszeitpunktes kann eine große Wirkung haben. Daher wurde bei Tests der Motorregelung im Vergleich zur kommerziellen Lösung nur etwas mehr als die halbe mechanische Leistung erreicht. Dies liegt daran, dass der Motor noch etwas ungleichmäßig dreht, wie auch an dem etwas ungleichmäßigen Spannungsverlauf in Abbildung 4 zu sehen ist. Ich glaube, dass eine höhere Leistung erreicht werden kann, wenn nicht nur eine Messung je PWM High, sonder so viele wie möglich durcheführt werden und Gleichzeitig ein Low-pass Filter verwendet wird, um zu große Sprünge der Kommutierungszeit bei konstanter Solldrehzahl zu vermeiden. Literatur [1] BLDC HV-Controller Project Page. http://rmmx.gmxhome.de/bldchv/start.html. 13.11.2012. [2] Brushless-Controller für Modellbaumotoren. http://www.mikrocontroller.net/articles/BrushlessController für Modellbaumotoren. 13.11.2012. [3] Open-BLDC Project Site. http://open-bldc.org. 27.10.2012. [4] wiki: MikroKopter.de. http://www.mikrokopter.de/ucwiki/BrushlessCtrl. 27.10.2012. [5] Eigenbau-Quadrocopter. http://thomaspfeifer.net/quadrocopter selbstbau avr.htm. 27.10.2012. [6] three-phase BLDC motor control software library V1.0. http://www.st.com/internet/com/TECHNICAL RESOURCES/ TECHNICAL LITERATURE/USER MANUAL/CD00236524.pdf. 27.10.2012. [7] Thema: BL-Steller. http://www.hydroworld.de/vb/showthread.php?467-BL-Steller. 27.10.2012. LITERATUR [8] Brushless-Regler. http://www.mikrocontroller.com/de/KopterBL.php. 27.10.2012. [9] AVR Brushless Motor Controller. http://www.ulrichradig.de/home/index.php/avr/brushless-motor-controller. 27.10.2012. [10] Not simple BLDC controller It RUNS! :). http://www.endless-sphere.com/forums/viewtopic.php?f=30&t=3 . 27.10.2012. [11] Regler für den Quadrokopter, Multikopter. http://plischka.at/Regler.html. 27.10.2012. [12] Build a DIY brushless motor controller in a day (ish). http://blog.spingarage.com/build-a-diy-brushless-motor-controller-in-a-d . 27.10.2012. 13