Hi ich verwende eine PIC16F877A und erzeuge damit ein PWM-Signal welches ich an einen boost-converter schicke. Jetzt möchte ich den einfachen boost-converter gegen einen 2 Phasen interleaved austauschen, dafür brauche ich ja zwei PWM-Signale für jeden mosfet ein. Ich habe jetzt aber schon RC1 für die Ansteuerung des LCDs eingesetzt und habe somit nur noch RC2 übrig. Wie bekomme ich das PWM-Signal um 180° phasenverschoben,damit ich mit einem PWM-Signal auskomme?
:
Bearbeitet durch User
Hallo! Du kannst einfach einen Transistor als Schalter nehmen, welcher gegen Masse schaltet. Philipp
Sry habe mich verschrieben, war beim Formulieren meiner Frage bisschen in Gedanken wo anders... Für den interleaved boost brauche ich kein invertiertest sondern ein um 180° verschobenes Signal
Dann nimm besser einen µC, bei dem das gleich eingebaut ist, z.B. Tiny 25 aufwärts.
Könntest Du mal erklären, wie ein um 180° verschobenes PWM-Signal aussehen soll? Invers ist ja recht einfach. Alles andere ist wohl eine Frage der Definition. Wird wohl auf einen eigenen PWM-Kanal hinauslaufen, bei dem die Aus-Zeit der Ein-Zeit des anderen Kanales entspricht und Umgekehrt. Das als um 180° verschoben zu bezeichnen fällt mir allerdings schwer.
Amateur schrieb: > Wird wohl auf einen eigenen PWM-Kanal hinauslaufen, bei dem die Aus-Zeit > der Ein-Zeit des anderen Kanales entspricht und Umgekehrt. > Das als um 180° verschoben zu bezeichnen fällt mir allerdings schwer. Ist es auch nicht, da es einfach ein invertiertes Signal ist, das TO ja explizit nicht benötigt. Mir ist nur nicht ganz klar, warum ein uC eine PWM erzeugt, die dann der Booster "übernimmt". Normalerweise erzeugt der Boost-Converter die PWM abhängig von Ausgangsspannung und Last. Ich nehme an, es geht um einen LED Boost-Regler, der mit einer PWM geregelt werden kann? Dann sollte auch der Regler mit einer Eingangs PWM zwei phasenverschobene Ausgänge regeln können. Um welchen Boost-Converter handelt es sich denn?
Robert B. schrieb: > Ich habe jetzt aber schon RC1 für die Ansteuerung des LCDs eingesetzt > und habe somit nur noch RC2 übrig. Das µC-Design ist mehr als ein Dutzend Jahre als - was erwartest du. Man könnte sich natürlich fragen, warum du dran nichts ändern kannst und die ganz große Frage bleibt im Raum stehen: Was ist ein 180° phasenverschobenes PWM Signal. Üblicherweise ist 180° Phasenverschiebung nur bei einem DC von 50% sinnvoll und dann entspricht das der Invertierung.
http://www.powerguru.org/wordpress/wp-content/uploads/2012/08/Inductor-current-waveforms-of-a-two-cell-interleaved-boost-converter-at-different-duty-cycles.jpg Bei dem Bild sollte deutlich werden was ich unter 180Grad phasenverschiebung verstehe. Es ist nicht einfach ein invertiertes Signal da der Duty sich auch ändern kann.
Nochmal die Frage: >.. und erzeuge damit ein PWM-Signal welches ich an einen boost-converter schicke Was macht denn der Boost-Converter mit der PWM. Er wird ja wohl kaum damit direkt den Powerswitch treiben - wie sollte denn dann die Spannung geregelt werden...? Ich nehme nach wie vor an, die PWM legst du auf einen Steuereingang des Reglers, und steuerst damit Ausgangsspannung bzw -strom. Verrate uns doch mal, welchen Regler du einsetzen willst, bzw. für welchen Anwendungszweck. Für LEDs gibt es z.B. von Intersil den ISL97682, der hat 2 100mA Kanäle, 180° interleaved, und einen PWM Eingangs zum Dimmen beider Kanäle.
PWM ist ein Rechtecksignal das gibt's nicht um 180° phasenverschoben, nur um die halbe Periodendauer. Aber wozu?
Lothar S. schrieb: > PWM ist ein Rechtecksignal das gibt's nicht um 180° phasenverschoben, > nur um die halbe Periodendauer. Na ja, gewöhnlich wird die Periode in 360° unterteilt, was dann automatisch dazu führt, dass die halbe Periodendauer 180° entspricht. Die Angabe 180° ist nur die auf die Periodendauer des Signals normiertes Maß für die Verschiebung. Und ob man die ganze Periode auf 360°, 1 oder 100% normiert, ist ziemlich egal, auch wenn die 360°-Normierung ihren Ursprung bei der Projektion von rotierenden Feldern (Spule im Generator) und damit bei sinusförmigen Signalen hat.
Um zwei gegenphasige Ausgänge zu erzeugen kann man einen Ausgang invertieren: CCP1CON = 00111110 ; und 180° verschoben: CCP2CON = 00111100 ; Es reicht also ein PWM. VY 73 Kurt
Kurt H. schrieb: > Um zwei gegenphasige Ausgänge zu erzeugen kann man einen Ausgang > invertieren: Falsch! Eine Invertierung ist NICHT das Gleiche wie 180° Phasenverschiebung! Google interleaved switch mode power supply
1 | PWM _____**______**______**______ |
2 | invertiert *****__******__******__****** |
3 | phasenverschoben _**______**______**______**__ |
P.S. Wie kommt man darauf, eine 6 Jahre alte Diskussion wieder aufzuwärmen?
Mh... für dem Anwendungsfall sollte man sich Gedanken über eine "Lücke" zwischen den Signalen machen. Deswegen haben µC die für Powersupply gedacht sind die "Dead Time Insertion" Flanke an Flanke würde ich das jedenfalls nicht designen.
Mike van Dyke schrieb: > Mh... > > für dem Anwendungsfall sollte man sich Gedanken über eine "Lücke" > zwischen den Signalen machen. > Deswegen haben µC die für Powersupply gedacht sind die "Dead Time > Insertion" Das ist hier gar nicht relevant, der OP sprach von einem 2. Kanal (phasenverschobender Betrieb, neudeutsch interleaved). Es geht hier nicht um die Ansteuerung der Halbleiter in einer Halbbrücke.
Ich greife das ganze hier nochmal auf. Ich bin gerade an einem Projekt mit einem LLC Wandler und dazu brauche ich auch ein Signal das "um 180° Phasenverschoben" ist. Ich habe es mit einem 32u4 versucht und bin ehrlichgesagt nicht sehr eingespielt im Umgang mit Timern im Allgemeinen. Mein Ansatz war: - PWM, Phase and Frequency Correct mode Bsp.: OCRnA auf 20 OCRnB auf 80 Top auf 100 Leider kann ich keinen Modus finden in dem der Top Wert nicht auf OCRnA zurückgreift. Gibt es einen solchen Controller oder gehe ich hier ganz falsch an das Problem?
David W. schrieb: > - PWM, Phase and Frequency Correct mode Hallo, versuch es doch mal mit Fast PWM Mode 3. Mit COM0x0 und COM0x1 kannst Du einstellen, ob der Pegel mit L oder H anfangen soll – für OCRnA und OCRnB getrennt. Mit OCRnA steuerst Du den Winkel 0 bis 180 und mit OCRnB den Winkel 181 bis 360. Top ist dann 255 bzw. 65535. Vielleicht ist die doppelte Frequenz auch ein Ansatz. Gruß Carsten
David W. schrieb: > Leider kann ich keinen Modus finden in dem der Top Wert nicht auf OCRnA > zurückgreift. Table 14-4.Waveform Generation Mode Bit Description TOP = ICRn in Mode 8, 10, 12 oder 14
David W. schrieb: > Ich bin gerade an einem Projekt > mit einem LLC Wandler und dazu brauche ich auch ein Signal das "um 180° > Phasenverschoben" ist. Ich habe es mit einem 32u4 versucht und bin > ehrlichgesagt nicht sehr eingespielt im Umgang mit Timern im > Allgemeinen. Eine PWM mit zwei um 180° phasenverschobenen Signalen kann man bei AVR meist mit ein und demselben Timer lösen, indem für den zweiten Ausgang das Signal invertiert und das PWM-Tastverhältnis mit der Differenz des Tastverhältnisses des ersten Ausgangs zum TOP-Wert gefüttert wird. Hier ein Beispiel mit einer 10-bit-PWM für einen Tunable-White-LED-Fader: http://www.led-treiber.de/html/software-fader.html#Phase Bei einem LLC-Wandler kann die Berechnung per Luminanz-Tabelle natürlich entfallen.
Peter D. schrieb: > David W. schrieb: >> Leider kann ich keinen Modus finden in dem der Top Wert nicht auf OCRnA >> zurückgreift. > > Table 14-4.Waveform Generation Mode Bit Description > TOP = ICRn in Mode 8, 10, 12 oder 14 Das habe ich gestern Nacht noch versucht. Ich kann nicht sagen warum ich das zu beginn überlesen/übersehen habe. Passt perfekt für meine Anwendung. Ein kleines Problem ergibt such noch für das abgreifen der Signale. Ich kann bei meinen zwei Boards nicht auf die OCRnX Ausgänge zugreifen. Ein Controller ist ein ItsyBitsy und der andere ist ein Pro micro Klon. Mit meinem Mega328P-U hat es gut funktioniert nur die Frequenz ist hier begrenzt. Mein Problem ist vorerst gelöst. Vielen Dank!
:
Bearbeitet durch User
STM32 haben entsprechende Timer, die so was können, bei denen ist auch eine Totzeit programmierbar, damit sich die Signale nicht durch Laufzeiten überlappen und keine Treiber gegeneinander arbeiten.
Eberhard H. schrieb: > Eine PWM mit zwei um 180° phasenverschobenen Signalen kann man bei AVR > meist mit ein und demselben Timer lösen, indem für den zweiten Ausgang > das Signal invertiert und das PWM-Tastverhältnis mit der Differenz des > Tastverhältnisses des ersten Ausgangs zum TOP-Wert gefüttert wird. > > Hier ein Beispiel mit einer 10-bit-PWM für einen > Tunable-White-LED-Fader: > http://www.led-treiber.de/html/software-fader.html#Phase > > Bei einem LLC-Wandler kann die Berechnung per Luminanz-Tabelle natürlich > entfallen. Danke! Wenn ich das richtig verstehe gehen die Signale dann über OCRnX und OCRnX' raus? Mein Problem war bei den Sonderfunktionen meist das ich mit meinen Controllern keinen zugriff auf die nötigen Ausgänge habe. Das lese ich mir auf jeden fall an. Ich habe es Mit einem ATTiny versucht und bin leider an der Totzeiteinstellung von 4 bit, welche für meine Anwendung zu ungenau ist gescheitert. Super Tipp, Danke.
:
Bearbeitet durch User
Guido K. schrieb: > STM32 haben entsprechende Timer, die so was können, bei denen ist auch > eine Totzeit programmierbar, damit sich die Signale nicht durch > Laufzeiten überlappen und keine Treiber gegeneinander arbeiten. Schaue ich mir an, vielen Dank!
Anbei ein Programm für 90° verschobene Frequenzen um 10 Hz herum. Ist leicht anzupassen, da ausreichend kommentiert für tiny 13. Ausgänge natürlich mit TP filtern.
Eberhard H. schrieb: > Hier ein Beispiel mit einer 10-bit-PWM für einen > Tunable-White-LED-Fader: > http://www.led-treiber.de/html/software-fader.html#Phase Am besten du schaust dir deine Bilder selbst noch mal an. Das entspricht nicht einem konstanten Phasenversatz. Hier ist ein konstanter Abstand der beiden steigenden Flanken von genau der halben Periodendauer gewünscht bei einer PWM-Einstellbarkeit von 0-100%. Rudi D. schrieb: > Anbei ein Programm für 90° verschobene Frequenzen um 10 Hz herum. > Ist leicht anzupassen, da ausreichend kommentiert für tiny 13. > Ausgänge natürlich mit TP filtern. Du hast die Frage nicht verstanden. Eine ähnliche Anforderung hat man, wenn man eine Inverter in Phaseshift programmieren soll. Dann ist sogar das Tastverhältnis jedes der 2 Kanäle immer 50%, nur die Phasenlage ist variabel. Dafür sprechen wir hier aber nicht von 10Hz sondern von vielleicht 100kHz. Während man so eine Phaseshift-Inverter Geschichte mit jedem STM32 noch relativ einfach hinkriegt ist das oben genannte Szenario mit einem einzigen Standardtimer der STM32 Chips nicht realisierbar. Wenn bei der Aussteuerbarkeit der PWM 0-50% reichen, geht auch ein Timer mit etwas Zusatzelektronik an den Ausgängen. Anderenfalls läuft es auf 2 Timer hinaus die entsprechend synchronisiert werden müssen. Oder man bedient sich gleich eines besseren Timers wie sie z.B. in den STM32F334 verbaut sind.
temp schrieb: > Eberhard H. schrieb: >> Hier ein Beispiel mit einer 10-bit-PWM für einen >> Tunable-White-LED-Fader: >> http://www.led-treiber.de/html/software-fader.html#Phase > Am besten du schaust dir deine Bilder selbst noch mal an. Das entspricht > nicht einem konstanten Phasenversatz. Hier ist ein konstanter Abstand > der beiden steigenden Flanken von genau der halben Periodendauer > gewünscht bei einer PWM-Einstellbarkeit von 0-100%. > > Rudi D. schrieb: >> Anbei ein Programm für 90° verschobene Frequenzen um 10 Hz herum. >> Ist leicht anzupassen, da ausreichend kommentiert für tiny 13. >> Ausgänge natürlich mit TP filtern. > > Du hast die Frage nicht verstanden. Kann schon sein, deshalb ein Bildchen: so gewünscht? Es wäre wohl besser, wenn Sie die gewünschten Signale einfach einmal aufzeichnen würden, für kleine und größere Einschaltdauer und die Handzeichnung posten.
temp schrieb: > Eberhard H. schrieb: >> Hier ein Beispiel mit einer 10-bit-PWM für einen >> Tunable-White-LED-Fader: >> http://www.led-treiber.de/html/software-fader.html#Phase > Am besten du schaust dir deine Bilder selbst noch mal an. Das entspricht > nicht einem konstanten Phasenversatz. Hier ist ein konstanter Abstand > der beiden steigenden Flanken von genau der halben Periodendauer > gewünscht bei einer PWM-Einstellbarkeit von 0-100%. Wie auf meiner verlinkten Website beschrieben, sind die Mitten (!) der beiden PWM-Ausgänge des LED-Faders bei der vorgeschlagenen AVR-Betriebsart prinzipbedingt exakt 180° phasenverschoben. Wenn man statt der Berechnung der beiden unterschiedlichen PWM-Tastverhältnisse über eine Luminanz-Tabelle (wie für den LED-Fader gewünscht) beim 2. (negierten) Kanal direkt das Komplement zum 100%-Wert lädt, sind nicht nur die Mitten, sondern auch die Flanken exakt 180° phasenverschoben. In allen Fällen kann das Tastverhältnis von exakt 0% bis exakt 100% eingestellt werden. Natürlich gehen für andere Applikationen auch höhere PWM-Frequenzen, je nachdem, was der verwendete AVR, dessen CPU-Takt und dem gewähltem Timer so hergibt. Übrigens hat David W. mit seiner Fragestellung vom 30.8.2021 weder die Flanken noch die vollen 0-100% gefordert. Aber - wie gezeigt - lässt sich auch das realisieren.
Eberhard H. schrieb: > Übrigens hat David W. mit seiner Fragestellung vom 30.8.2021 weder die > Flanken noch die vollen 0-100% gefordert. Aber - wie gezeigt - lässt > sich auch das realisieren. Doch hat er, indem er von einem 2 Phasen interleaved Converter spricht. Aber egal. Mit deinen anderen Ausführungen gebe ich dir prinzipiell recht. Allerdings solltest du erwähnen, dass das zwingend eine center aligned PWM voraussetzt.
Rudi D. schrieb: > Es wäre wohl besser, wenn Sie die gewünschten Signale einfach einmal > aufzeichnen würden, für kleine und größere Einschaltdauer und die > Handzeichnung posten. Im Anhang ein paar Oszibilder. Wichtig ist, dass der zeitliche Abstand der steigenden Flanken immer gleich ist und die High-Zeit der beiden Ausgänge auch gleich ist. Hier ein Codeschnipsel für einen STM32F103Cx (Bluepill) an A8 und A9. Die Initialisierung der Gpios ist hier nicht drin!
1 | #define PWM_ARR 20000
|
2 | |
3 | void InitPWM() |
4 | {
|
5 | RCC->APB2ENR|=RCC_APB2ENR_TIM1EN; |
6 | TIM1->PSC=0; |
7 | TIM1->ARR=PWM_ARR; |
8 | TIM1->CCER=TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC1P; |
9 | TIM1->CCMR1|= TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 |
10 | | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_0; |
11 | |
12 | TIM1->BDTR |= TIM_BDTR_MOE; |
13 | TIM1->CR1|=TIM_CR1_CEN | TIM_CR1_CMS_0; |
14 | }
|
15 | |
16 | void SetDutty(int Proz) |
17 | {
|
18 | int dt=(PWM_ARR*Proz)/100; |
19 | TIM1->CCR1=dt; |
20 | TIM1->CCR2=PWM_ARR-dt; |
21 | }
|
22 | |
23 | volatile int duty=0; |
24 | volatile int duty_soll=25; |
25 | int main(void) |
26 | {
|
27 | // Disable JTAG Pins
|
28 | AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1; |
29 | |
30 | ClockConfig(); |
31 | InitPWM(); |
32 | while (1) |
33 | {
|
34 | if (duty != duty_soll) |
35 | {
|
36 | SetDutty(duty_soll); |
37 | duty=duty_soll; |
38 | }
|
39 | }
|
40 | }
|
temp schrieb: > Rudi D. schrieb: >> Es wäre wohl besser, wenn Sie die gewünschten Signale einfach einmal >> aufzeichnen würden, für kleine und größere Einschaltdauer und die >> Handzeichnung posten. > > Im Anhang ein paar Oszibilder. Wichtig ist, dass der zeitliche Abstand > der steigenden Flanken immer gleich ist und die High-Zeit der beiden > Ausgänge auch gleich ist. > Damit ist ja die Frage von Robert sogar mit Code gelöst. Bilder entsprechen ja exakt meiner Handskizze auf einem schicken Osci.
:
Bearbeitet durch User
Hallo zusammen, vielen dank für die vielen Informationen, welche ich erstmal verarbeiten musste und muss. Einen kleinen Graphen habe ich erstellt und das "Problem" ist vorerst gelöst. Ich möchte mich jedoch weiter in die Thematik einarbeiten. Hier mal die Daten der Ansteuerung: Schaltfrequenz 10-100kHz Duty 0.049 - 0.49 Frequenz und Duty sind das Resultat der "festen" (bis auf Feineinatellung) Einschaltzeit und der veränderlichen Totzeit. Die Totzeit wird über ein Bedienfeld sprunghaft für Last und Leerlauf eingestellt. Feinjustierung erfolgt schrittweise über das Bedienfeld.
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.