Hallo zusammen,
ich habe ein Problem und zwar versuche ich zur Zeit einen BLDC Motor
zunächst simulativ mit Blockkommutierung über eine B6-Brücke zu
betreiben. Die maschine hat 4 Polpaare und 3 Hallsensoren (somit 6
Sektoren), außerdem emsse ich die Phasenströme. Ich möchte den Motor
zunächst bei konstanter Drehzahl laufen lassen. Habe hierzu einen
Drehzahlregler der mir einen Referenzstrom vorgibt, den ich dann eben
blöckförmig auf die einzelnen Phasen leiten möchte. Habe hierzu je einen
PI-Regler pro Phase um eine Spannungsvorgabe für meinen Wechselrichter
zu erhalten. Mein Problem ist nun, dass meine Drehzahl von starken
"Oberschwingungen" behaftet ist (zuindest sieht es so aus) und ich
schaffe is 10 sekunden gerade mal auf ca 15Hz elektrisch. Mit
natürlicher Sinuskommutierungen erhalte ich deutlisch bessere
Ergebnisse, jedoch soll das ganze auch mit Blockkommutierung
funktionieren.
Ich habe festgestellt, dass immer wenn ich in die Sektoren 2,3 sowie 5,6
komme, mein Motor gebremst wird, also nur in 2 von 6 Sektoren wirklich
beschleunigt.
Kann mir jemand helfen? Ich finde keinen Ausweg....
Grüße
H3LLr1d3r
H3LLr1d3r schrieb:> Habe hierzu je einen> PI-Regler pro Phase um eine Spannungsvorgabe für meinen Wechselrichter> zu erhalten.
Warum pro Phase? Normalerweise regelst du alle drei Phasen zusammen,
damit der Motor gleichmässig läuft. Deine Blockkommutierung liest die
Hallsensoren, setzt die (vermutlich) Timer für den nächsten Sektor und
skaliert dann alle drei mit der gewünschten Amplitude.
Der PID erhält die Ist-Drehzahl aus z.B. den Hallsensoren und den
Sollwert aus deinem Steller. Als Ausgang gibts dann die gewünschte
Amplitude, die du in der Skalierung benutzt.
Matthias Sch. schrieb:> Deine Blockkommutierung liest die> Hallsensoren, setzt die (vermutlich) Timer für den nächsten Sektor und> skaliert dann alle drei mit der gewünschten Amplitude.
Mein Stromregler bekommt vom Drehzahlregler einen Referenzstromwert, der
ist beim Anfahren maximaler Strom (z.B. 120A). Jetzt weiß ich welcher
Strom auf meine einzelnen Phasen kommen soll (Faktor 0, 1 oder -1 für
jede einzelne Phase je nach Sektor). Okay aber woher weiß ich dann
welche Spannung ich anlegen muss? Mein Regler muss ja sozusagen die
Spannungsvorgabe für den Wechselrichter liefern und diese aus dem
Referenzstrom bekommen. Wenn ich also nicht alle Phasen einzeln regle,
wie denn dann? Nur eine Regeln und die andern anpassen mit dem Faktor 0,
-1 oder 1 der Spannunsgvorgabe des einen Reglers? Ich glaube da wird
genau das gleiche passieren da es ja außer Rechenzeiteinsparung nichts
an dem Verfahren ändert oder?
H3LLr1d3r schrieb:> Okay aber woher weiß ich dann> welche Spannung ich anlegen muss?
Die angelegte Spannung ist direkt proportional zur Drehzahl. Der übliche
Weg ist der Einsatz von PWM, die abhängig vom Sektor über die drei
Halbbrücken an die Wicklung gelegt wird. Die effektive Spannung an den
Wicklung bestimmt dann die Drehzahl. Unabhängig von der Drehzahl sorgen
die Hallsensoren für die Schrittfolge - und nicht etwa umgekehrt. Die
Hallsensoren sind also nicht für die Geschwindigkeit verantwortlich,
dafür sorgt alleine die effektive Spulenspannung.
Die Spannung wird also von deinem Drehzahlregler bestimmt.
Wir wissen aber nichts über deine Hardware - ist das selbstgebaut oder
sind es Fertigbausteine? Die Stromaufnahme des Motors zu wissen, ist
schön für Limitierunen und Überwachung, ist aber nicht direkt ein
Kriterium für Geschwindigkeit, dazu ist er zu abhängig von der
Motorlast.
Es sind eigentlich alles Fertigbausteine, wie gesagt funktioniert auch
eigentlich alles, wenn ich über feldorientierte Regelung gehe und dann
über Raumzeigermodulation und anschließenden dutycycle-Berechnung meine
PWM erzeuge. Nur war die Idee jetzt, zum Anfahren keine Vektorregelung
herzunehmen, da der genaue Winkel ja unbekannt ist und somit nicht
sinnvoll von 3 phasen zu rotorfesten Koordinaten (dq-Koordinaten)
transformiert werden kann. Stattdessen soll zunächst im Block angefahren
werden, anschließend auf Vektorregelung umgeschalten werden sobald die
Geschwindigkeit ausreichend groß ist um sinnvoll den Winkel
abzuschätzen.
Inzwischen glaube ich, dass ich ein grundlegendes Verständnisproblem mit
dem Blockkommutierung habe.
Matthias Sch. schrieb:> Die Spannung wird also von deinem Drehzahlregler bestimmt.
Also so wie ich es gelernt habe bestimmt mein Drehzahlregler doch meinen
Sollstrom und diesen benutze ich dann widerum um meine Phasenströme zu
regeln oder nicht? Ausgang meines Stromreglers ist doch dann die
gesuchte Spannung. Oder geht man bei der Blockkommutierung hier generell
anders vor?
Ich habe in der gängigen Literatur nichts konkretes dazu gefunden,
lediglich dass Blockkommutierung bedeutet eine Phase an, die zweite
minus die erste Phase und die dritte 0. Mir fehlt hier einfach irgendwie
die Zuordnung der Spannung zum gewünschten Stromsollwert.
Kannst Du nicht den Geschwindgkeitsregelkreis um den Vector-Regler
abschalten, ein Drehmoment fest vorgeben und den Winkel eben
entsprechend der Hall-Angaben einleiten? Dann müsstest Du nicht noch
eine weitere Kommutierung/PWM programmieren...
H3LLr1d3r schrieb:> Es sind eigentlich alles Fertigbausteine,
widerspricht aber
H3LLr1d3r schrieb:> zum Anfahren keine Vektorregelung> herzunehmen
Also, mit was arbeitest du da? Bei Fertigbausteinen ist im allgemeinem
keine Änderung der Ansteuerung möglich und selbstgebaute Baugruppen sind
keine Fertigbausteine.
H3LLr1d3r schrieb:> Mir fehlt hier einfach irgendwie> die Zuordnung der Spannung zum gewünschten Stromsollwert.
Es gibt keinen Stromsollwert, wenn dein Bestreben ist, die
Geschwindigkeit zu regeln. Wie ich oben schon geschrieben hatte, ist der
Motorstrom zwar meistens proportional zur Drehzahl, aber nur bei
konstanter Last. Vergiss also erstmal den Strom und konzentrier dich auf
die Erfassung der Geschwindigkeit als Ist-Wert für deinen PID Regler.
Der Regler liefert am Ausgang dann die Stellgrösse für die Motorspannung
(und die ist gleich für alle 3 Wicklungen).
H3LLr1d3r schrieb:> Stattdessen soll zunächst im Block angefahren> werden
Ja, das ist der übliche Weg. Vergleiche deine Algorithmen mal mit der
Application Note AVR 447. Da sind auch einige Oszillogramme drin, die
dir evtl. helfen. AVR221 beschreibt dann den PID Regler, der auch in
AVR447 verwendet wird.
Matthias Sch. schrieb:> Wie ich oben schon geschrieben hatte, ist der> Motorstrom zwar meistens proportional zur Drehzahl
Genau! Aus welchem Forum haben Sie denn diesen Quark rausgelesen?
Eig. ist es schon traurig das zu wiederholen, ABER der
Phasen/Wicklungstrom ist nicht meistens, sondern immer nährungsweise
proportional zum DREHMOMENT!
Drehmoment->Strom
Drehzahl->Spannung
-----
Bitte fangen Sie auch nicht an zu diskutieren, denn es ist
nutzlos.Danke!
@Sinus:
Na,das ist ja mal ein echt hilfreicher Beitrag. Die haben wir hier viel
zu wenig. Da merkt man die mitteleuropäische Höflichkeit und das tiefe
Fachwissen in jedem Wort.
Sinus schrieb:> Danke!
Da nich' für. War mir ein innerer Vorbeimarsch...
Matthias Sch. schrieb:> Na,das ist ja mal ein echt hilfreicher Beitrag. Die haben wir hier viel> zu wenig. Da merkt man die mitteleuropäische Höflichkeit und das tiefe> Fachwissen in jedem Wort.
Ja, Ja...Sie wissen doch bescheid über BLDC und Regelung.
Wenn man Ihre Posts liesst, widerspricht sich die hälfte Ihrer Aussagen.
Sie sollten erstmal selbst das Thema Grundlegend verstehen, bevor Sie
hier den Neulingen falsches wissen vermitteln.
Ich wollte Sie auch nicht angreifen oder ähnliches.
Nur die Aussage, dass ein Elektromotor, egal ob DC,BLDC,Sinus die
Drehzahl proportional zum Strom führt, ist absoluter Unsinn.
Der Themenersteller war weiter oben schon auf dem richtigen Weg, nur Sie
haben Ihm das richtige Ziel vor den Augen genommen.
Sowas kotzt mich an.
H3LLr1d3r schrieb:> Also so wie ich es gelernt habe bestimmt mein Drehzahlregler doch meinen> Sollstrom und diesen benutze ich dann widerum um meine Phasenströme zu> regeln oder nicht?
Genau so ist es richtig.
Der Stromregler ist im innersten, dieser wird vom Drehzahlregler
gefüttert.
Gibt es eine Abweichung von der Soll-Ist Drehzahl, wird die Differenz
üblich mit einem PID-Regler bearbeitet und die Stellgröße an den
Stromregler weitergeführt.
Man kann im einfachen Fall auch direkt die Stellgröße vom Drehzahlregler
zum Steuern der PWM nehmen. Dies ist dann eine direktgesteuerte
Stromführung. Für einfache Aufgaben, bsp. Drehzahlregelung
Modellhelicopter ausreichend.
Aber wenn man zb. eine Achse von der CNC-Maschine regeln möchte, wird
dieses Verfahren zu träge sein. Du wirst ohne "echten" Stromregler immer
ein unschönes einschwingen bzw. ausschwingen der Drehzahl haben.
Sinus schrieb:> nicht meistens, sondern immer nährungsweise
Ich nenne es 'meistens', bei dir heisst es 'näherungsweise', das ist
lediglich rethorisches Rumgelabere. Auch sehr nett, das du die zweite
Hälfe meines Satzes nicht mitzitiert hast:
Matthias Sch. schrieb:> aber nur bei> konstanter Last
Es geht hier auch nicht um Modellhubschrauber, sondern, wie der TE schon
im erten Beitrag schrieb, um Motore mit Sensoren. Dafür habe ich schon
mehr Controller aufgebaut und programmiert, als du jemals hinbekommen
wirst.
Sinus schrieb:> und die Stellgröße an den> Stromregler weitergeführt
Es gibt hier auch keine 'Stromregler', sondern lediglich PWM, die per
Pulsbreite die effektive Spannung am Motor steuert. Da sich in den
meisten Fällen die Motorwicklung als glättende Induktivität darstellt,
wird also (ohmsches Gesetz) der Strom mitgesteuert. Das ist also auch
nur Wortklauberei.
Die eigentliche Frage des TE war übrigens schon längst beantwortet. Da
du dich aber so lange hier nicht beteiligt hast, nehme ich mal an, das
du entweder nur rumblubberst, oder nur solange gewartet hast, um dann
mal Dampf abzulassen, mit Halbwissen.
Viel Spass noch dabei. Mission erfüllt,ich bin hier raus.
Matthias Sch. schrieb:> Dafür habe ich schon> mehr Controller aufgebaut und programmiert, als du jemals hinbekommen> wirst.
Ja genau, Controller, aber keine Motorcontroller. Deine Webpage sagt
schon alles.
Matthias Sch. schrieb:> Es gibt hier auch keine 'Stromregler', sondern lediglich PWM, die per> Pulsbreite die effektive Spannung am Motor steuert.
Hahahaha, ich lach mich echt kaputt. Das Problem ist wirklich, dass du
keinen blassen Schimmer von dem Thema hast.
Falls ja, zeig doch mal deine Sinus-Umrichter die du selbst entwickelt
hast und in Betrieb genommen hast.
Matthias Sch. schrieb:> Da> du dich aber so lange hier nicht beteiligt hast, nehme ich mal an, das> du entweder nur rumblubberst, oder nur solange gewartet hast, um dann> mal Dampf abzulassen, mit Halbwissen.> Viel Spass noch dabei. Mission erfüllt,ich bin hier raus.
Ich habe weder gewartet noch will ich etwas ablassen.
Ich habe es nur gesehen und wollte etwas einlenken, damit nicht alle
deinen Worten glauben.
Denn wie gesagt, dass meiste ist leider unsinn.
Du hast es grob verstanden, aber was wirklich im Motor passiert
vermutest du nur. Ich sehe es an deiner Ausdrücksweise.
Ist auch gut so, dass du raus bist. Diesen unsinn kann man sich echt
nicht geben. Tut mir leid.
Muss korrigieren,
Sinus schrieb:> Matthias Sch. schrieb:>> Dafür habe ich schon>> mehr Controller aufgebaut und programmiert, als du jemals hinbekommen>> wirst.>> Ja genau, Controller, aber keine Motorcontroller. Deine Webpage sagt> schon alles.
Du hast doch den 4. Platz mit dem Sinus-Steller gemacht.
Glückwunsch!
Gruß