Hi all,
I am buildibg a power electronics converter which is controlled through phase shift. To be specific, DAB.
I am trying to figure out who to generate a carrier waveform or even square wave that would be phase sifted based on another signal varing with time.
I would appreciate if somebody can give hints.
Thanks
I have a phase shift behavorial symbol that input a phase angle and generate a pair of phase shift Q1 & Q2. This is the Github link to this symbol, an example schematic is attached as reference.
Github : /Symbols-KSKelvin/power electronics/PWM-PhaseShift.qsym
example.Phase-Shift.qsch (3.5 KB)
Excellent!
Thanks so much, Kelvin.
I will check it out.
I noticed that if I dublicate the block and use it twice for example. Q1 signal is not synchronized. Is this normal?
I want to use the block more than once in the sch while having Q1 as the ref in all of them.
Yes, this is normal. Here is the implementation of this subckt. As I want Q1 and Q2 can align better at 0 degree, Q1 and Q2 are reference to sawtooth and shift along with half of the phase setpoint… Q1 shift to one direction and Q2 shift to another direction.
I think if you are ok with DLL-block, may be having DLL-block for multiple phase control is easier.
How many outputs do you need? Phase from 0 to 180 degree?
Thanks for clarification.
So, I want Q1 and 3 more phase-shifted waves with respect to it.
Here is a modification of my phase-shift DLL module. In this post, you can download the schematic and CPP files to run it in Qspice. I have also uploaded this to GitHub. If you want to study how the code works, downloading the standard 2-output version is easier.
https://github.com/KSKelvin-Github/Qspice/tree/main/Symbols-KSKelvin/KSKelvinDLL
This module allows you to set a deadtime between complementary pairs of outputs. All phase setpoints (B, C, and D) correspond to output A. There is option to config this block with external clock or internal clock.
example2.PhaseShiftPWM4Outputs.qsch (8.6 KB)
phaseshiftpwm4outputs.cpp (15.2 KB)
Thanks so much, Kelvin.
I tried this block and it works perfectly for me.


