Hallo zusammen, ich beschäftige mich seit kurzem mit Brushless Motoren und den Reglern dazu. Das Prinzip habe ich voll verstanden,allerdings habe ich noch relativ wenig Ahnung von Mosfets und deren Dimensionierung und Berechnung. Frage von mir. Kann ich den Schaltplan von BL-CTRL-V1-1 übernehmen, den MC aber durch einen Arm ersetzen der mit 3V3 läuft bzw muss ich dann die Dimensionierung der Widerstände für die Mosfets und für die Bemf anpassen? Hier der Schaltplan http://www.mikrokopter.de/ucwiki/BL-Ctrl_V1_1?action=AttachFile&do=view&target=BL_CtrlV1_1_sch.gif Gruß kappos
:
Verschoben durch Admin
Habe noch weitere Fragen: -Brauche ich dann für jede Phase ein eigenes PWM Signal sprich insgesamt 6 PWM Signale= Wenn ja müssen aber alle gleich sein, sprich Phase und Duty Cycle? - Reicht mir ein 16bit Counter für einen Quadrocopter Motor oder wäre es sinnvoll gleich auf 32bit Counter für die PWM zu gehen? Gruß Kappos
Du kannst den Controller tauschen, na klar. Aber dann bist Du schnell bei einer Neukonstruktion, weil hier und da dann unterschiedliche Eigenschaften der Controller ins Spiel kommen. Prinzipiell würde ein einzeles PWM-Signal reichen, welches dann je nach Phase zu den passenden Mosfets umgeleitet wird. Ein 16-Bit-Counter reicht, ist schon eher zuviel des Guten. 32 Bit ist Käse. Der Zyklus wird zu lang. Selbst ein 1 GHz ARM bräuchte ca. 4 Sekunden für einen Pulszyklus. 2^32 ergibt mehr als 4 Milliarden Takte zum Durchzählen. 10 Bit ergibt 1024. 8 Bit ergibt 256. Bei 20 Mhz ergibt das ca 20 bzw 80 KHz PWM Takt. Der PWM-Takt muß ein Vielfaches der Motordrehzahl betragen, da je nach Bauart des Motors ein entspreschendes Vielfaches an Kommutierungen pro Umdrehungen fällig werden. Der PWM-Takt muß mindestens so hoch sein wie die Kommutierungsfrequenz. Im Idealfall ist die Frequenz identisch oder beträgt ein Vielfaches. Liegt er niedriger hat man eher eine (Ab-)Art einer Wellenpaketsteuerung als eine echte PWM. Im Prinzip wäre das auch irgendwie eine PWM, irgendwie. Das ginge !eventuell! zwar auch, ist aber nicht das was man will. Man handelt sich damit ein paar Problemchen ein. Unter anderem kann man damit besonders bei niedriger Drehzahl Bauteile überlasten, da volle Kommutierungspulse auf (zu) niedrige Gegen-EMK treffen und somit ein erhöhter Strom fließt.
ich würde dir für die ansteuerung solche halbbrückentreiber (z.B. ir2104) empfehlen, der ist auch 3,3V kompatibel, man braucht nur n-mosfets und man kann während der entwicklung nicht versehentlich von vcc nach gnd durchschalten, was einem etliche mosfets spart :)
Thomas schrieb: > und man kann während der entwicklung nicht versehentlich von > vcc nach gnd durchschalten, was einem etliche mosfets spart :) Kann ich so nicht bestätigen. Also ich bastel schon lange an BLDC Reglern rum und ich krieg selbst mit einem IR2101 meine Mosfets kaputt, und ich finde nicht raus, warum, mal geht es, mal nicht, und das fast ohne Last. Ich will damit einfach nur sagen, das es nicht ganz ohne ist, so einen Regler zu bauen, und einfach einen anderen Schaltplan nachbauen wird so nicht funktionieren, wenn du nicht verstehst, was passiert. Und du scheinst nicht zu verstehen, was du machst, sonst würdest du nicht kappos schrieb: > muss ich dann die > Dimensionierung der Widerstände für die Mosfets und für die Bemf > anpassen? sowas fragen. MfG Dennis
> Also ich bastel schon lange an BLDC Reglern rum und ich krieg selbst mit > einem IR2101 meine Mosfets kaputt Darum empfielt Thomas ja auch einen IR2104
Lese-Experte schrieb: > Darum empfielt Thomas ja auch einen IR2104 Das habe ich schon bemerkt, weil dieser eine eingebaute Totzeit hat und auch nur einen Pin nutzt, für High- und Lowside zusammen. Aber IR baut nunmal viele solche Treiber, darum sollte man sowas mal mit erwähnen, das ein solches IC nicht die Garantie ist, das jetzt alles schön und einfach wird. MfG dennis
Dennis H. schrieb: > Lese-Experte schrieb: >> Darum empfielt Thomas ja auch einen IR2104 > > Das habe ich schon bemerkt, weil dieser eine eingebaute Totzeit hat und > auch nur einen Pin nutzt, für High- und Lowside zusammen. Aber IR baut > nunmal viele solche Treiber, darum sollte man sowas mal mit erwähnen, > das ein solches IC nicht die Garantie ist, das jetzt alles schön und > einfach wird. > > > MfG dennis Ne das auf keinen Fall. Da hast du schon recht. Aber Hexenwerk ist es auch wieder nicht ;-)
Danke für die vielen Antworten so langsam wird mir das alles klar :-) @Dennis H. Ich verstehe so langsam was da passiert. Versuche mir das alles anzueignen. Habe das so langsam auch verstanden. Habe jetzt mal was zu Papier gebracht. Passt der Schaltplan soweit? Zwei Fragen sind noch offen bei mir: Was ich noch nicht ganz verstehe ist die BEMF. Das Prinzip ist mir in etwa klar was ich aber zb. nicht verstehe ist die Dimensionierung der Widerstände. Bzw. Signal NULL_C wird doch durch den Spannungsteiler von R13 und R14 auf die Hälfte von Phase_C gebracht. Ist das soweit richtig? Wenn ja würde das aber heißen das ich meinen Eingang in den MC definitiv schrotten würde, da ja dort 6V anliegen würden, nach meinem Verständnis muss ich dann diesen Spannungsteiler anpassen das maximal meine 3V3 dort anliegen können. Richtig? 100Ohm Widerstand für die Gates ist ok? Kann eigentlich noch niedriger sein!?
Der Schaltplan sieht im Prinzip sinnvoll aus, ich würde zusätzlich noch zwei Sachen vorsehen: - Freilaufdioden über die FETs, sonst sterben die inegrierten Dioden ganz schnell, wenn du nicht perfekt synchron arbeitest. - eine Stromerfassung per Shunt. Die Längswiderstände vor den Gates würde ich erst mal als 0 Ohm ausführen. Sie bilden zusammen mit der Gatekapazität einen Tiefpass, die den FET langsamer schalten lassen. So was macht man eigentlich nur aus EMV-Gründen. Die dürften bei einem Bastelprojekt so lange kein Problem sein, bis das Radio von Frau/Kind/Nachbar nur noch Fiepen und Rauschen von sich gibt. Zum Summeneingang AVG: Eingänge sterben erst mal nicht durch Überspannung, sondern durch Überstrom. Alle Eingänge haben Schutzdioden nach VDD, deswegen stehen in den Max Ratings meistens auch VDD+0,3V als Limit drin. Wenn du den maximalen Strom über einen Vorwiderstand begrenzt, können auch höhere Spannungen anliegen, die Diode begrenzt die Spannung. Sie kann eben nur einen begrenzten Strom tragen, sonst brennt sie durch - deswegen der Vorwiderstand. Zur Spannung, die sich an AVG einstellt: in den Pin hinein fließt ein (kleiner) Strom, siehe Datenblatt. Stelle für den Pin einmal die Knotenregel auf, dann ergibt sich der Wert an AVG recht schnell. Willst du mit Sinuskommutierung oder mit Blockkommutierung arbeiten? Wenn du einen ARM einsetzt, wohl eher Sinuskommutierung. Das ist zwar vom Laufverhalten des Motors besser, erfordert aber wesentlich mehr Rechenleistung als Blockkommutierung. Der Hauptaufwand wird in der Software liegen. BTDT. Max
Max G. schrieb: > - Freilaufdioden über die FETs, sonst sterben die inegrierten Dioden > ganz schnell, wenn du nicht perfekt synchron arbeitest. Habe dazu noch einmal gesucht. Habe viele Aussagen gefunden, die sagen das dies bei heutigen FETs nicht mehr benötigt werden, da die internen Dioden völlig ausreichend sind. Was denkt ihr? Allerdings kommt es ja wahrscheinlich in der Entwicklung öfters vor das die Phasen zueinander nicht passen und dadurch viel höhere Ströme unterwegs sind, reicht dort die interne Diode dann trotzdem noch? > - eine Stromerfassung per Shunt. Kommt dann in V2 aber denke das ich vorerst mal ohne Strommessung auskomme. > Die Längswiderstände vor den Gates würde ich erst mal als 0 Ohm > ausführen. Sie bilden zusammen mit der Gatekapazität einen Tiefpass, die > den FET langsamer schalten lassen. So was macht man eigentlich nur aus > EMV-Gründen. Die dürften bei einem Bastelprojekt so lange kein Problem > sein, bis das Radio von Frau/Kind/Nachbar nur noch Fiepen und Rauschen > von sich gibt. Habe den Längswiderstand mal rausnehmen, wobei ich bei jeden Schaltung die ich gefunden habe Längswiderstände gesehen habe > Zum Summeneingang AVG: Eingänge sterben erst mal nicht durch > Überspannung, sondern durch Überstrom. Alle Eingänge haben Schutzdioden > nach VDD, deswegen stehen in den Max Ratings meistens auch VDD+0,3V als > Limit drin. > Wenn du den maximalen Strom über einen Vorwiderstand begrenzt, können > auch höhere Spannungen anliegen, die Diode begrenzt die Spannung. Sie > kann eben nur einen begrenzten Strom tragen, sonst brennt sie durch - > deswegen der Vorwiderstand. Habe ein 1k Vorwiderstand eingefügt > Zur Spannung, die sich an AVG einstellt: in den Pin hinein fließt ein > (kleiner) Strom, siehe Datenblatt. Stelle für den Pin einmal die > Knotenregel auf, dann ergibt sich der Wert an AVG recht schnell. Wenn ich es richtig weiß VSS(12V) /2 Aber da ich dies ja mit dem ADC auswerte muss ich doch das doch durch den Spannungsteiler der BEMF auf 3V3 runter regeln oder? Da doch der ADC sonst immer vollen Ausschlag hat? > Willst du mit Sinuskommutierung oder mit Blockkommutierung arbeiten? > Wenn du einen ARM einsetzt, wohl eher Sinuskommutierung. Das ist zwar > vom Laufverhalten des Motors besser, erfordert aber wesentlich mehr > Rechenleistung als Blockkommutierung. Das weiß ich noch nicht. > Der Hauptaufwand wird in der Software liegen. BTDT. Das ist klar, wobei ich genau darauf hinaus will. :-) Anbei nochmal der aktualisierter Schaltplan
kappos schrieb: > Was ich noch nicht ganz verstehe ist die BEMF. Den Spannungsteiler hast du ja schon erwähnt. Den musst du natürlich so anpassen, das dein µC Pin nicht zuviel Spannung abbekommt. Weniger, um ihn zu schützen, sondern du benötigst diese Information schließlich, da nützt dir ein übersteuerter ADC nix, wobei ich mit einfacher Block Kommutierung den Komparator nutze, aber ist das selbe Problem. Ich denke sogar fast, das ist ein bewusster Fehler von Mikrokopter, damit eben nicht einfach so jeder den Schaltplan nachbaut. Also R13 und R14 bilden einen Spannungsteiler. R13 zusammen mit C11 ist ein Tiefpass, um nicht jede kleinste Störung zu messen. R17 bis R19 bildet einfach nur einen virtuellen Sternpunkt, weil du mit dieser Sternpunktspannung die jeweilig offene Phase vergleichst. Zumindest bei Block-kommutierung, mit Sinus hab ich noch nichts gemacht, keine Ahnung, ob man da anders den Stand des Motors rausfindet. Ansonsten könntest du an deinem Schaltplan vielleicht noch eine Spule mit 10µH oder so in Reihe vor deinen Spannungsregler machen. Die Mosfets schalten ja schon ziemlich derb ständig die Versorgungsspannung und da entstehen hier und da entsprechende Spitzen, die du in deinem ARM nicht gebrauchen kannst. Eine Spule in Verbindung mit dem Kondi, den du schon hast, sollte da eine gewisse Sicherheit geben. Desweiteren würde ich die Bootstrap Kondis von 100nF auf 1µF erhöhen, ist auch eher mit bisschen Reserve gerechnet. Deine Mosfet-Typen kann ich nicht richtig erkennen, IRLR kann ich noch lesen, die Zahlen nicht mehr, ich nutze IRLR 7843. Lese-Experte schrieb: > Aber Hexenwerk ist es > auch wieder nicht ;-) Das hab ich auch mal gedacht und sollte mich nie so getäuscht haben, ist eben Mist, wenn bei jedem kleinen Fehler sofort alles in Rauch aufgeht und ich erstmal wieder alle Halbleiter tauschen kann. Das schlimmste ist, ich finde nicht raus, warum es manchmal raucht, und manchmal nicht, da weder Software, noch Hardware verändert werden, na egal, ist ein ander Thema. MFG Dennis
Ich nutze ebenfalls den 7843. Ist das so krass das sofort was abraucht? Was die Bemf angeht passe ich den Spannungsteiler an. @Dennis wieviel Erfahrung bzw Zeit hast denn in deinen Regler schon gesteckt? Hast mir irgendwelche Tipps?
Kappos schrieb: > Ich nutze ebenfalls den 7843. > Ist das so krass das sofort was abraucht? > Was die Bemf angeht passe ich den Spannungsteiler an. > @Dennis wieviel Erfahrung bzw Zeit hast denn in deinen Regler schon > gesteckt? > Hast mir irgendwelche Tipps? Naja, wenn du den IR2104 nutzt, sollte es gehen, mit dem abrauchen. Es ist einfach mal so, sobald der obere und untere Mosfet auch nur für µs gleichzeitig durchgeschalten sind, fließt da soviel Strom, das beide definitiv kaputt sind. Und wenns krass kommt, der Treiber IC auch gleich mit. Die Mosfets haben nunmal nur 3 mOhm RDSon, da kann richtig viel Strom fließen, solange es die Quelle mitmacht. Wenn du mich nach der Zeit fragst, dann muss ich dir als erstes sagen, das ich nicht studiert habe, ich bin Elektromeister und alles, was ich über µC weiß, habe ich hier auf der Seite gelernt. Soll also heißen, ich habe sicherlich einige Fehler gemacht, die einer, der studiert hat, nie gemacht hätte. Ich habe mit kleinen Mosfets mal angefangen, also erstmal einen Test-Regler gebaut. Mit diesem habe ich einen Festplattenmotor zum drehen bekommen. Dieser war mit IR2101 und IRL1205(wenn es die gibt, hab die Bezeichnung nicht mehr genau im Kopf). Danach wollte ich nun mehr Strom schalten und habe die V2 vom Mikrokopter nachgebaut. Also ohne Treiber-IC, mit je einem P- und einem N-Mosfet. Daran bin ich ziemlich gescheitert, hab ich hier auch in nem Thread detailiert auseinander genommen, ich habe es einfach nicht zum funktionieren gebracht. Ich habe also diesen Schaltplan aufgegeben. Im Februar habe ich dann ein Layout gemacht, mit IR2101 und den IRLR7843. Dieses ist vor etwa drei Wochen angekommen, doch seitdem habe ich es noch nicht zum funktionieren gebracht. Ich nutze als Controller den Attiny261. Seine Timer sind speziell für BLDC ausgelegt. Ich habe diesen µC zuerst ohne Mosfets probiert, um zu überprüfen, ob mein Programm überhaupt das richtige macht, also mit Totzeit zwischen High und Lowside und so. Das passt alles. Trotzdem rauchen mir regelmäßig die Mosfets weg. Vor ein paar Tagen kam mir jetzt allerdings noch eine Idee, wo das Problem liegen könnte. Die Ausgänge für meine drei Halbbrücken sind teilweise gleichzeitig mein ISP Anschluss. Jetzt kann ja meine Hardware außerhalb des Attiny nicht feststellen, ob ich den Attiny gerade programmiere, oder nicht. Ich denke, dort wird bei mir der Pfeffer vergraben sein. Ich hatte zwar schonmal dran gedacht und habe bewusst einen Widerstand nicht bestückt, damit meine Mosfets nicht mit dem Pegel meines ISP Adapters mitgehen. Dadurch konnte ich erstmal nicht mehr gleichzeitig die High und Lowside durchschalten. Nur bestand das Problem nach wie vor. Jetzt kam mir noch die Idee, das ich vielleicht am Beginn meines Programms nicht sofort mit der PWM für die Mosfets beginnen sollte, sondern erstmal alle Ausgänge auf 0 schalten und dann eine Weile warten, bevor ich weiter mache. Weil einzelne Mosfets gehen nach wie vor mit meinem ISP mit. Wenn ich jetzt fertig mit programmieren bin und ich sofort den gegenüberliegenden Mosfet durchschalte, brennt mir auch wieder alles ab, weil der andere Mosfet noch nicht gesperrt hat. Habs aber noch nicht ausprobiert, ich bastel nicht jeden Tag dran. Es ist manchmal recht erschütternd, wenn man voller Elan an die Sache ran geht, und dann gibts ein Rauchzeichen nach dem anderen, und man versteht nicht, wieso. Bis zum messen kommt man nicht, weils vorher raucht, somit kann man sich nichtmal nen Signalverlauf ansehen. Also manchmal muss man auch einfach mal einen Tag Pause machen und in Ruhe drüber nachdenken, das hat mir viel geholfen, beim Verständnis. Weil es nicht immer eindeutig ist, ob es ein Hardware-Fehler oder ein Softwarefehler ist. Aber lass dich nicht entmutigen, Spaß macht es nach wie vor und man lernt echt viel dabei, vorallem, das die Theorie selten mit der Praxis übereinstimmt. Ich persönlich lerne auch viel darüber, Dinge mal aus verschiedenen Blickwinkeln zu betrachten, eben um zu verstehen, warum jetzt wieder ein Mosfet kaputt gegangen ist. Also mach dir keine Gedanken, wenn doch mal ein Mosfet kaputt ist, denke einfach vorher dran, dir ein paar mehr zu bestellen, da ist so einer schnell gewechselt. Welche beruflichen Voraussetzungen und persönliche Erfahrungen mit anderen Projekten bringst du mit? MfG Dennis
Danke für den ausführlichen Bereicht Dennis. Ich war an einem Technischem Gymnasium und habe Softwaretechnik studiert. Dort hatten wir allerdings sehr viel Elektrotechnik und Elektronik. Daher bringe ich da auf jeden Fall ziemlich viel Wissen mit. Allerdings fehlt mir einfach viel die Praxis. Bin mal gespannt wie das alles so klappt :-) Was mich grad zum Verzweifeln bringt ist die Dimensionierung der Bemf Widerstände. Wenn ich an NULL_A 3.3V haben will dann gilt doch: U1/R11 = U2/R16 R11=4.7K Und es gilt Ug=11.1V , U2=3.3V und U1 = 7.8V Dann ist doch R16 = U1/R11*U2 = 7,8V /4,7k * 3.3V R16= 5,4K Ist das Korrekt? Dann die Dimensionierung der AVG Widerstände ist mir nicht klar wie man diese ausrechnet. Gruß Kappos
@ Dennis Es kann auch indirekt an der Software liegen. Du hast ja für die drei Phasen drei HIGH/LOW-Paare. Dein Treiber bzw deine Software verhindert zwar über die intgrierte Totzeit, daß Du aktiv innerhalb eines Paares beide durchschaltest, aber eines kann dadurch nicht verhindert werden. Die Spuleninduktivität, nicht die BEMF alias Gegen-EMK, treibt den Strom weiter. Ist die Totzeit zu groß, treibt die Induktivität den Strom durch die Bodydiode des komplementären Fet bevor dieser geöffnet wird. Diese parasitäre Diode braucht Zeit um wieder zu schließen. Wird der Treiber wieder umgesteuert bevor die Reverserecoverytime durch ist hat man einen kurzen. Prinzipiell ist dieses Szenario denkbar besonders bei hohen PWM-Frequenzen. Ob dies bei deinem Aufbau nun konkret zutrifft vermag ich aus der Ferne und ohne Oszi nicht zu sagen. Für weitere Experimente würde ich eine aktive oder passive (Hochlast-Widerstand oder schwache nicht niedrohmige Stromversorgung) Strombegrenzung für den Leistungsteil nehmen. Die Steuerung wird selbstverständlich weiterhin stabil versorgt. Damit werden eventuelle shoot-throughs entschärft bis diese ausgeschlossen sind. Bei einer aktiven Strombegrenzung muß aber sichergestellt sein, daß sie schnell genug eingreift. Manche preiswerte Aufbauten oder auch Fertiggeräte regeln dafür zu langsam gegen. So oder so dürfen dann aber keine Stützkondensatoren zwischen der Spannungsversorgung bzw Strombegrenzung und den Fets liegen. Es kann aber sein daß dadurch die Induktion soweit geschwächt wird, daß der Strom durch die Bodydiode früh genug auf Null geht, so daß die Diode dann plötzlich doch rechtzeitig schließt. Man muß also ein bischen mit den Parametern spielen. Vielleicht erspart dir das einige abgerauchte Fets. Gruß Carsten
kappos schrieb: > Was mich grad zum Verzweifeln bringt ist die Dimensionierung der Bemf > Widerstände. > Wenn ich an NULL_A 3.3V haben will dann gilt doch: > > U1/R11 = U2/R16 > > R11=4.7K > > Und es gilt Ug=11.1V , U2=3.3V und U1 = 7.8V > > > Dann ist doch R16 = U1/R11*U2 = 7,8V /4,7k * 3.3V > R16= 5,4K > > Ist das Korrekt? Ich denke, diese frage kannst du dir selbst überlegen. Du hast 11.1V insgesamt über dem Spannungsteiler anliegen. Zwei fast identische Widerstände, was ist wohl die logische Schlussfolgerung? An beiden Widerständen fällt ungefähr die Hälfte ab. Also nur grob über den Daumen gepeilt. Auf jedenfall nicht 3.3V über dem einen, und 7.8V über dem anderen. http://www.4led.de/berechnungen/spannungsteiler.htm Hab ich fix gefunden, der sagt, das du einen Spannungsteiler aus 11,1k und 4k7 brauchst, um auf deine 3.3V zu kommen. kappos schrieb: > Dann die Dimensionierung der AVG Widerstände ist mir nicht klar wie man > diese ausrechnet. Was sind AVG Widerstände? Carsten R. schrieb: > Es kann auch indirekt an der Software liegen. Du hast ja für die drei > Phasen drei HIGH/LOW-Paare. Dein Treiber bzw deine Software verhindert > zwar über die intgrierte Totzeit, daß Du aktiv innerhalb eines Paares > beide durchschaltest, aber eines kann dadurch nicht verhindert werden. > Die Spuleninduktivität, nicht die BEMF alias Gegen-EMK, treibt den Strom > weiter. Ist die Totzeit zu groß, treibt die Induktivität den Strom durch > die Bodydiode des komplementären Fet bevor dieser geöffnet wird. Diese > parasitäre Diode braucht Zeit um wieder zu schließen. Wird der Treiber > wieder umgesteuert bevor die Reverserecoverytime durch ist hat man einen > kurzen. Das klingt durchaus interessant, und ist sicher noch nicht zu spät, das ich so ein Problem noch bekomme. Aber bis jetzt ist die einzigste Last, die ich am Regler habe meine BEMF. ich werde einfach mal drei Widerstände zusammen löten, damit ich eine kleine Ohmsche Last habe, bis zum Motor bin ich noch nicht gekommen. Aber trotzdem Danke für diese Info, hätte ich nicht gewusst, das die Bodydiode doch relativ langsam wieder schließt. Liegt aber warsch am Aufbau des Mosfets. Soweit ich weis, wird diese Diode ja nicht extra eingebaut, sondern sie ergibt sich aus der Mosfet-Charakteristik, oder liege ich da falsch? Hab mich schonmal gewundert, warum ich diese Diode nicht durchmessen kann. MfG Dennis
Dennis H. schrieb: > Soweit ich > weis, wird diese Diode ja nicht extra eingebaut, sondern sie ergibt sich > aus der Mosfet-Charakteristik Exakt so ist es. Das Teil hat man einfach an der Backe. Izwischen gibt es aber auch Fets bei denen die Eigenschaften dieser Body-Diode deutlich besser sind. Bei deinen IRLR7843 ist diese Reverse Recovery Time (Trr) mit durchschnittlich 39 ns bis maimal 59 ns angegeben. Da ist schon ziemlich flott. Ich würde es trotzdem mal mit einer Strombegrenzung versuchen. Wenn es dann trotzdem raucht, kann es zwar immer noch sein, daß die Begrenzung zu schwach oder zu langsam ist. Aber eventuell werden sie dann auch nur heiß und du kannst weitersuchen. Wenn sie mit Widerstand begrenzt garantiert keinen übermäßigen Strom führen können und trotzdem PFUPP machen, dann liegt das Problem woanders, z. B. könnte es vor den Toren (Gates) stehen. Überspannungen sind da tötlich. Widerstände vor den Gates sind nicht immer sinnfrei. Sie Dämpfen Schwingungen. Suppressordioden dahinter könnten angebracht sein. Und ..., und ..., und ... . Dazu müßte man aber Schaltplan und Layout sehen. Z.B. gehören die Gatetreiber nicht irgendwo an die Spannungsversorgung eingehängt, sondern nahe am Fet damit sie dem Bezugspotential am Fet bei hohen Lastimpulsen folgen können. Dieses verschiebt sich nämlich ständig durch die stark wechselnden Ströme. Software, logischer Aufbau und Layout. Alles ist wichtig und der Teufel steckt bekanntlich im Detail ;-)
Carsten R. schrieb: > Widerstände vor den > Gates sind nicht immer sinnfrei. Da hab ich welche mit 10 Ohm drin. Ich hatte irgendwo auch gelesen, das man ja aus der Gate-Kapazität und der Zuleitungsinduktivität einen Schwingkreis baut, welchen man in seiner Güte mit diesem Widerstand senkt. Darum hab ich ein mit eingeplant. Das die Wege vom Treiber zum Gate nicht zu weit sein sollten, sind mir bekannt. Bei der Highside habe ich etwa 5mm und eine Duko bei Lowside ist es etwa 10mm. Ich denke, diese Zuleitungen sind kurz genug. Demzufolge liegt die Spannungsversorgung der Treiber ähnlich nahe am Mosfet. Ich häng dir einfach mal meinen Schaltplan an, auch wenn es um diesen eigentlich gar nicht geht. 12V stimmt nicht ganz, es wird ein 4S Lipo werden, also 14,8V. MfG Dennis
Wenn jetzt GND vom Treiber mit GND vom FET inm Layout ähnlich nahe verbunden sind und ebenso die Versorgungsspannung, dann sollte das passen. Dann bin ich erst einmal mit meinem Latein am Emde. Ich hofe es ist nicht so eine nervige Kleinigkeit wie das Vertauschen von High und Low im Layout oder vertauschte Pegel. Es gibt ja 3 Zustände: a nur High Verbunden b nur Low verbunden c high und low gesperrt Die PWM wechselt bei nur einem der 3 Paare immer zwischen a und b Das zweite Paar steht fix auf High oder fix auf Low. Das dritte Paar hat den Status c. Erst bei Kommutierung erfolgt der Rollentausch. Sind Leitungen vertauscht oder logische Pegel invertiert, ich komme immer wieder damit durcheinander, ob eine logische Eins High oder Low ist, dann wird Zustand c zum tötlichen "HIGH und LOW-side offen".
Carsten R. schrieb: > Wenn jetzt GND vom Treiber mit GND vom FET inm Layout ähnlich nahe > verbunden sind und ebenso die Versorgungsspannung, dann sollte das > passen. Ich habe auf der einen Leiterplattenseite die Highside Mosfets, also auch VCC und auf der anderen Leiterplattenseite die Lowside, also dort auch Gnd. Allerdings habe ich Gnd nur an einer Stelle von der Leistung zur Steuerung geführt. also der Gnd-Weg für meine Treiber ist etwas länger. Aber die Platine ist nur 33 x 35 mm groß, also so weit ist der Weg dann auch wieder nicht. Carsten R. schrieb: > Sind Leitungen vertauscht oder logische Pegel invertiert, ich komme > immer wieder damit durcheinander, ob eine logische Eins High oder Low > ist, dann wird Zustand c zum tötlichen "HIGH und LOW-side offen". Darauf hab ich peinlich genau geachtet. Ich bin ehrlich gesagt noch beim Testen meiner Schaltung. Also ich steuer einfach mal jede Brücke einzeln an und schau es mir am Oszi an, was rauskommt. Die erste Brücke hat super funktioniert, die zweite nicht. Halbleiter neu aufgelötet, alles ging wieder. Dann hab ich einen Parameter in meiner Software geändert, nix wesentliches, nur Dutycycle und da knallte es, direkt nachdem ich es programmiert hatte. Wenn es geknallt hat, dann meistens direkt nach dem Programmieren. Wenn ich dann allerdings die defekten Bauteile ausgetauscht hatte, ging es wieder alles. Deswegen jetzt die Idee, das ich ja mit dem Programmieren auch ein Signal an den Treiber gebe und mein Programm erstmal ein paar ms warten sollte, bis es mit der PWM beginnt. Ich hab nur jetzt keine Zeit, das nochmal zu probieren. Und eigentlich gehts ja hier nicht um meinen Regler, sondern um einen anderen, ich will den Thread nicht kapern :-) MfG Dennis
@ Dennis H. kein Problem du kaperst ihn schon nicht ;-) Ich bin ja neu in dem Thema deswegen helfen mir alle Informationen, auch die von anderen Reglern ;-) Ich habe jetzt am Feiertag bissle weiter gemacht. Schaltplan verfeinert und erstes Layout erstellt. Habe ich irgendwelche groben Schnitzer im Schaltplan oder im Layout? Layout ist nicht optimal vor allem was der Platzbedarf angeht, aber ich ätze die erste Platine sowieso selber da kommt es dann nicht unbedingt so auf die größe an. Hat mir noch jemand einen Tip, wie ich am besten die Software entwickel kann und zwar im Bezug darauf das mir nicht die FETS gleich durchbrennen? Meine Idee war es Schritt für Schritt einzelne Funktionen zu implementieren, sprich als erstes das PWM Signal, dann eine Phase aktiv setzen und schauen was passiert, dann die nächste ... und als letztes die BEMF. Sprich etwas gegen dieses Vorgehen?
kappos schrieb: > Habe ich irgendwelche groben Schnitzer im Schaltplan oder im Layout? Also in Schaltplan finde ich nur Kleinigkeiten. Z.B. die Pull ups für I2C sind irgendwie recht klein. Wenn du dort mehrere solcher i2C Teilnehmer mit jeweils solch niedrigen pull ups hast, kann ein einzelner Teilnehmer irgendwann den Bus nicht mehr kontrollieren, weil er den Strom nicht schalten kann. Also den würd ich bisschen größer machen, so 3-5 kOhm, vielleicht auch 10kOhm. Und die Gate-Widerstände hab ich mit 10 Ohm genommen, aber sollte mit 33 Ohm auch gehen. Im Layout fällt mir einwas sofort auf. Überlege dir mal, wieviel Strom von der Stromversorgung durch die Fets zu deinem Motor fließt. Mit diesen Fets kannst du locker 30A schalten. Nur müssen diese 30A auch über die Leiterbahnen fließen. Ich hab dir einfach mal mein Layout angehangen, habe alles, was ging in SMD gemacht. Setze die IR2104 so nahe wie es dir möglich ist an die Fets. Ist mir nur mit dem mittleren nicht so ganz gelungen, da war einfach nicht mehr genug Platz, aber es geht noch. Die ganze Platine ist nur 33 x 35 mm groß. Und setze den +12V Anschluss mehr in die Nähe der Fets, weil dort fließt schließlich mal viel Strom. Also das der ganze Motorstrom einen sehr kurzen Weg auf deiner Platine hat. Bei mir erkennt man die Anschlüsse nicht so richtig, ich habe auf der Top-Seite Über dem großen Kondensator eine Fläche für den 12V Anschluss. Also eine Fläche frei von Lotstopplack, weil ich nicht selber die Platine herstelle. Von dort fließt der Strom am großen Kondensator vorbei zu den oberen Fets. Und aus diesen direkt wieder nach oben raus zu den jeweiligen Motorphasen, wo ich wieder so eine Freifläche ohne Lötstopp habe. Auf der Bottom-Seite sitzen die Fets höher aber im Prinzip das gleiche umgesetzt. Was mich bei dir wundert, warum du nicht gleich alles auf einer Seite machst. Weil du entweder auf der Bottom oder auf der Top Seite Bauteile hast, aber kaum mal an einer stelle auf beiden Seiten welche. Also zum einfachen Testen, mit einem kleinen Festplattenmotor könnte dein Layout vielleicht funktionieren, aber für mehr Strom wirds auf alle fälle nix. Vielleicht gibts bei hohen PWM-Frequenzen auch noch Probleme. MfG Dennis
Ja das habe ich mir schon gedacht das die Leitebahnbreite viel zu schmal ist. Ich werde am Wochenende mal nochmal neu Layouten. Bin leider noch nicht so der Layoutspezialist, ich tue mich da immer echt schwer. Aber "Übung macht den Meister" Danke für dein Tipp und dein Layout
Kurzer Nachtrag, klar kann ich solche hohe Ströme schalten, aber mein Motor gibt nur 9A her, dann könnte mein Layout wahrscheinlich grad so reichen ;-)
kappos schrieb: > Kurzer Nachtrag, klar kann ich solche hohe Ströme schalten, aber mein > Motor gibt nur 9A her, dann könnte mein Layout wahrscheinlich grad so > reichen ;-) Nun, ein Motor gibt gar keinen Strom her, er verbraucht wenn dann Leistung. Und die setzt sich einfach aus Spannung und Strom zusammen. Und da die Spannung die ganze Zeit gleich bleibt, kann bei wechselnder Leistung nur der Strom sich verändern. Ob 9A über die kleinen Leiterbahnen fließen, ist fraglich. Hier mal als Anhaltspunkt: http://www.mikrocontroller.net/articles/Eagle_im_Hobbybereich#Empfehlungen_f.C3.BCr_Leiterbahnen_im_Hobbybereich Oder hier für den profesionellen Bereich: http://www.mikrocontroller.net/articles/Leiterbahnbreite Sind ganz nützliche Tips in den Artikeln zu finden. Grundsätzlich mache ich mir zuerst Gedanken über den Bereich, wo viel Strom fließt und wie ich die Bauteile, die da mitten drin sind, ansteuern kann, also das ich das Signal irgendwie raus aus den dicken Leiterbahnen bekomme. Gerade bei BLDC REglern ist das nicht ganz so ohne einen vernünftigen Weg für das Gate zu finden. MfG Dennis
Ich habe jetzt die Schaltung mal so aufgebaut. Allerdings habe ich ein Problem mit dem Treiber 2104. Er schaltet immer HO durch und nie LO. Egal was in IN und SD anliegt. Wenn ich das Datenblatt richtig lese wenn IN = low ind SD = high dann müsste doch LO durchschalten? Liegt es vielleicht an den Bootstrap Kondensator. Ich habe auf beiden Seiten ein 100nF Kondensator drin. Gruß Kappos
Naja, ist klar, das mit Motor auch nichts passiert. Aber irgendwann sollte die Spannung am High-Mosfet-Gate einsacken, weil der Kondensatör leer ist. Schaltet der IR2104 wenigstens ordentlich ab, wenn du SD auf LOW setzt? Was meinst du, wenn du sagst, du hast auf beiden Seiten einen Kondi drin? Für Bootstrap brauchts doch nur einen Kondi, zeig mal Schaltplan.. MfG Dennis
Schaltplan ist der von Oben. Habe jetzt für C1 100nF und für C2 1000nF genommen. Problem ich habe kein Oszi. Kann nur mit dem LA die digitalen Signale anschauen. Habe jetzt aber schon ein sehr seltsames Problem. Habe jetzt mal die States umgesetzt mit folgendem Code:
1 | uint8_t SetNextState(uint8_t state,Lpc13Pin sda,Lpc13Pin sdb,Lpc13Pin sdc, Lpc13Pin ina,Lpc13Pin inb,Lpc13Pin inc, Lpc13 lpc) |
2 | {
|
3 | switch(state) |
4 | {
|
5 | case 0: |
6 | //Phase A PWM
|
7 | SetDriverOn(sda); |
8 | SetPWMOn(0,lpc); |
9 | //Phase B Floating
|
10 | SetPWMOff(1,lpc); |
11 | SetDriverOff(sdb); |
12 | //Phase C GND
|
13 | SetDriverOn(sdc); |
14 | SetPWMOff(2,lpc); |
15 | break; |
16 | case 1: |
17 | //Phase A Floating
|
18 | SetDriverOff(sda); |
19 | SetPWMOff(0,lpc); |
20 | //Phase B PWM
|
21 | SetDriverOn(sdb); |
22 | SetPWMOn(1,lpc); |
23 | //Phase C GND
|
24 | SetDriverOn(sdc); |
25 | SetPWMOff(2,lpc); |
26 | break; |
27 | case 2: |
28 | //Phase A GND
|
29 | SetDriverOn(sda); |
30 | SetPWMOff(0,lpc); |
31 | //Phase B PWM
|
32 | SetDriverOn(sdb); |
33 | SetPWMOn(1,lpc); |
34 | //Phase C Floating
|
35 | SetDriverOff(sdc); |
36 | SetPWMOff(2,lpc); |
37 | break; |
38 | case 3: |
39 | //Phase A GND
|
40 | SetDriverOn(sda); |
41 | SetPWMOff(0,lpc); |
42 | //Phase B Floating
|
43 | SetDriverOff(sdb); |
44 | SetPWMOff(1,lpc); |
45 | //Phase C PWM
|
46 | SetDriverOn(sdc); |
47 | SetPWMOn(2,lpc); |
48 | break; |
49 | case 4: |
50 | //Phase A Floating
|
51 | SetDriverOff(sda); |
52 | SetPWMOff(0,lpc); |
53 | //Phase B GND
|
54 | SetDriverOn(sdb); |
55 | SetPWMOff(1,lpc); |
56 | //Phase C PWM
|
57 | SetDriverOn(sdc); |
58 | SetPWMOn(2,lpc); |
59 | break; |
60 | case 5: |
61 | //Phase A PWM
|
62 | SetDriverOn(sda); |
63 | SetPWMOn(0,lpc); |
64 | //Phase B GND
|
65 | SetDriverOn(sdb); |
66 | SetPWMOff(1,lpc); |
67 | //Phase C Floating
|
68 | SetDriverOff(sdc); |
69 | SetPWMOff(2,lpc); |
70 | break; |
71 | default:
|
72 | break; |
73 | }
|
74 | |
75 | state++; |
76 | if (state>5) |
77 | return 0; |
78 | else
|
79 | return state; |
80 | }
|
und Aufruf in der Main:
1 | uint8_t nextState=0; |
2 | while(true) |
3 | {
|
4 | timer.DelayMS(5); |
5 | nextState = SetNextState(nextState,sda,sdb,sdc,inA,inB,inC,lpc); |
6 | |
7 | }
|
Problem ist das ich folgendes Verhalten an den SD Pins bekomme(siehe Screenshot) generelle Software/Hardware Probleme schließe ich aus, da wenn ich jeweils nur ein Kanal (also SDA /SDB oder SDC) schalte funktioniert alles. Ich kann mir dieses Verhalten absolut nicht erklären. Jemand eine Idee?
Da ich nun endlich wieder Zeit finde an meinem Brushless Controler weiter zu arbeiten folgende Info. Das komische Verhalten vom LA lag schlicht weg daran, das der LA kaputt ist. mittlerweile habe ich mir ein Oszi besorgt und jetzt sind das ganze besser aus. Habe jetzt aber nochmal am Design gedreht und will das ganze sauber auf 2 Lagen hinbekommen aber ich schaff es einfach nicht, mir fehlt dazu einfach die Erfahrung sauber zu Routen. Im Anhang habe ich meinen jetzigen Stand,der ist noch nicht fertig gerouten, aber mir gefällt er so schon garnicht. Kann mir vielleicht dazu noch jemand nen Tip geben, wie ich da am besten vorgehen? Gruß Kappos
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.