Hallo Forum, es geht um eine Drehzahlregelung eines PMSM (Surface Mounted Permanent Magnet Machine). Den Winkel und die Drehzahl berechne ich über Hall Signale (Die Regelung ist in VHDL geschrieben). Die Hall Signale habe ich mit den verketteten BEMF Spannungen des Motors übereingestimmt: HallA = alligned to BEMF A usw. Die Hall Sequenz ist erfasst und zeigt keine Auffälligkeiten. Ich rechne einen Offset auf meine berechneten Winkel zur erzeugung des Drehmoments (Veränderungen des Offsets eleminiert nicht den Fehler). Das Problem ist, dass meine Drehzahlregelung nur funktioniert, wenn ich die Phasenströme Ia, Ib mit negativem Vorzeichen einlese. (Das entspricht demnach einer Phasendrehung des Strom um pi). (Den Strom rechnene ich positiv vom Inverter zum Motor -> so wird es auch in meinem FPGA übergeben) Wenn ich das nicht mache, wird mein Motor instabil. Hat jemand mal das gleiche Problem gehabt, oder hat eine Idee woran es liegen kann?
:
Verschoben durch Admin
Das ganze wird bestimmt mit 3x synchronized PWM gefahren oder? Zu welchem Zeitpunkt der PWM werden die Ströme gemessen?
Danke für die Antwort. Synchronized PWM verwendende ich nicht. Ich habe auch keine Erfahrungen damit. Die PWM erzeuge ich durch den Vergleich mit einem einfachen Träger Signal (Symmetrisches Dreieck, Stichwort: Sinus-Träger Modulation). Die Ströme werden kontinuierlich über eine SPI Schnittstelle eingelesen und sind nicht mit dem Träger Signal synchronisiert (kein Interrupt oder ähnliches)(Das es dadurch Strommessfehler geben kann, ist mir allerdings bewusst, wegen einlesen im Schaltzeitpunkt usw., glaube aber nicht, dass dies das Problem sein kann). Die Ein- und Augänge der Regelung sind allerdings fest auf die Regelungsfrequenz getaktet.
Es wird bei dir wahrscheinlich auch so sein, dass die Ströme genau dann gemessen werden, wenn alle drei PWM Channel auf Low sind. Wenn man asynchron zur PWM misst, kommt normalerweise nichts sinnvolles raus. Du sagst ja, dass die Regelung funktioniert wenn du die Ströme invertierst. Ich hatte bei mir damals auch den Fehler, die Ströme nicht invertiert zu haben, weil ich nicht dran gedacht hatte, dass die ADCs immer dann getriggert wurden, wenn alle drei PWM auf Low waren. Dann misst man ja nicht direkt den Strom den man reingeschickt hat, sondern umgekehrt. Damit das funktioniert, müssen deine PWM Channel so aussehen: http://andromeda.fei.tuke.sk/freescale/Beans/PWMMC/center_align.png Dann misst man genau in der Mitte der LOW oder der HIGH Phase (je nach dem wo deine Mess-Shunts liegen) und dreht die Vorzeichen um. Gruß
:
Bearbeitet durch User
Hallo Andreas, folgende Fragen/Bemerkung: Andreas T. schrieb: > Ich hatte bei mir damals auch den Fehler, die Ströme nicht invertiert zu > haben, weil ich nicht dran gedacht hatte, dass die ADCs immer dann > getriggert wurden, wenn alle drei PWM auf Low waren. > Dann misst man ja nicht direkt den Strom den man reingeschickt hat, > sondern umgekehrt. 1.) Also hast Du die Ströme dann invertiert eingelesen und es dabei belassen? 2.) Ist es aber nicht so, dass die Ströme eingeprägt sind. Sie müssten also in jeder Halbwelle das gleiche Vorzeichen haben. Da die Halbwelle wesentlich größer als die PWM Periode ist, dürfe das Vorzeichen des Stroms nicht von dem Schaltzustand abhängen (vielleicht am Nulldurchgang). Der einzige Unterschied besteht darin, dass man den Stromripple unterschiedlich abtastet. Siehe zur Verdeutlichung: https://mediatum.ub.tum.de/doc/1108592/1108592.pdf Fig. 7.5 auf Seite 45. -> Ich sollte noch bemerken, dass der Mess-Shunt am Ausgang der Halbbrücke liegt, also zwichen Halbbrücken Mittelpunkt und Motorklemme (direkte Messung des Phasenstroms).
:
Bearbeitet durch User
Ti H. schrieb: > Mess-Shunt am Ausgang der Halbbrücke Dann sollte es egal sein, ob du die Ströme in der Mitte der HIGH oder in der Mitte der LOW Phase misst. In der PDF steht auf s.48 auch das "1. Synchrones Abtasten" an den Spitzen des Dreiecks. Wenn ich das richtig sehe, ist das genau die Mitte der HIGH- und der Low-phase. s.49, "2. Integration über eine PWM Periode" funktioniert nur dann, wenn man tatsächlich einen Hardware Integrator am Shunt, also ein RC-LowPassFilter hat und seinen Ausgang misst. Dazu muss aber die Zeitkonstante des LPFs richtig gewählt werden, sonst integriert man auch die negative Halbwelle in den Kondensator. Dann kann man auch asynchron messen. Allerdings finde ich diese Methode nicht so schön, weil man die Ströme nur phasenverschoben misst. Dadurch hängt man dann auch von der aktuellen Drehzahl ab. Wenn man dagegen schön an den Spitzen der PWM misst, ist man quasi am weitesten entfernt von den Rippleströmen. Ich messe die Ia und Ib Ströme immer an der unteren Spitze des Dreiecks und drehe die Vorzeichen um. Das mit dem Vorzeichen kann man sich vllt so vorstellen: Wenn alle PWM Channel gerade auf LOW sind, ist der Motor sozusagen kurzgeschlossen über die unteren FETs der drei Halbbrücken. Genau hier misst man die Ströme. Und das sind die Ströme des Motors im Freilauf und nicht die, die man reingeschickt hat. Das gleiche gilt auch wenn man in der HIGH-Phase misst. Hier hatte ich den selben Fehler, wenn du diesen Beitrag und vllt noch ein paar oberhalb lies Beitrag "Re: SVPWM Ansteuerung eines BLDC" Tec Nologic und Gonzo sind die absoluten Spezialisten auf diesem Gebiet und haben mir sehr viel geholfen :) Gruß Andreas
:
Bearbeitet durch User
Ich habe nun das eigentliche Problem gefunden. 1.) Die Ströme dürfen nicht invertiert werden (wie angenommen). 2.) Das Problem lag an dem Gate-Treiber: In meinem Fall habe ich zwei Signale für den Treiber der Halbbrücke. Ein Enable Signal und ein PWM Signal. Ich habe angenommen, dass ein High Signal des PWM Signals den oberen IGBT ansteuert, also auf High setzt. In Wirklichkeit hat das High Signal aber den unteren IGBT auf High gesetzt. @Andreas: Wenn das bei Euch nicht das gleiche Problem ist, würde ich den Träger Sollwertvergleich in deinem Modulator nochmals überprüfen, ob der kleiner größer Vergleich stimmt. Ich danke trotzdem für Deine Ideen!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.