Electronic – SMPS : Average Current Control Vs Peak Current Control

control systemswitch-mode-power-supply

Please correct my understanding.

I understand that in peak current control mode, the slow outer voltage control loop generates a current command to the faster inner current loop. This current command places a limit on how much current can flow through the inductor. The switch is turned off as soon as the sensed inductor current hits the ceiling. Any swing in line voltage is thus accounted for in real quick time rather than detecting it via changes in Vout which can take time to manifest.

What exactly is average current control? Is this as simple as generating a current command which is representative of the desired average inductor current rather than the peak current? And as in the above case, as soon as the inductor current hits the average current reference, the switch is turned off. Is this correct?

Why would one choose average current control over peak current control? Kindly explain without without algebra. I regret to say that all literature available on this topic is simply not for the layman.

As am interested in doing this the digital way, I would like to utilize the available ADC, DAC and Analog comparators on my microcontroller. What can be a good algorithm here?

Please advise.

Best Answer

Yes, average control measures the average current in the inductor and uses that in the inner current loop.

One advantage is that you don't get subharmonic oscillations at duty cycles >50% as you do in peak current mode control (without slope compensation.) Also, the average inductor current is the true state variable that you're trying to control, the peak inductor current is only an approximation. The peak to average ratio changes with operating condition.

Disadvantages are: More complex to measure the average current. Current limit may not be cycle-by-cycle.

For digital control, it's fairly simple. Create a in inner current loop by measuring the average inductor current, and use the outer voltage loop's error to drive the current reference just like you would in analog.