Maker Pro
Maker Pro

PIC based synchronous buck

R

Raveninghorde

Jan 1, 1970
0
I'm looking at designing a PIC based synchronous buck lithium ion
battery charger for volume production.

I am considering the NCP5901 synchronous buck mosfet driver with the
PIC providing the PWM input. The schematic looks as if it should be
fairly simple.

The tricky bit is doing the current and voltage control loops in
software.

Has anyone tried anything like this? If so how successful was it?
 
N

Nico Coesel

Jan 1, 1970
0
Raveninghorde said:
I'm looking at designing a PIC based synchronous buck lithium ion
battery charger for volume production.

I am considering the NCP5901 synchronous buck mosfet driver with the
PIC providing the PWM input. The schematic looks as if it should be
fairly simple.

The tricky bit is doing the current and voltage control loops in
software.

Has anyone tried anything like this? If so how successful was it?

I did several similar designs using an LPC2000 series ARM controller
(most recently a quad output 130W 'special purpose' supply). You'll
need a micro which has an internal PWM controller. A PIC will be way
too slow if you want switching frequencies over 200kHz.
 
R

Rich Grise

Jan 1, 1970
0
Raveninghorde said:
I'm looking at designing a PIC based synchronous buck lithium ion
battery charger for volume production.

I am considering the NCP5901 synchronous buck mosfet driver with the
PIC providing the PWM input. The schematic looks as if it should be
fairly simple.

The tricky bit is doing the current and voltage control loops in
software.

Has anyone tried anything like this?

Yes, but not with a PIC. Bank switching is evil.
If so how successful was it?

Marginally.

I wasn't smart enough to figure out how to get rid of the approx. two
second hunting cycle, but the project died on the wire anyway because
the 68HC11 and its 68-pin socket were too expensive.

But Good Luck!
Rich
 
J

Jamie

Jan 1, 1970
0
Nah. That's the easy part.

http://www.wescottdesign.com/articles/Sampling/pidwophd.html

For a battery charger speed is not of the essence. You probably just
need simple integral control. For the current vs. voltage part, you can
generally get smooth switching by calculating the current error and the
voltage error, then applying the minimum of the two to the integrator.
This will let either one overrule the other in pulling the output down,
but if both agree that the output should rise then the output will rise.

(This sounds too easy. But I've applied this technique to loops that had
four different "do not exceed" values, and saw the control hand off
smoothly from one to the other as the system reached target).


I'm currently working on one that uses a microprocessor controlled boost
converter. Things are going smoothly so far.

Hi,

This is a bit unrelated, but for a synchronous buck the biggest problem
I've seen that limits power output at high frequency is the high side
switch transition losses. Any ideas if the microprocessor could
implement some form of resonant zero voltage switching for that case?

cheers,
Jamie
 
N

Nico Coesel

Jan 1, 1970
0
Jamie said:
Hi,

This is a bit unrelated, but for a synchronous buck the biggest problem
I've seen that limits power output at high frequency is the high side
switch transition losses. Any ideas if the microprocessor could
implement some form of resonant zero voltage switching for that case?

No, as long as the high side fet is on, the current will only rise.
 
ARM is kind of winning. The 32-bit RISC thing gives a huge amount of
compute power.

I think the reasons that ARM is winning is the wide variations in performance
and features offered by the multiple vendors. It really doesn't matter who
makes the parts. Don't like one, switch.
We are using LPC1754s in a fast PID loop/signal filtering app, 100K
hits per second... runs a heap of code in 4 usec, with the CPU clock
throttled down to 50 MHz to save power. This chip has a mux'd ADC, a
DAC, flash and ram, SPI, PWM, Uarts, Ethernet, internal clock, all
kinds of goodies. We are buying them in moderate quantities,
programmed and laser labeled, from Arrow for $4.75 each.

....and here I thought you were still using 68Ks. ;-)
 
J

John Devereux

