KiCad universal DC-DC module design


Working on my pet project (a Cortex M7 breakout board, like a Teensy on steroids, but with proper debugging features and a fast double-precision FPU) I thought: “Wouldn’t it be nice to have a PSU on board that is pre-made, very compact and easily swappable to reconfigure the board?”

After good dose of NIH and some frantic KiCad puzzling: My first attempt to create a standard device and footprint. I’d love to hear your thoughts, feedback (requests?).

The idea is to publish it as open hardware (no insane OSHWA certification, probably CC-BY-SA or something similarly relaxed) once the prototypes work well.

Generic requirements for the module:

  • Cold swappable
  • Tiny footprint area (26x10mm, parts underneath possible)
  • Able to use technology that is applicable to integrated designs
  • Optional MCU interface (I2C)

The module I designed first is a more advanced one, simply because that’s the one I want to use:

  • 3 to 17 VDC input
  • 1.5 to 12 VDC output
  • 3.5 A
  • MCU en/disable
  • MCU controllable output voltage
  • Voltage and current monitoring

The pin headers are the 2mm type (instead of the 2.54mm defaults). I like to this as a way to make sure I won’t accidentally use them as GPIO. The headers and sockets are common enough.

The additional input Vin & GND pins can be left unconnected by either the host or module.

The two three pad areas in the top right corner are address selectors for both I2C chips (you can use up to four modules per I2C bus).

Future versions I’d like to add

  • Cheap and simple fixed output
  • Dual voltage modules (both output pins are joined in the current design, but can be used separately)
  • Battery backed / charging
  • MPPT solar input




Front copper layer

Back copper layer

Usage example:

I’d love to hear your critiques, suggestions or requests.


LC ferrite bead filters on in and out perhaps?
I have taken a dislike to have two sets of gnd, it’s too easy to end up making a loop antenna if there is a noise source between them. These days I try to have a single and, with power in and out filtered to the same star point


Although I agree with @davidsrsb about the grounds the extra ground pins do allow for the possibility of an isolated version.

The ability to monitor the output voltage would be handy.

I would however, eliminate the 3.3V input and have only a single input voltage.

Edit: Also, move the feedback resistor to the other (output) side of the current sense resistor.


I’ve thought about things like that (also diodes / input crossbar) and felt it was something to do in the host PCB. Shouldn’t be to hard to add to a module though.

Thanks for pointing that out. Indeed having the option to do an isolated version was on my mind when I added the right GND pins. A simple solution would be to not populate them on the host footprint.

The MAX9611 does that, it monitors both current and voltage, allowing full closed-loop control over I2C.

The 3.3V input is for the I2C logic: the digital resistor and current sensor VDD. The module is wired up to use the GPIO from the digital resistor as an enable for the buck convertor (default off), the idea being that the MCU boots first, sets the target resistance for the required voltage and then brings the buck online.

I don’t understand that bit, sorry. Do you mean R1 (should be 880k, of course, fixed that)? Or the whole digital resistor parts group? Could you tell me why this would be beneficial?


Keep the grounds closer together rather than at opposite ends of the PCB.

Yes, it can measure the voltage on the positive side of the sense resistor (R5), that combined with the voltage drop across the resistor would give you the output voltage.

The current requirements of that 3.3V input would be quite low, perhaps use an LDO to supply that from within the module?

Instead of connecting the feedback resistor (R1) to the inductor (L1), connect it to the other side of the sense resistor (R5).


I’ll play around with a new layout format. I liked this for mechanical stability, but I see the value in moving the ground pins together.

Ahh, I understand now, that way the feedback would regulate out the drop over the sense resistor (R5), no? At the cost of some trace length in the feedback loop. Interesting idea. Not sure if it really makes much difference though, since the control is closed loop.



By “closed” you mean via the processor and I2C? You want the processor to do the job that the regulator is intended to do? Good luck with that.


