Hallo,
ich arbeite aktuell daran einen BLDC mit Hallsensoren und PIC32 zu
kommutieren. Im Leerlauf klappt auch alles super nur unter Last bricht
die Drehzahl rapide ein. Nun habe ich etwas von Advanced kommutierung
gelesen. Bedeutet das, man kommutiert bereits vor dem Hall Signal oder
eher verzögert? Kann mir da jemand helfen um die Drehzahl unter Last
stabiler zu halten?
Gruß Peter
Schau dir mal die Konze BLDC ESC software an (falls du avr asm
verstehst).
Eigentlich kannst du nach dem hochfahren auf eine fixe timerbasierte
kommutierung umstellen. Der hall sensor sagt dir dann ob der rotor
hinterherhinkt oder vorauseilt. Je nachdem jagst du dann mehr oder
weinger strom durch die windungen.
Du hast dann noch ein gewisses phasenrauschen, aber die drehzahl ist
quartzgenau stabil.
Peter schrieb:> Aber ein festes Timing bringt mir ja nichts wenn die Drehzahl unter Last> sinkt. Etwas tut sie das ja trotzdem.
Wenn du merkst dass der rotor zu stark hiterherhinkt dann gibst du mehr
strom. Erst wenn das trotz maximalstrom nicht bessert ist der motor zu
schwach, dann musst du drehzahl senken.
Trotzdem finde ich das zu unflexibel. Sobald die Drehzahl fällt, rennt
der Timer davon.
Wäre es besser die Zeiten zwischen den Hall-Signalen zu nehmen und dann
flexibel vorauszueilen?
Peter schrieb:> dann flexibel vorauszueilen?
Was bringt dir ein beliebig "flexibles Vorauseilen", wenn das vom
maximalen Strom erzeugte Moment nicht zum "Nachfolgen" reicht?
Klar will ich eine konstante Drehzahl. Ich weis aber auch, dass diese
unter Last nicht Konstant bleiben kann weil der Motor vielleicht zu
knapp bemessen ist. Aber er darf nicht ganz so in die Knie gehen. Nehmen
wir ein Akkuschrauber. Der wird unter Last auch langsamer aber bringt
volles Moment. Mein Motor bei Hall Kommutierung stirbt da voll ab.
Entweder ist der Motor einfach zu schwach (oder deine
Versorgung/Endstufe) oder du musst einen Regler einstricken. Dazu gibts
ja genug Rechenpower im PIC32. Ist-Grösse ist praktischerweise die Zeit
zwischen 2 Hallevents.
Machst du Block oder Sinuskommutierung?
Vor allem bei Sinus kann man die Hallevents zeitlich etwas verschieben.
Aber weniger fürs Drehmoment, sondern eher für die Geräuschentwicklung.
Ich mache das mit Block.
Also nehme ich bei konstanter Drehzahl die Zeit zwischen zwei Hall
Signalen, verschiebe das dann um x us nach vorne und behalte dann die
Abstände wieder gleich?
Peter schrieb:> Also nehme ich bei konstanter Drehzahl die Zeit zwischen zwei Hall> Signalen, verschiebe das dann um x us nach vorne und behalte dann die> Abstände wieder gleich?
Wie gesagt, das hat wenig Einfluss aufs Drehmoment, wenn die Sensoren
richtig montiert sind. Man kann da ein wenig hin- und hershiften, aber
ändern tut sich da eher was am Laufgeräusch.
Nein, wenn dein Motor zu schwach ist, musst du mit dem PIC nachregeln
und zwar z.B. mit einem PID Regler. Die Sollgrösse bestimmst du und die
Ist-Grösse ist der zeitliche Abstand von 2 Hallevents als Meßgröße für
die Geschwindigkeit des Motors. Das fütterst du in den Regler und
steuerst mit seinem Ausgang die Motor-PWM.
Ich habe an meinen Motoreelektroniken eine serielle Konsole und kann so
im Betrieb die P,I und D Parameter ändern.
Aber mehr als 100% Duty geht ja nicht. Trotzdem bricht die Drehzahl ein…
Wenn ich Phase Advanced google finden sich Diagramme dass das Drehmoment
und Drehzahl größer werden
Peter schrieb:> Aber mehr als 100% Duty geht ja nicht. Trotzdem bricht die> Drehzahl ein…>> Wenn ich Phase Advanced google finden sich Diagramme dass das Drehmoment> und Drehzahl größer werden
Das ist aber sehr abhängig von der Drehzahl - du müsstest diese auf
jeden Fall in die Schieberei des Umschaltpunktes mit einbringen. Sonst
gibts nämlich Punkte, an denen der Motor gar nicht mehr anläuft oder
Drehmoment verliert.
Aber wenn du schon auf 100% bist, ist eh alles vorbei. Dann ist der
Motor einfach zu schwach für den vorgesehenen Zweck. Da hilft Zeitpunkte
shiften auch nicht mehr.
Peter schrieb:> Wobei selbst bei 100% kann ich eher oder später umschalten
Klar, aber wie schon gesagt, da kannst du nichts merkbares rausholen.
Wenn der Motor am Ende ist, ist nun mal nix zu holen, was magisch mehr
Kraft bringt.
vielleicht wäre ein Getriebe (Untersetzung) etwas für dich. Nur so wirst
du den Strom senken können um diesen als Drehmomentreserve vorhalten zu
können.
Peter schrieb:> Aber wie machen das Werkzeuge?
Da ist natürlich ein Getriebe drin. Und die Versorgung ist kräftig
ausgelegt, genauso wie die Endstufen. Alles sehr niederohmig ausgelegt.
Wenn bei jedem Impuls geschaltet wird ist der Motor schon bei 100%. Da
kann nur noch über die Versorgungsspannung geregelt werden. Halbiere die
Drehzahl dann ist die Einschaltdauer im Leerlauf vielleicht 5% damit
sind nuch 95% Reserve übrig die Drehzal zu halten.
Peter schrieb:> Was meinst du mit niderohmig?
Kräftige Leltungen, niederohmige MOSFet, geringer Innenwiderstand der
Versorgung usw. Alles auf hohe Ströme ausgelegt. Deswegen kann so ein
BLDC Akkuschrauber auch mal einen M10 Bolzen abreissen.
Vielleicht mal die Abgabeleistung mit den Nenndaten des Motors
abgleichen.
Oder das ganze mit nem gekauften Regler vergleichen.
Wenn die Kommutierung grob falsch programmiert ist kanns natürlich sein,
dass da kein Drehmoment rauskommt.
Stephan schrieb:> Wenn die Kommutierung grob falsch programmiert ist kanns natürlich sein,> dass da kein Drehmoment rauskommt.
Das ist ja leicht zu prüfen. Der Motor muss einfach in jeder Lage von
alleine anlaufen und durchziehen. Mehr kann da nicht schief gehen. Wenn
das kein selbstgebauter Motor ist, wird die Lage der Sensoren auch
richtig sein.
Peter schrieb:> unter Last bricht die Drehzahl rapide ein.
Hast du mal auf einem Ostilloskop betrachtet, ob die Hallsensorsignale
unter Last immer noch synchron zur Motorachse erfolgen oder ob die
Spulenströme des Motors die Kommutierungspunkte beeinflussen ?
Ich habe heute mal das vorauseilende Schalten Probiert. Egal ob bei 10°
oder 60° im Unterschiedzu 0° wird die Drehzahl im Leerlauf höher. Bei
60° klingt das Motor wie eine Drohne, was bei 0° Teilweise ein holpern
ist. Unter Last fällt die Drehzahl dann aber bei jeer Eisntellung genau
so weit ab wie ohne vorauseilendes Schalten.
Peter schrieb:> Bei> 60° klingt das Motor wie eine Drohne
Da bist du schon im nächsten Sektor, wenn deine Gradangaben stimmen. Ich
habe dir aber vorhergesagt, das der Motor kein bisschen kräftiger wird.
Vllt. postest du endlich Motortyp und Ansteuerungsplatine.
Getestet habe ich jetzt bei 18 Volt und 60 Ampere, da fällt es stark
auf. Geteste wird mit dem MCVL-2 von Microchip. Diese Paltine ist aber
nur für 10 Ampere ausgelegt. Eventuell ist das Layout zu schwach? Die
Mosfet habe ich zu IRFS7430 getauscht.
Wenn der Motor ja Permanentmagneten drin hat, kannst du das Drehmoment
abschaetzen. Nimm einen Akkuschrauber und drehe am Motor. Der Strom der
rauskommt, ist proprtional zum Drehmoment, die Spannung proportional zur
Drehzahl.
Also einfach mal den Motor mit Widerstaenden belasten und den Strom
messen.
Die 100% dutycycle gehoeren natuerlich zu einer Spannung. Allenfalls
kann man die spannung erhoehen..
Peter schrieb:> Geteste wird mit dem MCVL-2 von Microchip.
Das mag ja ein nettes kleines Board sein, aber schon die verbauten
Shunts limitieren den möglichen Strom auf wenige Ampere. Da es ein
Entwicklungstool ist, mussten die Microchip Jungs auch mit Fug und Recht
keine dicken Endstufen verbauen, da 48V/10A für die vorgesehenen Motoren
wirklich ausreichen.
Peter schrieb:> Shunts sind ausgelötet und die steomüberwachung ausprogrammiert
Ich glaube nicht, das wir hier so weiterkommen. Du hast immer noch
nichts zum Motor und deiner Stromversorgung gepostet. Mit dem IRFS7430
hast du dir auch die Chance verbaut, auf 48V Versorgung zu gehen.
Auch Fotos vom Aufbau können nützlich sein.
Falls du wirklich die shunts ausgelötet hast, ist die Stromzufuhr zu den
Fets und somit zum Motor unterbrochen. Den Abgriff Richtung MC würde ich
an deiner Stelle nicht manipulieren, weil sonst möglicherweise der
Stromfluss nicht mehr kontrollierbar ist, oder dein Controller Schaden
nimmt.
Moin,
So ein Verhalten hatte ich auch mal. Motor wenig Kraft, lief nicht ohne
weiteres an (man musste ihn anwerfen).
Das Problem saß wie immer vor dem Monitor. Das Timing stimmte
schlichtweg nicht, bemerkt hatte ich es, als ich den Motor rückwärts
laufen lassen wollte.
Ich hatte zum Schluss eine extrem simple SW, die je nach Zustand der
Sensoren die passenden Spulen ansteuert - d.h. man holt aus den
Sensordaten 6 Zustände raus und weist die den 6 möglichen Zuständen für
die Spulen zu. Kein nach- oder vorauseilen, keine Berechnung
irgendwelcher UPM oder sonstwas. Der BL-Motor verhält sich - wenn alles
passt - wie ein normaler DC, d.h. die Drehzahl sinkt mit Belastung und
der Strom steigt. Wenn diesen Stand erreicht hat, kann man eine
Drehzahlregelung oben drauf packen.
Peter schrieb:> Wieso ist die Chance verbaut auf 48 Volt zu gehen
Datenblatt des IRFS7430: VDS max. 40V
Marvin M. schrieb:> Motor wenig Kraft, lief nicht ohne> weiteres an (man musste ihn anwerfen).
Über dieses Stadium sollte der TE aber hoffentlich hinaus sein. Ich
schrieb oben schon mal
Matthias S. schrieb:> Der Motor muss einfach in jeder Lage von> alleine anlaufen und durchziehen. Mehr kann da nicht schief gehen.
Ja, das kann man mit einem einfachen Array lösen, oder bei fertigen
Kontrollern die richtigen Anschlüsse der Sensoren und Phasen
ausprobieren. Das ist besonders lustig, wenn du, wie ich, einen 6kW
Motor an einen Kelly Controller anpassen musst, ohne das der Lieferant
die blasseste Ahnung hat und du in einer kalten Halle voller Schiffe
sitzt.
Motoranlauf und Drehrichtungsänderung, das passt alles. Ich löte jetzt
den Motor sowie Spannungsanschluss direkt an die Halbbrücken um die
dünnen Leiterbahen auszuschliesen.
Peter schrieb:> um die> dünnen Leiterbahen auszuschliesen.
Glaube kaum, dass es an den Leiterbahnen liegt, ein derart grosser
Leistungsabfall hätte die Leiterbahnen schon lange abbrennen lassen.