This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Arduino PWM control of Buck Boost

Other Parts Discussed in Thread: LM5118, LM10010

Hi E2E,

I am working on a solar string optimization device, which uses a Perturb and Observe algorithm, implemented by an Arduino, to control the output of a DC-DC buck boost converter using pulse width modulation.  I understand there are TI buck boost ICs and evaluation boards, and using one would be ideal, but I haven't found anything that features external control of the output voltage using PWM.  The LM5118 has the proper input voltage and current specs I need, is it possible to use this IC with the arduino control?  Or is there another product which would be suited for this?

To be clear, the PWM signal is a 0-5 V square wave of varying pulse width.
I had read somewhere this could be done using the "FB" pin of the LM5118, but without any verification and I can't find any examples of people doing this anywhere.  It is crucial for the application that the output voltage be modified, as opposed to the constant 12 V output delivered by the LM5118. 

Whatever solution works it needs to be able to handle around 20 V input and about 2 A.

Looking forward to hearing back; Thank you!

-Bradford Pulley

  • HI Brad,

    Sorry with the delay on this.

    The output of most DC/DC converters can be changed by sourcing or sinking current from the resistor divider that is connected to the FB pin. This is true for the LM5118 as well.  This effectively changes the resistance of the lower feedback resistor thus changing the output voltage. See below for an idea of how to do this with a PWM

    R1 and C1 form a low pass filter to make the output the average voltage of the PWM. R2 will set the amount of current that is sourced to the FB pin node. 

    Also take a look at the LM10010. This is a the digital equivalent to what you are trying to implement. I might give you some more ideas.

    Thanks,

    Garrett