Intelligent feed forward digital power supply

Jan 02, 2021 11 Replies

Hi



I am working on a digital power supply, using a STM32 microcontroller



I have standard digital control working, but was thinking about boosting performance



Thinking about feed forward path



So for a buck, I could add knowledge of the input voltage to reduce the duty cycle directly from that (problem is then I may need to flush the loop control variables)



Also I could measure the output current, so if that changes I can calculate a specific pulse applied to the output stage to boost the current in the output inductor to ramp up to the output current



Again that would need some trimming in the loop



Anyone done this sort of thing before?



Regards



Klaus


Klaus Kragelund

I did some NMR temperature controllers that drove the heater PWM from an unregulated DC power supply. The main loop was of course PID on measured temperature, but I also measured the DC supply and did a feed-forward correction to the duty cycle to reduce temperature noise from DC supply wandering. The sensor was slow so the PID wasn't very agressive. I recall a v-squared term in the feedforward.

The PWM was a timer in the uP and the loop was all software.

You could certainly tweak the duty cycle as a function of the pre-switcher DC voltage, basically null out the line regulation.

The current sense thing should help too, if you can get the dynamics right.

I tried making a wideband switchmode current source, part of a laser driver, but it had noise issues and I had to move on. I plan to try it again one day.

formatting link

John Larkin Highland Technology, Inc The best designs are necessarily accidental.

There might be something here:

formatting link

formatting link

Obviously all of TI's app notes are tailored for their chips, esp the C2000, but you might find at least a proof-of-concept that will help.

What does your *load* look like -- in comparison to your sampling frequency?

Derivative term is contraindicated in "fast" loops as it tends to increase the chance of cycling.

[Best application is slow loops that "repeat" often]

Regardless, make sure you look at the changes in the process variable

*directly* when computing the derivative else you'll add disturbances to your controlled variable.

You might find other "hacks" more effective (and require less tuning!) than adding true derivative control. (e.g., some loops benefit from dumping the accumulator when the slope of the derivative changes)

Ugh! s.b. *sign* of the derivative.

The load could be almost anything, processor or static load. I am sampling faster than the load of course. In order to not have phase starvation due to delays in the system I am running the loop a lot faster than the crossover frequency

I am using bilinear transform so effectively I have the same as a type 2/3 analog compensator. Just with the added benefit that for a digital controller I can change control depending on the situation

And the negative side effect of limited loop bandwidth, quantization, limit cycle etc

I am no expert, but PID seems not to be preferred for real fast digital control loops

Can you elaborate on that?

Klaus Kragelund

Thanks, will check it out

Klaus Kragelund

Yes. In principle I am just using the equation that models the system and nulling the external factors that would be very hard to do in analog control. Like you say, line regulation, load regulation

Adding on top of that one could do a modelled system with only very little feedback. I don't need to go that far, just trying to see what is possible with a cheap controller that can compete with standard analog controllers

A digital controller can add all kinds of fancy metrics

Look like bang bang control which is great for fast response and simple more or less rock stable systems

Klaus Kragelund

Not hard. One resistor probably.

Yes, hysteretic. But too many emi issues. We went analog.

John Larkin Highland Technology, Inc The best designs are necessarily accidental.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required