Hi! Ich hab vor einiger zeit schonmal fragen bezgl eines BLDC reglers gestellt, und hilfreiche antworten bekommen. jetz ist es mal weider so weit - ich habe eine neu schaltung entworfen (bzw. teile davon kopiert :)) siehe anhang die prinzipielle frage zur kommutierung: der schaltungsteil mit spannungsteiler und rc filter - der hats ja in sich. bitte sagt mir mal , ob mein ansatz hier der richtige ist: zum starten des motors gibts mal zwangskommutierung - das funktioniert schon so einigermaßen. dann erfolgt das ständige messen der gegeninduktionsspannung an der nicht bestromten spule des motors. dazu verglieche ich während des "high" pulses des pwm signals die spannungen von "MITTEL" und der nicht bestromten spule "NULLX" x = a,b,c wenn sich jetz die polarität der spannung an der spule gegenüber MITTEL ändert, starte ich den kommutierungsvorgang (der perfekte zeitpunkt ist 30° später, aber jetz mal egal) ist das soweit richtig? achja - der pullup - bzw. pulldown an MITTEL werden nur bei bedarf bestückt - ich hab in einem appnote gelesen, dass man das mittel auf die vcc referenzieren muss, wenn man in der high phase des pwm signals messen will. Danke im Voraus!
zu BLMC-Regler findest du hier schon mal den Informativen einstieg. - http://home.versanet.de/~b-konze inclusive software
danke für den tip - die seite kenn ich aber schon. ich hoffe , den einstieg bereits hinter mir zu haben, wie gesagt es geht hauptsächlich um den bemf schaltungsteil, und dessen auswertung
Hast du das AVR444 Apnote schon gelesen? Dort steht eigentlich alles drin. Und auf http://mikrokopter.de/ucwiki/DownloadSeite findest du einen BLDC Quellcode. Da kannst du eigentlich auch die Funktionsweise nachlesen. hier noch ein paar Bildchen zur BEMF: http://www.aerodesign.de/peter/2001/LRK350/Warum_dreht_er_so.html Was du vorhast ist ja nicht neu, dazu findet man haufenweise Informationen. Falls du konkrete PRobleme hast so stell doch dazu fragen.
Hallo nochmal - hier die "genaue" problembeschreibung: im moment betreibe ich den motor nur mit zwangskommutierung - d.h. ich habe einfach fixe umschaltzeiten. Am oszi gemessen, sieht man aber eine spannugsdifferenz zwischen dem nicht aktiven ausgang (z.B.: NULL_B) und dem MITTEL. diese differenz ändert die polarität vor dem nächsten umschalten der pahsen. (das sollte richtig sein). Nur kennt der analog komparator meines mega 8 diesen unterschied nicht, bzw irgendwas hab ich falsch gemacht - ich messe direkt am controller pin. auch die fets werden extrem heiß - obwohl die einschaltzeit 20us nicht übersteigt - 50us sind sie aus. ich bekomm zwar ohne last eine relativ hohe drehzahl, aber mit last ists gleich beim beschleunigen vorbei. hier noch meine komparator settings: ACSR = 0x00; ADMUX = 0x01; (für ADC1 als neg. komp. pegel) SFIOR = 0x08; was könnte den die ursache für diesen defekt sein? danke für eure hilfe!
hi hab ebend gesucht und den ausgang B nicht gefunden..... shematic checken oder ich meine augen ;) gruß marcel
@ Rotary (Gast) >im moment betreibe ich den motor nur mit zwangskommutierung - d.h. ich >habe einfach fixe umschaltzeiten. Das geht glaub ich ziemlich schief. Du must schon die Hallsensoren oder die Gegeninduktionsspannung auswerten, um die Spulen im richtigen Moment umzuschalten. MFG Falk
ja sry - der heist NULLB - alsu ohne "_" - wenn du den motoranschluss meinst, das is die mittlere brücke
@falk - genau das ist mein problem - das auswerten der gegeninduktionsspannung - hallsensoren hab ich keine. die frage ist nur, wals im moment falsch läuft
@ Rotary (Gast) >gegeninduktionsspannung - hallsensoren hab ich keine. >die frage ist nur, wals im moment falsch läuft U.a. die Verwendung der Bildformate. >Dateianhang: regler.JPG (237,7 KB, 100 Downloads) Ausserdem fehlt bei dir der zweite Anschluss für den Analogkomparator. MFg Falk
jpg is doch in ordnung oder? - ich kann auch die eagle sch anhängen, aber das kann auch nicht jeder öffnen. natürlich ist der 2. komparator eingang nicht angeschlossen - der negative eingang wird ja zwischen adc0,adc1 und adc2 gemuxt (das sollte hoffentlich richtig sein)
@ Rotary (Gast) >jpg is doch in ordnung oder? - ich kann auch die eagle sch anhängen, >aber das kann auch nicht jeder öffnen. LIES MAL DEN ARTIKEL VOLLSTÄNDIG! >natürlich ist der 2. komparator eingang nicht angeschlossen - der >negative eingang wird ja zwischen adc0,adc1 und adc2 gemuxt (das sollte >hoffentlich richtig sein) OK.
ok es ist kein png - was solls? man kann alles lesen und das sollte reichen denk ich oder? (korrigiere mich falls ich falsch liege)
>(korrigiere mich falls ich falsch liege) Es geht um den Dateiinhalt (nur Striche, also hohe Kontraste) und die Dateigröße. Strichgrafiken speichert man mit verlustlosen Verfahren ab. zB png. Dadurch wird dieselbe Datei einiges kleiner und es gibt keine Kompressionsartefakte. Ich habe dazzu mal das GND-Symbol vergrößert. Vergleiche das mal mit der original-eagle Darstellung. http://de.wikipedia.org/wiki/Gibbssches_Ph%C3%A4nomen
ok danke für den tip! - aber nun wieder zurück zum eigtl problem: dem BLDC regler :)
Hallo, Deine Endstufentransistoren werden heiss weil Dein Motor durch die Zwangskommutierung mit einem furchtbaren Wirkungsgrad läuft. Diese Art der Kommutierung soll natürlich nur kurzzeitig für den Anlauf verwendet werden, dann aus dem Vergleich der Spannung am nichtbestromten Motorpin zum Sternpunkt (oder virtuellen Sternpunkt wie bei Dir) der nächste Zeitpunkt bestimmt werden. Zu diesem werden dann 30° elektrisch hinzugefügt, das ist der nächste Kommutierungszeitpunkt. Läuft der Motor ohne diese 30° Phsendifferenz, dann ist der Wirkungsgrad auch schlecht und der Motor zieht einen hohen Strom und die Treiber werden heiß. Ich verstehe Deine Komparatormimik nicht ganz, vergleichst Du ständig alle drei Motorleitungen mit Deinem virtuellen Sternpunkt oder tust Du dies abwechselnd je nach gerade aktiver Ansteuerungsphase der Zwangskommutierung ? Betreibst Du die Ansteuerung mit einer überlagerten PWM, Deine angegebenen Zeiten suggerieren dies. Wenn es Dir zunächst um das Verständnis geht würde ich im ersten Schritt auf die PWM verzichten, die Motorspannung soweit als möglich reduzieren und externe Komparatoren setzen um zu sehen was sich überhaupt für "Sensorsignale" ergeben. Den Pullup gegen VDD verstehe ich überhaupt nicht, es müssen doch die Motorleitungen gegen den virtuellen Sternpunkt verglichen werden (jeweils natürlich entsprechend heruntergeteilt. Gruss, Armin
Nein, ohne PWM wird Dir das Ding um die Ohren fliegen! Ich habe das ganze erstmals mit einem ausgebauten HD Motor in betrieb genommen. Der ist schön hochohmig und lässt nicht gleich die Fet's abrauchen. Als erstes habe ich auch den Motor fest laufen lassen und mir den Komperator per Software über einen Pin nach ausgen geführt. Damit ich mit dem Osszi den Spannungsverlauf zum Komperator ansehen konnte. Dann habe ich sollange mit der Spannung gespielt bis der NULL Durchgang genau in der Mitte lag. Somit konnte ich mich dann an das Problem heran "tasten". Gruß Stumpf
@ Matthias Lipinsky (lippy) >Es geht um den Dateiinhalt (nur Striche, also hohe Kontraste) > und die Dateigröße. >Strichgrafiken speichert man mit verlustlosen Verfahren ab. zB png. >Dadurch wird dieselbe Datei einiges kleiner und es gibt keine >Kompressionsartefakte. Ich frage mich ERNSTHAFT, wieso man dass noch dreimal erklären muss, wenn es (eigentlich) IDIOTENSICHER im Artikel steht. Ach ja, GEneration AHDS-Syndrom :-( MfG Falk
danke mal für eure hilfe @falk: wenn du dich gerne über dinge aufregst, fang doch mal in der politik an, vieleicht veränderst du ja was damit - aber ich will hier keine lehrveranstaltung zu computergrafiken starten. @stumpf und armin: ich werde heute noch bilder der ansteuersignale hochladen - und ja, ich überlagere ein pwm (sonst würden die fets wirklich abrauchen :) ). Den Komparatoroutput des controllers lege ich auf einen pin (kurz nach jeder high-phase des pwm signals) allerdings stimmt das nicht im geringsten mit den am oszi gemessenen spannugnen überein. den pullup vom MITTEL auf vdd habe ich entfernt (ebenso den pulldown). Ich werde einige messungen machen, und dann die bilder hochladen. Danke nochmal für eure Hilfe
@ rotary (Gast) >danke mal für eure hilfe @falk: wenn du dich gerne über dinge aufregst, Tu ich eher nicht. >fang doch mal in der politik an, vieleicht veränderst du ja was damit - >aber ich will hier keine lehrveranstaltung zu computergrafiken starten. Nun ja, Ignoranz und Lernresistenz sind Menschenrechte . . . MFG Falk
Fotos kommen leider erst morgen. Aber: ich habs nun (endlich) geschaft, mit hilfe des internen analog komparators, ein (relativ) vernünftiges kommutierungssignal zu rekonstruieren. ich habe mich jetzt gefragt, wann ich denn wirklich auf die nächste phase umschalten muss - das soltle ja eigtl 30° nach der pegeländerung am komparator passieren oder? das sind ja 8% von 360° - also müsste ch eigtl zu diesem zeitpunkt 8% meiner gesamten periodendauer addieren oder? also (T*0,08) warten, bevor ich kommutiere. wäre das so richtig?
Im Anhang mal ein bild der aktuellen signale meines reglers. das im bild unterste (1) ist das mit dem internen komparator ermittelte kommutierugnssignal. Der Regler läuft aber noch mit zwangskommutierung, da das Umschalten der phasen mit hilfe des komparatorsignals noch nicht funktioniert. Eine Freage zu den 30° verzögerung: müsste es ohne die auch (prinzipiell) funktionieren, oder ist das unmöglich?
Sieht mir irgendwie danach aus als würden deine Filter nicht hinhauen (Die Tiefpässe an den NULLA-NULLC Netzen). Ansonsten kann man aber nicht wirklich viel erkennen auf dem Bild. Ja, der Motor läuft, wie gesagt, auch ohne 30° Phasenverzögerung, aber wesentlich schlechter.
naja - ich hab die kondensatoren jetz rausgeschmissen, da ich sonst in der low-phase des pwm signals keine vernünftigen spannugnen zum auswerten hatte. Wo sollte eigtl. die Grenzfrequenz der Filter liegen? - bei den 100nF is das ja weit unter der frequenz meines pwms (ca 20kHz)
rotary wrote: > naja - ich hab die kondensatoren jetz rausgeschmissen, da ich sonst in > der low-phase des pwm signals keine vernünftigen spannugnen zum > auswerten hatte. "Keine vernünftigen Spannungen"? Die Kondensatoren haben schon einen Sinn, sonst wären sie dort nicht.
so jetz läufts mal einigermaßen - soll bedeuten: die kommutierung erfolgt jetzt so wie es sein soll (bis auf die 30° verzögerung - die gibts im moment noch nicht). Der Motor läuft auch brav wie er soll, allerdings - hier gibts ein problem - läuft er immer gleich mit maximaler drehzahl. Meine Frage ist nun, wie kann ich die Drehzahl wirklich regeln? also wenn ich den motor jetzt blockiere, dreht er sich sofort wieder hoch (das geht recht schnell). Und noch eine Frage zu den 30° - ich muss ja nach dem ich eine änderung der polarität am komparator festgestellt habe eine gewisse zeit (also die 30°) warten, bevor ich auf die nächste phase umschalte. Auf welche Zeit bezoehen sich diese 30° nun? auf die gesamtzeit einer umdrehung, oder auf die ein-zeit der jeweiligen phase? Danke für eure Hilfe!
@ rotary (Gast) >problem - läuft er immer gleich mit maximaler drehzahl. Meine Frage ist >nun, wie kann ich die Drehzahl wirklich regeln? Die aktive Phase wird nicht konstant sondern mit PWM bestromt. Und zur DrehzahlREGLUNG brauchst du auch eine DrehzahlMESSUNG. MFG Falk
Ja, mit PWM stromung hab ich schon - das funktioniert uach so ganz gut. Zur drehzahlmessung: die kann ich ja mit hilfe der zeitabstände zwischen den polarisationsänderungen messen. Aber wie kann ich die drehzahl nun festlegen?
@ rotary (Gast)
>Aber wie kann ich die drehzahl nun festlegen?
Na über die PWM! Kleines Tastverhältnis -> kleine Spannung am Motor ->
kleine Drehzahl.
MFg
Falk
Hallo, normalerweise (also so mach ich es bei meiner Brushlessansteuerung) brauchst du eine Strommessung jeder einzelnen Phase. Nachdem du den Motor im Trapezbetrieb fährst, weil du keinen Drehgeber drauf hast, bestromst du immer nur zwei Phasen, also ist der Phasenstrom identisch mit dem Aufnahmestrom des Umrichters dividiert durch die Pulsweite. So, wenn du nun den Motorstrom kennst (wie auch immer du ihn gemessen hast - ob in den Motorphasen oder den Aufnahmestrom), kannst du einen Stromregler programmieren. Der Motorstrom soll direkt proportional sein zum gewünschten Motordrehmoment. Der Reglerausgang sei eine Zahl von 0 bis 1, die auf deine jetzt verwendete Pulsweite multipliziert wird und damit die Motorstrangspannung verstellt. Das gewünschte Drehmoment ist also Eingangsgröße des Stromreglers. Kommutiert wird nach der Trapezmethode, so wie du es schon hast. Dem Stromregler schaltest du jetzt einen Drehzahlregler vor, der die Solldrehzahl als Eingang hat und den Istwert aus der Kommutierungsfrequenz ermittelt. Als Stromregler habe ich einen PI-Regler, Drehzahlregler ist ein P-Regler. Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder vergriffen, wird aber bald neu aufgelegt. Viele Grüße, Peter
Danke für eure Hilfe! @ falk: ich hab das mit dem pwm schon versucht, allerdings ist das drehmoment bei niedriger spannung dann auch sehr niedrig. @Peter: das mit der strommessung werde ich ausprobieren - nach dieser theorie, sollte dann wohl die zugeführte leistung so lange erhöht (angepasst) werden, bis der motor die gewünschte drehzahl erreicht hat oder?
@rotary (Gast) >@ falk: ich hab das mit dem pwm schon versucht, allerdings ist das >drehmoment bei niedriger spannung dann auch sehr niedrig. Dann ist was faul. So ein Motor hat bei Drehzahl 0 sein grösstes Drehmoment. Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM an den Enable-Eingängen? Das wäre nämlich falsch ;-) MFg Falk
Falk Brunner wrote: > @rotary (Gast) > >>@ falk: ich hab das mit dem pwm schon versucht, allerdings ist das >>drehmoment bei niedriger spannung dann auch sehr niedrig. > > Dann ist was faul. So ein Motor hat bei Drehzahl 0 sein grösstes > Drehmoment. Aber nur, wenn er bestromt wird. > Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM > an den Enable-Eingängen? Das wäre nämlich falsch ;-) Was für Enable-Eingänge denn nun? Und was genau wäre daran falsch?
Hallo, >das mit der strommessung werde ich ausprobieren - nach dieser >theorie, sollte dann wohl die zugeführte leistung so lange erhöht >(angepasst) werden, bis der motor die gewünschte drehzahl erreicht hat >oder? Das ist richtig. Der Umrichter hat selbst ja einen relativ hohen Wirkungsgrad, also wird fast die gesamte elektrisch zugeführte Energie in Rotationsenergie umgesetzt. Damit lässt sich das Drehmoment steuern und auch regeln. Die eher akademische Variante wäre auch ohne Strommessung möglich, dazu braucht man aber ein mathematisches Modell des Motors, um die Ströme vorherzusagen. Es gibt aber wohl Regler am Markt, die das so machen. Das Problem daran ist, dass die Motoren einen sehr kleinen Innenwiderstand haben. Die induzierte Spannung hängt linear von der Drehzahl ab. Ist die im Mittel über PWM eingestellte Spannung an der jeweiligen Phase größer als die induzierte Spannung, so integriert der Strom immer weiter auf. Das passiert so lange, bis der Motor mit dem zusätzlich entstehenden Drehmoment eine Drehzahl erreicht hat, die eine Induktionsspannung nahe der duch PWM angelegten Spannung induziert. Gibt man zu aggressiv Gas, fließt beliebig viel Strom, wenn man ihn nicht mit einem Regler begrenzt. Hier setzt dann das mathematische Modell um ohne Messung einen Schätzwert des Stroms zu erhalten, den man dann begrenzen kann. Dadurch ist eine DrehzahlSTEUERUNG über das Pulsweitenverhältnis möglich. Das bei geringer Pulsweite nur wenig Drehmoment zur Verfügung steht, ist bei Kleinspannungsmotoren normal, denn bei der kleinen Spannung von wenigen 100 mV dominiert der Sapnnungsabfall am ohmschen Anteil des Wicklungswiderstands. Deswegen muss man per Regler die Abweichung von der Solldrehzahl auf die eingestellte Pulsweite rückführen und damit bei zu kleiner Drehzahl beschleunigen. Um zu verstehen, was dir in deiner Schaltung möglich ist, wäre es hilfreich, wenn du einen Schaltplan posten könntest. Viele Grüße, Peter
Hallo nochmal, hab die Schaltung gefunden, wurde bei mir vorher nicht agezeigt. Peter
Hallo, die drei parallelen 4,7 Ohm Widerstände als Shunt sind ja viel zu groß, wieviel Spannung soll denn da abfallen? An einem Shunt sollten normal nicht mehr als 50mV abfallen. Damit bricht dir ja die Spannung am Umrichter viel zu weit ein, wenn viel Strom fließt und es wird zu wenig Drehmoment aufgebaut. Ganz abgesehen von der Wärmeentwicklung. Ich kann im Plan auch nicht erkennen, wo das Shuntsignal verstärkt wird. Nach Verstärkung gebe ich es in meiner Schaltung auf einen ADC zum Messen. Außerdem macht es viel Ärger, wenn der Shunt direkt vor den Transistoren ist, schalte ihn besser vor die Elkos in die Versorgung. Genau, Elkos, wo sind die eigentlich? Ich habe im meiner Schaltung mehrere 4700µF drin zur Stabilisierung des DC-Kreises. Grüße, Peter
hallo peter! Zunächst mal danke für deine hilfe! zu meiner Schaltung: die elkos 8es ist im mom nur 1er) befinden sich direkt an den eingangsbuchsen. die shunts sind nur aus einer anderen datei kopiert, und haben in summe 100mR (ist noch zu groß, hab aber im moment nichts anderes zur verfügung). die stromaufnahme berücksichtige ich im moment noch nicht - das ist in dieser hardware variante auch nicht möglich. Ich werde jetz noch die drehzahlregelung testen, und dann evtl ein neues design in agriff nehmen. Was würdest du würdet ihr) denn von einem High.side switch halten, der gleich einen ausgang zum strommessen hat?
Hallo, also ich habe einen solchen Treiber drin, IR2133S. Mittlerweile gibt es aber bessere, die auch eine automatische Deadtime-Erzeugung haben, so dass nur noch drei Eingangssignale benötigt werden. So kann man keine Fehler machen, die einen Brückenkurzschluss verursachen. Peter
Wenn ich mein design nochmal machen müsste, dann käme ein IR21362 rein, der hat eine Deadtimegeneration, Shoot-trough-prevention und die Eingänge Hin und Lin sind gegeneinander invertiert, man kann sie also einfach zusammenhängen und so eine ganze Brücke öhne zusätzliche Bauteile mit einem Prozessorpin ansteuern. Außerdem ist das IC auch für 3,3V Ansteuerung geeignet, das ist für mich wichtig, weil ich die Ansteuerung mit einem MSP430 erledige. Der MSP430F247 hat nämlich 6 PWM-Register auf einem einzelnen Timer. Damit kann ich zwei Motoren ansteuern. Peter
Danke für die tips! Ich hab jetzt einen "primitivregler" implementiert, der zwar funktioniert, aber auch schön überschwingt :). aber das ist erstmal nebensache. Ich möchte die kommutierung noch verbessern - wie bereits erwähnt schalte ich sofort nacah auftreten des polaritätswechsels am komparator auf die näcste phase. dies sollte allerdings (laut meinen informationen) ca 20-30° später passieren. Die Frage ist nun, auf welche Zeit beziehe ich diese 20-30° ? Danke!
>Die Frage ist nun, auf welche Zeit beziehe ich diese 20-30° ?
Über die aktuelle Drehzahl (oder besser dessen Kehrwert) eine
Verzugszeit errechnen.
@ Matthias Lipinsky (lippy) >Über die aktuelle Drehzahl (oder besser dessen Kehrwert) eine >Verzugszeit errechnen. Oder Einfach die Zeit zwischen den Polatitätswechseln messen und dann halbieren ;-) MFG Falk
Ersteres ist die akademische Variante, zweiteres die praktikable :D
@ falk: wenn ich die zeit zwischen den polaritätswechseln halbiere, und den kommutierungszeitpunkt um diese verschiebe, sind das aber etwas mehr als 25° (angenommen ich hab 3 kommutierungen pro umdrehung) oder? Kann ich nicht die "ein" zeit einer phase als zeitbasis verwenden?
noch eine frage: der motor hat 3 phasen - aber ich brauche ja mehr als 3 kommutierungen für 1e umdrehung - wie kann ich errechnen 8ermessen) wieviel kommutierungen ich für 1e umdrehung brauche?
Peter Diener wrote: > Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk > Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder > vergriffen, wird aber bald neu aufgelegt. Lässt sich auch online einsehen: http://books.google.de/books?id=eeZOmq4uP2wC&dq=Regelung+elektrischer+Antriebe&printsec=frontcover&source=bl&ots=vMb0bIkDan&sig=wSM87bibd4CHhooS2BnBfDFZCNM&hl=de&sa=X&oi=book_result&resnum=5&ct=result#PPP1,M1
Simon K. wrote: > Peter Diener wrote: >> Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk >> Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder >> vergriffen, wird aber bald neu aufgelegt. > > Lässt sich auch online einsehen: > http://books.google.de/books?id=eeZOmq4uP2wC&dq=Regelung+elektrischer+Antriebe&printsec=frontcover&source=bl&ots=vMb0bIkDan&sig=wSM87bibd4CHhooS2BnBfDFZCNM&hl=de&sa=X&oi=book_result&resnum=5&ct=result#PPP1,M1 Jedenfalls, wenn du das meinst. Ist von Leonhard.
@ rotary (Gast)
>als 25° (angenommen ich hab 3 kommutierungen pro umdrehung) oder?
???
Also ich ha vor längerer Zeit mal mit sowas rumgespielt. So ein 3
phasiger BLDC hat 6 Kommutierungen/Umdrehung, macht 60 Grad zwischen
zwei Kommutierungen. Die Hälfte davon ist dann . . .
MFg
Falk
@ Simon K. (simon) Benutzerseite >> Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM >> an den Enable-Eingängen? Das wäre nämlich falsch ;-) >Was für Enable-Eingänge denn nun? Und was genau wäre daran falsch? Die Enable Eingänge der drei Phasen. Ohhh, ich sehe gerade, die drei Leistungstreiber sind ja diskret aufgebaut. Ob da alles so läuft wie es soll? MFG Falk
@falk - die leistungstreiber funktionieren tadellos. Ich habe eben einen fehler in meinem sourcecode entdeckt: die pwm frequenz beträgt 10kHz. Die Abfrage des komparators erfolgt immer in der low-phase des pwm signals. bei (noch nicht allzu) hohen drehzahlen wird der kommutierungszeitpunkt nun extrem schlecht erwischt, wodurch der stromverbrauch wieder exorbitant hoch wird. naja das wären dann (hoffentlich rechne ich richtig :)) 30° - nun geben diverse hersteller (z.B: Hacker) aber 22° an. hab damit gerade rumgespielt - am stromverbrauch (unter last) sehe ich hier allerdings keine änderung. wie kann ich den idealen umschaltzeitpunkt für einen bestimmten motor rausfinden?
Hallo, es gibt keinen pauschal optimalen Umschaltpunkt. Es ist ein Bereich, der sich recht gut nutzen lässt und ein Kompromiss aus entweder maximalem Wirkungsgrad oder maximaler Leistung. Die Winkel beziehen sich auf die elektrische Seite, nicht die mechanische. 30° entsprechen 30/360 der Periodendauer von deinem Motorstromsignal. @Simon K.: Nein, ich meine das von Dierk Schröder. Die sind aber bestimmt alle nicht schlecht, ich kenne das nicht genau, was du angegeben hast. Herrn Prof. Schöder habe ich in einer meiner Vorlesungen gehört. Den idealen Umschaltpunkt für maximalen Wirkungsgrad zu finden ist nicht schwer. Montiere eine Luftschraube oder ähnliches (Vorsicht!) auf den Motor und fahre mit konstanter Drehzahl. Verstelle den Steuerwinkel so lange, bis sich der niedrigste Stromverbrauch am Akku/Netzteil ergibt. Für maximale Leistung fährst du ohne Regelung Vollgas und stellst den Winkel so lange, bis die Drehzahl ein Maximum erreicht. Gute Regler passen den Steuerwinkel während des Betriebs an die Lastsituation an, so dass man (beim Modellflugzeug) in Schwachlastzeiten wenig Strom braucht und im Hochlastbetrieb die notwendige Leistung kommt. Die Polzahl kann man abzählen, wenn man den Motor von Hand durchdreht, einfach die Rucks zählen. Man muss aber zwischen Polzahl und Polpaarzahl unterscheiden. Außenläufer haben normal mehr Pole als Innenläufer. Je mehr Pole ein Motor hat, desto geringer ist seine Drehzahl und das Moment größer. Es sind ja Synchronmotoren, also breechnet sich die mechanische Drehzahl aus der Frequenz des Phasenstroms geteilt durch die Polpaarzahl. Umrechnen von 1/s in 1/min nicht vergessen:) Wenn dein Regler überschwingt, musst du die Regelparameter anders wählen. Such mal im Netz nach heuristischen Methoden zum Reglerabgleich oder nach Faustformelverfahren. Da werden dir die Einstellregeln nach Chien, Hrones und Reswick helfen können. Viele Grüße, Peter
@Peter: Danke für die Infos. Ich habe im moment noch folgendes problem bezgl. der regelung: wenn ich aus dem stand auf max. drehzahl gehen will, kommt es zu einem überschwingen (obwohl die stellgröße bereits in den kleinstmöglichen schritten inkrementiert wird). Ich prüfe die Drehzahl (bzw. die Zeit, welche eine einzelne phase aktiv ist) nach jeder kommutierung. wäre es evtl besser, diese überprüfung nur nach jeder x.ten (also 2-10 ca) kommutierung vorzunehmen? Das Zweite Problem ist nach wie vor der Umschaltzeitpunkt. ich habe bei einer fixen last und mittlerer drehzahl (ca 8000 rpm) mit verschiedenen werten experiementiert, aber der (vom stromverbrauch her) beste wert war immer der zeitpunkt des nulldurchgangs der komparatorspannung. mache ich etwas grundsätzlich falsch? Im anhang noch ein bild des oszilloskops. Die signale: 1 - nach jeder flanke ist die nächste phase aktiv 2 - komparatorsignal 3 - in der high phase ist der komparator gesperrt (zeit wird dynamisch angepasst) gelb: mittel rest: komparatorspannungen
Hallo, mit was belastest du den Motor bei den Tests? Je öfter du die Drehzahl misst, desto besser ist das Ergebnis. Wenn du seltener misst, hast du eine immer größere Totzeit im System, was immer schwierig zu regeln ist. Das Überschwingen hat nichts mit der Vorgabe von Sollwerten zu tun, es darf auch bei einem 0-100% Sollwertsprung nicht auftreten. Die Regler sind dazu geeignet zu parametrieren. Der richtige Kommutierungszeitpunkt hängt stark vom verwendeten Motor ab und sollte vor allem mit großer Belastung ermittelt werden. Bei zu geringer Last ist er sehr nahe am Umschaltpunkt der Komperatoren. Es hört sich so an, als würdest du das Kommutieren gegenüber dem Umschaltpunkt der Komperatoren verzögern. Du musst es aber vorauseilen lassen um etwa 10-20° (Stromphasenwinkel). Dazu musst du vorausschauend abschätzen, wann der Komerator das nächste mal schaltet und dann verfrüht kommutieren, nicht erst nachdemder Komperator geschaltet hat. Viele Grüße, Peter
Danke für den Tip Peter! Ja, genau so hab ich es im moment gemacht - nach dem schalten der komparatoren eine zeitverzögerung eingebaut, und dann die kommutierung durchgeführt. d.h. ich muss ~30° BEVOR der komparator schaltet, auf die nächste phase schalten. Das werde ich gleich versuchen. Den Motor belaste ich im Moment mit einem Propeller (der allerdings etwas zu gering dimensioniert ist). bei max. Drehzahl zeiht der Motor 7.5A (bei der "fehlerhaften" kommutierung. max. Strom bei volllast sollten aber 15A sein.
Hallo, genau richtig, du musst vor der Komparatorflanke schalten. Sei vorsichtig mit den Strömen, die 15A gelten als RMS über eine Wicklung des Motors. Das entspricht bei kleinen Pulsweiten überhaupt nicht dem Aufnahmestrom. Dieser ist kleiner. Also immer den Motorstrom selbst messen (z.B. mit Stromzange) oder den Motorstrom mit dem Pulsweitenverhältnis multiplizieren, dann erhält man den Aufnahmestrom. Also Aufnahmestrom messen, durch Pulsweite teilen ergibt den Motorstrom. Das ist aber schwierig, weil sich die Pulsweite ständig ändert. Grüße, Peter
Hallo nochmal! Im Anhang das "Dokument" , asu dem ich die Information zu den 30° verzögert schalten habe. Mein größtes Problem ist zur Zeit allerdings das Starten des Motors. Nach einigen Tests mit und ohne Last hat sich keine der implementierten startroutinen als geeignet herausgestellt. Ohne Last laufen fast alle - mit Last treten folgende Fehler auf: Der Motor läuft mit geringer Geschwindigkeit in die falsche Richtung (bei extrem hoher Stromaufnahme), oder der Motor startet überhaupt nicht. Prinzipieller Ablauf des Startvorganges: 1. Rotor auf eine definierte Position führen (A+;B-;C-) 2. einige 100ms warten, bis der Rotor stabilisiert ist 3. Zwangskommutierung starten, bis der komparator 30 mal einen polaritätswechsel erkannt hat. 4. Umschalten auf automatische kommutierung Dieser Ablauf stammt aus einem appnote von ST. (AN1276)
Hallo, ich würde den Motor nicht auf eine Startposition stellen, die im Betrieb nicht als Kommutierungszustand genutzt wird. (A+;B-;C-) wird im Betrieb nie geschaltet, besser wäre eine Startposition mit A+;B-;C kein Transistor an. Bei der Zwangskommutierung kannst du unter Umständen ein echtes Drehfeld durch Modulation der Phasen erzeugen. Ich meine dabei alle drei Phasen wie in einem Drehstromsystem sinusförmig und stromgeregelt anzufahren. Dabei würde ich auf den Nennstrom des Motors regeln, die Drehzahl = null einstellen und warten, bis der Motor ins Feld "einrastet". Dann eine Drehzahlrampe mit konstanter Beschleunigung berechnen und die drei Phasen entsprechend modulieren. Ab einer bestimmten Drehzahl dann bei geeigneter Rotorstellung auf die freilaufende Kommutierung im Trapezbetrieb umstellen und den Drehzahlregler einschalten. Ich habe bei meinen Umrichtern das Problem der Umschaltung gar nicht, denn ich fahre immer im dreiphasen Drehstrombetrieb mit Raumzeigermodulation. Die Phasen sind stromgeregelt und die Momentanforderung bestimmt den notwendigen Phasenstrom. Damit verhält sich der Motor wie eine Synchronmaschine am Netz, solange er nicht außer Tritt fällt. Dass das nicht passiert, wird die Momentanforderung begrenzt. Peter
Moin! Hat jemand ausprobiert einen BLDC Motor wie eine Synchronmaschine zu betreiben? Also sinusmodulierte Spannungen und Messung der Phasenströme? Gruß BJ
Kann mir jemand erklären warum der Strom in den einzelnen Phasen bei der SVPWM größer ist als der Aufnahmestrom der B6-Brücke. Ich habe hier was von Multiplikation/Division mit der Pulsbreite gelesen. Wie kommt das?
Hi, ich kram das nochmal hervor weil ich eine Frage zum Kommutierungszeitpunkt habe. Eine elektrische Umdrehung wird in 6 Kommutierungsblöcke zu je 60° unterteilt. In jedem Abschnitt sollte der BEMF Nulldurchgang im Idealfall bei 30° eintreten und messbar sein. D.h. ich stoppe die Zeit die seit Aktivierung des jeweiligen Kommutierungsblocks (=0°) bis zum BEMF Nulldurchgang (=30°) vergangen ist (=t_30). Nach einer Wartezeit von t_30 (=60°) wird kommutiert. Nun kann man den Kommutierungszeitpunkt variieren um mehr Leistung aus dem Motor zu holen. Es gibt hier allerdings zwei widersprüchliche Aussagen wo der optimierte Kommutierungszeitpunkt liegen muss. 1.) Beitrag "Re: BLDC regler - konzept so richtig?" Der Kommutierungszeitpunkt liegt im Bereich: 30°<= t <= 60° d.h. NACHDEM der BEMF Nulldurchgang erkannt wurde und BEVOR die Wartezeit t_30 abgelaufen ist. 2.) Beitrag "Re: BLDC regler - konzept so richtig?" Der Kommutierungszeitpunkt liegt im Bereich: 0°<= t <= 30° d.h. BEVOR der BEMF Nulldurchgang erkannt wurde. Fall 1.) kann ich nachvollziehen. Fall 2.) ist mir unklar. Wie soll jemals die Zeit t_30 bestimmt werden wenn immer VOR Erreichen des Zeitpunkts kommutiert wird ?! Kann mich jemand erleuchten ?
Hallo Markus, Markus schrieb: > Eine elektrische Umdrehung wird in 6 Kommutierungsblöcke zu je 60° > unterteilt. In jedem Abschnitt sollte der BEMF Nulldurchgang im > Idealfall bei 30° eintreten und messbar sein. D.h. ich stoppe die Zeit > die seit Aktivierung des jeweiligen Kommutierungsblocks (=0°) bis zum > BEMF Nulldurchgang (=30°) vergangen ist (=t_30). Nach einer Wartezeit > von t_30 (=60°) wird kommutiert. Oder ganz einfach gesagt: Die Kommutierung sollte 30° nach dem Nulldurchgang der unbestromten Phase erfolgen. > Nun kann man den Kommutierungszeitpunkt > variieren um mehr Leistung aus dem Motor zu holen. Hier führt nur die frühzeitige Kommutierung zum Erfolg. Also z.B. 10° nach dem Nulldurchgang (anstatt der üblichen 30°). > Der Kommutierungszeitpunkt liegt im Bereich: 30°<= t <= 60° > d.h. NACHDEM der BEMF Nulldurchgang erkannt wurde und BEVOR die > Wartezeit t_30 abgelaufen ist. Ich vermute, dass sich t hier auf den letzten Kommutierungszeitpunkt bezieht. t = 30° wäre dann der Zeitpunkt des Nulldurchgangs der unbestromten Phase. Eine verspätete Kommutierung, also mehr als 30° nach dem Nulldurchgang der unbestromten Phase reduziert Dir den Wirkungsgrad der Maschine. Das Optimum liegt übrigens bei einer (kleinen) vorzeitigen Kommutierung, da Du damit, grob vereinfacht gesprochen, die Auswirkungen der Induktivität kompensierst (das Stichwort für die Fachliteratur wäre Ankerrückwirkung) und der optimale Winkel hängt vom aktuellen Motorstrom ab. > Der Kommutierungszeitpunkt liegt im Bereich: 0°<= t <= 30° > d.h. BEVOR der BEMF Nulldurchgang erkannt wurde. Nein, hier bezieht sich t m.E. auf den Nulldurchgang der unbestromten Phase. > Fall 1.) kann ich nachvollziehen. Fall 2.) ist mir unklar. Wie soll > jemals die Zeit t_30 bestimmt werden wenn immer VOR Erreichen des > Zeitpunkts kommutiert wird ?! Das wird nicht funktionieren, da Du an der bestromten Phase keinen Nulldurchgang detektieren kannst. Grüßle, Volker.
Hallo, ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit berücksichtigen? Oder ist das vernachlässigbar klein? Danke Carsten
Hallo, Carsten M. schrieb: > ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des > Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit > berücksichtigen? Oder ist das vernachlässigbar klein? Was willst Du hören? Außer Dir kennt leider niemand die Zeitkonstante Deines RC-Filters und die maximale Drehzahl Deines Motors. Wie soll Dir also jemand sagen, ob Du die Zeitkonstante kompensieren musst? Da eine verzögerte Kommutierung stets ungünstig ist (große Stromspitzen beim Kommutierungsvorgang), würde ich die Verzögerung des RC-Glieds kompensieren sobald sie in die Größenordnung von 5° (el) kommt. Grüßle, Volker.
Carsten M. schrieb: > ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des > Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit > berücksichtigen? Oder ist das vernachlässigbar klein? Das ist schon richtig. Ich habe bei meinen Reglern in der Software kein Timing eingefügt und stattdessen an den RC Parametern herumgespielt, bis der Motor optimal lief. Es macht schon was aus, ob der Kondensator 100NF oder 200NF hat. Nimm einfach die Werte aus deinem Schaltplan, die habe ich auch genommen. Die haben gut funktioniert. In der Software habe ich keine Timingoption drinn. Ich würde es einfach ausprobieren. Schlussendlich empfielt sich ein Effektivitätstest, den du dann mit anderen Werten vergleichen kannst. Ich habe zum Beispiel einen Motor und einen Propeller genommen, den die Leute von Mikrokopter benutzen und anschließend meine Schubkurve mit deren Kurve verglichen. Da meine ähnlich aussah, bin ich davon ausgegangen, dass die Schaltung okay ist. Ideal wäre natürlich ein Messaufbau, der den Motor (Drehmoment und Drehzahl) genau vermisst. Sowas hatte ich damals aber nicht da.
Danke Volker, die Frage bezog sich auf rotarys RC-Filter (4,7k und 100nF). Der online Kalkulator gibt eine Zeitkonstante von 0,47 ms an. Verstehe, nun hängt es von der Drehzahl ab, ob die Zeit in den Bereich von 5° kommt. Alles klar - Danke
Hallo Jonny, >Nimm einfach die Werte aus deinem Schaltplan, die habe >ich auch genommen. Du hast meine Werte genommen? - Glaube ich nicht, denn mein controller hat kein RC Glied! ;-) Keine Verzögerung heißt dann du kommutierts sofort nach Nulldurchgang und überläßt dem Filter die Verzögerung?
> Du hast meine Werte genommen? - Glaube ich nicht, denn mein controller > hat kein RC Glied! ;-) Hoppla - ich meinte natürlich die Werte von Rotarys Schaltplan. > Keine Verzögerung heißt dann du kommutierts sofort nach Nulldurchgang > und überläßt dem Filter die Verzögerung? Richtig.
cool ... wenn man das weiter denkt, resultiert das in einer Art automatischem variablen pretiming. Nur in die falsche Richtung!? Je schneller der Motor dreht, desto Größer wird der Anteil der RC-Filter Verzögerung. Wenn du normal bei Nulldurchgang kommutierts, was ja 30 Grad pritiming entspricht, kommst du dann immer weiter weg in Richtung 0 Grad pritiming!? Oder übersehe ich da was?
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.