Hallo! Ich habe ein kleines Problem mit meinem eigenen BLDC-Controller. Die Rotorposition wird mittels 3-Hallsensoren bestimmt. Wenn ich die Lastspannung, während eine PWM mit einem Tastverhältnis von (z.b)75% läuft, langsam hochdrehe, dann fängt der Motor an zu drehen. So weit so gut. Wenn die Lastspannung allerdings größer wie etwa 4 Volt wird, dann stoppt der Motor abrupt. Daraufhin habe ich zusätzliche Induktivitäten in Reihe in die 3 Motorphasen geschaltet und den Versuch wiederholt. Nun war es möglich die Lastspannung bis auf etwa 20 Volt(bei 25% PWM, obwohl das Tastverhältnis keine Rolle spielt, bei diesem Phänomen) hochzufahren. Danach begann der Motor etwas zu pfeifen bis er letztendlich wieder stoppte. Wenn die Lastspannung bei 20Volt gelassen wurde, dann war es ebenfalls möglich das Tastverhältnis, der PWM zu erhöhen bzw. zu erniedrigen und der Motor änderte passend seine Drehzahl. Woran kann dieses Phänomen liegen? Eigentlich soll die Lastspannung demnächst 48Volt(der Motor läuft an einem gekauften Controller auch mit 48Volt und ohne Induktivitäten) betragen und ein Betrieb des Motors soll auch ohne die zusätzlichen Induktivitäten möglich sein. Die Schaltung in meinem Controller besteht aus 3 Halbbrücken(N-Mosfets) mit Bootstrap-C, welche mit dem Treiber IRS2184 angesteuert werden. Der Treiber wird wiederrum von einem ARM7 Prozessor gesteuert. Bei Bedarf kann ich noch einen Schaltplan posten. Über jegliche Ideen und Anregungen bin ich dankbar. Gruß Andreas
Schaltplan wäre hilfreich. Scheint mir aber möglicherweise ein Softwareproblem der Ansteuerung zu sein. Bin aber kein ARM-Experte, könnte zu einem Listing wenig sagen. Wird Block oder Sinuskommutiert gesteuert?
> dann war es ebenfalls möglich das Tastverhältnis, der PWM zu > erhöhen bzw. zu erniedrigen und der Motor änderte passend seine > Drehzahl. Die Drehzahl läßt sich nicht vom Tastverhältnis ändern.
Ich habe mal den Schaltplan angefügt. Anstelle des IR2183 Brückentreiber ist wie gesagt nun der IRS2184, wobei dort der IN Eingang mit der PWM beaufschlagt wird(Bin noch nicht dazu gekommen den auszutauschen). Mit der Lastspannung meine ich die +48V in dem Schaltplan. An den Mosfets kommt ohne die Lastspannung auf jeden Fall das richtige Ansteuermuster an, wenn ich den Motor von Hand drehe. Von daher sehe ich keinen Fehler in der Software. Sonst würde das mit den Induktivitäten meiner Meinung auch keinen Sinn machen. Es wird Blockommutiert gesteuert. Wieso kann man durch das Tastverhältnis nicht die Drehzahl ändern? Wenn der Oberschalter länger durchschaltet, dann wird der Motor auch länger bestromt. Ansonsten würde die PWM ja gar keinen Sinn machen.
Hi, ist es nicht so, dass durch das Tastverhältnis der PWM, neudeutsch Duty Cycle, dem Motor eine bestimmte Spannung aufgeprägt wird, z.B. ein Sinus. Die Frequenz dieses Sinus wiederum bestimmt die Drehzahl, zusammen mit Polpaaranzahl.
So weit ich es von Servomotoren her kenne, ist das nicht ganz so. Sonnst bräuchte man ja laut der oben gennanten Methode auch keine Sensoren zur genauen bestimmung der Rotorposition, sondern nur einen Drehzahlsensor. Man steuert nämlich das Drehfeld immer so, das es vor dem Rotor ist. Der Rotor wird sozusagen mitgezogen. Also alles so ähnlich wie bei einem Synchronmotor, nur das sich die Drehfeldgeschwindigkeit der Rotorgeschwindigkeit anpasst, und nicht umgekehrt. Mit der Stromstärke (also per PWM) regelt man jetzt die Kraft die der Motor entwickelt. Und je mehr Kraft er entwickelt, desto schneller wird er. Will man hingegen die Drehzahl regeln, braucht man einen zweiten übergeordneten Regelkreis, der anhand der Ist und Solldrehzahl den Stromregelkreis "füttert".
Die Sensoren brauche ich allerdings ja um zum richtigen Zeitpunkt zu kommutieren bzw dann die richtigen Ober/Unterschalter anzusteuern. Aber das funktioniert ja alles. Die Frage ist jetzt nur, warum funktioniert dieses bei einer höheren Lastspannung nicht mehr? Das ist das was für mich keinen Sinn ergibt.
Uwe schrieb: > Die Drehzahl läßt sich nicht vom Tastverhältnis ändern. Blödfug. Die Rotorgeschwindigkeit wird durch die Spannung aufgeprägt, die Positionsbestimmung dient lediglich dazu im richtigen Moment zu Kommutieren.
Andreas M. schrieb: > Die Sensoren brauche ich allerdings ja um zum richtigen Zeitpunkt zu > kommutieren bzw dann die richtigen Ober/Unterschalter anzusteuern. > Aber das funktioniert ja alles. Die Frage ist jetzt nur, warum > funktioniert dieses bei einer höheren Lastspannung nicht mehr? Das ist > das was für mich keinen Sinn ergibt. Hi Andreas, was verstehst du unter einer höheren Lastspannung? Die Spannung wird eigentlich nur duch die PWM (Duty/Cylce-Verhältnis) geregelt. Oder hast du ein Labornetzteil vor der Schaltung und veränderst an dieser? Ansonsten würde ich sagen, du kannst Duty/Cycle nur bis zu einem gewissen Prozentteil fahren (Bsp. 80% An), danach ist die Treiberschaltung nichtmehr in der Lage die oberen Mosfets zu schalten, da SPG am oberen Gate zu gering wird. (weil Bootstrap C nicht ausreichend geladen) Bin gerade an einem ähnlichen Projekt. Was mich an deinem Schaltplan verwundert sind die 47µ Kondensatoren Parallel zu deinen 100n (bei deiner Bootstrap Kapazität). Ich würde eher 100n und 10µ zusätzlich zwischen Vcc und GND der Treiber hängen, damit in dem Moment wenn deine Schaltung oben aus ist, der Bootstrap C schnell geladen werden kann. Ich denke hier könnte ein Prob liegen... Ich hab meinen Motor noch nicht am drehen gehabt, und mir ist derzeit ein bisschen schleierhaft ob es funktioniert. Man hat ja 3 phasen, wovon eine pro Kommutierung immer unbeteiligt ist.(bei Blockkommutierung) Von den 2 aktiven phasen ist bei einer die Low-Side durchgeschaltet und bei der 2. die PWM auf der Highside. Bzw. bei den Treibern welche für die PWM gerade zuständig sind, wird auch immer abwechseln noch die Low-Side geschalten, um eben den Bootstrap C aufzuladen. Schließt man denn hiermit nicht 2 der Motorwicklungen kurz, was zu einem bremsen führt? Oder stelle ich mir da gerade etwas falsch vor? Was für eine Frequenz verwendest du eigentlich für deine PWM? Grüße Chris
Hallo Chris! Als meine Signale soweit richtig waren, habe ich als Spannung an der Last meine 48 Volt gelegt und bin angefangen mein duty cycle hochzufahren. Hatte eigentlich erwartet, dass der Motor anfängt zu drehen, was er allerdings nicht gemacht hat. Also habe ich das ganze anders rum versucht. ich habe mein duty cycle auf 75% gestellt und die Lastspannung von 48 Volt auf 0Volt(kommt von einem Labornetzteil). Diese habe ich dann langsam von Hand am Netzteil hochgedreht. Quasi genau das, was ich sonst eigentlich mit dem duty cycle mache. Und da lief der Motor bei einer geringen Spannung. In Zukunft soll dies aber ja mit dem duty cycle laufen. Da hast du Recht, dass ich den dutycycle nur bis einer bestimmten %-Zahl fahren kann. Aber so hoch habe ich die eh noch nicht gefahren. Die 100n bei den 47µ sind einfach zur zusätzlichen Stabilität. Könnte man auch weglasssen. Mit den 10µ zusätzlich an den Treibern sehe ich nicht als Problem, da meim PWM-Signal ja nicht zusammenbricht und der obere Mosfet noch durchschaltet. Wenn der Low-side schaltet um den bootstrap aufzuladen, hast du recht, dass ich zu den Zeitpunkten 2 Phasen auf Masse lege und der Motor dadurch etwas bremst. Kurzschließen tut man da allerdings nix, da ja auch kein Oberschalter zu diesen Zeitpunkten an ist. Das Bremsen sollte eig auch so gering sein, dass du es gar nicht(kaum) merkst(denke ich zumindest). Bei meinem gekauften Controller wird der untere Schalter nicht getaktet um den Bootstrap aufzuladen. Dieses ist von den Signalen her der einzigste Unterschied. Wenn du richtig bremsen willst, dann musst du alle 3 Unterschalter schließen, dann sind alle Wicklungen gegen Masse. Meine PWM-Frequenz beträgt zu Zeit 16kHz, da der gekaufte Controller diese Frequenz auch fährt. Gruß Andreas
Hi Andreas, wenn Du sagst, Du hast die Signale an den Mosfets gemessen und da ist alles okay, dann kann es daran nicht liegen. Aber generell würde der 100n zwischen VS und VB ausreichen und der 47µ eher zwischen Vcc und GND, um dann schnell über die Diode laden zu können. :) Oder hast du ein so großen Bootrapkondensator laut Berechnung nötig? (ist aber eher eine Nebensache und sollte mit dem problem nichts zu tun haben) Was für einen µC verwendest du eigentlich? Wie werden deine Hallsensoren mit Spg. versorgt? Mit 3,3V passend für den Controller? Außlesen der Position per Interrupt auf nem normalen Port? Hast du mal noch die Signale von den Sensoren am Controller gemessen? Nicht dass da etwas nicht genug "entkoppelt" ist und Du einfach ab ner gewissen Spannung Störungen auf deinem Signal hast die so groß wie dein eigentliches Signal sind. Wenn der Motor sich bei geringer Spannung dreht und die Drehzahl sich auch noch per PWM Signal verstellen lässt, wüsste ich nicht was an deinem Program falsch sein sollte. Hast du mal die Signale bei höherer Spannung am Mosfet verglichen zu den Hallsensoren gemessen? Ist das Kommutierungsschema noch richtig? Grüße
Hallo Chris! Ich denke, dass ein zusätzlicher 10µ zwischen VCC und Gnd nichts bringt, da dieser ja auch schnell nachgeladen muss. Und ob meine Spannungsquelle jetzt diesen und den Bootstrap schnell nachladen muss, sollte kaum einen Unterschied machen, außer das der 10µ auch während des Oberschalters nachgeladen wird. Mein µC ist ein LPC2368 und die Hallsensoren werden mit 5V Spannung versorgt, da dieses der vorhandene Controller zu dem Motor auch so macht. Ich habe über das Problem gestern mit einem Professor, der sich damit auskennt gesprochen. Er kam darauf, dass der Motor einen anderen Kommutierungspunkt braucht, als den den die Hall-sensoren geben. Sprich ich sollte in meiner Tabelle für die Hallsensor-signale mal einen Schritt weiter schauen, oder zurück. Er kam darauf, als er den Motor während er lief festgehalten hat. Man kann dann ja das kommutieren quasi spüren. Der Motor hatte da bei verschiedenen Punkten leicht unterschiedliche Drehmomente. Das man in der Tabelle dann etwas weiter/zurückschauen muss liegt daran, dass es möglich ist, dass die Hall-sensoren aufgrund von Fertigungstoleranzen nicht passend sind. Ich habe dieses ausprobiert und der Motor lief gleich viel gleichmäßiger(überall gleiches Drehmoment) und auf einmal bis einer Spannung von 10Volt. Bei einer höheren Spannung bekomme ich dann Störungen auf den Hall-Sensoren, worauf der controller womöglich falsch kommutiert, da auch der strom zwischen 2 Phasen stark ansteigt. Da mein momentaner Aufbau noch etwas provisorisch ist(Layout ist noch nicht fertig :)), kann es sein, dass bei höheren Spannung die Signale auf die Hall-sensoren überkoppelt. Ich denke wenn das Layout fertig ist und alles schön kompakt gebaut ist, dann sollte das besser werden. Laut dem Prof. ist die Schaltung auf jeden Fall so korrekt. Auf deine Frage ein paar Einträge vorher: Wenn zwischenzeitlich 2 Unterschalter offen sind(durch das alternierende takten, dann bremst der Motor nicht! Der Strom befindet sich dann für einen kurzen Moment im Freilauf, was dem Drehen des Motors aber nicht stört. Von daher sollte das Problem vorerst einmal gelöst sein. Alles weitere wird sich zeigen, wenn die endgültige Platine fertig ist. Ich wünsche die noch viel Glück bei deiner Schaltung. Wenn du weitere Fragen hast, dann kannst du dich gerne melden. Gruß Andreas
Hi Andreas, das mit den beiden Unterschaltern hört sich doch schonmal ganz gut an! Mit dem 10µ zwischen Vcc und GND hab ich nur aus ner App.-Note. Du musst bedenken, der 10µ Kondensator würde wie du schon selbst sagst, auch geladen, wenn der obere schalter geschlossen ist. Die Kapazität zwischen Vcc und GND ist außerdem auch für den unteren Mosfet zuständig, um bei diesem beim Schalten, das Gate aufzuladen. Deshalb wird geraten die Kapazität zwischen Vcc und GND sollte min 10xC Bootstrap betragen. Zu den Kommutierungspunkten: Wie groß ist deine Auflösung der Hallsensoren? Ich denke du hast 6 versch. Werte, sodass du auf eine Auflösung in 60° Schritten kommst. Findest nicht, dass 60° vor oder zurück etwas viel sind für Fertigungstoleranzen? Da müsste ja schon gut was "schief" gegangen sein. Ich denke eher sagen wir mal +/- 10°. Hier müsstest du dann die Verschiebung des Kommutierungspunktes über eine zeitverzögerte Ansteuerung (diese auch noch Drehzahlabhängig)schalten, um den Fehler zu beheben. Evtl. kannst du ja nochmals nachfragen, aber ich weiß ja auch nicht die Auflösungsgenauigkeit. Ich melde mich, wenn Fragen bestehen nochmals hier bzw. schreibe Dir evtl. ne PN. Grüße Chris
Hallo Chris! Mit dem 10µ werde ich nochmal im Auge behalten. Den kann man ja zur not noch schnell einfügen. Ich bekomme pro umdrehung und pro Sensor 23 Impulse. Von daher sind das schon recht kleine Schritte und das könnte im Bereich von Fertigungstoleranzen fallen. Gruß
Hi! Okay, das könnte natürlich wirklich hinkommen. Jenachdem, welche Qualität der Motor aufweißt. Hänge einfach zu deinem 100n zusätzlich einen 10µ Kondensator parallel. Verwende am besten Keramik vielschicht SMDs. So hab ichs zumindest gemacht. grüße
Chris B. schrieb: > Hänge einfach zu deinem 100n zusätzlich einen 10µ Kondensator parallel. > Verwende am besten Keramik vielschicht SMDs. Wenn schon Keramik Vielschicht, dann NUR 10µF. Keine 100nF parallel. Das kann fiese Resonanzen geben und ist auch unnötig.
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.