Skip to the content
4 layers132 × 107 mmBidirectionalSupply, the printed circuit board in 3D

Hardware and firmware for a bidirectional DC-DC convertor

Size
132 × 107 mm
Copper layers
4
Thickness
1.6 mm
Parts
278
Nets
157
Pads
783
Tracks, vias
1,259, 763
Pours
29
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
5 Nov 2025
Updated
4 Aug 2026

Overview

BidirectionalSupply is an open-source printed circuit board by ddowling, from the ddowling/BidirectionalSupply repository on GitHub. It is a 4-layer board of 132 × 107 mm with 278 parts on 157 nets, routed with 1,259 tracks and 763 vias.

It is built around the MAX17502EATB+T, W25Q128JVSIQ and LM74810QDRRRQ1, with the ABM8-272-T3 and USB-309GC-B-SU among its other parts. Its parts include 73 capacitors, 62 resistors, 14 diodes, 12 transistors and 11 connectors. It belongs with the power boards and the RP2350 boards of this library.

Main components

5

README

README.md

This is a design for a Bidirectional Buck-Boost DC-DC converter based on the Texas Instruments BQ25758 integrated circuit. The BQ25758 has a wide supply range from 4.2V to 60V and the external MOSFETs and Inductor should support currents up to 10A. This design is closely based on the BQ25758 Evaluation Module. I decided to spin my own board as I wanted to add a microcontroller and four Ideal Diodes with load switches to make a completely standalone board.

I am interested in using this circuit as a DC UPS, Battery Charger and Solar MPPT. I have used various purpose build modules previously but I have often run into limitations due to their fixed function design and closed firmware.

The BQ25758 I2C interface is connected to an on-board RP2350 and there are 4 Ideal-Diode switches also connected to the RB2350. All of the high current connections are brought out to pluggable terminal blocks so it is possible to reconfigure the circuit to accomodate different use cases. Having the ability to switch the DC-DC converter direction means that the system bus voltage can be decoupled from the battery voltage.

I was originally going to use a STM32 for the board microcontroller as I have used these on a lot of previous designed but when I started looking at battery capacity tracking algorithms I noted that the more advanced employed an Unsented Kalman Filter and required the use of an Equivalent Circuit Model for the battery. I decided to opt for the RP2350 with its hardware floating point and the ability to run MicroPython as I figure this will be easier to iterate the firmware and run experiments on the board. Using MicroPython allow writing log files to the flash memory to allow continous logging of battery voltage, current and temperature. This data can then be processed either on the board or remotely to allow a battery model to be fitted to actual battery performance.

Parts

278
QtyValueFootprintReferences
18100nF/25VWCapacitor_SMD:C_0603_1608MetricC4, C11, C12, C13, C14, C15, C16, C18, C19, C32, C33, C40, C41, C66, C67, C68 +2
14100nF/100VWCapacitor_SMD:C_1206_3216MetricC25, C26, C29, C31, C36, C38, C39, C48, C56, C59, C70, C71, C72, C73
12SIR880BDPBidirectionalSupply:POWERPAK-SO-8_L6.2-W5.2-P1.27-BL-EPQ1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12
110RResistor_SMD:R_0603_1608MetricR13, R14, R15, R16, R18, R30, R34, R59, R60, R61, R62
1110kResistor_SMD:R_0603_1608MetricR21, R22, R23, R24, R25, R32, R33, R38, R42, R46, R50
111kResistor_SMD:R_0603_1608MetricR4, R5, R7, R19, R20, R53, R54, R55, R56, R57, R58
8REDLED_SMD:LED_0603_1608MetricD3, D4, D10, D11, D12, D13, D14, D15
74.7uF/25VWCapacitor_SMD:C_0805_2012MetricC6, C7, C9, C10, C34, C35, C63
756uF/80VWCapacitor_SMD:CP_Elec_10x10.5C20, C21, C22, C23, C27, C28, C65
610uF/100VWCapacitor_SMD:C_1210_3225MetricC42, C43, C44, C50, C51, C52
61uF/100VWCapacitor_SMD:C_1206_3216MetricC3, C37, C47, C55, C58, C61
6V1FM10-M3/HDiode_SMD:D_SMFD1, D2, D5, D6, D7, D8
410RResistor_SMD:R_0603_1608MetricR2, R3, R10, R12
42k1Resistor_SMD:R_0603_1608MetricR37, R41, R45, R49
43k1Resistor_SMD:R_0603_1608MetricR36, R40, R44, R48
44.7uF/100VWCapacitor_SMD:C_1210_3225MetricC45, C46, C53, C54
497k6Resistor_SMD:R_0603_1608MetricR35, R39, R43, R47
4LM74810QDRRRQ1BidirectionalSupply:WSON-12_L3.0-W3.0-P0.50-TL-EP-2U2, U6, U7, U8
4MountingHoleMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
310uF/25VWCapacitor_SMD:C_0805_2012MetricC5, C17, C62
2100pF/100VWCapacitor_SMD:C_0805_2012MetricC49, C57
215pFBidirectionalSupply:C_0402_DRCC1, C2
21k8Resistor_SMD:R_0603_1608MetricR26, R27
227RResistor_SMD:R_0603_1608MetricR8, R9
2470nF/16VWCapacitor_SMD:C_0603_1608MetricC24, C30
24k99Resistor_SMD:R_0603_1608MetricR28, R29
25k1Resistor_SMD:R_0603_1608MetricR51, R52
25mBidirectionalSupply:RES-SMD_L10.0-W5.2R1, R11
2CON2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3, J7
2Conn_01x02Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_2-G-5,08_1x02_P5.08mm_VerticalJ10, J13
2SW_PushBidirectionalSupply:TS-1088-AR02016SW1, SW2
110uHInductor_SMD:L_Wuerth_HCM-1350L2
11nF/100VWCapacitor_SMD:C_0805_2012MetricC60
122uHBidirectionalSupply:IND-SMD_L4.0-W4.0_SLW4010SL3
13.3nFCapacitor_SMD:C_0603_1608MetricC64
13.3uHBidirectionalSupply:L_pol_2016L1
133RResistor_SMD:R_0603_1608MetricR6
157k6Resistor_SMD:R_0603_1608MetricR31
1ABM8-272-T3BidirectionalSupply:Crystal_SMD_3225-4Pin_DRCY1
1BQ25758BidirectionalSupply:QFN-36_L6.0-W5.0-P0.50-BL-EP-1U4
1CON10Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ2
1CON4Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1Conn_01x05Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_5-G-5,08_1x05_P5.08mm_VerticalJ12
1Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ11
1Conn_01x12Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_12-G-5,08_1x12_P5.08mm_VerticalJ9
1DNPResistor_SMD:R_0603_1608MetricR17
1MAX17502EATB+TBidirectionalSupply:DFN-10_L3.0-W2.0-P0.50-BL-EPU5
1RP2350_60QFNBidirectionalSupply:RP2350-QFN-60-1EP_7x7_P0.4mm_EP3.4x3.4mm_ThermalViasU3
1USB-309GC-B-SUBidirectionalSupply:USB-C-SMD_USB-309GC-B-SUJ1
1W25Q128JVSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU1

