Hallo! Ich habe gerade meine 1. "bldc-steuerung" zusammengebaut, und natürlich gleich einige Probleme festgestellt. Grundsätzlich dreht sich das ding zwar, ich kann auch per timer die geschwindigkeit verändern, allerdings nur bis zu einer gewissen max. geschwindigkeit (welche nicht über 100upm liegt) Hier die probleme: 1. Die Treiber MOSFETS werden SEHR heiss (man kann sie nicht mehr anggreifen 2. wenn ich über eine gewisse geschwindigkeit gehen möchte, dreht der motor nicht mehr, sondern "singt" nur noch im moment überprüfe ih den kommutierungszeitpunkt noch nicht, da ich noch nicht genau weis, wie ich das anstellen werde -bei so geringer drehzahl, sollte es mit zwangskommutierung allerdings noch genügen oder? Die verwendeten MOSFETS: IRF7425 (P-Channel) IRF7862 /N-Channel) Im Anhang ein rar file mit folgenden daten: Schaltplan und board als eagle file oszi-screenshots der p und n gates sowie der motoranschlüsse (gegen GND gemessen) Sourcecode als CVAVR project (auch mit texteditor zu öffnen) Ich bin für jeden Hinweis/jede Hilfe dankbar!
Rotaray wrote: > Hier die probleme: > 1. Die Treiber MOSFETS werden SEHR heiss (man kann sie nicht mehr > anggreifen Das klingt generell sehr nach einer fehlenden Freilaufdiode.
Rotaray wrote: > nun ich dachte, die interne diode der fets reicht aus? Zu dem Thema gibts einige Threads im Forum, zB: Beitrag "Re: Freilaufdiode."
Schaltungstechnisch kann man ja nicht viel falsch machen. Wenn man sieht wie einfach man das schaltungstechnisch realisieren kann: http://mikrokopter.de/ucwiki/BL-Ctrl_V1.2?action=AttachFile&do=get&target=BL_CtrlV1_1_sch.gif
Nico Erfurth wrote: > Rotaray wrote: >> nun ich dachte, die interne diode der fets reicht aus? > > Zu dem Thema gibts einige Threads im Forum, zB: > Beitrag "Re: Freilaufdiode." Das ist ganz was anderes, denn in diesem Fall handelt es sich um eine H-Brücke und da liegen immer die Dioden der Mosfets gegen GND bzw. V+. Somit können die Freilaufdioden garnicht fehlen. Ich würde daher eher darauf tippen, dass die Mosfets beide kurzzeitig gleichzeitig an sind.
das hab ich schon getestet - d.h. die brücke ohne motor dran getestet - das funltioniert einwandfrei - d.h. es gibt keinen questrom in der brücke.
Entweder versteh ich deine Oszidarstellung falsch, oder da ist was gravierend falsch. Sehe ich das richtig, dass die Gatesignale 2,5V Amplitude haben ? Dann ist es kein Wunder wenn die Mosfets heiß werden. Wo die Spikes auf 30V herkommen verstehe ich auch nicht. Du hast doch Elkos an den Betriebsspannung, oder ?
die spikes kommenv ermutlich von einer masseschleife, die ich mit den tastköpfen und deren masseanschlüssen erzeugt habe. oh - jetz wo du es sagst - du ahst recht laut dieser darstellung scheinen es wirklich nur 2.5 V zu sein - das ist mir gar nicht aufgefallen - ich messe das nochmal nach. rein theoretisch sollte aber VCC an den gates anliegen - sollte dem nicht so sein - eine idee was da falsch sein könnte?
So - ich hab die gatespannung nochmal nachgemessen: im leerlauf (ohne motor): spannungen zwischen 0 und VCC (6V) sobald ich allerdings den motor mit dran hänge, bricht die spannung auf ca 2-3V ein. Im Anhag ein screenshot der versorgung (der gelbe - die anderen 2 sind gates der n fets) Stromaufnahme der ganzen schaltung ist im moment ca 16A (ich weis, das ist viel zu hoch) kann es sein, das ich noch einen grundsätzlichen Fehler in meinem Aufbau habe?
Rotary wrote: > kann es sein, das ich noch einen grundsätzlichen Fehler in meinem Aufbau > habe? Im Aufbau nicht, aber der Software: Ich sehe nirgends PWM, somit ist beim Starten nur der ohmsche Widerstand der Wicklung wirksam, der die volle Spannung abbekommt daher ist es kein Wunder, dass die Spannung zusammenbricht.
Oder die Betriebsspannung des Motors der Drehzahl anpassen (was natürlich niemand macht), daher PWM. Das ist bei deinem Layout jetzt etwas ungünstig, (keine OC Pins) du müsstest die PWM daher in Software machen.
nich eine frage: welche frequenz sollte das PWM ca haben? sind 10kHz in ordnung?
Im Anhang nun ein screenshot des pwm signals am gate - ist das soweit in ordnung?
die stromaufnahme ist jetzt reduziert - auf ca 5A. aber eine höhere drehzahl schaffe ich noch immer nicht - wird es jetzt zeit, den kommutierungszeitpunkt zu bestimmen?
Noch etwas zu den MOSFETs: die werden noch immer SEHR heiss - ich habs auch schon mit freilaufdioden versucht (2W shottky) - hat nichts gebracht. hat noch jemand eine idee was falsch sein könnte?
Miss mal die Anstiegszeit der Gatespannung. Je kürzer desto Kühler. Gruß Marcus
Naja deine Treiberschaltung für die FETs verwendet einen Pullup. Damit wird man jetzt keine besondere Schaltzeiten erzielen. Besser: Treiber mit Push/pull Endstufe (siehe übliche Treiber ICs).
Die anstiegszeit beläuft sich auf 5 us - kann das schon der grund für die erwärmung sein?
Ja ! Gute Werte sind 20-200ns. Rechne mal: 10kHz sind 100µs. 5µs hoch, 5µs runter, also sind die Mosfets zu 10% im linearen Bereich.
eine frage hätte ich da allerdings noch: auf www.mikrokopter.de ist beim brushless regler für die p-channel fets das gleiche prinzip verwendet worden (die haben sogar einen 680R als pullup drin) ich hab meinen schon gegen einen 220R ausgetauscht. haben meine Fets einfach eine höhere gate kapazität und brauchen deshalb länger?
Das Problem mit der mangelhaften Drehzahlannahme hatte ich auch mal- mit Potis für Drehzahl und PWM und etwas Fingerspitzengefühl hat man den motor auch zu höheren Drehzahlen "überreden" können...
ich hab das ganze jetzt mal (hoffentlich richtig) nachgerechnet: wenn ich eine drehzahl von 1000upm haben will - muss ich den motor mit einem 16Hz signal ansteuern, d.h. jede phase wird für 1/3 der periodendauer bestromt - daswären dann ca 20ms pro phase - wenn ich das so mache, dreht sich der motor mit ca 1-2 umdrehungen pro sekunde - haut hier die zwangskommutierung nicht hin?
gibts du das sofort auf den motor oder drehst du ganz langsam hoch?
die 1000 hab ich zuerst direkt drauf gegeben, und dann auch mit langsam hochdrehen versucht - er will einfach nicht so recht - aber stimmt die rechnung so ca?
jetzt hab ich es zwar geschaft, die drehzahl zu erhöhen, aber der motor hat dabei überhaupt kein drehmoment - sobald ich in nur ein klein wenig berühre, bleibt er sofort stehen. wenn ich den duty cycle des PWM erhöhe, und der Strom 5A überschreitet, brennt mir mind. 1 MOSFET ab. (ich hab die freilaufdioden jetzt wieder drausen).
Hier mal eine gängige Treiberstufe für MOSFET's, welche die Gate-Kapazitäten sehr schnell umlädt. Kann mal schnell mal aus der Grabbelkiste erstellen.
eine frage zu der treiberstufe: kann ich die auch bei einem p-fet nehmen? ich denke nicht oder?
die treiberstufe ist einfach nur ein Stromverstärker, am ende kommt die gleiche Spannung raus, wie am eingang reingeht, nur kannst du sie stärker belasten. Damit diese Schaltung sinnvoll funktioniert brauchst du noch einen Spannungsverstärker davor.
Die Treiberschaltung kann natürlich auch bei P-FET'S genommen werden, vorausgesetzt, + des Treibers und Source des FET sind potentialgleich. Und das sieht in Deiner Schaltung ja so aus (Vcc). Und zur Ansteuerung genügen einige mA. Also wenn Du den bisherigen Abgriff am Kollektor Deines BC847 nimmst (incl. dem 680R Pull-Up) ist das voll i.O. sowohl für den P-FET als auch für den N-FET.
Wo bekommt man denn so ein luxus scope her? Will auch eins. :-) Wie ermittele ich den strom der bei der Verstärkerschaltung fließt? Also wenn ich z.B. mit 5 Volt ansteuere. Da müsste doch ein "Kurzschluss"strom fließen oder? Man könnte die P und N FETs auch direkt mit einen Port-Pin ansteuern wenn man sich auf 5 Volt beschränkt.
Bei der angegebenen Treiberschaltung fließt kein Kurzschluss-Strom, auch wenn man das befürchten könnte. Es handelt sich bei der Schaltungsart um einen "komplementären Emitterfolger". Würde man den mit einer ansteigenden Spannung bei 0 beginnend ansteuern, leitet zuerst der PNP. Dann etwa bei der Hälfte der Spannung leitet für einige 100mV keiner von beiden! bis dann der npn leitend wird und das bis Vcc beibehält. - Daher kann das Gebilde zu keinem Zeitpunkt einen Kurzschluss verursachen. - Daher fließt (ohne Last am Ausgang) auch nur Basisstrom, auch wenn Eingang + - schnell wechselt (Schaltbetrieb) So, jetzt zum Schaltbetrieb. Bei einer Ansteuerung mit 5V und dem Vorwiderstand 1k haben wir etwa 5V - 0,6V(Ube) / 1k = 4,4mA Basisstrom Nehmen wir mal einen BC337-40 (bzw BC327-40) mit der Verstärkung ~400 ergibt sich ein Kollektorstrom von 4,4 * 400 = 1760 mA. Die Transistoren sind damit sauber übersteuert und befinden sich im gewünschten (gesättigten) Schaltbetrieb. Und jetzt kommt das Entscheidende: Die BC's werden über den 10R dem MOSFET die Gate-Kapazität innerhalb Nanosek. umladen und den "halbleitenden" (verlustreichen) Zwischen- bereich der MOSFET's so kurz wie möglich gestalten. @ Marius ja, man kann problemlos FET's mit einem Port-PIN ansteuern, wenn man das ab und zu tut, mit Pausen > 1 sec. Dann haben die MOSFET's Zeit, Ihre heftige Verlustleistung während 1 ms in der folgenden Pause von 999 ms zu 'verdauen'. Wenn es sich allerdings um eine PWM-Ansteuerung handelt, mit vielleicht 100kHz, gibt's da keine solche Pausen und die MOSFET's hätten da gerne ein schnelles Umschalten mit minimalen Verlusten, wie das der Treiber liefert.
Danke für eure informationen! ich habe heute die ansteuerung für meinen motor geändert, und jetzt dreht er schon einigermaßen hoch. Ich habe dann versucht, den kopmmutierungszeitpunkt irgendwie zu messen, allerdings ohne erfolg. Ich hab die 3 phasen des motors am scope angesehen, und konnte keinen Zusammenhang zwischen Rotorstellung und diesen Spannungen finden. Nun ist in den meisten Anwendungen diese Schaltung, bei dem mit 3 widerständen von den phasen ausgehend eine art mittelpunkt gebildet wird, auch das habe ich versucht - mit dem selben ergebnis. Kennt sich jemand mit diesem Problem aus?
@ Rotary (Gast) >Kennt sich jemand mit diesem Problem aus? Nimm dir erstmal nen BLDC mit Hallsensoren, die lassen sich sehr gemütlich ansteuern. Die Ansteuerung von sensorlosen mittles Gegeninduktionsspannung ist wesentlich anspruchsvoller und braucht auch die passenden Treiber bzw. Messeingänge für die Gegeninduktion. http://www.st.com/stonline/stappl/productcatalog/app?path=/pages/stcom/PcStComDocumentTableView.showTechlitTreeDocs&level0=4&level1=214&level2=1444&level3=708&doctype=2&doctypecode=an&enttype=6&tname=TL_APPLI_NOTE_TREE_X_DOC&latest=N http://www.st.com/stonline/products/literature/an/9597.pdf http://www.st.com/stonline/products/literature/an/7209.pdf http://www.st.com/stonline/products/literature/an/7579.pdf MFG Falk
danke für den tip - aber ich hab mir leider schon einen "normalen" BLDC motor zugelegt - ohne hallsensoren. Ich hab auch schon zig appnotes von freescale, atmel und st durch, aber der Teil wo es um die messung dieser gegeninduktion geht, ist mir noch nicht recht verständlich.
Rotary wrote: > Ich habe dann versucht, den kopmmutierungszeitpunkt irgendwie zu messen, > allerdings ohne erfolg. Schaltplan von deinem Messaufbau, evtl. ein Bild von der Schaltung, Bild von der Anzeige am Scope. Dazu dann bitte noch genau erklären was du versucht hast wie und wo zu messen. Is die Theorie denn einigermaßen klar? Du hast doch so ein schönes Scope, mach doch mal eine Messung von allen drei Phasen gegen Masse bzw. gegen deinen virtuellen Sternpunkt. Dann müsste man doch schon etwas sehen. Messungen bei unterschiedlichen Geschwindigkeiten. Bzw am besten mal eine bei Vollgas ohne PWM (wenn das schon funktioniert bei dir). Dann sehen wir weiter. Gruß
Hier mal die Schaltung zu meinem derzeitigen Aufbau (die hab ich aus einem Toshiba 3-phasen BLDC controller appnote) Die screens vom scope kommen noch. Soweit ich das verstanden habe, sollte die bewegung des rotors zur nächsten phase einen sich ändernden pegel am komparatorausgang zur Folge haben. -> d.h. mit einem pinchange interrupt sollte das doch detektierbar sein - nur leider detektiert der Komparator bei der Schwelle vcc/2 auch jeden Puls meines PWM signals. Der Tiefpass hilft hier zwar ein wenig, "schöne" signale kommen jedoch auch nicht zu stande.
Im Anhang die screenshots von den 3 Phasen - einmal 2 phasen und der nullpunkt (2_phases_star.jpg)
Hallo, bei langsamen Geschwindigkeiten darfst Du nur dann messen, wenn dein PWM gerade ein ist. Nur dann ist es gültig. Bei höheren Geschwindigkeiten geht es dann auch so. Zur Schaltung noch ein Punkt. Du misst gegen Masse, wenn nun höhere Ströme fließen, kann es hier zu Verschiebungen kommen und deine Schaltschwelle stimmt nicht mehr. Besser wären hier 3 Komperatoren die jeweils gegen die aktuell zu messende Phase geschaltet sind. Die meisten Anwendungen im Netz mit Mega8 benutzen da den internen Comperator mit Umschaltung. Gruß Jürgen
Hallo Jürgen! Danke für den Tip - wenn ich Dich rihtig verstehe, muss ich die Spannung im mittelpunkt (hinter den 3 Widerständen) mit der gerade nicht aktiven Phase vergleichen, wenn mein PWM ein ist. Wann muss ich dann auf die nächste Phase schalten? Wenn die Mittelspannung höher ist als die der nicht aktiven windung?
Hallo, >Wann muss ich dann auf die nächste Phase schalten? Wenn die >Mittelspannung höher ist als die der nicht aktiven windung? Du erwartest ja mit jedem Schaltvorgang auf eine anderen Pase das "Zero Crossing" und zwar immer an der "freien". Und die weißt Du ja. Und abhängig bei welchem Schaltpunkt Du dich gerade befindest weißt Du auch ob es eine aufsteigende Spannung sein muss oder eine abfallende! Aber wie schon oben gesagt es gibt einige Seiten im Netz die Dir hier weiterhelfen. Die hat mir geholfen! http://home.versanet.de/~b-konze/blmc_bko/blmc.htm Gruß Jürgen
Hallo, Sorry daß ich den Thread ausbuddel aber so alt und müffelig ist der ja zum Glück noch nicht. :) Ich habe einen kleinen BLDC-Motor der ist aber in Sternschaltung verschaltet. Kann ich die Schaltung trotzdem verwenden oder muß ich was ändern? An der Schaltungsart des Motors kann ich ja nix ändern :) Wie hole ich mir das Kommutierungssignal? Ich hab mal irgendwo eine Schaltung mit Komparatoren gesehen finde die aber nicht mehr. Ich möchte als Kommutierungssignal wenn möglich keinen AVR mit ADC verwenden. Wenn ich nur "Digitalsignale" habe kann ich das ganze zur Sicherheit mit schnellen Optokopplern voneinander entkoppeln. Vielleicht kann mir auch jemand erklären warum bei den meisten Reglern an den FETs keine Dioden dran sind, ich dachte immer die internen Dioden der FETs wären ziemlich schlecht? Kann man da ohne Probleme welche dranpappen oder gibt das Probleme mit der Rotorlageerkennung? Was auch noch sehr interessant wäre ist wie man eine "Bremsung" Realisiert wenn ich z.B. von einer hohen Drehzahl "runterschalten" möchte auf eine niedrigere. Danke :)
@Stefan Müller (stefan-mueller) >verschaltet. Kann ich die Schaltung trotzdem verwenden oder muß ich was AFAIK ja. Der Motor hat dannnur bei geleicher Spannung weniger Leistung. >Wie hole ich mir das Kommutierungssignal? Von den Hallsensoren. Oder über die Gegeninduktion der inaktiven Spule. >ich nur "Digitalsignale" habe kann ich das ganze zur Sicherheit mit >schnellen Optokopplern voneinander entkoppeln. Wozu? >Vielleicht kann mir auch jemand erklären warum bei den meisten Reglern >an den FETs keine Dioden dran sind, ich dachte immer die internen Dioden Keine Ahnung. >Was auch noch sehr interessant wäre ist wie man eine "Bremsung" Einfach den MOTOR kurzuschliessen, z.B, alle Phasen auch LOW schalten. Aber bitte nicht die Stromversorgung kurzschliessen ;-) MFG Falk
Hallo Falk, die Stromversorgung kann ich nicht kurzschließen, ich verwende "intelligente" MOSFET-Treiber von IR die eine Shoot-Trough Protection haben über eine Deadtime. Ich hab mir schon mal ne Endstufe so gesprengt. OK war nur für nen kleinen Stepper hat aber recht laut geknallt (und gestunken) Die Schaltung war naher hinüber. :) Ich habe mittlerweile rausgefunden weshalb keine ext. Dioden an den BLDC-Modellbaureglern dran sind. Es werden die FETs als Dioden verwendet, Stichwort Synchrongleichrichtung. Die Steuersignale sind nicht ganz ohne da sehr Timingkritisch das soll aber für sehr wenig Verluste sorgen. Ganz durchgestiegen bin ich aber noch nicht ich lese grade noch Datenblätter und div. Internetseiten. Übrigends: Weißt du was mit bldc.de passiert ist da kommt nix mehr die Seite ist leer. Ich habe jetzt mehrfach hier im Forum gelesen daß dies eine gute Infoquelle gewesen sein soll. Das mit der Bremsung leuchtet mir ein aber ich will ja nicht bis zum Stillstand runterbremsen sondern nur die Geschwindigkeit verringern bis zu einem kleineren Wert. Wenn ich das Bremsen unterbreche wie finde ich raus mit welcherm Speed der Motor noch dreht? Was mich fasziniert hat ist letztens ein Kompaktservo von Mitsubishi-Electric. Der kann einen Sollwert (vorgegeben Digital oder über 0-10V Schnittstelle) innerhalb von Sekundenbruchteilen annehmen. Wie machen die das, der Rotor eines BLDCs ist ja je nach Leistung des Motors recht schwer und somit träge. Es muß irgend einen Trick dabei geben. Zwangskommutierung kann man vergessen daß habe ich schon mal mit einem Modellbaumotor probiert, ein wenig last drauf und der Rotor bleibt stehen und pfeift da er dem Drehfeld nicht mehr folgen kann. Hast du noch ne Idee?
@Stefan Müller (stefan-mueller) >BLDC-Modellbaureglern dran sind. Es werden die FETs als Dioden >verwendet, Stichwort Synchrongleichrichtung. Naja, da werden aber nciht die FET genutzt, sondern die technologisch bedingte, eben etwas schlechtere Diode. > Die Steuersignale sind >nicht ganz ohne da sehr Timingkritisch das soll aber für sehr wenig >Verluste sorgen. Naja, nicht wirklich. Man darf eben hat keinen Kurzschluss machen, wie bei den H-Brücken. Der Rest ergibt sich. In der Zeit, wo der untere FET noch nciht schaltet leitet die DIode mit relativ grosser FLussspannung und damit verlusten. EIn paar Dutzend Nanosekunden später schaltet der FET und verringert damit massiv den Widerstand und somit die Verlustleistung. >Übrigends: Weißt du was mit bldc.de passiert ist da kommt nix mehr die Ich kenn die Seite nicht. >Das mit der Bremsung leuchtet mir ein aber ich will ja nicht bis zum >Stillstand runterbremsen sondern nur die Geschwindigkeit verringern bis >zu einem kleineren Wert. Wenn ich das Bremsen unterbreche wie finde ich >raus mit welcherm Speed der Motor noch dreht? Drehzahlmesser. Oder? >Wie machen die das, der Rotor eines BLDCs ist ja je nach Leistung des >Motors recht schwer und somit träge. Es muß irgend einen Trick dabei Wie es im Detail geht weiss ich nicht. Aber von den Festplatten her ist das genauso. Mit so einen speziellen Servomotor, der ja nur Bruchteile einer Umdrehung dreht kann man dass in Millisekunden positionieren. >Hast du noch ne Idee? Die haben wahrscheinlich erstens ne Postitionsmessung drin und zweitens ne clevere Regelung. Kommutiert wird das AFAIK nix, sondern ein Strom eingestellt, welcher die Position ergibt. GGf mit Zwei Spulen, zum links/rechts schwenken. http://www.storagereview.com/guide2000/ref/hdd/op/act.html Hab ich mal auf die Schnelle gefunden. MFG Falk
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.