Powering Electronics Projects - Variable voltage Power Module

Variable Voltage Power Module

Powering electronics projects are always challenging. This Variable voltage Power Module was designed to solve such a problem for a specific project that I am working on.

The ESP32 and their smaller cousin the ESP8266 are pretty well known for their high power requirements. Having used quite a few of these in various projects over the years, I wanted a power module that can supply me with enough current to keep these hungry little chips satisfied. I also needed variable voltages with more modest current capabilities, to drive LED COB modules for example.

The idea thus came to me to combine two recent projects, that I have been using together on the bench with great effect. These two are the Variable Breadboard Power Module, based on the LM317G, and the DC-DC Buck Converter that I designed a short time ago. Between these two devices, I can deliver up to 3A at 3v or 5v, or a variable voltage at up to 1.5A.

Let us take a look at what exactly was done here.

Variable Power Module

What is on the PCB?

The PCB consists of 3 independent power circuits, the first of which is a DC-to-DC Buck module, based on the MP9943 from MPS. This chip can source up to 3A at a preset voltage. In my case, I chose 3.3v and 5v, as I use those the most.

The second and third parts are a mirrored section, with the humble LM317G at their hearts. These are set up as variable voltage regulators, with their outputs adjustable via R10 and R13. These two can source two independent voltages, from about 1.0v right up to about 11.5v ( if VCC is 12V) at a respectable 1.5A or current.

All of this is powered by a single 12v Power supply. Note that the 12v supply should be capable of sourcing at least 3A of its own…

The stepped-down voltages are provided via 3 2-way headers at the top of the PCB.

How do you use the board?

Using the module is easy. Power it from 12v DC ( or up to 24v if you really want to)

The 3.3v or 5v output is selected using jumper J1 ( Please switch the power off first, BEFORE you change this). The selected voltage will be available at H1

H2 and H3 provide variable voltages, that can be set using R10 for H2 and R13 for H3. Turning the potentiometer anti-clockwise will reduce the voltage, clockwise to increase.

Test points ( TP1 and TP2) can be probed with a multimeter while adjusting the voltages.

The Schematic

Manufacturing the PCB

The PCB for this project was sponsored by PCBWay.

Clicking on the PCBWay link will take you to the PCBWay website. It will enable you to get a $5.00 USD voucher towards your first PCB order. (Only if you sign up for a free account).
I shall also receive a 10% commission AT NO COST to you if, and only if, a paid order is generated from the click on this link.


This PCB uses some very tiny components, so a stencil is highly recommended.

The Buck Converter IC is especially tiny.

Most of the other components can be soldered by hand, but I chose to do the entire assembly on a hotplate to reflow everything at the same time.


Variable Power Module

After assembly, I tested everything, measuring voltages with a multimeter, as well as adjusted H2 and H3 down to 6v, as I would be using the module on another project. I also tested the ripple on the Buck converter with an Oscilloscope, and it was well within the specs stated by the datasheet, at about +/- 100mV.

The entire module draws about 650mA at no load, and up to 3A when powering 2 6v LED COB modules and an ESP32 with I2S Audio modules connected as well.
Most of the current actually being drawn by the LM317G chips. The Buck converter is actually quite economical, drawing a modest 500mA at full load
( tested with a separate module that only contains a single buck converter module).


The power module works exactly as expected. It will perform well for its intended purpose, i.e powering an ESP12-E (8266) ESPHome device with two 6v LED COB modules in PWM mode, as well as an I2C display and various other sensors. In that application, I have successfully tested the entire project with a modest 12v at 1A wall-brick transformer, with no overheating or power shortage on any of the components. That is thus a win, in my books at least.


Nice project! Where did you get the stencil for it from?

Very nice looking… best of all sounds like it works right :wink:

Curious about weight of board (thickness of copper)… I have some 1 Oz copper boards and when I get around 1/2 amp the traces are too wide to be usable…


I had it made up together with the PCB’s , so came from the same PCB manufacturer as the boards

This is a 1Oz board.

I went with big copper fills where possible, and did some calculations in KiCad… I am however quite unsure if those are actually correct, as the board in it current state does not even get warm when pulling 3A at 3.3v… The LM317G side does heat up to about 30 degrees C when pulling near their rated current of 1.5A but that seems to be only the regulator dissipating excess voltage as heat…

So, to be honest, I am as confused about correct trace widths as you. I reckon that making them as wide as possible, with sometimes double-layer traces, stitched with vias, seems to be working well up to now…

That is a bit of a cowboy attitude, but it seems to have been adequate up to now, with zero burns or issues on any board… I want to enjoy the hobby, and not get too technical and mathematical unless exactly necessary :slight_smile:

1 Like

Using Eagle, it allows you to compute the width required for a certain current… Just have to have the weight and the current, it does the rest.

I did one for a 4A circuit and the recommended trace was more than I had room for…

So, I was just curious how that worked with yours…



Yeah, kicad has the same kind of calculator. It’s based on an industry standard, IPC-2221.


Using a 1 Oz board… that must be it.


for DC it should be a function of cross sectional area like current ratings for AWG spec’ed wire.
AC is more complicated but as Michael pointed out, standards sometimes work for everyone.

No problem :slight_smile: I must admit that on this one I “winged it” . Maybe they are way too big? maybe too small :slight_smile: for now what matters is that the prototype works as expected, so I can get into fine tuning and perfecting everything else:)


Very true,

As we see here, My traces are WAY thicker than the recommended ones… so I really dont always know what to trust…

Since I had space, I just went with as thick as can go in that area :slight_smile:

Trust the engineering math if you want it to work… :wink:

Too big isn’t bad for the end customer, probably a longer life… how big is too big?

No matter, it works and looks lovely…


I agree with you there.

I would rather have too big tracks, that never heats up or burn :slight_smile: I dont think too big (about 8 mm here on the Mosfet outputs) are actually too big…

Thank you for all the inputs :slight_smile: I appreciate the discussion :slight_smile:

The main problem I can think of with oversized tracks is excessive thermal conductivity if you don’t have proper thermal relief for the pads. :slightly_smiling_face:

yes, that is definitely another can of worms that you opened there :slight_smile:

So, in this case, when we look at the actual use of the board, I see a problem with the 2.54mm headers that leads the power to the MCU board ( and ESP8266 in this case). These header pins are only about .08 mm squared… I am already planning to replace these in the next revision, although there were no issues yet…

On the top board, Tracks lead out to 5.08mm Screw terminals… also a bit oversized on purpose…

I do however get WAY better thermal performance ( in this case lower heat production ) with the bigger tracks. Also, the integration of on-pcb heatsinks helps a lot there ( the LM317G in this case is SMT, so a normal heatsink can not be used… I usually solve that with a generous copper pour on both sides of the board, that is then via stitched together for better thermal conductivity) - So far, that one works quite well, and are inexpensive as well :slight_smile: