Title is pretty self-explanatory. Here's a boost converter I've layed out:

enter image description here

Instead of being driven by a chip, to save cost, I'm driving it from a micro. This micro has nearly no other tasks (some basic button checking), and runs on a 48MHz clock. So I think having a 1MHz PWM channel controlling this isn't too far fetched.

Was just looking for some feedback, particularly:

  • I've spec'd a BJT instead of a FET as the switch. I did this because the BJT will definitely turn on, whereas I'm not sure even small FETs will even turn hard-on @ 3V gate voltage for high-currents. Is this okay? I rarely ever use BJTs in a design unless it's an FPGA, so I'm a little hesitant.
  • I think I'll add a zener in parallel to C15 in the feedback path, to ensure protect the micro. It has internal ones obviously but these are just for ESD, extra never hurts in case the thing fails and the voltage goes higher than expected. I've also put in a pretty hefty (100n) feed-forward cap, since the load is a motor and could have some pretty sharp load changes. Any other parts worth adding?
  • The supply is for 12V @ 200mA, input is 4V. Do you think my cap and inductor values are within reason? Obviously I'm starting with pretty boring 10u/10u ballparks, but who knows - I could need heaps more, or heaps less with my demands. I've never found "consistent" or "standard" equations for determining the required capacitance or inductance of power supply designs, so I always just base off reference designs.
  • Depending on EMC performance, I'm thinking its worth a ferrite bead on the output and a capacitor to ground after R7 to smooth the PWM edges coming out of the micro
  • Any other comments? It just seems very...lacking. Obviously the firmware required compensates for the lack of hardware but. I have veraboarded it and it worked fine, but this doesn't guarantee performance over a long time.

Thanks. Appreciate your comments.

  • \$\begingroup\$ If you are using feedback, you should be able to see when the energy from L1 has been dispensed. The energizing step would be fixed width, but the de-energizing one is by no means fixed -- getting shorter and shorter as the desired output voltage is reached. So wouldn't this be operated as a variable frequency that would eventually reach the predicted one? Just curious, mostly. Wondering why the PWM. EMC? \$\endgroup\$
    – jonk
    May 9, 2019 at 14:25
  • \$\begingroup\$ You say it is working, but is the performance acceptable? Designing a digital control loop with good performance is not trivial. Do you need good load regulation, or is it acceptable for the voltage to dip significantly when the motor comes on? \$\endgroup\$
    – Mattman944
    May 9, 2019 at 15:02
  • 4
    \$\begingroup\$ The BJT is a poor choice if your PWM frequency is higher than a few 10s of KHz. Even if it works the switching losses will be bad, and you could be violating the SOA. You would be better off with a low threshold FET, or maybe with a driver that could run from the output once the converter has started. \$\endgroup\$
    – John D
    May 9, 2019 at 15:05
  • 1
    \$\begingroup\$ Don't expect great performance for instance... electronics.stackexchange.com/questions/191574/… \$\endgroup\$
    – Andy aka
    May 9, 2019 at 15:13
  • 2
    \$\begingroup\$ Also remember that an uncontrolled boost can output very high voltages so you might want to implement a hardware overvoltage protection circuit in case you have a software bug or your micro does something unexpected. Maybe a comparator with hysteresis on the output that gates the signal to the switch through a AND gate. \$\endgroup\$
    – John D
    May 9, 2019 at 15:25

