
Protection
ddowling/BidirectionalSupply
Hardware and firmware for a bidirectional DC-DC convertor

Hardware and firmware for a bidirectional DC-DC convertor
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.
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 100nF/25VW | Capacitor_SMD:C_0603_1608Metric | C4, C11, C12, C13, C14, C15, C16, C18, C19, C32, C33, C40, C41, C66, C67, C68 +2 |
| 14 | 100nF/100VW | Capacitor_SMD:C_1206_3216Metric | C25, C26, C29, C31, C36, C38, C39, C48, C56, C59, C70, C71, C72, C73 |
| 12 | SIR880BDP | BidirectionalSupply:POWERPAK-SO-8_L6.2-W5.2-P1.27-BL-EP | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12 |
| 11 | 0R | Resistor_SMD:R_0603_1608Metric | R13, R14, R15, R16, R18, R30, R34, R59, R60, R61, R62 |
| 11 | 10k | Resistor_SMD:R_0603_1608Metric | R21, R22, R23, R24, R25, R32, R33, R38, R42, R46, R50 |
| 11 | 1k | Resistor_SMD:R_0603_1608Metric | R4, R5, R7, R19, R20, R53, R54, R55, R56, R57, R58 |
| 8 | RED | LED_SMD:LED_0603_1608Metric | D3, D4, D10, D11, D12, D13, D14, D15 |
| 7 | 4.7uF/25VW | Capacitor_SMD:C_0805_2012Metric | C6, C7, C9, C10, C34, C35, C63 |
| 7 | 56uF/80VW | Capacitor_SMD:CP_Elec_10x10.5 | C20, C21, C22, C23, C27, C28, C65 |
| 6 | 10uF/100VW | Capacitor_SMD:C_1210_3225Metric | C42, C43, C44, C50, C51, C52 |
| 6 | 1uF/100VW | Capacitor_SMD:C_1206_3216Metric | C3, C37, C47, C55, C58, C61 |
| 6 | V1FM10-M3/H | Diode_SMD:D_SMF | D1, D2, D5, D6, D7, D8 |
| 4 | 10R | Resistor_SMD:R_0603_1608Metric | R2, R3, R10, R12 |
| 4 | 2k1 | Resistor_SMD:R_0603_1608Metric | R37, R41, R45, R49 |
| 4 | 3k1 | Resistor_SMD:R_0603_1608Metric | R36, R40, R44, R48 |
| 4 | 4.7uF/100VW | Capacitor_SMD:C_1210_3225Metric | C45, C46, C53, C54 |
| 4 | 97k6 | Resistor_SMD:R_0603_1608Metric | R35, R39, R43, R47 |
| 4 | LM74810QDRRRQ1 | BidirectionalSupply:WSON-12_L3.0-W3.0-P0.50-TL-EP-2 | U2, U6, U7, U8 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad | H1, H2, H3, H4 |
| 3 | 10uF/25VW | Capacitor_SMD:C_0805_2012Metric | C5, C17, C62 |
| 2 | 100pF/100VW | Capacitor_SMD:C_0805_2012Metric | C49, C57 |
| 2 | 15pF | BidirectionalSupply:C_0402_DRC | C1, C2 |
| 2 | 1k8 | Resistor_SMD:R_0603_1608Metric | R26, R27 |
| 2 | 27R | Resistor_SMD:R_0603_1608Metric | R8, R9 |
| 2 | 470nF/16VW | Capacitor_SMD:C_0603_1608Metric | C24, C30 |
| 2 | 4k99 | Resistor_SMD:R_0603_1608Metric | R28, R29 |
| 2 | 5k1 | Resistor_SMD:R_0603_1608Metric | R51, R52 |
| 2 | 5m | BidirectionalSupply:RES-SMD_L10.0-W5.2 | R1, R11 |
| 2 | CON2 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3, J7 |
| 2 | Conn_01x02 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_2-G-5,08_1x02_P5.08mm_Vertical | J10, J13 |
| 2 | SW_Push | BidirectionalSupply:TS-1088-AR02016 | SW1, SW2 |
| 1 | 10uH | Inductor_SMD:L_Wuerth_HCM-1350 | L2 |
| 1 | 1nF/100VW | Capacitor_SMD:C_0805_2012Metric | C60 |
| 1 | 22uH | BidirectionalSupply:IND-SMD_L4.0-W4.0_SLW4010S | L3 |
| 1 | 3.3nF | Capacitor_SMD:C_0603_1608Metric | C64 |
| 1 | 3.3uH | BidirectionalSupply:L_pol_2016 | L1 |
| 1 | 33R | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 57k6 | Resistor_SMD:R_0603_1608Metric | R31 |
| 1 | ABM8-272-T3 | BidirectionalSupply:Crystal_SMD_3225-4Pin_DRC | Y1 |
| 1 | BQ25758 | BidirectionalSupply:QFN-36_L6.0-W5.0-P0.50-BL-EP-1 | U4 |
| 1 | CON10 | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J2 |
| 1 | CON4 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J6 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J8 |
| 1 | Conn_01x05 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_5-G-5,08_1x05_P5.08mm_Vertical | J12 |
| 1 | Conn_01x08 | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J11 |
| 1 | Conn_01x12 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_12-G-5,08_1x12_P5.08mm_Vertical | J9 |
| 1 | DNP | Resistor_SMD:R_0603_1608Metric | R17 |
| 1 | MAX17502EATB+T | BidirectionalSupply:DFN-10_L3.0-W2.0-P0.50-BL-EP | U5 |
| 1 | RP2350_60QFN | BidirectionalSupply:RP2350-QFN-60-1EP_7x7_P0.4mm_EP3.4x3.4mm_ThermalVias | U3 |
| 1 | USB-309GC-B-SU | BidirectionalSupply:USB-C-SMD_USB-309GC-B-SU | J1 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U1 |
The 190 most common of 278 parts.

ddowling/BidirectionalSupply
Hardware and firmware for a bidirectional DC-DC convertor

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

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.

Arkos-Engineering/HT-15_hardware
We can split this out into separate repos later, right now its very convenient to have everything here.

7west/PicoTop
A very basic computer & OS based on the RP2350 microcontroller

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

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

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!

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
It measures 132 × 107 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask ddowling before reusing the design.