Moin moin, da ich mich etwas mehr mit Schaltreglern auf µC - Basis beschäftigen möchte, habe ich mal eine Schaltung entworfen, die als Buck UND als BOOST Konverter funktionieren kann. Ich habe bewusst auf die Verwendung von MOSFET-Treibern verzichtet, da man die Gate-Ansteuerung so viel besser lernen kann. (Das Projekt soll auch Lehrlinge zum nachdenken anspornen) Da die meisten MOSFET-Treiber auch einen "Takt" für die Erzeugung der höheren Gate Spannung benötigen, fallen diese sowieso aus, da es auch "komplett on" oder "komplett off" Zustände der MOSFETs gibt. Der DCDC Wandler ist ein 5V-15V Typ und liegt "über" V-IN, da sein GND-Ausgang auf V-IN liegt. Somit ist schonmal gewährleistet, daß die MOSFETs unabhängig von der Eingangsspannung immer ihre 15V Gate Spannung bekommen und damit sauber schalten (sollten). Die Diode am Gate, paralell zum 10Ohm Vorwiderstand, sorgt für ein schnelleres "entladen" des GATEs, der 1nF Kondensator (Wert ist erstmal nur geschätzt) soll kurzzeitig einen höheren Einschaltstrom fürs GATE liefern und beim Abschalten dieses schneller zumachen. Die Gates werden jeweils von einer eigenen Gegentakt-Endstufe angesteuert (BC546 und BC556), diese werden durch Optokoppler vom µC angesteuert. Ich möchte nun gerne wissen, seht Ihr irgendwo Bugs, Denkfehler, falsche Dimensionierung? Sollte doch rein elektrisch schonmal richtig sein, oder? Was die Software später dann macht, ist eine andere Suppe... Grundsätzlich gilt wie im Bild, die kleine Wahrheitstabelle für die MOSFETs. Bin dankbar für Eure Meinungen dazu! Gruß, Wolfram. PS: das 2.Bild hat eine höhere Auflösung.
:
Verschoben durch User
> Ich möchte nun gerne wissen, seht Ihr irgendwo Bugs, Denkfehler, falsche > Dimensionierung? Du hast die Schaltung doch sicher auch mal mit LT-Spice simuliert oder? Wieso zeigst du das nicht? Die erste Frage dir mir so durch den Kopf geht, was sollen die Optokoppler und sind die ueberhaubt schnell genug... Olaf
Wolfram F. schrieb: > Bugs Die Z-Dioden sorgen dafür, dass die Mosfets schon mal alle "so halbwegs" leiten und dann gleich nach dem Einschalten Hitze und Rauch entwickeln. Sollten sie das überleben, kommen als Nächste die BC556 dran. Denn mal angenommen, der Eingang hätte 65V, dann liegen am R4 50V an. Und wenn der Q6 dann einschaltet, müsste er 50V/10R=5A abkönnen. Und das wird dann auch bei der "ganz normalen" Funktionsweise ein Problem darstellen. Denn das Gate des D3 muss ja auf 65V+15V angehoben werden, um einzuschalten. Nur wird es eben dann von diesen 80V per Q6 über den R4 auf Masse geschaltet. > diese werden durch Optokoppler vom µC angesteuert. > Denkfehler Wie schon gesagt: wenn du sowieso den selben Massebezug hast, wozu dann Optokoppler? olaf schrieb: > Optokoppler und sind die ueberhaubt schnell genug... Mit einer Ton von 25µs und einer Toff von 45µs darf die Taktfrequenz auf jeden Fall nicht allzu hoch werden. Und dann wäre eine schnelle Freilaufdiode zur schnellen Übernahme des Stroms sinnvoll, denn bis die passenden aktiven Gleichrichter leiten kann es dauern.
:
Bearbeitet durch Moderator
Wolfram F. schrieb: > Moin moin, moin :) Wolfram F. schrieb: > habe ich mal eine Schaltung entworfen, die als Buck UND als > BOOST Konverter funktionieren kann. Auch als klassischer Buck-Boost-Converter bekannt. Wolfram F. schrieb: > Da die meisten MOSFET-Treiber auch einen "Takt" für die Erzeugung der > höheren Gate Spannung benötigen, fallen diese sowieso aus, da es auch > "komplett on" oder "komplett off" Zustände der MOSFETs gibt. Die Treiber laden ihren Bootstrap-Kondensator in der Low Phase und verbrauchen diese Ladung in der High Phase. Da die Ladung nicht ewig hält muss regelmäßig nachgeladen werden, daher der Takt. Wenn du diese Ladung auf andere Weise extern in den Kondensator bekommst, können die meisten Bootstraptreiber ewig High produzieren. Diese Option solltest du berücksichtigen. Wolfram F. schrieb: > Grundsätzlich gilt wie im Bild, die kleine Wahrheitstabelle für die > MOSFETs. Nicht invertierte PWM = PWM. Doppelte Invertierung :) Wolfram F. schrieb: > Ich möchte nun gerne wissen, seht Ihr irgendwo Bugs, Denkfehler, falsche > Dimensionierung? Das erste was auffällt sind die Zenerdioden von Drain nach Gate. Die sind nicht so verschaltet wie du dir das gedacht hast. Öfters sieht man mal Zenerdioden von Gate nach Source. Sinn davon ist die maximale Gatespannung zu begrenzen sodass das Gate nicht durchbrennt. Also entweder ganz raus (wenn du ein sehr hochkapazitives Gate hast, sind diese nicht so wichtig, und 10nF von den IRFP4668 würde ich schon als hochkapazitiv sehen), oder von Gate nach Source. Die Ansteuerung der Gates ist etwas übertrieben, der Kondensator sorgt für schnelleres ein- und ausschalten, was der Totzeit erzeugenden RD-Konstruktion entegegen wirkt. Die Optokoppler sind denkbar ungeeignet, ein kurzer Blick ins Datenblatt verrät, dass sie etwa 5µS Einschaltzeit haben. Da sind ja Brieftauben schneller. Der Optokoppler glänzt durch gute Spannungsfestigkeit, was du hier eher nicht brauchst. Besser wäre eine direkte Ansteuerung, wie z.b. hier http://sound.whsites.net/articles/pwm-f5b.gif zu sehen ist. Das nächste Problem ist, dass du alle Gatetreiber gleich versorgst. Die Highside braucht zwar einen Spannungsbereich von 0 bis VCC+VGS, allerdings killt dir diese Spannung die Lowside. Dafür solltest du eine seperate Versorgung von 15V bezogen auf GND nutzen. An sich doktorst du viel an bereits gelösten Problemen herum. Ich würde dir empfehlen für die Highside eine normale Bootstrapschaltung zu nehmen und für die Lowside direkt das NPN+PNP Pärchen. Wenn du keinen Chip nutzen möchtest kannst du das ganze auch diskret (siehe Link oben) aufbauen. Du kannst dann entweder die Highside Bootstrapschaltung mit dem DC/DC-Wandler versorgen um dauerhaft high zu garantieren oder, viel einfacher, einfach in der Software alle paar dutzend Takte einmal die zweite Brücke ebenfalls kurz auf low ziehen, damit der Bootstrap nachgeladen werden kann. Ist dir 100% Ontime so wichtig? Reicht nicht auch 99.98% für beide Brücken? Der Effekt als Spannungswandler ist der selbe und du sparst dir viel Ärger ;)
Wolfram F. schrieb: > Denkfehler Du hast da offenbar eine Prinzipschaltung auf schnellem Weg in eine reale Schaltung umgesetzt. Da klappt so nicht, hier braucht jeder "Schalter" eine eigene Ansteuerung, weil er ja jeweil unabhängig von den anderen funktionieren muss. Und das geht nicht über die simple Vervierfachung einer Low-Side-Ansteuerung, sondern du musst jedem Mosfet eine auf seine Source bezogene Ansteuerung verpassen.
Du willst 500 kHz PWM fahren mit einem ATMega328 (Ardu.. dingsda), der selbst nur mit 16 MHz getaktet ist. Da bleiben 32 Stufen übrig. Das wird holprig. Dazu noch die langsamen ADC des ATMega, was auch die Control-Loop langsam macht. Und der ATMega selbst ist auch kein Rechenmonster. Dann nimm doch wenigstens den Arduino mit Cortex. Dazu Low-/Highside Treiber.
neuer PIC Freund schrieb im Beitrag #4966434: > Du willst 500 kHz PWM fahren Woraus willst du das erraten haben? Die OK haben eine Cutoff-Frequenz von 100kHz. Mehr als 10kHz ist damit sicher(!) nicht drin...
>Woraus willst du das erraten haben?
Das erste Bildchen deutet da was an.
Man kann z.B. jedem Schalter einen eigenen Treiber (ob diskret oder nicht) spendieren, z.B. den HCNW-3120. Um die Sekundärseite des Treibers zu versorgen gibt es spezielle DC/DC-Wandler z.B. von Recom, die genau dafür konzipiert sind. Ich nenne einfach mal den R12P21509D/P. Dieser ist zwar für SiC MOSFETs aber is ja Schnuppe...
:
Bearbeitet durch User
neuer PIC Freund schrieb im Beitrag #4966437: >> Woraus willst du das erraten haben? > Das erste Bildchen deutet da was an. Hoppla, übersehen. Also was fürs Kapitel "falsche Dimensionierung"... ;-)
:
Bearbeitet durch Moderator
Oder anders ausgedrückt: Der stärkste 8-Bit-Kern aller Zeiten ist immer noch zu langsam für diese Aufgabe. Schaltnetzteile nerven, wenn sie langsam getaktet sind. Unterstellen wir mal 10 Bit, da bleiben von 16 MHz ca. 16 kHz übrig. Die Controlloop auf 2 kHz und fertig ist das Orchester. Stumm wird es, wenn ein SW-Fehler zum shoot-through die MOSFETs abrauchen lässt. Und eine Strommessung gibt es auch keine.
Muss der GND für die Hugh Side Treiber nicht auf der Eingangsspannung Ligen und die Low Side Treiber eine eigene GND bezogene 15Volt Versorgung bekommen? mfg Michael
Moin, erstmal danke für die zahlreichen Kommentare! Ja, die Z-Dioden waren natürlich falsch... hab sie entfernt. Ebenso sind die Optokoppler raus und die LOW-Side Treiber-Pärchen haben eine auf GND bezogene 15V. die 30-500KHz waren ein Tippfehler, sollte 50KHz heissen! Würde das, abgesehen mal von der Amega-Regelung, so funktionieren? Eine Strombeqrenzung bzw. Überwachung kommt später natürlich noch mit rein. Wenn das mit dem "Fremdeinspeisen" der Bootstrap Spannung an den MOSFET Treibern wie IR2110 z.B. tatsächlich funktioniert, wäre das natürlich eine einfache Sache, 2 Treiber und ran an den µC, oder? Wolfram.
ich überlege auch gerade ob es evt. nicht besser ist, einen PCA9685 für die PWM-Erzeugung zu nehmen, dann wäre der µC entlastet... Dann noch die ADCs schneller laufen lassen.
:
Bearbeitet durch User
Michael_O schrieb: > Muss der GND für die Hugh Side Treiber nicht auf der Eingangsspannung > Ligen Nein. Der "GND" für diese Fets muss an der Source liegen. Denn auf die Source bezieht sich die Gate-Source-Spannung Ugs, die den Mosfet ein- und ausschaltet. > und die Low Side Treiber eine eigene GND bezogene 15Volt > Versorgung bekommen? Das wäre sinnvoll, damit das Gate nicht bis zu 80V abbekommt. Wolfram F. schrieb: > Würde das, abgesehen mal von der Amega-Regelung, so funktionieren? Nein, denn wie gesagt: die Masse des jeweiligen Treibers muss auf die Source des jeweiligen Mosfet bezogen sein. So, wie es derzeit ist, hast du dort undefinierte Bezüge, je nachdem, welche Transistor gerade schaltet. Mal einfach angenommen, deine Ausgangsspannung ist 40V. Was meinst du, was mit der GS-Strecke des Q4 passiert, wenn der Q12 einschaltet? neuer PIC Freund schrieb im Beitrag #4966445: > Schaltnetzteile nerven, wenn sie langsam getaktet sind. Unterstellen wir > mal 10 Bit, da bleiben von 16 MHz ca. 16 kHz übrig. Die Controlloop auf > 2 kHz und fertig ist das Orchester. Es gibt µC, die den PWM-Takt per PLL nach oben schrauben können. Ein ATtiny45 kann das z.B. schon... BTW: der D5 des Arduino wird sich schwer wundern... ;-)
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Nein. Der "GND" für diese Fets muss an der Source liegen. Denn auf die > Source bezieht sich die Gate-Source-Spannung Ugs, die den Mosfet ein- > und ausschaltet. würde sich das Problem mit IR2110 denn lösen lassen?
Wenn es diskret werden soll, schmöker doch mal in Schaltplänen aus den
90ern. Da wurde so was mit Ansteuertrafos erledigt.
>Es gibt µC, die den PWM-Takt per PLL nach oben schrauben können.
Bei anderen Herstellern viel öfter als bei Atmels AVR8. Wird ja auch
gerne ins Feld geführt, warum die Cortexe so schwierig sind. Man muss zu
Anfang den Takt einstelle. Ujujujuju. (und Stromschalter für die Peri
haben die auch noch. Wahnsinn!)
Wolfram F. schrieb: > würde sich das Problem mit IR2110 denn lösen lassen? Ja, der bezieht die Ansteuerung der High-Side auf die Source. Allerdings brauchst du für statischen Betrieb an VB und VS eine potentialfreie Versorgung. Wolfram F. schrieb: > warum? Hat sich erledigt. BTW: hast du schon mal ein paar einfachere Schaltregler aufgebaut? Wenn nicht: mach erst mal das und lerne daran. Oder kauf genügend Mosfets auf Reserve ein... neuer PIC Freund schrieb im Beitrag #4966484: > Bei anderen Herstellern viel öfter als bei Atmels AVR8. Mag sein. Aber nicht jeder braucht eine 128MHz PWM. Warum dann jeden uC damit ausstatten?
so, nun hat jeder High-Side MOSFET seine eigene auf Source bezogene Spannung. Ich weiss, DCDC Wandler sind teuer, hab aber noch ein paar Stangen davon... Wäre es nun soweit, eine erste Platine zu fräsen oder würde die Ansteuerung noch immer nicht funktionieren?
Wolfram F. schrieb: > oder würde die Ansteuerung noch immer nicht funktionieren? Lies mal mein paar letzten Posts und denk an eine Ausgangsspannung über 15V. > oder würde die Ansteuerung noch immer nicht funktionieren? Der Q6 und der Q12 müssen sich auf die Source des jeweiligen Mosfet beziehen. Und dran denken: das macht die Ansteuerung dieser High-Side-Treiber etwas komplizierter...
:
Bearbeitet durch Moderator
Wenn es nur um Demonstrationszwecke geht und um die Software dann nimm doch das hier: http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f3348discovery.html Da ist der Buck/Boost schon fertig drauf und du kannst sofort loslegen mit der Software dazu.
Lothar M. schrieb: > Nein, denn wie gesagt: die Masse des jeweiligen Treibers muss auf die > Source des jeweiligen Mosfet bezogen sein. So, wie es derzeit ist, > hast du dort undefinierte Bezüge, je nachdem, welche Transistor gerade > schaltet. achso, du meinst, der pnp transistor müsste nicht an gnd sondern an Source des entsprechenden high-side fets ran?
temp schrieb: > Wenn es nur um Demonstrationszwecke geht und um die Software dann nimm > doch das hier: danke, aber einfach kaufen kann jeder... selber machen macht auch Spass ;-)
temp schrieb: > Wenn es nur um Demonstrationszwecke geht und um die Software dann nimm > doch das hier https://static5.arrow.com/pdfs/2015/7/27/0/47/58/79/st_/manual/stm32f3348-disco_fig.1_5.jpg Diese Brücke sieht doch recht brauchbar aus. Allerdings kann die natürlich nicht die hier gewünschten Spannungen. Aber als Ideengeber taugt sie allemal... Wolfram F. schrieb: > danke, aber einfach kaufen kann jeder... selber machen macht auch Spass > ;-) Es geht nicht unbedingt ums "Kaufen", sondern mal zu sehen, wie andere ihr Rad rund bekommen haben.
:
Bearbeitet durch Moderator
neuer PIC Freund schrieb im Beitrag #4966484: > Wenn es diskret werden soll, schmöker doch mal in Schaltplänen aus den > 90ern. Da wurde so was mit Ansteuertrafos erledigt. ok, welcher Ansteuertrafo macht denn auch DC? :-) Das geht in diesen Fall nicht mit Trafos, da die MOSFETs auch komplett ein oder ausgeschaltet sein können! Je nach Modus, Buck oder Boost.
Wolfram F. schrieb: > danke, aber einfach kaufen kann jeder... selber machen macht auch Spass ja klar, solange es nicht um einfaches Nachbauen von irgendwas geht was man nicht versteht. So wie du die Bauteile in deinem Schaltplan zusammengenagelt hast, scheint mir einiges an Grundlagenwissen zu fehlen. Da sollte vor so einem Projekt zuerst dran gearbeitet werden. Als nächstes stellt sich die Frage ob du für so eine Aufgabe die nötigen Messmittel hast und damit umgehen kannst. Das sieht auf dem Papier alles ziemlich trivial aus, die Realität ist dann aber meistens was komplett anderes.
Hier die Schaltung mit IR2101 als Treiber, spart einiges an Teilen. (rechter Teil des Schaltplans) @temp: Grundlagenwissen... ja das ist irgendwo in der Schublade :-) und wie heisst noch dieser kleine Fernseher? Achja, Scope... hab ich auch. Ich weiss sogar, wo das gefährliche Ende des Lötkolbens ist! Grins...
Wolfram F. schrieb: > neuer PIC Freund schrieb im Beitrag #4966484: >> Wenn es diskret werden soll, schmöker doch mal in Schaltplänen aus den >> 90ern. Da wurde so was mit Ansteuertrafos erledigt. > > ok, welcher Ansteuertrafo macht denn auch DC? :-) > Das geht in diesen Fall nicht mit Trafos, da die MOSFETs auch komplett > ein oder ausgeschaltet sein können! Je nach Modus, Buck oder Boost. GateAnsteuerÜbertrager bereiten auch Probleme, wenn das Tastverhältnis über einen größeren Bereich verfahren werden soll.
Es geht auch ohne Lötkolben und Oszilloskope: Mit einem Simulator wie LTSpice. Kann ich Dir nur dringend anraten, Dich da mal rein zu fuchsen. Es ist ein mächtiges Werkzeug um die Arbeitsweise von Schaltungen bis ins kleinste Detail zu analysieren und zu verstehen. Und der Verschleiß an Bauteilen ist vernachlässigbar.
ja ich kenne LTSpice, ist wirklich klasse, nur manchmal sind die passenden Bauteile nicht dabei. Ich werde die Schaltung mal damit aufbauen...
Wolfram F. schrieb: > Ich weiss sogar, wo das gefährliche Ende des Lötkolbens ist! dann bin ich ja beruhigt, daß du weißt, das die Hand hinten am Lötkolben und das was an der Hand dran ist viel mehr Scheiße bauen kann als die 350°C heiße Spitze... > Grins... Bei soviel Halbwissen kann man nur in Anbetracht totaler Selbstüberschätzung grinsen.
viel zum Thema hast Du ja nicht beigetragen! Aber macht auch nix, temp wird ja sowieso irgendwann gelöscht... :-) passt.
die kommen voerst von einem externen Netzteil.
:
Bearbeitet durch User
Hallo nochmal. Die IR2101 hast du ja gar nicht im Griff. Dessen Pins Vb, Hout und Vs gehören zu dem High-Side-MOSFET. Und nur zu dem. Dabei verbindest du Vs mit dem Source des High-Side. DC4 und DC6 sind soweit richtig angebunden. Beim zweiten Treiber hast du High und Low vertauscht. Das Gate von Q18 sieht irgendwas zwischen 0V und 5V Potential. Dann könntest du mit DC5 die 5V für die Low-Side-MOSFET etwas boosten.
Wolfram F. schrieb: > Ich weiss sogar, wo das gefährliche Ende des Lötkolbens ist! Ich kann mich temp nur anschließen. Ich hatte die selben Gedanken. Allein das Layout dürfte spannend werden. Hast Du schon mal einen kleinen Schaltregler aufgebaut? Mark S. schrieb: > Es geht auch ohne Lötkolben und Oszilloskope: Mit einem Simulator wie > LTSpice. Dort geht der FET aber nicht kaputt, wenn -65V am Gate gegen Source liegen. Wieso werden Q2 und Q4 eigentlich nicht durch Dioden ersetzt? Gruß Jobst
ui, da war ich wohl etwas schnell im zeichnen... Danke für die Tips! Wie sieht es denn mit LIN und HIN aus, reichen da noch immer TTL-Pegel wenn VCC vom IR2101 auf 15V ist? @Jobst: Du meinst Q2 und Q4 im "Transistor-Schaltplan"? Also Q15 & 16 im IR2101 Schaltplan? Da je nach Modus (Buck/Boost) diese auch komplett weggeschaltet werden müssen. Anbei der geänderte Schaltplan. Müsste so richtig sein.
Jobst M. schrieb: > Mark S. schrieb: >> Es geht auch ohne Lötkolben und Oszilloskope: Mit einem Simulator wie >> LTSpice. > > Dort geht der FET aber nicht kaputt, wenn -65V am Gate gegen Source > liegen. Leider wahr. Das perfekte Simulationsprogramm sollte im Fehlerfall einen Einbrennfleck auf dem Monitor hinterlassen.
Mark S. schrieb: > Leider wahr. Das perfekte Simulationsprogramm sollte im Fehlerfall einen > Einbrennfleck auf dem Monitor hinterlassen. Hey! Das ist meine Idee! :-D Gewachsen zur Zeit meiner Lehrlinge ... Und der Brandfleck muss auch da bleiben, damit man lernt. Kein undo! ;-) Gruß Jobst
Mark S. schrieb: > Leider wahr. Das perfekte Simulationsprogramm sollte im Fehlerfall einen > Einbrennfleck auf dem Monitor hinterlassen. wie gemein! Wolfram F. schrieb: > Wie sieht es denn mit LIN und HIN aus, reichen da noch immer TTL-Pegel > wenn VCC vom IR2101 auf 15V ist? ?
Beitrag #4968298 wurde von einem Moderator gelöscht.
Beitrag #4968304 wurde von einem Moderator gelöscht.
Wolfram F. schrieb: > Wie sieht es denn mit LIN und HIN aus, reichen da noch immer TTL-Pegel > wenn VCC vom IR2101 auf 15V ist? Das steht im Datenblatt des IR2101. Das würd' ich mir an deiner Stelle nochmal genau anschauen. Dann klärt sich vielleicht auch, ob D5..D8 wirklich hilfreich sind. Insbesondere das Timing, die Totzeiten, das Zusammenspiel deiner Leistungstransistoren ist sehr kritisch - ich würde mir das so nicht zutrauen. Ein "popligeres" Projekt wäre es, nicht gleich mit einem Synchronen Buck-Boost anzufangen sondern Q16, Q18 durch Dioden zu ersetzen. Oder bei deinem Wissensstand vielleicht erst einmal mit einem einfacheren Buck-Regler. Da gibts auch eine Menge zu rechnen und zu verstehen, insbesondere wenn der synchron arbeiten soll. Zum Verständnis würde ich mir auch verschiedene Datenblätter/Application Notes fertiger Schaltregler anschauen. "wie die so ticken" und nach welchen Kriterien die ihre Bauteile dimensionieren. Fixed: Typo
:
Bearbeitet durch User
Es steht eben nicht genau im Datenblatt ob die eingangspegel trotzdem ttl bleiben bei höherer von. Warum geht ihr so negativ auf den TE, er würde di h nicht im forum nach Hilfe fragen wenn er vollprofi wäre, oder? Ich finde es schade das im fast allen Foren es immer Idioten gibt die sich mit nicht sachdienlichen Beiträgen profilieren müssen! Die trotz eigentlich kann man doch prima mit dem Controller erzeugen, ausmessen u d anpassen. Was soll daran so schwer sein?
Äkhfd schrieb: > Es steht eben nicht genau im Datenblatt ob die eingangspegel trotzdem > ttl bleiben bei höherer von. Ja, ok. Von TTL-Pegeln steht da nix. Im Grundgesetz steht aber auch nicht "Äpfel klauen beim Nachbar ist verboten". Im Datenblatt stehen aber die minimalen und maximalen Spannungswerte für High und Low (in den ersten Zeilen der unteren Tabelle auf Seite 3). Bei Vcc zwischen 10V und 20V - was 15V einschließt. Ich hatte das übrigens nachgeschaut bevor ich meine Antwort geschrieben hatte (ich will mich ja nicht blamieren). Mit meinen Studis hätte ich das genauso gemacht. Nicht vorkauen sondern Hilfe zur Selbsthilfe. > Warum geht ihr so negativ auf den TE, er würde di h nicht im forum nach > Hilfe fragen wenn er vollprofi wäre, oder? Ich bin überhaupt nicht negativ eingestellt, im Gegenteil. Ich halte meinen Beitrag für sachlich und wohlwollend. > Ich finde es schade das im fast allen Foren es immer Idioten gibt die > sich mit nicht sachdienlichen Beiträgen profilieren müssen! D'accord. Trifft hier aber imho hier nicht zu. > Die Totzeit eigentlich kann man doch prima mit dem Controller erzeugen, > ausmessen u d anpassen. > Was soll daran so schwer sein? Das ist ein guter Hinweis. Mein Kommentar war als Hinweis gedacht, dass man da drauf achten muss.
:
Bearbeitet durch User
Ja die Totzeiten sind für mich das erste, was ich messen werde und einstelle. Da gibt es genügend Erfahrungen, welche nur zur Hitzeerzeugung führten :-) Die erste Prototyp-PCB ist gefräst und nun gehts erstmal ans bestücken und messen. Erstmal ohne Mosfets um zu sehen, wie die IR2101 schalten. Danke allen, die wertvolle Tips gegeben haben! Weitere Erkenntnisse folgen...
Wolfram F. schrieb: > Ich möchte nun gerne wissen, seht Ihr irgendwo Bugs, Denkfehler, falsche > Dimensionierung? 4 MOSFETs für Buck-Boost? Das alleine erscheint mir schon sehr zweifelhaft. Ansonsten fällt mir spontan auf, dass über die Z-Dioden und 10Ohm Widerstände der Strom direkt über den NPN weiter unten nach Masse fließt. Seltsame Schaltung und viel viel zu kompliziert :)
Wolfram F. schrieb: > schau dir bitte den letzten Schaltplan an! Ok, Danke! :) Mich würde ja die Regelung interessieren ... Was möchte er denn für einen Regler verwenden? PID wär wohl am besten, aber das ist dann wieder schwierig, die Regel-Konstanten zu ermitteln :)
Ich sehe da noch ein Problem: den Transistor Q18 musst du umdrehen. So wie der im Moment drinliegt hast du einen Brückenkurzschluss sobald Q17 einschaltet. Der Schaltplan ist auch unübersichtlich gezeichnet...zeichne die beiden Halbbrücken mal mit den Transistoren übereinander und nicht "ums Eck".
Sinn der vier Transistoren war ja mal der, den Regler in beiden Richtungen betreiben zu können. Davon wird hier kein Gebrauch gemacht. Bau erstmal was "kleines". Ich habe auch schonmal ein halbes Jahr lang mein Taschengeld in einen Boost Konverter gesteckt. ?
Axel R. schrieb: > Ich habe auch schonmal ein halbes Jahr lang > mein Taschengeld in einen Boost Konverter gesteckt. ? Auf welcher Basis war der? Mit dem MC34063 hatte ich mal einen Boost-Converter von 12 auf 48V mit 1A Konstantstrom für eine 50W High-Power-LED gebastelt, das ging eigentlich ganz gut :) Den Regler komplett selbst aufbauen und programmieren würde ich persönlich nicht machen wollen ... Ist sicher ganz lehrreich, aber ziemlich aufwändig imho.
Bla schrieb: > Ich sehe da noch ein Problem: den Transistor Q18 musst du umdrehen. So > wie der im Moment drinliegt hast du einen Brückenkurzschluss sobald Q17 > einschaltet. Wie kommst Du darauf, daß es einen Kurzschluss gibt? Das liegt doch erst an der Software, was passiert! Q18 umzudrehen wäre fatal, da die interne Diode des Q18 dann immer alles durchlässt! Axel R. schrieb: > Sinn der vier Transistoren war ja mal der, den Regler in beiden > Richtungen betreiben zu können. Davon wird hier kein Gebrauch gemacht. war nicht sondern ist der Sinn der Sache! Gebrauch wird davon gemacht, wenns an die Software geht! Klar kann man sowas wie den mc34063, LTC3810 usw. nehmen, hab ich auch schon häufig benutzt, aber es geht ja darum, alles von Hand zu machen, auch die Ansteuerung. Ob man das später irgendwo einsetzen wird, ist ne andere Sache.
Wolfram F. schrieb: > Bla schrieb: >> Ich sehe da noch ein Problem: den Transistor Q18 musst du umdrehen. So >> wie der im Moment drinliegt hast du einen Brückenkurzschluss sobald Q17 >> einschaltet. > > Wie kommst Du darauf, daß es einen Kurzschluss gibt? > Das liegt doch erst an der Software, was passiert! > Q18 umzudrehen wäre fatal, da die interne Diode des Q18 dann immer alles > durchlässt! Ich meinte Q15, nicht Q17 (falsch im Plan geguckt). Wenn über C22 eine positive Spannung anliegt und du Q15 einschaltest dann schliesst du C22 über die Bodydiode von Q18 kurz. Das die interne Diode von Q18 "alles durchlässt" ist richtig und soll auch so sein.
oh ja, stimmt! Wenn ich Q18 aber umdrehe,hat er im Prinzip keine Funktion mehr, dann besser ne Diode zwischen Q18 und C22... Oder ich muss nach MOSFETs ohne Diode suchen.
:
Bearbeitet durch User
Wolfram F. schrieb: > Bla schrieb: >> Ich sehe da noch ein Problem: den Transistor Q18 musst du umdrehen. So >> wie der im Moment drinliegt hast du einen Brückenkurzschluss sobald Q17 >> einschaltet. > > Wie kommst Du darauf, daß es einen Kurzschluss gibt? > Das liegt doch erst an der Software, was passiert! Ja aber wie, um alles in der Welt, soll die Software denn Q15 jemals einschalten, ohne das die Ausgangselkos C22,C23 schlagartig über diesen und die Q18-Diode entladen werden?
Wolfram F. schrieb: > Wenn ich Q18 aber umdrehe,hat er im Prinzip keine Funktion mehr, dann > besser ne Diode zwischen Q18 und C22... > Oder ich muss nach MOSFETs ohne Diode suchen. Dann hat er genau die Funktion die du willst. Wenn du einen synchronen Boost haben willst verwendest du Q15 und Q18 für die PWM. Q17 leitet permanent und Q16 sperrt. Beim synchronen Buck verwendest du Q17 und Q16 für die PWM. Q18 ist konstant ein und Q15 konstant aus. Wenn du asynchrone Konverter betreiben willst steuerst du beim Boost Q18 nicht an und beim Buck Q16. Dann funktionieren diese beiden nur als Dioden. Ich würde mal den Begriff Halbbrücke googlen und schau dir nochmals genau an wie Buck und Boost funktionieren. Zudem wirst du am Anfang wohl einiges an Bauteilen als Lehrgeld opfern müssen. Sei dir ausserdem bewusst dass das Layout des PCB einen entscheidenden Einfluss auf die Funktion des Konverters hat. Wenn die parasitären Induktivitäten nicht klein genug sind kriegst du schnell Probleme mit Schwingungen auf den Gates und Überspannungen über den FETs. Ich würde zudem noch eine Strommessung für den Spulenstrom vorsehen. Absonsten wäre so eine Buck-Boost Stufe zum lernen sicher nicht allzu falsch.
ok, überzeugt! werd ich umdrehen und spar mir die diode. danke für den Tip! edit: aber mit zusätlicher diode würde der synchron-Betrieb doch trotzdem ohne umdrehen funktionieren, oder?
:
Bearbeitet durch User
Ich denke auch das Q18 falschrum drin ist. Die Schaltung sollte streng symmetrisch sein um als Buck - Boost in beide Richtungen zu arbeiten. Soll nur in einer Richtung gearbeitet werden, reichen doch zwei Transistoren locker aus wie TI es bei seinen 48V zu 12V bidirektionale Konvertern für Hybridautos macht. mfg Michael
Mampf F. schrieb: > Auf welcher Basis war der? Mit dem MC34063 hatte ich mal einen > Boost-Converter von 12 auf 48V mit 1A Konstantstrom für eine 50W > High-Power-LED gebastelt, das ging eigentlich ganz gut :) Glaub ich nicht. Das Teil ist für 40V spezifizert und dürfte bei dieser Last abkochen.
Michael O. schrieb: > Ich denke auch das Q18 falschrum drin ist. Die Schaltung sollte streng > symmetrisch sein um als Buck - Boost in beide Richtungen zu arbeiten. Grundsätzlich hast Du recht - es muß die primäre Halbbrücke "gespiegelt" werden. Das Zauberwort ist halt Synchron ... Aber ob tatsächlich Betrieb in beide Richtungen oder nicht, das ist hier nicht der Knackpunkt (da scheinbar nicht nötig - obwohl rein topologisch möglich, nur halt mit geänderter/ergänzter Ansteuerung, also noch schwieriger... puh.). Fakt ist: Die FETs werden als Synchrongleichrichter "verkehrt herum" betrieben - was wohl den TO beim HighSide rechts verwirrt(e). Der Strom muß - als ob durch die Body-Diode - von Source nach Drain! Für Synchron-(Gleichrichter-)Betrieb baut man den gewünschten Konverter so auf, daß die Body-Dioden leiten würden - wenn man nicht stattdessen den FET einschalten würde. "Synchron" zur "eigentlich-Doden-Leit-Zeit" - was auf verschiedene Weise lösbar ist, und wenn "Rückwärts-Betrieb" gar nicht gewünscht ist, kann man da auch so "Diode-Emulation" ICs nehmen - die gibt es mittlerweile für Flyback bis LLC, mit kompensierter Vds-Messung. Aber er TO will ja scheinbar dringend möglichst alles mit dem Nano machen - ich würde schlicht mal auf der LinearTech Seite nach Synchronous Buck-Boost suchen - ich glaube, die gehen auch rückwärts(?), und/aber sind zumindest in jeder Hinsicht überlegen. Aber ist ja ein Lehr-/Lernprojekt.
Homo Habilis schrieb: > Synchronous Buck-Boost suchen - ich glaube, die gehen auch rückwärts(?) Meinst du mit rückwärts das der Ausgang und Eingang vertauscht sind? Wenn ja, dies ist evt. ne nette Möglichkeit, hier aber nicht erforderlich. Ich habe mir mal den LTC3789 angeschaut, dort sind Q18 UND Q15 gedreht! Warum auch Q15? Das verwirrt mich... http://cds.linear.com/image/9012.png
:
Bearbeitet durch User
Ok, beim LT8705 ist Q15 wie in meiner Schaltung und nur Q18 gedreht, diese kommt meiner Schaltung sehr nahe. Siehe http://cds.linear.com/image/9666.png
:
Bearbeitet durch User
Mark S. schrieb: > Glaub ich nicht. Das Teil ist für 40V spezifizert und dürfte bei dieser > Last abkochen. Externer Power-MOSFET :) Der MC34063 alleine schafft das natürlich nicht^^
Hallo Wolfram, bitte verzeih die späte Rückmeldung. Wolfram F. schrieb: > Meinst du mit rückwärts das der Ausgang und Eingang vertauscht sind? > Wenn ja, dies ist evt. ne nette Möglichkeit, hier aber nicht > erforderlich. Ja, meinte ich. Topologie würde das erlauben. Wolfram F. schrieb: > Ok, beim LT8705 ist Q15 wie in meiner Schaltung und nur Q18 gedreht, (Den LTC3789 gab ich mir nicht angesehen, da laut Dir vermutlich eh unpassend, und meine Verbindung äußerst mangelgaft... Soll heißen, was ich nicht laden muß - lade ich nicht. Von einer Drehung von Q15 hatte ich nicht gesprochen. Nur Q18. Ich bin mir nicht sicher, was meine Vorredner meinten. Deine ist: Wolfram F. schrieb: > diese kommt meiner Schaltung sehr nahe. > Siehe http://cds.linear.com/image/9666.png ...exakt diese Schaltung. Das sind, wie gesagt, zwei sog. "Halbbrücken", am Schaltknoten (Mitte) durch Induktor verbunden. Und deshalb sowohl symmetrisch, synchron und auf- wie auch abwärts-wandelfähig, als auch das Ganze rückwärts möglich. Diese Controller-ICs sind für den Zweck optimiert, ganz anders als ein Ard. Nano. Womit ich der Idee "SMPS mit Arduino" nicht die Daseinsberechtigung abspreche, aber gut ist halt was anderes. Es kommt natürlich auch auf die zu versorgende Last an, aber mit einem dedizierten (wenn auch analogen) Schaltregler-IC ist man hier in jeder Hinsicht besser dran. Die Gründe muß ich eigentl. nicht erläutern, die ergeben sich schon (deutlich) bei Studium des LT-Datenblattes.
Nun gibt es aber auch Kontroller mit diversen Modulen um einem das leben des Schaltreglers angenehmer zu gestalten. Mikrochip hat da diverse Spielereien in verschiedene PIC Kontroller gepackt. Opamps und schnelle Komperatoren in die einfachen, schnelle DSP befehle in die SMPS fähigen DSPics und als letztes jetzt PICs mit komplexen SMPS Modulen für analoge oder digitale Regelschleifen ganz nach dem jeweiligen Geschmack. mfg Michael
Für den Universalwandler würde ich immer eine klassische H-Brücke aufbauen und auch als solche Zeichnen, d.h. High- und Low-Side-MOSFETs einander gegenübergestellt. Das einzig ungewöhnliche ist die fehlende Verbindung zwischen den beiden High-Side-MOSFETs, da der MOSFET rechts oben (klassische H-Darstellung) zur Diode in Flussrichtung wird. In AN4449[1] von ST gibt es Prinzipdarstellungen und die verschiedenen Ansteuerschemata. Dort wird auch auf die Totzeit-Einstellung (dead time insertion) Bezug genommen. Einem Arduino würde ich mit 500kHz-PWM-Ziel die dead time insertion nicht zutrauen, wenn er noch Regelaufgaben hat, besonders nicht mit Arduinos C++-Bibliothekszeugs. [1] http://www.st.com/content/ccc/resource/technical/document/application_note/ec/9c/b0/81/b5/12/4e/21/DM00108726.pdf/files/DM00108726.pdf/jcr:content/translations/en.DM00108726.pdf
Homo Habilis schrieb: > Es kommt natürlich auch auf die zu versorgende Last an, aber > mit einem dedizierten (wenn auch analogen) Schaltregler-IC > ist man hier in jeder Hinsicht besser dran. Es geht mir hier doch garnicht um einen Schaltregler "haben" zu wollen, sondern mal einen "von Hand" aufzubauen und dabei zu lernen! Wenn ich für irgendwas einen brauche, kaufe ich ein IC oder gar eine ferige platine und verwende den. Man weiss, wie so ein Ding funktioniert und das es macht, was es soll (meistens ;-) ) aber wenn man's selber mal aufbaut, sieht und versteht man die Dinge ganz anders! Boris O. schrieb: > Einem Arduino würde ich mit 500kHz-PWM-Ziel > die dead time insertion nicht zutrauen, wenn er noch Regelaufgaben hat, :-) die 500Khz waren ein Tippfehler, eher 50kHz! Ich bin auch mal gespannt, ob der 328 das beides packt oder was auf externe HW ausgelagert werden muss! Sicher wird die Spannungs- und (später) Strommessung zu langsam sein, ok, zum Batterieladen vielleicht noch gut genug.
Homo Habilis schrieb: > Von einer Drehung von Q15 hatte ich nicht gesprochen. Nur Q18. > Ich bin mir nicht sicher, was meine Vorredner meinten. Beim Beispiel-Schaltplan vom LTC3789 ist Q15 auch verdreht, was mich wunderte
Was mich schon länger beschäftigt, wie kann man (per Software) die beste Arbeitsfrequenz für eine "unbekannte" Spule herausfinden? F durchstimmen von 20-80KHz und messen bei welcher Frequenz die höchste Spannung im Leerlauf erzeugt wird? Wäre klasse, wenn der µC sich an die Spule anpassen könnte! Natürlich nicht irgendwelche Spulen, nur Speicherdrosseln im üblichen Bereich, sagen wir mal 20µH bis 1mH.
:
Bearbeitet durch User
Wolfram F. schrieb: > Schaltplan Update mit korrekten Q18 und angepasster Tabelle. Ach jetzt hab ich das mit den DCDC Wandlern gecheckt ... Hatte mich schon gewundert ... Aber du scheinst unbedingt N-Kanal-MOSFETs verwenden zu wollen. Eine Frage: Du nimmst mittlerweile eh MOSFET-Treiber her, wieso nimmst du keinen mit High-Side-Treiber, der Bootstrapping macht? Die machen im Prinzip das, was du umständlich über DCDC-Wandler machst, aber in klein und nett und süß und nicht so Bruteforce-mäßig. Du würdest dir die DCDC-Wandler sparen und bräuchtest nur 2 Kondensatoren stattdessen oder so ... *edit*: Außerdem bringen deine 15V DCDC-Wandler nur 50mA Ausgangsstrom ... Das halte ich für ein Problem. Gates werden normalerweise mit Strömen im Ampere-Bereich umgeladen, damit die MOSFETs schnell und mit wenig Verlusten schalten können ... Hmm, ob deine Cs das soweit puffern können, wenn der DCDC nur so wenig Strom bringt. Halte ich für keine gute Idee ...
:
Bearbeitet durch User
Und noch ein kleiner Einwand ... normal müsste man auch den Strom durch die Spule messen und bei Sättigung die MOSFETs ausschalten ... Das fehlt hier auch noch.
Mampf F. schrieb: > Eine Frage: Du nimmst mittlerweile eh MOSFET-Treiber her, wieso nimmst > du keinen mit High-Side-Treiber, der Bootstrapping macht? Weil die Ladungspumpe leerlaufen würde wenn Q17 oder Q18 dauerhaft eingeschaltet wären! Dinge wie Strombegrenzung kommen später, hier gehts mir erstmal um das Prinzip und um die Ansteuerung mit dem 328. Das Scope wird dann immer dabei sein!
Erster Test erfolgreich! Die Platine ist gefräst, bestückt und nachgearbeitet, da ein paar Leiterbahnen diagonal waren und zu dicht zusammen für den Gravierstichel waren, musste ich mit Reperaturdraht diese flicken. Alle Spannungen an den IR2101 sind da. Erster einfacher Test ohne Vin und ohne Spule per analogWrite(10,128); analogWrite(9,128); analogWrite(6,128); analogWrite(5,128); mit standart PWM von 970Hz zeigen 50% duty-cycle am Logicanalyzer (direkt an D10,D9,D5,D6 gemessen, TTL) Mit dem Scope genauso gut nachverfolgbar die Spannungen an den Gates! Nun ist schonmal sichergestellt das die Hardware das macht, was sie soll UND: das Lin und Hin des IR2101 trotz 15V VCC TTL-kompatibel bleiben! Nun muss ich mich erstmal damit beschäftigen, wie man 30Khz für die 4 Ausgänge erzeugt und wie man die Totzeit von erstmal 1µS mit einbauen kann.
:
Bearbeitet durch User
Jessas Marie! Weiter weg konntest du die MOSFET-Treiber nicht mehr platzieren?
da das ganze erstmal nur ein Versuch ist, wird das Layout sicher noch optimiert werden müssen, wer Tips hat... gerne! Die IR2101 sind SMD Bauteile auf SO8-DIP8 Adaptern.
oha, das das so krass sich verhalten kann, wusste ich nicht! Danke für den Link! Sehr hilfreich! Also sollten die Treiber so gut wie direkt an die FETs... Werde ich mir merken fürs nächste Layout!
Wolfram F. schrieb: > Werde ich mir merken fürs nächste Layout! So kann man mit diesem Problem umgehen, ja... wenn man bei rund 1kHz bleiben will - bei dieser Platine. Zeig doch mal die (von Dir ja positiv gedeuteten) Spannungs-Verlauf-Kurven von V(GS) und V(DS) bei ein, zwei FETs. Wolfram F. schrieb: > Dinge wie Strombegrenzung kommen später Hoffentlich vor einem Test des nahezu kompletten Schaltreglers einschl. angeschl. Spule, und V(in) an niederohmiger Spannungsquelle. Was sind das überhaupt für FETs? IRFP4668 gibt´s im TO-247, und das wären recht überlebensfähige (sogar äußerst zähe) Dinger - denen hätte man u.U. Tests ohne "cycle-by-cycle" (also innerhalb eines Schaltzyklus) Strombegrenzung zumuten können.
Hallo, "Dinge wie Strombegrenzung kommen später, hier gehts mir erstmal " Kommt die Spule in die Sättigung, verabschieden sich die FETs ganz schnell aufgrund übermäßiger Strombelastung. Dabei kann auch die Ansteuerung zerstört werden. Also doch besser Strommessung per Shunt (wirkt auch bei DC oder per Stromtrafo (wirkt nur im Schaltbetrieb) mit einbauen. Das verhindert Mißerfolge. Mit freundlichem Gruß
Christian S. schrieb: > Dabei kann auch die > Ansteuerung zerstört werden. Ja, das passiert wenn drain durchlegiert zum gate und plötzlich die volle Betriebsspannung an den Treiber durchgereicht wird. Dies läßt sich wirkungsvoll verhindern, indem man das gate kapazitiv koppelt (10..100nF) und diesem Kondensator einen Widerstand von 10..100k parallel schaltet. Diese Kombination verändert das gate-Signal nur minimal und begrenzt dabei den Stromstoß beim Durchlegieren des PowerMOSFET auf verträgliche Werte.
Homo Habilis schrieb: > Was sind das überhaupt für FETs? IRFP4668 gibt´s im TO-247, und das > wären recht überlebensfähige (sogar äußerst zähe) Dinger - denen hätte > man u.U. Tests ohne "cycle-by-cycle" (also innerhalb eines Schaltzyklus) > Strombegrenzung zumuten können. habe erstmal 4x SUP60N06 drin, da ich von den IRFP4668 nur 2 da habe. Christian S. schrieb: > Also doch besser Strommessung per Shunt dann am besten beide SRC von Q16 und Q15 zusammen -> Shunt -> GND und am Shunt nen OP mit poti rein? Für Iin und Iout wollte ich ACS758 nehmen. Fotos vom Scope kommen noch.
Wolfram F. schrieb: > habe erstmal 4x SUP60N06 drin Hmm, also 65V Uds halten die schon mal nicht aus. 60V packen sie, aber man sollte wohl noch etwas Luft lassen. Ansonsten sehen sie garnicht so schlecht aus.
Bilder zeigen die GATEs von Q17 (gelb) und Q16 (blau) bei 50% duty cycle und Q18 (gelb) und Q15 (blau) bei 3% bzw. 97% duty cycle, das ganze bei 31KHz. Beim letzen Bild kann man gut erkennen, daß es Überschneidungen gibt. Ich habe aber keine Ahnung, wie ich ne dead-time im Programm realisieren soll...
:
Bearbeitet durch User
Habe nun mit der DIO2 Library (https://www.codeproject.com/Articles/732646/Fast-digital-I-O-for-Arduino) per digitalWrite das PWM mit deadtime hinbekommen! :)
1 | #include <arduino2.h> |
2 | |
3 | const uint8_t Q18 = 5; |
4 | const uint8_t Q15 = 6; |
5 | const uint8_t Q16 = 9; |
6 | const uint8_t Q17 = 10; |
7 | |
8 | int t = 10; // µS |
9 | int dead = 1; // µS |
10 | |
11 | void setup() |
12 | {
|
13 | pinMode2(5, OUTPUT); |
14 | digitalWrite2(5, LOW); |
15 | pinMode2(6, OUTPUT); |
16 | digitalWrite2(6, LOW); |
17 | pinMode2(9, OUTPUT); |
18 | digitalWrite2(9, LOW); |
19 | pinMode2(10, OUTPUT); |
20 | digitalWrite2(10, LOW); |
21 | }
|
22 | |
23 | void loop() |
24 | {
|
25 | digitalWrite2(Q18, HIGH); |
26 | delayMicroseconds(t); |
27 | digitalWrite2(Q18, LOW); |
28 | delayMicroseconds(dead); |
29 | digitalWrite2(Q15, HIGH); |
30 | delayMicroseconds(t); |
31 | digitalWrite2(Q15, LOW); |
32 | delayMicroseconds(dead); |
33 | |
34 | }
|
Der Vorteil gegenüber "normalen" PWM ist, es funktioniert auf jeden Pin! Nachteile werden sich ergeben, wenn der 328 noch was anderes tun soll. Aber so gehts erstmal! Bei t = 10µS erhalte ich immer eine Taktfrequenz von 36KHz ! t muss nun abhängig vom analogeingang mehr oder weniger werden. Auf den Bildern kann man prima die Totzeit erkennen! Nun noch 2 Routinen zum testen bauen, einmal Buck und einmal Boost. Dann wirds spannend, Spule ran und ne Spannung...
:
Bearbeitet durch User
Prima, bin auf die Software gespannt :) Die Hardware zu designen hätte ich persönlich wesentlich einfacher gefunden, als die Software dazu zu bauen. Interessant wird es, wenn es um Regelung (zB PID) geht und um die Regelung bei Laständerung ... Das wird spannend! :)
Jaaa, DAS wird es sicher! Wenns nicht schnell genug klappt mit dem auswerten der Spannung und des Stroms, muss das ausgelagert werden und per HW geregelt werden. Aber mal sehen... Morgen gehts weiter, hoffentlich ohne Qualm :-)
erste Test mit boost und buck modus liefen erfolgreich! Ich habe eine 240µH/20A Speicherdrossel aus einer alten USV angwschlossen. Bei jeweil 50% duty cycle hat bei einer Eingangsspannung von 10V das Teil 5.5 bzw. 20V erzeugt, (5.5 buck, 20 boost modus). Erstmal ohne Last für ca. 15min. Dann 100Ohm als Last angeklemmt, die Spannungen blieben fast gleicht, im boost modus wurde dem 100Ohm / 3W Widerstand allerdings etwas heiss. Die MOSFETs blieben aber eiskalt! Nur die Spule wurde lauwarm! Es funktioniert wie es soll! Wenn ich aber die ADCs im Programm abfrage, sinkt die Taktfrequenz von ~30KHz auf ca.2-3KHz ! Ich habe das befürchtet und bin zu dem Entschluss gekommen, die PWM Erzeugung MUSS hardwaremäßig erfolgen, ebenso die U & I Überwachung. Man könnte zwar damit arbeiten, so wie Buck/Boost einschalten, ausschalten, messen, einschalten... aber das ist wohl zu hakelig. Ideal wäre ein PLD für die PWM Erzeugung mit deadtime und OPs für U & I Überwachung. Ich werde es trotzdem noch probieren mit IF Uout > Usoll .... vielleicht kann man das ja für die Solarzellen zum laden der Akkus noch verwenden. HWmäßig ist alles aber i.O. Das Layout natürlich suboptimal.... Trotzdem sehr spannend alles!
> Ideal wäre ein PLD für die PWM Erzeugung mit deadtime und OPs für U & I > Überwachung. Wieso PLD? Mit nem dsPIC geht beides. Oder nimm einen UC-irgendwas. Fertige ICs für Schaltregler ;)
ja fertige Schaltregler sind gut, dies ist jedoch ein Lernprojekt, daher diese Gedanken :-)
Nur weil pfiffige Firmen PWM & OPs in ein schwarzes kleines Gehäuse gepackt haben, bedeutet das noch lange nicht, dass das fertige Schaltregler out of the box sind. Willst du die Grundlagen vom Schaltregler (Schleifenkompensation usw.) lernen oder die Grundlagen programmierbarer Logik um damit bisschen PWM zu machen? Und als nächstes, wie man einen OP an nem FPGA/CPLD anschließt? > Ich habe das befürchtet und bin zu dem Entschluss gekommen, die PWM > Erzeugung MUSS hardwaremäßig erfolgen, ebenso die U & I Überwachung. Dann nimm ein Schaltregler-IC, bringe das an deinem Leistungsteil sauber zum laufen, dann kannst du mit dem gewonnenen Wissen immer noch mit Kanonen auf Spatzen schießen und mittels programmierbarer Logik Pillepalle-PWM erfinden. Oder nimm nen passenden uC statt dem Arduino.
Moin moin, wenn es schon so gefrikelt sein muss, nimm doch TL494 als Takterzeugung. Die Ausgangsspannung kannst du dann durch einen "analogwrite" und Tiefpass vom Arduino aus auf einen der beiden der Error-Amps jagen und so die Puls-Pause Vorgabe machen. Es scheint, als willst du keine großen Leistungen Treiben... dann mach doch die einfachere Version aus zwei Dioden und nur zwei FETs... dann ist das noch einfacher. Frag doch mal TK aus der Entwicklung nach Support ;)
Wumpus schrieb: > Frag doch mal TK aus der Entwicklung nach Support ;) Hab ich schon :-) Ich habe es nun aber hinbekommen die Timer fürs PWM mit 31kHz UND einstellbarer Totzeit zum laufen zu bekommen! Die laufen im Mode 1, Phase Corrected PWM. void buck() { TCCR0A = 0b00000000; //PWM-Modus 1 D9 / D10 aus TCCR0B = 0b11000000; // TCCR1A = 0b10110001; //PWM-Modus 1 D9 / D10 pwm TCCR1B = 0b11000001; // 31KHz OCR1A=duty-dead; OCR1B=255-duty+dead; digitalWrite2(Q18, HIGH); // Q18 dauern einschalten } void boost() { TCCR1A = 0b00000000; //PWM-Modus 1 D9 / D10 aus TCCR1B = 0b11000000; // TCCR0A = 0b10110001; //PWM-Modus 1 D5 / D6 pwm TCCR0B = 0b11000001; // 31KHz OCR0A=duty-dead; OCR0B=255-duty+dead; digitalWrite2(Q17, HIGH); // Q17 dauern einschalten } Selbst die Abfrage der DACs funktioniert nun! Eine Abfrage in der Loop funktioniert nun auch, ohne die PWM zu stören! Eben mit Spule und Last (100 Ohm) ausprobiert, klappt prima! Und Spule und MOSFETs bleiben selbst bei 16W eiskalt! Das Biest macht bisjetzt genau das was es soll! Von wegen, Störungen wegen dem Layout, Abstand der IR2101 zu den Mosfets... Muss mir erstmal ein paar passende Kühlkörper montieren und das ganze auf eine experimentierfreudige Platte schrauben, dann gehts an die Strommessung und -Begrenzung. Alle die versuchen, mir das ganze auszureden.... keine Chance! Vielleicht kommt am Ende ja doch ein sehr gut nutzbarer Universal-Wandler bei raus! Spass macht es jedenfalls mal das ganze von Hand zu realisieren!
:
Bearbeitet durch User
na na :-) dann schau Dir mal die ganzen SNTs aus der U-Elektronik an, da findet man viel die in dem Bereich arbeiten! Klar ist ne höhere Frequenz heutzutage etliches effektiver, sagt ja auch keiner, daß diese 31kHz das Ziel sind, aber wenigstens werden die nun nicht mehr durch die ADC Abfragen nicht mehr gestört! Kann man die Timer beim 328 eigentlich auch mit nem externen, variablen Takt versehen? Welche Auswirkungen würde ein Tausch der Induktivität von 240µ╣H auf 30µH haben?
HF-Schorsch schrieb: > STM32... tolle Antwort! Wer hat denn gefragt, welche µC sonst in Frage kommt?
benimmst du dich in allen Foren daneben? Jeden der hilft maulste als Dank noch an. Vor Crosspostings machst du auch nicht halt. http://forum.arduino.cc/index.php?topic=469770.0 Solche Typen.... Kopf schüttel.
Example schrieb: > benimmst du dich in allen Foren daneben? > Jeden der hilft maulste als Dank noch an. > Vor Crosspostings machst du auch nicht halt. > > http://forum.arduino.cc/index.php?topic=469770.0 > > Solche Typen.... Kopf schüttel. Er macht das ja "für Lehrlinge", ist also gewohnt für "Ruhe im Saal" zu sorgen.
Wolfram F. schrieb: > welche µC sonst in Frage kommt? "STM32" ist nicht die Antwort darauf - sondern eher, womit man das "gescheit hin kriegen würde".
Wumpus schrieb: > nimm doch TL494 als Takterzeugung Das meine ich übrigens ernst! Ich würde die Regelung auf einen std. Regler legen (z.B. TL494, UC3843,...) und den einfach per Vorgabe durch DAC regeln. Eine gute Zusammenfassung ist z.B. http://www.ti.com/lit/ml/slup232/slup232.pdf oder auch https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwit18ab5KjTAhUFaRQKHQdmCxIQFggtMAE&url=https%3A%2F%2Fwww-304.ibm.com%2Fjct03001c%2Fprocurement%2Fproweb.nsf%2F7a84535a0acd580885256b3f000e250a%2Fefbd29acd2fbd28485256f190048dd77%2F%24FILE%2FI-Roal_IBM%2520Rochester%2520Platform%2520Symposium%2520-%2520Remote%2520control%2520via%2520Can%2520Bus.pdf&usg=AFQjCNGfgOciZOm5de9dwPwrqSrTy548Dw&sig2=8PmWTpH-AQF8p-As4Qc3CA&bvm=bv.152479541,d.ZWM Man hat dadurch den Vorteil, das so eine wesentlich schnellere Regelung die auf "Probleme" deutlich schneller reagiert. der µC macht dann einfach nur die Vorgabe. Noch dazu ist das deutlich anspruchsloser, was die Software angeht ;-)
Carl D. schrieb: > Example schrieb: >> benimmst du dich in allen Foren daneben? >> Jeden der hilft maulste als Dank noch an. >> Vor Crosspostings machst du auch nicht halt. >> >> http://forum.arduino.cc/index.php?topic=469770.0 >> >> Solche Typen.... Kopf schüttel. > > Er macht das ja "für Lehrlinge", ist also gewohnt für "Ruhe im Saal" zu > sorgen. Welche Lehrlinge? Verstehe nicht ganz.
Wumpus schrieb: >> nimm doch TL494 als Takterzeugung > > Das meine ich übrigens ernst! > Ich würde die Regelung auf einen std. Regler legen (z.B. TL494, > UC3843,...) und den einfach per Vorgabe durch DAC regeln. Hi, ich hab mir den TL494 mal angeschaut, der scheint ja tatsächlich genau der zu sein, der für diese Schaltung ideal wäre! Habe ihn selber noch nie eingesetzt, aber klingt vielversprechend. Kennst Du den gut? Habe gelesen, daß der Deadtime-Eingang 3% deadtime macht, wenn er auf GND liegt und bis zu 100% bei 3.3V. Könnte man damit die Regelung machen? Das Ergebnis müsste demnach einem einstellbaren PWM doch gleich sein, oder? Und was wäre besser, 2 Stück davon, je einen für den Buck und Boost Teil einen, oder die Ausgänge per z.B. 7400 umschaltbar zu machen? Ich habe übrigens nun auch die Regelung per Software so einigermaßen hinbekommen! ich war erstaunt, daß trotz der recht langsamen ADCs diese schnell genug funktioniert! Allerdings funktioniert der Boost Modus fast perfekt, wogegen der Buck Modus erst funktioniert, wenn die Vin doppelt so groß ist wie die gewünschte Vout! Liegt wahrscheinlich daran, daß mehr als 50% duty cycle nicht in dem verwendeten PWM Modus geht. Hier mal das Listing:
1 | #include <arduino2.h> // Fast DigitalWrite Library laden |
2 | // siehe
|
3 | // https://www.codeproject.com/Articles/732646/Fast-digital-I-O-for-Arduino
|
4 | |
5 | const uint8_t Q18 = 6; |
6 | const uint8_t Q15 = 5; |
7 | const uint8_t Q16 = 9; |
8 | const uint8_t Q17 = 10; |
9 | |
10 | int duty = 0; |
11 | int dead = 1; |
12 | float V_IN = 0; |
13 | float V_OUT = 0; |
14 | |
15 | void setup() |
16 | {
|
17 | analogReference(INTERNAL); // ADC Ref. auf 1.1V setzen. |
18 | |
19 | pinMode2(2, OUTPUT); |
20 | digitalWrite2(2, LOW); // LED BUCK Modus |
21 | pinMode2(3, OUTPUT); |
22 | digitalWrite2(3, LOW); // LED DURCHGANGs Modus |
23 | pinMode2(4, OUTPUT); |
24 | digitalWrite2(4, LOW); // LED BOOST Modus |
25 | pinMode2(5, OUTPUT); |
26 | digitalWrite2(5, LOW); |
27 | pinMode2(6, OUTPUT); |
28 | digitalWrite2(6, LOW); // Ausgänge definieren und auf LOW schalten |
29 | pinMode2(7, OUTPUT); |
30 | digitalWrite2(7, LOW); // LED DUTY + |
31 | pinMode2(8, OUTPUT); |
32 | digitalWrite2(8, LOW); // LED DUTY - |
33 | pinMode2(9, OUTPUT); |
34 | digitalWrite2(9, LOW); |
35 | pinMode2(10, OUTPUT); |
36 | digitalWrite2(10, LOW); |
37 | // cli(); // Interrupts ausschalten
|
38 | duty = 3; |
39 | OCR0A = duty - dead; |
40 | OCR0B = 255 - duty + dead; |
41 | OCR1A = duty - dead; |
42 | OCR1B = 255 - duty + dead; |
43 | |
44 | }
|
45 | |
46 | void loop() |
47 | {
|
48 | |
49 | float V_soll = 9.0; |
50 | |
51 | // modus auswählen, buck,boost,durchgang
|
52 | if (V_IN == V_soll) |
53 | {
|
54 | digitalWrite2(2, LOW); |
55 | digitalWrite2(3, HIGH); |
56 | digitalWrite2(4, LOW); |
57 | durchgang(); |
58 | }
|
59 | else if (V_IN > V_soll) |
60 | {
|
61 | digitalWrite2(2, HIGH); |
62 | digitalWrite2(3, LOW); |
63 | digitalWrite2(4, LOW); |
64 | buck(); |
65 | }
|
66 | else if (V_IN < V_soll) |
67 | {
|
68 | digitalWrite2(2, LOW); |
69 | digitalWrite2(3, LOW); |
70 | digitalWrite2(4, HIGH); |
71 | boost(); |
72 | }
|
73 | else if (V_soll == 0) |
74 | {
|
75 | all_off(); |
76 | digitalWrite2(2, LOW); |
77 | digitalWrite2(3, LOW); |
78 | digitalWrite2(4, LOW); |
79 | }
|
80 | |
81 | // duty erhöhen/verringern
|
82 | if (V_OUT < V_soll) |
83 | {
|
84 | duty = duty + 1; |
85 | digitalWrite2(7, LOW); |
86 | digitalWrite2(8, HIGH); |
87 | }
|
88 | if (V_OUT > V_soll) |
89 | {
|
90 | duty = duty - 1; |
91 | digitalWrite2(7, HIGH); |
92 | digitalWrite2(8, LOW); |
93 | }
|
94 | |
95 | // duty Bereich eingrenzen
|
96 | if (duty < dead) |
97 | {
|
98 | duty = dead; |
99 | }
|
100 | if (duty > 127) |
101 | {
|
102 | duty = 127; |
103 | }
|
104 | |
105 | // Timer setzen
|
106 | OCR0A = duty - dead; |
107 | OCR0B = 255 - duty + dead; |
108 | OCR1A = duty - dead; |
109 | OCR1B = 255 - duty + dead; |
110 | |
111 | |
112 | // // 0.00107421875V pro Bit
|
113 | // // Spannungsteiler 100000 / 820 Ohm = 82
|
114 | //
|
115 | V_IN = map(analogRead(A1), 0, 1023, 0, 135); |
116 | V_OUT = map(analogRead(A0), 0, 1023, 0, 135); |
117 | }
|
118 | |
119 | void buck() |
120 | {
|
121 | TCCR0A = 0b00000000; // D5 / D6 aus |
122 | TCCR0B = 0b11000000; // |
123 | TCCR1A = 0b10110001; //PWM-Modus 1 D9 / D10 pwm |
124 | TCCR1B = 0b11000001; // 31KHz |
125 | digitalWrite2(Q18, HIGH); // Q18 dauern einschalten |
126 | }
|
127 | void boost() |
128 | {
|
129 | TCCR1A = 0b00000000; // D9 / D10 aus |
130 | TCCR1B = 0b11000000; // |
131 | TCCR0A = 0b10110001; //PWM-Modus 1 D5 / D6 pwm |
132 | TCCR0B = 0b11000001; // 31KHz |
133 | |
134 | digitalWrite2(Q17, HIGH); // Q17 dauern einschalten |
135 | }
|
136 | |
137 | void all_off() |
138 | {
|
139 | TCCR0A = 0b00000000; // D5 / D6 aus |
140 | TCCR0B = 0b11000000; // |
141 | TCCR1A = 0b00000000; // D9 / D10 aus |
142 | TCCR1B = 0b11000000; // |
143 | digitalWrite2(Q17, LOW); // Q17 dauern ausschalten |
144 | digitalWrite2(Q16, LOW); // Q17 dauern ausschalten |
145 | digitalWrite2(Q18, LOW); // Q18 dauern ausschalten |
146 | digitalWrite2(Q15, LOW); // Q18 dauern ausschalten |
147 | }
|
148 | |
149 | void durchgang() |
150 | {
|
151 | TCCR0A = 0b00000000; // D5 / D6 aus |
152 | TCCR0B = 0b11000000; // |
153 | TCCR1A = 0b00000000; // D9 / D10 aus |
154 | TCCR1B = 0b11000000; // |
155 | digitalWrite2(Q17, HIGH); // Q17 dauern einschalten |
156 | digitalWrite2(Q16, LOW); // Q17 dauern ausschalten |
157 | digitalWrite2(Q18, HIGH); // Q18 dauern einschalten |
158 | digitalWrite2(Q15, LOW); // Q18 dauern ausschalten |
159 | }
|
:
Bearbeitet durch User
Example schrieb: > Vor Crosspostings machst du auch nicht halt Was ist denn daran schlimm? Ich finde es total in Ordnung!
Example schrieb: > Carl D. schrieb: >> >> Er macht das ja "für Lehrlinge", ist also gewohnt für "Ruhe im Saal" zu >> sorgen. > > Welche Lehrlinge? Verstehe nicht ganz. Einfach Eingangs-Post durchlesen.
Hallo, @ 34063: weil es nur Kaos erzeugt, verschiedene Leute die nichts von einander wissen reden alle aneinander vorbei. Das Thema wird in verschiedenen Foren zerpflückt, niemand hat über alles den roten Faden. Das Forum zu wechseln macht nur Sinn, wenn alle ihr bestes gegeben haben und leider doch keine Lösung zu Stande kam. Dann kann man mit etwas zeitlichen Abstand das Problem in einem anderem Forum stellen und den Link von Anfang an zeigen wo man schon gefragt hat. Das lehrt einfach der gesunde Knigge in einem. Ohne all das spielt man nur alle gegeneinander aus! Das Schlimme ist, er macht hier und da die Leute noch blöd an. Wenn man das so liest. Erwartet jedoch weiterhin Unterstützung. Kopfschüttel.
Example schrieb: > Das Forum zu > wechseln macht nur Sinn, wenn alle ihr bestes gegeben haben und leider > doch keine Lösung zu Stande kam Sorry, aber muss ich Dir in diesem Fall Unrecht geben! Denn in diesem Forum geht es mehr um die Elektronik und im Arduino Forum mehr ums programmieren. Sicher sind hier auch viele dabei, die weitaus besser programmieren können als ich, da man es von DIESEM Forum leider schon kennt, belächelt zu werden sobald der Begriff Arduino fällt, ist es doch völlig ok wenn man sich gleich im richtigen "Raum" dafür befindet! Wenn man gutes Öl fürs Auto kaufen möchte, kauft man doch auch nicht bei Aldi /Lidle sondern geht gleich zum richtigen Fachhandel! Und mal ehrlich, WEN stört/nervt es nicht, auf eine gezielte Frage eine Antwort zu bekommen, die damit nix zutun hat? Nach dem Motto: wie kann ich mit 2 Transistoren einen Blinker bauen? Antwort: Nimm nen NE555 ! Jedem, - auch wenn Ihr das nicht zugeben wollt -, nerven solche Antworten! Den Leuten, die mir Tips gegeben haben, sei nochmals recht herzlichen Dank ausgesprochen!
Was ist eigentlich aus dem Wandler geworden, nachdem jetzt ein wenig Zeit ins Land gegangen ist?
der Arduino DCDC Wandler hat zum Schluss super funktioniert, nur im Bereich wo die Ausgangsspannung gleich der Eingangsspannung war, konnte er sich nicht zwischen ste-up und step-down entscheiden. Ein Blick auf einen änlichen fertigen Chip von Linear hat mir in der Simulation gezeigt, daß in diesen Bereich beide Modis aktiv sind, schnell abwechselnd. Dies jedoch habe ich dann aber nicht mehr eingebaut, da ich genug gelernt hatte! Ich habe das Projekt abgeschlossen.
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.