I'm designing a small programmable bench power supply (well, I say "small", but the AOT430 FETs will handle 10A+ in their linear region without thermal runaway so...).

A switching regulator provides coarse voltage stepdown (24Vdc to 0-20Vdc isolated) while a MOSFET based LDO handles the fine control, a small DSP oversees everything else.

I want to have both programmable current and voltage limits. As for the control loop, it's probably going to end up as a mix of analog and software controls. I can either regulate the voltage across the load with discretes and handle the current control in software or regulate the current through the load with discretes and handle the voltage regulation in software.

I would like to know what sort of advantages/disadvantages (if any) that either solution would have in the context of a variable bench supply. Or should I try something else altogether? (like all analog or all digital control loops)

At the moment I'm leaning more towards analog voltage control. I'm expecting that analog current control might result in bigger voltage spikes/sags when loads change while the DSP readjusts the current settings to bring the output voltage back under control. But at the same time, I'm thinking that the analog current version would have (much) faster current limiting and short-circuit protection.


simulate this circuit – Schematic created using CircuitLab

(Note: These are only conceptual schematics and have been greatly simplified)

  • \$\begingroup\$ You might want to look at Professional designs for inspiration. Personally I find the user interface and the ability to directly dial in values important \$\endgroup\$
    – PlasmaHH
    Sep 24, 2016 at 7:29
  • 1
    \$\begingroup\$ If you want any kind of decent response, you need active control of both. \$\endgroup\$
    – Asmyldof
    Sep 24, 2016 at 7:32
  • \$\begingroup\$ Some smps use both voltage and current control loops simultaneously BUT I do not think that that is what you are referring to. You are dealing with a supply that either supplies a preset voltage OR supplies a current set by a current limit control. | While you can try to use digital control in real time feedback loops it's usually easier (IMO as ever) to do both with analog and control the references that the analog loops use. You cannot maintain both load voltage and load current simultaneously for an arbitrary load. ... \$\endgroup\$
    – Russell McMahon
    Sep 24, 2016 at 14:36
  • \$\begingroup\$ ... There is no problem having a voltage set point and a maximum current limit BUT at any moment the supply will either be in CV mode (set voltage) with I < Ilimit or in CC mode (I = Ilimit) with V less than Vset. \$\endgroup\$
    – Russell McMahon
    Sep 24, 2016 at 14:36
  • \$\begingroup\$ @RussellMcMahon I'm not trying to control voltage and current simultaneously, it's more of a choice of which loop would benefit more from fast analog control. Yes you need two loops, one for CV and one for CC, but if there's only a single fet then both loops need to be able to share control somehow. Should both have direct control or should there be an inner and an outer control loop. I.E. control load current by regulating the voltage (CV inner, CC outer loop) or control the voltage by regulating the current (vice versa) or have both loops vying for control (along with a complex analog loop). \$\endgroup\$
    – Sam
    Sep 24, 2016 at 21:18

1 Answer 1


Since you're using a linear post-regulator after a switcher, the switcher can afford to have more ripple than you want on the output. This allows for very simple control schemes for the switcher.

I haven't really thought this thru carefully, but my first knee jerk reaction is to do a fairly dumb switcher in the micro. Possibly the firmware doesn't even get envolved with the switcher control once the PWM generator is set up.

The micro would take care of the user interface, reading the voltage and current setpoint knobs, getting commands from a communication interface, displaying values, etc. It then creates the reference voltage via PWM, which is low pass filtered and presented to the analog section. Likewise, it makes a current limit setpoint voltage.

The voltage controller is a simple opamp with FET follower. A PNP transistor is used to detect the switcher output being 700 mV or so above the actual output. This produces a binary signal that drives the shutdown input of the PWM generator in the micro.

The current loop is a high side current sense between the switcher and the output FET. A ground-referenced current-magnitude signal is created, which is compared to the filtered current limit voltage from the micro. A comparator is used to also shut down the PWM generator when the current is above the setpoint.

For extra credit, have the micro continually read the raw input voltage. It then adjusts the PWM duty cycle for the optimum value based on the input voltage, the output voltage setpoint, and the maximum current that the switcher needs to be able to deliver. This dynamically tweaks the efficiency a bit, and should help avoid inductor saturation.

This scheme of fixed PWM with shutdown will cause more ripple on the switcher output, but since that's followed by a linear regulator, it shouldn't matter much. The big advantages of this method are that it is very simple, and inherently stable over the wide range over operating points a bench supply must be able to handle.

  • \$\begingroup\$ The trick is to provide a clean and accurate reference to the LDO, the issue is that the LDO needs fast current and fast voltage control so that and disturbances don't fry sensitive electronics, it also needs to be fast enough that it can deal with the ~1MHz switching frequency (best trade off between size, turns count and loss in the isolation transformer). My simulations of an all analog LDO were getting 'upset' when transitioning from CC to CV and vice versa, that's why I was considering moving one onto the DSP (a dsPIC33) which would simplify the analog side while keeping the speed. \$\endgroup\$
    – Sam
    Nov 11, 2016 at 21:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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