Jan 1, 1970
0
Vladimir Vassilevsky said:
ARM definitely has its place under the Sun, however:

1. There is a huge amount of small applications (like SMPS) where
something like ATMega48/88 or ATTiny13 is the best fit. It would be
hard to beat those particular MCUs in the price/performance/features.

2. Having done a couple of projects with ARM9, I am fairly unimpressed
by compiting performance of the ARM core. ARM architecture is antique,
its assembler is horrid, interrupt handling is nonsense, caches and
MMU are ridiculous.

Cortex M3 is nice though don't you think?

<http://www.st.com/internet/mcu/product/245094.jsp>

I'm currently designing one into a product line.

[...]
 
J

John Devereux

Jan 1, 1970
0
J

John Devereux

Jan 1, 1970
0
Did you use this chip before? I once used an STR700 from ST and I've
found the peripherals flaky at best.

No, I have not used it before (only played with a development board a
little). The peripherals *appear* extremely capable, but we shall see :)
 
N

Nico Coesel

Jan 1, 1970
0
John Devereux said:
No, I have not used it before (only played with a development board a
little). The peripherals *appear* extremely capable, but we shall see :)

In that case you really should consider switching to NXP. ST is full
of surprises. On most parts the CPU cannot run at full speed while
executing code from flash.
 
J

John Devereux

Jan 1, 1970
0
[email protected] (Nico Coesel) writes:

R> John Devereux said:
In that case you really should consider switching to NXP. ST is full
of surprises. On most parts the CPU cannot run at full speed while
executing code from flash.

I found the STM32F2 does seem to run full speed from flash - it can
toggle a PIO at 30MHz! (Measured)

I have not encountered any issues with the limited testing done so far
(PIOs, UART, clock setup, timers). I use NXP too, they have some good
features. But the LPC2000 series did have serious bugs for a long time,
some parts did not run at full speed *at all*. I don't know if they ever
got the real time clock working reliably...
 
J

Jamie

Jan 1, 1970
0
Yes, I know the ADUC7xxx series quite well, in fact that is what I am
replacing! They are great chips, but lacking in CPU horsepower,
peripherals and RAM compared to more modern parts.

I agree they are pretty old, but they have 4 fast DAC's which is hard to
find in a microcontroller (only real reason I'm using them).. how did
you find the 12bit ADC/DAC's performance?

cheers,
Jamie
 
J

John Devereux

Jan 1, 1970
0
Jamie said:
I agree they are pretty old, but they have 4 fast DAC's which is hard
to find in a microcontroller (only real reason I'm using them)..

Yes, they are unmatched in that area AFAIK. The original product design
required the DACS, but I have a new arrangement that does not need them.
how did you find the 12bit ADC/DAC's performance?

In the ADUC7xxx? Very nice. I actually pushed the ADC to 2MHz, still
seemed to work fine (just as a test). Another thing I realised recently
is the voltage reference is surprisingly accurate for a microcontroller,
better than most stand-alone types. They must calibrate each one.

My impression is that the ADUC is a nice analog toolkit with a mediocre
ARM microcontroller hanging off it. With other parts you get a
state-of-the-art microcontroller with crappy analog functions.

On the STM32F2 I have not tried the ADCs yet. I fully expect them to be
poor in terms of accuracy compared to the ADUC. But for my application I
believe I can make up for that using the simultaneous sampling feature,
using one ADC at low gain and one at high gain. In my application
dynamic range, CPU speed and RAM is, now, far more important than
absolute accuracy.
 
R

Raveninghorde

Jan 1, 1970
0
I'm looking at designing a PIC based synchronous buck lithium ion
battery charger for volume production.

I am considering the NCP5901 synchronous buck mosfet driver with the
PIC providing the PWM input. The schematic looks as if it should be
fairly simple.

The tricky bit is doing the current and voltage control loops in
software.

Has anyone tried anything like this? If so how successful was it?

Thanks for the input. We'll get going on this as a background project.
 
Top