I’ve taken the above remarks and updated the schematic. Changes:

  • The header is now joined.
  • The center block split or shared ground
  • I2C moved to the bottom (a ‘dumb’ module can be a bit narrower / smaller)
  • The feedback takes voltage from the ‘output’ of the current sensing resistor
  • The 3.3V pin is dropped in favour of a LDO


New component layout, roughly. All connections are moved to the left for that single (and optionally splittable) ground point. The single header pin on the right is just an optional mechanical support. PCB size still 26x10mm.


Why are you considering an isolated convertor here? You would have to completely change the electronic design for a transformer coupled one.


Will it be stable in case of capacitive load? R5 and Cload form the pole. Have You made loop stability analysis?


He’s not considering an isolated version with this design. As he mentions in his first post his idea is to have multiple versions of DC-DC converters with the same form factor and connector pinout etc. One such design could include an isolated converter only if he provides for separate ground pins on the connector.


My experience of isolating convertors is that they require far more filtering to avoid generating common mode noise, unlikely to fit in the same form factor


Your schematic doesn’t indicate which version of the AD5241 you are planning to use but in any case I would rethink the value of R1.

This design is not of much use for a primary power supply as it requires being enabled via I2C. The wiper of the digital pot will be at midpoint on power up also likely to require programming via I2C before enabling.

Stability shouldn’t be an issue for any reasonable capacitive loads (less than a few thousand uF). Yes, R5 and Cload will form a pole and the ESR of any bulk capacitor will form a zero improving stability.

Switchers using the isolated flyback topology don’t generally require any more filtering than the typical buck/boost topology. The only added complexity would be the opto-coupled feedback.

It may or may not fit in the same form factor but that’s not particularly relevant to the current discussion.


Yes, you are correct that the value wasn’t right (it was on the todo list). My first iteration was based on a 1M digital potentiometer, the current one is 100k (the datasheet recommends avoiding >400k) with a series resistance of 6.8k to shift the working range down a bit (from just over 12V down to just under 1.5V):

I’ve made some other small adjustments: The horizontal grouping of pins will allow use of a 1x4 header as well, or even a left and right non-controllable module on each side.

Thanks again for all the great feedback!


I’m much more at ease with this version. :slight_smile:


Some layout pics:

Edit: And for the interested a zip of the KiCad project: (2.8 MB)


I think, it will be better to have feedforward capacitor. It could be populated after stabibilty/transient response measuremnent.


There is a small bit of internal feedforward capacitance, 15 pF:

I’ve tried to follow the datasheet pretty closely (TI’s examples generally performed really well for me in the past), but I can look at adding a footprint for it in some future version.


Everybody seems to have a different form factor for their universal power supply :slight_smile:
I made it easy for myself and bought a bunch of LM2596 boards from China.
But whenever I design a PCB I tend to put the power supply on it, so no messing around with extra pcb’s. My default is probably going to be MP1584. PCB’s with this chip starting from about USD0.60 from china…

About your design:
I do not agree with your decision for 2mm connectors.
I use power adapter boards such as these mainly for experimenting on breadboards, veroboard etc and anything which does not have a 2.54mm spacing is a nuisance.
If you are afraid of sticking components in the wrong socket then mark it on the pcb with a sharpie or similar or make labels in a spreadsheet. ( line spacing of 2.54mm, Adjust text size so it fits, print it, add transparant adhesive tape before cutting it out with a scissors). Glue them to your vero board, or make holes with a needle and then stick a connector right through the label.

Apart from my critique, I like your design. PCB layout looks good, connector with all signals on one side of the pcb, Extra hole for stability / support on the other side. And the connector can be placed on either side. I would place the connector on the other side though by default. After initial testing/debugging access to the components on the pcb is not so important, and if you’re being mooned you have lots of space for silk screen text etc. I would probably also put the I2C address tabs on the bottom side (with addressing comment).
I would also put the silk screen text for Input / output voltages / current next to the respective pads of the connector.

Last remark: Adding thermal reliefs to the connector pads will make hand soldering a bit easier / faster / more reliable.