Hallo Leute, Ich habe mir einen Buck Regler mit 32F030 und IRS10752 aufgebaut. Eingangsspannung 24-80V, Ausgangsspannung 24V, 500mA. Wer von euch hat sowas schon realisiert und kann mir ein paar Ratschläge geben? Soweit bin ich schon: Typischer Betriebsfall: Vin ~30-40V. Schaltfrequenz ~75kHz, L680µH, kontinuierlicher Betrieb ab ~200mA. Ausgangselko 100µF (zum Testen des Reglers, der wird später größer). Der PID Regler läuft im Overflow Interrupt der PWM, Analogwerte werden mit 500kHz eingelesen, per DMA weggeschrieben und gemittelt. Ich habe den Regler einfach mal äußerst frei nach Ziegler Nichols ausgelegt, und etwas nachjustiert. Bei einem Sprung von 50 auf 800mA habe ich einen Peak von etwa 200mV und brauche etwa 1ms zum ausregeln. Da ist sicher noch wesentlich mehr drinnen aber mir gings mal um die Frage ob das überhaupt funktionieren kann. Folgende Überlegungen hab ich mir gemacht: 1.) Wenn bei kleiner Eingangsspannung der Duty Cycle zu groß wird und der IRS seinen bootstrap Kondensator nicht mehr voll kriegt fixiere ich den Dutycycle bei der min. off time (was auch immer das dann ist) und regle stattdessen die PWM Frequenz. 2.) Bei kleiner Ausgangsleistung mache ich es genau so nur fixiere ich die min. on time 3.) Regelung bei unterschiedlichen Eingangsspannungen. Da die Regelstrecke mit unterschiedlichen vin-vout komplett anders aussieht (0V - 76V) funktionieren meine Regelparameter auch bei anderen Spannungen nicht mehr wirklich gut. Ich habe mir überlegt 3 Sätze Parameter (25V, 40V, 80V) so auszulegen dass ich in etwa das gleiche Regelverhalten habe und sie dann mit der Eingangsspannung anzupassen (keine Ahnung welche Parameter ich da bekomme und ob die sich halbwegs linear ändern). Hat jemand von euch schon mal sowas realisiert? Wie habt ihr es gemacht, welche Probleme hattet ihr? Welche Ausregelzeiten habt ihr erreicht? Schöne Grüße aus Wien, Christian.
Klingt nett. Erkennst Du einen Kurzschluss am Ausgang? Wie? Misst Du den Eingangsstrom? Wenn ja, könntest Du eine Current Mode Regelung machen, damit bekommt man das meist schneller geregelt. Wie erzeugst Du die Betriebsspannung für den STM32? Linearregler könnte bei 80V ziemlich auf die Effizienz gehen.
Das ganze wird über eine Stromquelle gestartet und dann über 2 Linearregler von den 24V versorgt. 15V für den IRS und 3.3 für den ST. Vielleicht mach ich noch was keines mit den anderen cc's aber für die paar ma zahlt sich's glaub ich nicht aus. Momentan erkenne ich noch gar nichts, meine Gedanken zu Kurzschluss und Überlast waren sich den Duty Cycle und die Spannungen anzuschauen. Daraus kann man sich prinzipiell alles ausrechnen. Bei einem richtigen Kurzen ist's einfach da brauch ich mir nur den Anstieg der Ausgangsspannung anzuschauen, für Überlast wird ich einen Max. Duty Cycle festlegen.
Du brauchst auf jeden Fall eine schnelle Hardwareabschaltung für Überstrom. Jedwede Softwareregelung ist viel zu langsam für einen sicheren Schutz. Du solltest für die PWM einen Timer mit Break Eingang verwenden, der ist genau für sowas gedacht. Im einfachsten Fall erzeugst Du das break signal über einen Shunt + Transistor wenn Du mit 0,6V am Shunt leben kannst.
Christian schrieb: > Momentan erkenne ich noch gar nichts, meine Gedanken zu Kurzschluss und > Überlast waren sich den Duty Cycle und die Spannungen anzuschauen. > Daraus kann man sich prinzipiell alles ausrechnen. Damit hab ich auch mal aus Spaß etwas rumexperimentiert, ich habe es aber nie brauchbar hinbekommen. Es gab immer einen Fall in dem es zu rauchen anfing. Seit dem nehme ich immer irgendeine Art von Stromsensor. Wenn Du von den STM32F0 einen mit Analogkomparator nimmst, dann kann der Komparator direkt die PWM abschalten, also ohne Interrupt oder andere Software. Das war glaube ich daß, was Michael meinte. Zeig mal Deinen Schaltplan.
Gerd E. schrieb: > dann kann der Komparator > direkt die PWM abschalten, also ohne Interrupt oder andere Software. Das > war glaube ich daß, was Michael meinte. Das geht auch, wenn die Hardware es unterstützt, aber Tim1 hat auch einen Break eingang. Ein einfaches Logig Signal das unmittelbar die PWM Ausgänge auf einen vorher als sicher definierten Pegel legt. Das geschieht unabhängig von der CPU und auch Takt Asynchron. Kann man als permanente Abschaltung auslegen mit reaktivierung durch die CPU oder nur als Pulse skipping. Meine Erfahrung bezieht sich da konkret auf den STM8S003, der STM32F030 müsste in dem Bereich aber genauso funktionieren.
Erstmal danke für die Anregungen. Schaltplan werde ich keinen posten, das ist ein simpler Buck. Da sollte ein Blick ins Datenblatt des IRS reichen (in Serie zur bootstrap Diode hab ich noch 10 Ohm drinnen). Das ganze hängt am Timer3 am STM32F0308-DISCO. Der Ruck ist auf einer Rasterplatine aufgebaut um zumindest ein halbwegs vernünftiges Layout hinzubekommen. Zur Kurzschluss / Überlastgeschichte: Ich pflichte euch auf alle Fälle bei dass eine Strommessung mit Triggerung des Breaks auf alle Fälle die sauberste Lösung ist. Vor allem wenn man die Last nicht kennt. Dagegen sprecht der Preis wenn man irgendeine Form von Stromsensor oder Opamp verwendet oder der Spannungsabfall bei einem großen Shunt mit dem man einen Transistor ansteuert. Ich hab mich heute mal intensiver mit dem Thema Kurzschluss / Überlast beschäftigt und ein paar Tests gemacht: Die Methode mit dem Tastverhältnis funktioniert nur um die maximale Leistung zu begrenzen da es im kontinuierlichen Betrieb eigentlich nur ansteigt um die Verluste auszugleichen. 40V -> 24V = 60% Bei 800mA sind's dann 62%. Ich hab auch Tests mit Kurzschluss gemacht, funktionierte zwar aber nicht schnell genug dass ich happy bin. Zumindest hab ich meinen Mosfet nicht kaputt gekriegt. Was aber wirklich gut funktioniert ist eine Erkennung des du/dt. Ich schau mir die Ausgangsspannung ja sowieso an und sobald sie zu steil abfällt schalte ich die PWM aus. Das könnte man sich noch so einstellen dass man auch kapazitive Lasten schalten kann (bis zu einer gewissen Grenze) Man könnte auch den Dutycycle auf (Vout / Vin) + 1-5% begrenzen und schauen was mit der Spannung passiert. Fällt sie weiter geht auch der duty cycle zurück, steigt sie wieder an war's nur ein Kondensator. ...hier sollten eigentlich ein paar Bilder von den Messungen sein aber leider hab ich beim Shunt einlöten vergessen das Netzteil auszuschalten und jetzt ist mein Disco board hinüber. Ich werd die aber hier posten sobald die nächste Farnell Bestellung kommt. Zu guter Letzt noch was zur Last: Die ist (wenn sich's Rechenzeitmäßig ausgeht sonst wird's ein zweiter STM) der STM selbst. Er steuert eine H-Brücke an und erzeugt Sinustöne für einen Schallgeber. Somit habe ich zumindest äußere Einflüsse im Griff und tu mir leichter beim Dimensionieren. Das ist auch der Grund warum ich nicht den Timer1 verwende denn ich habe das Design auch mit einer diskret aufgebauten H Brücke und da brauch ich alle 4 Ausgänge. Falls jemandem eine kleine und (24V, 0.5A) vor allem günstige integrierte H Brücke mit Treibern einfällt meldet euch bitte. Das einzige was ich da bis jetzt habe ist der MP6513 aber das ist eher was für einen Akkuschrauber und er hat eine abs. Max. Spannung von 23V... @Michael zum STM8: Was genau hast du damit gemacht? auch einen Buck? Welche Schaltfrequenz? War die PWM Frequenz im Verhältnis zur Auflösung gut genug? Ich verwende den STM8 in anderen Designs. Hab anfänglich auch überlegt es mal zu probieren hab ihn aber auf Grund der gewünschten Schaltfrequenz ausgeschlossen. Schöne Grüße, Christian.
Christian schrieb: > Dagegen sprecht der Preis wenn man irgendeine Form von Stromsensor oder > Opamp verwendet Wenn es eine Highside-Messung sein muss pflichte ich Dir bei, das ist etwas aufwendiger bei Deinen 80V. Aber wenn Du das Low-Side machst bei Deinen 500mA kannst Du den Shunt z.B. aus 3 parallelgeschalteten 1 Ohm Widerständen zusammensetzen, kostet dann fast nix. Wenn es nur um die Überstromerkennung geht, kannst Du vom Shunt aus direkt auf nen Komparator gehen und brauchst keinen Opamp. Entweder einen im µC eingebauten oder so was simples wie ein LM393, kostet keine 10 Cent. Natürlich geht es immer auch besser, schneller, schöner, genauer. Aber für die Kurzschlusserkennung reicht so eine simple Lösung meist voll aus. > Zumindest hab ich meinen Mosfet nicht kaputt gekriegt. Ok, wenn Du natürlich den Mosfet deutlich überdimensioniert hast, dann hält der einiges aus. Wenn der µC selbst mit aus dem Buck versorgt wird und dann kommt es zum Kurzschluss, dann sackt die Versorgungsspannung zusammen und dann könnte es vorkommen, daß der sich gerade im "an"-Zustand des FETs aufhängt. Wenn das nicht schnell genug von selbst abschaltet ist bei auch ein dickerer FET bald durch. Die Brownout-Detection kann den µC dann zwar in den Reset bringen und damit die I/Os auf High-Z schalten, aber wie schnell das in dem Fall reagiert ist nicht spezifiziert. Da kommt es dann drauf an wierum Du Deinen FET-Treiber rangehängt hast und was da für Pullups/Pulldowns an dessen Eingang hängen.
Christian schrieb: > zum STM8: Was genau hast du damit gemacht? auch einen Buck? Welche > Schaltfrequenz? War die PWM Frequenz im Verhältnis zur Auflösung gut > genug? Ich verwende den STM8 in anderen Designs. Hab anfänglich auch > überlegt es mal zu probieren hab ihn aber auf Grund der gewünschten > Schaltfrequenz ausgeschlossen. Buck, Boost und interleaved Boost hab ich schon damit gemacht. Die Auflösung ist bei 16Mhz Takt nicht so berauschend wenn man >30Khz anstrebt. 8-9 bit ist da das höchste der Gefühle, weniger wenn die Schaltfrequenz höher sein soll. Für LED Ansteuerung ist das okay solange die Regelschleife so schnell ist das man die Unterschiede zwischen zwei Werten nicht als Flackern wahrnimmt. Für eine stabile Spannungsregelung einer dynamischen Last muß das alles deutlich schneller und besser aufgelöst sein. In den meisten Fällen ist eine Kombination aus PWM DA Sollwertvorgabe und einem billigen UC384x (oder einem beliebigen anderen Wandler) die einfachste Möglichkeit zum Ziel zu kommen. Alleine der MosFet Treiber kostet oft mehr als ein billiger Schaltregler IC. Christian schrieb: > Dagegen spricht der Preis wenn man irgendeine Form von Stromsensor oder > Opamp verwendet oder der Spannungsabfall bei einem großen Shunt mit dem > man einen Transistor ansteuert. Naja, die billigste Löung ist nunmal meist nicht die effizienteste. Man kann dem Transistor aber auch eine Vorspannung geben und den Shunt dazu addieren. Das drückt den Spannungsabfall über den Shunt. Die Strommessung ist ja auch nur die Notbremse. Darüber kann ich mir den max. Duty bis Sättigung ermitteln und / oder welche Pause ich beim Boost brauche um die gespeicherte Energie wieder loszuwerden. Das fliesst dann in die Regelung ein um nicht zu oft im Überstrom zu landen. Noch ein Wort zur Regelung: Der Analog Watchdog des ADC ist da recht nützlich. Den einfach auf voller Geschwindigkeit durchlaufen lassen und der checkt selber ob auf den AD Kanälen min/max Werte gerissen werden. So kann man sich in der Zwischenzeit anderen Aufgaben widmen und braucht keine CPU Power um Wertevergleiche zu machen. Spätestens hier kann man die ST Lib in die Ecke hängen weil manche Einstellungen mit der Lib nicht zu machen sind.
Gerd E. schrieb: > Wenn es nur um die Überstromerkennung geht, kannst Du vom Shunt aus > direkt auf nen Komparator gehen und brauchst keinen Opamp. Entweder > einen im µC eingebauten oder so was simples wie ein LM393, kostet keine > 10 Cent. ...Danke für den Tipp. Eher weniger wegen dem Tipp selbst aber ich wusste nicht dass die mittlerweile so billig sind :) Ich denke ich werde in diesem Projekt aber ohne auskommen. Gerd E. schrieb: > Ok, wenn Du natürlich den Mosfet deutlich überdimensioniert hast, dann > hält der einiges aus. ...bei 800mA Dauerstrom (ist zwar nicht das was es in der Endanwendung sein wird aber wofür ich die Drossel und den Mosfet da habe) finde ich einen IRL4310 nicht für allzu sehr überdimensioniert. Außerdem lag das Strommaximum beim Ausschalten um die 4A, das ist weit innerhalb des grünen Bereichs. Der Spaß ist auch in max. 20µs vorbei. Für die ersten Tests habe ich die du/dt Erkennung einfach in den Timer Interrupt gepackt, setze den output compare mode auf force inactive level, und warte in einer Endlosschleife auf den Tod. @Michael: ...Deine Gedanken zum STM8 teile ich. Ist für das was ich hier vor habe nicht wirklich geeignet. Schade dass die Timer der günstigen 32Bitter auch nur mit 48MHz laufen. Da vermiss ich manchmal die Power Stage Controller von Atmel. Michael K. schrieb: > Der Analog Watchdog des ADC ist da recht nützlich. ...du bist ein echter Spielverderber, ich wollte gerade das gleiche posten :) Ich hab gestern an anderen Projekten gearbeitet und irgendwie kam mir in den Sinn dass ich im Datenblatt mal was vom analog watchdog gelesen hab. Nachgeschaut was der so kann und eigentlich ist das genau das was ich brauche. Und wie du sagst, bei so einer Taktfrequenz hat man nie zu viel Rechenleistung. Keine Sorge, Ich verwende die libs nicht. Sobald man anfangen will zu optimieren kann man die nicht mehr brauchen. Hierzu was anderes: Ich bin mir noch nicht ganz sicher ob es sich ausgeht dass ich auch meinen Sinusgenerator am gleichen µC laufen lasse. Eine Idee war die Timer ISR für den Regler in Assembler nochmal zu schreiben. Hat sowas schon mal jemand umgeschrieben und wenn ja wieviel schneller ist die Assembler Routine gelaufen?
...die Kurzschlussabschaltung mit dem analog watchdog funktioniert besser als ich mir gedacht hätte. Anbei wie versprochen ein paar Messungen. Gemessen wurde der Strom ins Drain des Transistors mit einem 100mOhm Shunt sowie die Spannung am Ausgang überm PWM Ausgang.
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.