I'm designing a processor-controlled buck converter. I'm seeing some instabilities, which I suspect may be due to improper frequency selection at different points in my system. I'm trying to regulate output current, with a result that looks like a sawtooth. Current drops to a trough, I get some short pulses which seem to stop the drop, then I get one much longer pulse which kicks the current up to a peak. No pulses until the next through. Average current as measured both by my control system and by an external clamp are regulating to, say, within 20% of my setpoint. Not good enough for my spec.

  • Switching frequency: 12 kHz
  • A/D sampling frequency: 12 kHz
  • Control loop update frequency: 12 kHz (observed)
  • Anti-aliasing RC filter on feedback signals entering A/D converter: single pole, 1 kHz corner frequency
  • Digital filtering: None
  • Choke: ~2 mH

Should I perhaps be sampling faster? Updating my control loop slower? Using an anti-alias filter with a higher corner frequency? Is there some obvious flaw in this control scheme as I've described it? In general, how would one properly select these frequencies and values relative to each other?


closed as too broad by Olin Lathrop, Dave Tweed, Stephen Collings, Matt Young, W5VO Oct 1 '13 at 19:02

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ What instabilities are you seeing? This is important - it's like going to the doctor and having him guess what is wrong with you. \$\endgroup\$ – Andy aka Sep 29 '13 at 20:14
  • \$\begingroup\$ I was thinking of it more like a blind man going to the doctor and asking if there's a giant wound where he may or may not have shot himself in the foot... but I'll add more detail. :) \$\endgroup\$ – Stephen Collings Sep 29 '13 at 20:16
  • \$\begingroup\$ What to what bandwidth are you trying to regulat the output? \$\endgroup\$ – Olin Lathrop Sep 29 '13 at 20:36
  • \$\begingroup\$ @OlinLathrop I'm not sure I even understand what you're asking. Can you perhaps dumb the question down a level? \$\endgroup\$ – Stephen Collings Sep 29 '13 at 20:37
  • 1
    \$\begingroup\$ I've read enough to absolutely know I'd need a circuit diagram. The fact that you're current regulating was the tipping-point. I'm sure in asking for a picture of what the waveform looks like too including peaks and times. The big omission is load and whether you have it stable at any load and what loads you are trying. I am also a little concerned that you may not have some hardware that controls the "on" drive to the IGBT and switches it off when you reach some near-insane peak current value (to prevent really large cyclical "lumps" of energy being forwarded to the output capacitor). \$\endgroup\$ – Andy aka Sep 29 '13 at 21:51

A buck converter in voltage mode needs what's known as a 'type-3 compensator' to correctly compensate for the resonant peaking created by the output LC filter. The type-3 compensator has three poles and two zeroes, giving you a slope of -1, then a slope of +1, then back to -1. It will allow you sufficient gain and phase margin for stability, and allows you to cross over the gain at a -1 slope.

The system you're describing has a simple RC filter with no digital compensation, which will not give you an appropriate response. One way to solve the problem is to calculate what poles and zeroes you need for proper compensation, derive the s-domain transfer function for that compensation, then do a z-transform and implement it digitally.

A good book on the subject is Applied Control Theory for Embedded Systems by Tim Wescott, but you may want to consider bringing someone in temporarily who's skilled in the art (i.e. someone with power and control training) to get past your time constraint.

  • \$\begingroup\$ That sounds brilliant. Sadly, my background is just enough to recognize the words, and appreciate that they're in the right order. Connecting that all to reality has been something I've fought with for six years, and I've yet to find an explanation that can click with me. Can you recommend a good book or other resource that will tie all that together? \$\endgroup\$ – Stephen Collings Sep 30 '13 at 1:28
  • \$\begingroup\$ Thanks for the book recommendation! I think I can get past this particular time crunch, but this will definitely help next time around. \$\endgroup\$ – Stephen Collings Sep 30 '13 at 12:51

There are whole books written on control system and power supply stability, "compenstation", and other schemes. You are basically saying "design my control system", or much worse, "fix my existing ill-conceived control scheme". There is no way that can be reasonably done here, especially with such sparse data.

However, a few observations:

  1. From your description (a scope trace would be much better than the hand waving), it sounds like your supply is meta-stable but with local instability. That is not necessarily a problem, but will reduce the apparent bandwidth of the system and increase noise.

  2. A common cause of meta stable but locally unstable is resistance in series with the output cap. Is it electrolytic perhaps?

  3. 12 kHz is very slow. Plenty of processors can easily do 100 kHz and beyond, especially with a simple control scheme.

  4. High pulse frequency can compensate for simple control schemes. For example, if it's sortof working at 12 kHz, then maybe just a dumb pulse on demand system would work fine at 120 kHz.

  5. 1 kHz anti-aliasing filter!!? I can't really say more since you haven't explained where exactly this filter is and what signal it is filtering, but that sounds like a guarantee of instability.

  • \$\begingroup\$ I've edited my question to clarify that the anti-aliasing filter is on the feedbacks into the processor. Also, since you added your point 5, apparently you CAN diagnose an obvious (to you) problem in the system from the information I provided, which was in fact the question I asked. So perhaps dial the snark down a bit? \$\endgroup\$ – Stephen Collings Sep 29 '13 at 20:41
  • \$\begingroup\$ Also, as a point of interest, it's a 7kW converter, and I'm running IGBTs. 100 kHz would be a spectacularly bad idea. There might be FETs out there that could do that, but they'd cost more, the drivers would be more twitchy, and I'm on a tight timeline. \$\endgroup\$ – Stephen Collings Sep 29 '13 at 20:44
  • \$\begingroup\$ @Stephen: You might have mentioned this was doing 7 kW and that your input voltage is high enough to require IGBTs. This is exactly why we want to see real information in the quetion. \$\endgroup\$ – Olin Lathrop Sep 30 '13 at 11:53
  • 2
    \$\begingroup\$ Why would I mention information not relevant to the question I'm asking? You're trying to read this as a giant "fix my control scheme" question, when I'm instead asking specific questions about a very tiny corner of the system, a question that applies to every processor-controlled switching power supply. \$\endgroup\$ – Stephen Collings Sep 30 '13 at 12:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.