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.
:
Bearbeitet durch User
Aber ein festes Timing bringt mir ja nichts wenn die Drehzahl unter Last sinkt. Etwas tut sie das ja trotzdem.
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?
Willst du eine stabile drehzahl oder nicht? Peter schrieb: > Kann mir da jemand helfen um die Drehzahl unter Last > stabiler zu halten?
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.
:
Bearbeitet durch User
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?
Beitrag #7084192 wurde vom Autor gelöscht.
Nein, wüsste gerade nicht wie. Dachte, dass ich das teste wenn ich weiss wie ich das Geld vorauseilen lasse.
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Klar stimmt. Bei 100% gibt es nix mehr. Werde mal mit dem Oszi prüfen ob die lückenlos ankommen
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.
Aber wie machen das Werkzeuge? Die haben scheinbar extreme Reserven. Die gleichen Motoren sterben bei mir bei reinem block
Stimmt die Versorgungspannung mit dem Motor überein? Zu dünne Verbindungsdrähte?
Falls die Hallsensoren von Fabrikseite montiert wurden, sollte die Position normalerweise stimmen, da gibts es nicht viel zu optimieren.
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.
Peter schrieb: > ... niderohmig ... Ja, so kannst du es auch nicht verstehen ;-) Probier´s mal mit "nieder" (https://www.wortbedeutung.info/nieder/)
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. Auch meine vermutung.
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.
Welche Leistung ist beim Motor angegeben? Eine Beobachtung des Motors oder des Controllers mit dem Oszi könnte doch etwaige Fehler aufdecken...
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..
:
Bearbeitet durch User
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.
Peter schrieb: > Shunts sind ausgelötet und die steomüberwachung ausprogrammiert Dann kann das nicht mehr funktionieren. Dir fehlen Grundlagen
Hä, warum sollte das nicht mehr funktionieren? Es geht doch nur darum sich nicht zu begrenzen.
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.
Du wirst es nicht glauben. Natürlich habe ich anstelle der Shunts, 2qmm Draht gelötet ;)
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.
:
Bearbeitet durch User
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.
Daran lag es auch nicht... Keine Änderung unter Last. Ich merke nur, ohne vorauseilen fällt die Drehzahl mehr als mit, bei 100% Duty.
Interessant, bei 5 kHz hat der Motor im Leerlauf schon weniger Drehzahl als bei 20 kHz
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.