4 Answers 4

  • Start-up currents can be huge, and need to be managed. A converter would have a current sense of some sort. You'll want to either sense the coil current and limit it, or try to deduce it from the rate that the output cap is charging and, again, limit it.
  • Simulate. I think you'll find that the transistor won't turn off very well.
    • You need to saturate it pretty thoroughly to make it turn on, to turn it off quickly you need to actively pull the charge out of the base. This requires some hefty drive.
    • (Zetex had some app notes on using BJTs in switchers about 20 years ago -- they were trying to sell their super-beta transistors for the task. I built a circuit to try it out and it worked well, but in the end it's as complicated as using FETs).
    • (Zetex either became, or was bought by, Diodes Inc. They have some pretty impressive BJTs)
  • To drive 200mA out, the average current in the inductor needs to be 800mA.
    • With an ordinary BJT this implies 80mA to the base, which is beyond your typical micro pin (and well beyond what you'll get with a \$1000\Omega\$ base resistor).
    • I'm not sure how things pencil out with a super-beta transistor, but even if the idling base current is less, you still need to actively drive current into and out of the base. Essentially, you end up with a gate driver, followed by a typical resistor-cap-diode gate speed-up circuit. It'll make you ask "why didn't I just use a FET?"
    • 1MHz, 800mA average coil current, 75% duty cycle -- that says that at the edge of continuous conduction you'll be charging from 0 to 1.6A in 750\$\mu\mathrm{s}\$.
    • That says 2.2\$\mu\mathrm{H}\$ to me, unless you want to insure continuous conduction over a wider current range.
    • 10\$\mu\mathrm{H}\$ isn't a bad place to start, but it's more than you need. OTOH, it slows down the circuit's response, and therefore eases the load on software.

Issues you will have with this design are: From an analog standpoint, you don’t appear have a big enough transistor for the peak currents, and the output of a microcontroller will have a hard time driving either a transistor or a FET cleanly at these frequencies. In your design, the BJT will present a capacitive load and it will switch only slowly, meaning it will be inefficient and running hot.

From a digital standpoint running a 1-MHZ PWM from a 48-MHZ clock means that you will have poor resolution on your duty cycle, equating to about 0.8 volts on your output at your operating point. So your firmware will be constantly hunting around your target output voltage.


As with the other answers, I'd suggest against using an MCU in place of a plain step-up PMIC. Especially if it's not going to do anything more than the PMIC (e.g. if it's not going to be field-updatable).

I have implemented something like your scheme, for a different scenario though (see here if interested). In my case the "load" is another DC-DC converter, so I didn't care much about line or load regulation (and my output ripple is huge, ±1V). What I do have in my case is the ability to update the MCU firmware over the air, which was a huge benefit for this project as I was flexible to different power sources. I've field upgraded the firmware dozens of times, to optimize the performance and tailor it to the specifics of the input. I guess it's just a niche application where the MCU could be better than the PMIC.

If you don't have any of that in mind, then stick to the PMIC.

If you go the MCU path, consider:

  • Using much lower switching frequency (I use 100 kHz and it works well)
  • Using a logic-level FET with low gate capacitance (e.g. FQD13N06LTM)
  • Be sure to use the watchdog feature of your MCU
  • Probably a crowbar circuit that triggers at some high voltage (e.g. double the expected one) if you want to sleep tight

If you're only pursuing this as a hobby, one-off thing - go for the MCU! It's super fun and educational :)


Before I mention some issues, my recommendation will be that you switch to a dedicated boost converter IC. Personally, I wouldn't recommend building a uC controlled boost converter (more on this later)

Now, coming to the issues/recommendations.

  1. You are switching at 1Mhz frequency. Using a MOSFET at high frequencies is a better option than BJT. You can refer to this post When is a MOSFET more appropriate as a switch than a BJT?. Coming to MOSFET selection, there are MOSFETs which turn at low Vgs ~2-2.5V, even less and have peak current capability of around 2-3A. Since there are lots of MOS devices around and your procurement depends on the component availability in your area, I would suggest you do a quick search on https://www.mouser.com, use their search tool and find out which part suits you the best.

  2. One drawback in your circuit is, there is no reverse voltage protection at the output side. Since you will be connecting a motor at the output, back emf will be generated when motor will be stopped or its speed will be reduced. In such a case, the reverse voltage will flow all the way from the output to your MCU feedback pin via the R6-R8 feedback network. Having a zener at the feedback pin is a good solution but not a great solution because zener doesn't protect the electrolytic capacitor C11 (22u) from the back emf. So you need to protect the MCU as well as the capacitors. A schottky diode at the output rail can achieve both tasks. Still, I wouldnt say this is a great solution either because of constant power loss in the schottky diode at output.

  3. Your circuit will work fine when there's a load at the output. But when load isn't present, the duty cycle may increase rapidly to a high value, boosting the output voltage tremendously. The output capacitors will have to endure a very high boosted voltage which can potentially damage them. Moreover, this high voltage can generate a higher feedback voltage (>2v) which can possibly damage your MCU too. So either take care of this problem in software or include a dummy load at the output to avoid this scenario. You somehow have to implement a circuit or a code which prevents the output voltage to rise beyond 12v,

Still the above mentioned fixes are very crude fixes and not recommended for a reliable design. I will not go deep further into the design issues because if you are considering long term reliability, there are a lot of things your circuit should take care of (compensation, ADC drift, temperature range, supply fluctuations, noise, protection etc). The more issues you encounter, the more you have to bang your head solving them. Plus, you have to work on the hardware as well as the software which will further increase your development time. Don't just look at the entire project from a cost reduction perspective. Consider the efforts involved in development, debugging, verification, reliability and PCB fabrication, too.

Now coming to my recommendation. A dedicated boost IC will have all the required blocks inbuilt in them. Basically, whatever hard work you are doing in software, that is done by these inbuilt blocks easily and reliably. I have personally worked with UC3843 IC for a 600W boost converter with CC-CV. I know UC3843 is a very old IC, but despite its age, the support on forums is still amazing.

With a dedicated boost IC, you get a lot of features for half the cost of a uC. Features like Over voltage, over current, drift, compensation, UVLO, current limiting, output adjustment etc. are all offered by a lot of boost converter IC these days. Being a decade old IC, UC3843 provides these features, so I can bet present day ICs offer more than what 3843 does, that too at a fraction of its price. Moreover, you will get verified reference designs, post development support on forums, PCB layout, guidelines, performance characteristics and so on.

From an engineering point of view, you are wasting valuable functionalities of a uC by using it only to generate pulses. Instead, let the boost IC do the task of dc-dc conversion. Meanwhile, you can use your uC to monitor the state of the boost converter.

Hope this helps! :)

  • 1
    \$\begingroup\$ "But when load isn't present, the feedback voltage will become zero." I'm not seeing this -- I'm seeing that there's a DC path from the output voltage to the feedback voltage. (And I'm not questioning your recommendation to just use a boost IC in this case, BTW -- unless the OP wants to use a BJT for the fun of it). \$\endgroup\$
    – TimWescott
    May 9, 2019 at 16:17
  • \$\begingroup\$ I think I made a mistake in writing that statement. (o_o'). When load isnt present, the duty cycle and hence the output will increase uncontrollably till the duty cycle hits the maximum value. \$\endgroup\$ May 9, 2019 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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