The 190 most common of 278 parts.

More from ddowling/BidirectionalSupply

1
  • 2 layers109 × 31 mmProtection, the printed circuit board in 3D

    Protection

    ddowling/BidirectionalSupply

    Hardware and firmware for a bidirectional DC-DC convertor

    13 parts2

Similar boards

  • 2 layers40 × 38 mmShield, the printed circuit board in 3D

    Shield

    murexrobotics/electrical

    Highly integrated electronics design and printed circuit boards (PCBs) for the MATE ROV Competition. Attempt the impossible.

    32 parts192MIT
  • 4 layers130 × 90 mmFinal chain, the printed circuit board in 3D

    Final chain

    misko/prompt2device

    The separate vNext PCB skill and orchestrator package is available alongside the reference workflow below; existing projects keep their accepted toolchain until an explicit migration.

    206 parts3MIT
  • 4 layers55 × 100.5 mmOSS Radio Hardware Design, the printed circuit board in 3D

    OSS Radio Hardware Design

    Arkos-Engineering/HT-15_hardware

    We can split this out into separate repos later, right now its very convenient to have everything here.

    256 parts72
  • 2 layers75 × 40 mmPicoTop Board Rev2, the printed circuit board in 3D

    PicoTop Board Rev2

    7west/PicoTop

    A very basic computer & OS based on the RP2350 microcontroller

    86 parts66
  • 4 layers50.5 × 29.5 mmColobus hardware, the printed circuit board in 3D

    Colobus hardware

    tihmstar/colobus_hardware

    RP2040 based iPhone (lightning) UART cable, that actually works (hardware)

    57 parts39CERN-OHL-S-2.0
  • 4 layers277.2 × 107.5 mmKatia, the printed circuit board in 3D

    Katia

    ikajdan/katia

    A split keyboard with 6 by 3 column staggered keys and 3 thumb keys, based on the Crkbrd design

    230 parts33CERN-OHL-P-2.0
  • 4 layers51.8 × 20 mmSample target, the printed circuit board in 3D

    Sample target

    alvarop/swd2usbc

    Have you ever wanted to debug your device over USB-C? Sometimes there's not enough room for a JTAG/SWD connector, or even Tag-Connect pads!

    57 parts29CC0-1.0
  • 2 layers98 × 54.5 mmPico2 dual12bitadc, the printed circuit board in 3D

    Pico2 dual12bitadc

    Sev5000/RP2350B_DualADC_DualPCM

    A PCB to neatly package a rp2350b with two 12bit high speed adc and four channel audio input for use with hsdaoh

    76 parts23

Questions

How big is the BidirectionalSupply PCB?

It measures 132 × 107 mm and has 4 copper layers, 1.6 mm thick.

What parts does the BidirectionalSupply use?

278 parts, built around the MAX17502EATB+T, W25Q128JVSIQ, LM74810QDRRRQ1 and ABM8-272-T3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the BidirectionalSupply KiCad files?

From the ddowling/BidirectionalSupply repository on GitHub, at the commit this page was made from: the board is hardware/BidirectionalSupply.kicad_pcb and its schematic hardware/BidirectionalSupply.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the BidirectionalSupply design in my own project?

Its repository states no licence, so its author keeps all rights: ask ddowling before reusing the design.