I have recently started using PSIM. I'm generating power stages of non-isolated topologies and stabilizing them to get used to PSIM. I've done a buck converter, and now I'm looking at a boost converter.
Problem: open-loop control-to-output Bode plot + compensator frequency response doesn't give expected loop gain Bode plot.
High level specs:
- Vin = 10 V
- Vout = 15 V
- Pout = 45 W
- Peak current mode control - CCM
Right Half Plane Zero Frequency (Frhpz) = 65.2 kHz
Power stage LC resonance Frequency (Fo) = 2.2 kHz
What I've done:
My PSIM circuit:
All the sources within the schematic show their amplitudes, so there is no confusion there. On the inner current loop there is a triangular wave superimposed on top of the FET current which acts like adding a ramp to dampen out sub harmonic oscillations. Since the duty cycle is 36% at the moment, I've nulled it.
The greyed out section at the bottom left is for the constant duty cycle open loop curves. At 33% duty cycle, we get the two time domain open loop curves, then the frequency domain.
Let's say I am targeting a 55° phase margin and a cross-over frequency of 10 kHz, which is 3×Fo < Fc < 0.2×Frhpz (Mr. Basso gives these details/specs, so that's where those come from). I believe I should be within a safe target cross-over frequency.
The open loop curve shows at 10 kHz I need 6.5 dB of attenuation and 70° of boost. Phase is showing -105°, so, boost required = PM - Phase@fc - 90, so 55-(-105)-90 = 70° of boost. A type 2 compensator should do.
Again, using equations from Mr Basso:
The LTspice file (using K-factor method) shows at 10 kHz 6.5 dB attenuation and 160° of phase, so I believe everything so far is making sense and lining up. You can see the two capacitor values and one resistor value suggested in the op-amp feedback path, plus, the upper and lower resistor divider values calculated or shown.
Now, the next bit is when things stop lining up for me.
Time domain screen shots show it's regulating around 15 V which is good, and things look stable.
The frequency response is the part where I'm confused.
You can see the far-left cursor showing the zero crossing, around 400 Hz, definitely not the 10 kHz I was targeting.
Before making the frequency response curves, I first inject signals of different amplitudes and frequencies in the time domain to make sure there is a measurable signal that isn't affecting the large signal response.
This is where I am stuck.
- What do you believe is wrong?
- When you fine folks use calculated compensation values, does that get you the target cross frequency first try with out any tweaking of values? When I read papers or Basso's book it seems like that is the case.