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