BAUELEMENTE Motorsteuerung mit einem Fuzzy Controller FRANK WOLINSKI Bürstenlose Gleichstrommotoren werden immer häufig eingesetzt, wenn es darum geht kleine Leistungen zu kontrollieren. Diese Motoren werden hauptsächlich bei Computerperipherie, Robotern oder Antrieben verwendet, bei denen die Geschwindigkeit des Motors eingestellt werden kann. Der Artikel soll einen Ansatz aufzeigen, wie diese komplexe Ansteuerung wesentlich vereinfacht werden kann, indem man zur Ansteuerung den Fuzzy-Controller ST52x301 verwendet. Bild 1: Bürstenloser 3-Phasen-Motor Zu den Anwendungen von bürstenlosen Gleichstrommotoren gehören zum Beispiel lastabhängige, Kapazitäts-modulierte Heizungspumpen, große Ventilatoren und Kompressoren. Einer der großen Vorteile eines bürstenlosen Gleichstrommotors (BLDC-Motor) ist das Fehlen von Funkenflug. Die Bürsten eines Gleichstrommotors unterliegen aber einigen Problemen in Bezug auf die Lebensdauer, Staubeinwirkungen, maximaler Geschwindigkeit und elektrischen Störeinflüssen. BLDC-Motoren sind zumeist sauberer, 36 http://e-industrie.huethig.de schneller, effizienter, leiser und wesentlich zuverlässiger in ihrer Anwendung. Allerdings erfordert ein BLDC-Motor eine wesentlich komplexere elektronische Ansteuerung. Ein BLDC-Motor stellt sich als synchroner 3-Phasen-Permanentmagnet-Motor dar. Die Bürsten und der Kommutator sind dabei nicht vorhanden und die Motorwindungen sind direkt mit der Ansteuerelektronik verbunden. Diese Elektronik ersetzt dabei die Funktion des Kommutators und erregt direkt die eigentliche Wicklung. Die angeregte Statorwicklung führt den Rotormagneten und schaltet, sobald der Rotor sich nach dem Stator ausgerichtet hat. Ein Nachteil des BLDC-Motors liegt in der Tatsache, daß Sensoren notwendig sind um die exakte Rotorposition des Motors ermitteln zu können. Bild 1 zeigt einen Querschnitt eines typischen bürstenlosen 3-Phasen Motors. In dieser Abbildung sind auch die drei Positionssensoren (Hall-Sensoren) zu erkennen, die um den Rotor herum angeordnet sind, um die exakte Position des Rotors zu erkennen. In Bild 2 kann man die im Datenblatt des Motors angegebenen Kennlinien in diesem Zusammenhang entnehmen. In diesem vom Motorhersteller erstellten Diagramm kann man den Zusammenhang zwischen der Stel- lung des Rotors, der Reaktion der Hallsensoren und den notwendigen Versorgungsspannungsverläufen erkennen. Diese Art, die Phasen des Stators zu erzeugen, ist ziemlich komplex, da es notwendig ist, ein Sinussignal mit der in Bezug auf die Information der Hallsensoren korrekten Periode und der richtigen Verzögerung zu erzeugen. Um dies zu erreichen gibt es einen Lösungsansatz, auf den später noch eingegangen wird. Der Stator eines bürstenlosen Gleichstrommotors wird im allgemeinen von einem Inverter gespeist, der eine Gleichspannung in eine Bild 2: Datenblattauszug des Motors elektronik industrie 2 – 1999 BAUELEMENTE einen digitalen Eingang eingelesen. Die Berechnung des Errors übernimmt die Software: Error = VREF - Speed Error bildet gleichzeitig den Fuzzy-Eingang des Fuzzy-Controller-Blocks. Der Fuzzy-Algorithmus verwendet nur drei Regeln, um den Fuzzy-Ausgang zu berechnen und den Inverter im Echtzeitmodus zu steuern. Diese Methode ermöglicht es die Motorgeschwindigkeit in einer Steuerung einer geschlossenen Echtzeitschleife zu erledigen, während die Zeit für die Abarbeitung der Software nur sehr kurze Zeit in Anspruch nimmt. Bild 3: Ansteuerung mit einem „Six-Step-Inverter“, bei dem jede Phase durch ein Die erste Regel des Fuzzy-Logik-Systems in Transistorenpaar gesteuert wird diesem Fall gilt, wenn der Error-Wert negativ ist, d.h. wenn VREF sehr viel kleiner als die gewünschte Geschwindig3-Phasen-Wechselspannung umwandelt, dekeit ist. Dies bedeutet, ren Frequenz direkt proportional zur Gedaß die aktuelle Geschwindigkeit des Rotors ist. Eine Geschwinschwindigkeit der Modigkeitskontrolle wird dabei durch eine Pulstorwelle höher ist als Weiten-Modulation (PWM) der Phasenspandie Referenz. Wenn dienung erreicht, die durch ein periodisches se Bedingung erfüllt Schalten der Phasenspannung auf Null ist, muß der Phasenerreicht wird. Um diese Vorgehensweise zu strom 1 reduziert wererreichen wird als Ansteuerung zumeist ein den. Um dies zu errei„Six-Step-Inverter“ verwendet, bei dem jede chen ist es notwendig, Phase durch ein Transistorenpaar gesteuert den PWM Duty-Cycle wird. Bild 3 zeigt das Schaltbild. Der Name zu reduzieren. Der in Bild 4: Der Fuzzy-Controller erhöht den Wicklungsstrom, um das „Six-Step-Inverter“ kommt von der Zahl der Bild 5 gewählte Wert Lastdrehmoment auszugleichen. So wird die gewünschte Zeitschritte in denen die gesamte Periode des von -10 ist ein KomproGeschwindigkeit aufrecht erhalten Signals aufgeteilt werden kann. Während mis zwischen Systemjedes Zeitschritts verändert sich die Stromrichstabilität auf der einen tung nicht, während die Amplitude des und Ausführungszeit digkeit des Motors. Dies bedeutet gleichzeitig Stroms in der Wicklung des Motors zuneheines Schrittes auf der anderen Seite. eine Zunahme der Wellenperiode des Hallmen oder abfallen kann. Dieser Wert wurde durch einige Versuche Sensorsignals und dann eine Verringerung manueller Regelung gefunden. Sobald der der Sinusfrequenz der Phasen, die aus den Duty-Cycle zum Beispiel um den Wert -20 verAnsteuerung mit Informationen der Sensoren folgt. ändert wird, wird das System zwar den Refeeinem Fuzzy Controller In diesem Fall ist die einzige Möglichkeit den renzwert der Geschwindigkeit schneller erreiRotor in der vorherigen Geschwindigkeit zu chen, aber der Überschwinger in der StepDas Ziel der Ansteuerung ist es, die gebelassen, die Erhöhung des Wicklungsstroms, Ausführung könnte zu einer Instabilität des wünschte Geschwindigkeit aufrecht zu erhalum das Lastdrehmoment auszugleichen. Der Systems führen. Die oben angeführte Erkläten, unabhängig von der an die Welle des Fuzzy-Controller in Bild 4 erledigt diese Aufrung für Regel 1 gilt entsprechend für die Motors angeschlossenen Last. Sobald ein gabe. Der ST52x301 liest den Speed_Refbeiden anderen Regeln. Widerstandsdrehmoment an die Motorwelle Wert über den AD-Wandler ein und die dazuDer mit diesen drei Regeln erstellte Fuzzygekoppelt ist, verringert sich die Geschwingehörige Hall-Signal-Periode wird durch Algorithmus ist der einfachste Weg die 䊳 elektronik industrie 2 – 1999 http://e-industrie.huethig.de 37 BAUELEMENTE Dieser digitale Eingang muß so konfiguriert werden, daß er sowohl auf fallende als auch auf steigende Flanken reagiert, um einen interenen Software-Interrupt zu erzeugen. Bild 7 zeigt das Hauptprogramm, um diese Aufgabe zu realisieren. Diese Darstellung zeigt die Programmierung in einer graphischen Darstellung, die mit dem Fuzzy-Studio, einer Programmiersoftware für den ST52x301, erstellt wurde. Fuzzy-Studio Bild 5: Der gewählte Wert von -10 für den PWM-Dutycycle ist ein Kompromis zwischen Systemstabilität auf der einen und Ausführungszeit eines Schrittes auf der anderen Seite Geschwindigkeit des Motors zu regeln. Eine mögliche Realisierung einer Schaltung unter Verwendung des Fuzzy-Controllers ST52x301 zeigt Bild 6. Der ST52x301, ein integrierter Vollbrückentreiber (L298) und drei UND-Gatter reichen aus, um einen bürstenlosen Gleichstrommotor anzusteuern. Die grundlegende Idee dieser Schaltung ist die direkte Verwendung der Hallsensoren. Die Signale der Hallsensoren sind über ein UNDGatter direkt mit einem PWM-Signal verbunden, das der ST52x301 erzeugt, um die richtige Windung des Motors zu speisen. Tatsächlich erzeugt ein hochfrequentes PWM-Signal in einer Wicklung eine Spannung, deren Amplitude den Hauptwert eines RechteckSignals darstellt. Das Datenblatt des Motors aus Bild 2 zeigt deutlich, daß die Phase U-W positiv versorgt werden muß, wenn das Signal von Sensor H1 high ist, W-V wenn Sensor H2 high ist und so weiter. Dies gilt, da eine Anordnung der Wicklungen in einem Dreieck verwendet wurde. Der Ausgang des UND-Gatters ist dann eine Impulsfolge dessen Dauer mit dem Signal des Hallsensors übereinstimmt. Diese Impulsfolge wird verwendet um die Motorbrücke L298 anzusteuern. Der L298 ist ein dualer Vollbrückentreiber, der als Eingang Standard TTL-Pegel akzeptiert und induktive Lasten wie Relais, Zylinderspulen, Gleichstrom- oder Schrittmotoren ansteuern kann. Der ST52x301 erzeugt unter Verwendung einer integrierten Peripherieeinheit ein PWM-Signal, das per Software verändert werden kann. Die PWM-Frequenz des ST52x301 wird als Kompromis zwischen störender Geräuschentwicklung im Motor und Verlusten in der Powerstufe der Motorbrücke ausgewählt. In der in Bild.6 gezeigten Schaltung wird eine Frequenz von 19 kHz verwendet. 38 http://e-industrie.huethig.de Die beiden ersten Blöcke „Int_AD_on“ und „init“ im grafischen Programmablaufplan dienen zur Initialisierung globaler Variablen und zur Maskierung der möglichen Interruptquellen (nur der Interrupt des AD-Wandlers ist aktiv). Die beiden folgenden Blöcke starten den AD-Wandler und warten auf das Ergebnis der Wandlung. Sobald die Ergebnisse der Wandlung vorliegen, werden sie in einer Variable mit der Bezeichnung „speed“, „tor- Bild 6: Mögliche Realisierung einer Schaltung unter Verwendung des Fuzzy-Controllers Software-Beschreibung Bevor man die Software für den ST52x301 betrachten kann, muß man noch einige Hardware-Verbindungen aus Bild 6 näher beleuchten. Bit „0“ (PIN 9) des Paralell-Ports wird verwendet um die Leistungsstufe nur nach einem Power-On-Reset einzuschalten. Deshalb muß der Parallel-Port im OUT-Modus konfiguriert sein. Der analoge Eingang AIN0 (PIN 43) dient zum Lesen der Spannungsreferenz. Eine Spannung im Bereich von 0 – 2,5 V, die an diesem Pin anliegt, wird in einen Bereich zwischen 0 und 255 gewandelt. Der Pin für den externen Interrupt (PIN 27) wird verwendet, um eine Periode eines HallsensorSignals zu messen, um damit die entsprechende Motorgeschwindigkeit zu errechnen. que“, „current“ abgespeichert und eine neue Interrupt-Maske wird generiert (nur der externe Interrupt ist aktiv). Der Block „V200_duty“ lädt den Triac-Counter mit einem vorgegebenen Wert und der Block „PWM_start“ startet die Triac-Peripherie. Bereits zu diesem Zeitpunkt gibt der ST52x301 an PIN 24 ein PWM-Signal aus. Sobald an Pin 27 ein Signal für eine bestimmte Zeit anliegt, die abhängig von der Geschwindigkeit des Motors ist, ist es notwendig, eine mathematische Umrechnung zur Berechnung der Frequenz vorzunehmen. Dazu wird das Komplement des PeriodenBytes gebildet. Dadurch wird ein Fehler in die Berechnung der Umlauffrequenz mit eingerechnet. Der folgende Block „L298_EN_on“ aktiviert den Brückentreiberbaustein. Der 䊳 elektronik industrie 2 – 1999 BAUELEMENTE während eines Wellenumlaufs auftritt. Diese Schleife wird solange ausgeführt bis die Bedingung „tmp>=2“ falsch ist. Die Variable tmp wird dazu verwendet, um innerhalb der Fuzzyregelung einen Zeitversatz zu generieren. Der Wert „Tmp“ wird bei jeder Ausführung der externen Interruptroutine erhöht (nach jeder Drittelumdrehung der MotorBild 7: Hauptprogramm - Programmierung in einer graphischen welle). Dies bedeutet eiDarstellung, die mit dem Fuzzy-Studio, einer Programmiersoftne Echtzeitregelung inware für den ST52x301, erstellt wurde nerhalb einer vollen Wellenumdrehung. Der Block „calc_err“ Block „complement“ führt die oben beschrieberechnet den Fehler nach der Formel bene Berechnung aus. Der Schleife in Bild 7 „error=speed-ref - speed)“. Das Ergebnis diefolgend wird ein neuer Wert der Referenzgeser Berechnung wird an den Fuzzy-Eingang schwindigkeit „torque_ref“ und „current“ gegeben und der Fuzzy-Block „fuzzy controleingelesen. Der Block „max_research“ ermitler“ berechnet den Zuwachswert telt und speichert den maximalen Strom, der „delta_DC“. 40 http://e-industrie.huethig.de Zusammenfassung und Ergebnis Durch die Verwendung des Fuzzy-Controllers ST52x301 ist es möglich, eine Echtzeitregelung für einen bürstenlosen Gleichstrommotor mit nur wenigen elektronischen Komponenten aufzubauen. Dabei stellt der in diesem Artikel vorgeschlagene Lösungsansatz eine guten Kompromis zwischen Systemkosten und erzielter Motorleistung dar. Die in dieser Lösung verwendete grafische Programmieroberfläche reduziert die Entwicklungszeit auch für nicht so erfahrene Programmierer beträchtlich. (oe) Weitere Informationen zu der hier beschriebenen Motorregelung erhalten Sie über die Kennziffer. 623 Dipl.-Ing. Frank Wolinski arbeitet im Product Marketing Microcontroller bei STMicroelectronics in Grasbrunn. elektronik industrie 2 – 1999