Skip to the content
PCBKitNew board
2 layers90 × 60 mmSolar charger 3, the printed circuit board in 3D

Solar charger 3

Vaaxs/solarCharger

A solar charge controller with MPPT and a 5V USB-C output. You wire a 6V solar panel into one terminal block and a 1S lithium pack into the other, and it charges the pack at up to 2.4A while holding the panel at the…

Size
90 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
34
Nets
27
Pads
105
Tracks, vias
181, 29
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Oct 2026
Updated
13 Oct 2026

Overview

Solar charger 3 is an open-source printed circuit board by Vaaxs, from the Vaaxs/solarCharger repository on GitHub. It is a 2-layer board of 90 × 60 mm with 34 parts on 27 nets, routed with 181 tracks and 29 vias.

It is built around the CN3791, USB-TYPE-C-019 and WJ25C-B-7.62-02P-13-00A, with the SWPA4030S100MT, SMNR4020-2.2UH and AOD4185 among its other parts. Its parts include 11 resistors, 7 capacitors, 3 ICs, 3 diodes and 2 connectors. It belongs with the power boards of this library.

Main components

9

README

README.md

Solar USB-C Charger

A solar charge controller with MPPT and a 5V USB-C output. You wire a 6V solar panel into one terminal block and a 1S lithium pack into the other, and it charges the pack at up to 2.4A while holding the panel at the voltage where it puts out the most power, then boosts back up to 5V for the USB port.

2 layer board, 90 x 60mm, 30 components, done in KiCad 10.

board

Why I made it

Around 700 million people don't have reliable electricity, but phones are basically everywhere, so a solar charger is one of the few things you can build where the problem and the thing you're making are both real.

The part that makes this worth building instead of just buying one is the MPPT. A solar panel has one specific voltage where it gives you the most power, and a dumb charger ignores that and just pulls the panel down until it stalls out. You end up losing a big chunk of what the panel could have given you, and it gets worse in weak light, which is when you actually need it. This board watches the panel voltage through a divider and holds it at that point instead.

I also didn't want it tied to one specific panel. Anything in the input range works, so someone with a different panel can still use the board.

How it works

text
solar panel --> P1 --> CN3791 MPPT buck charger --> P2 --> 1S3P 18650 pack
                         (Q1, L1, D1, R5)                        |
                                                                 v
                           USB-C out <-- TPS61023 boost <-- SW1 enable
                              U3            (U2, L2)

U1 is the CN3791, a buck MPPT charger made for solar. It holds the panel at its maximum power point and does CC/CV charging into the pack. Q1 is the high side switch for the buck and R5 sets the charge current, since the chip regulates to 120mV across it.

U2 is the TPS61023, which takes the single cell back up to 5V. SW1 turns it on and off so the board isn't draining the pack when nothing is plugged in.

U3 is the USB-C receptacle. All four VBUS contacts and all four ground contacts are wired, which is how the current gets shared instead of going through one pin.

The numbers and where they come from

whatvalueset by
MPPT setpoint5.51V1.205 x (1 + R1/R2), R1 357k, R2 100k
Panel you needabout 6.9V Voc, 11W or moresetpoint divided by 0.8
Charge current2.4A120mV / R5, R5 is 0.05 ohm
Output voltage5.06V0.595 x (1 + R14/R15), R14 750k, R15 100k
CC pull ups56kR9 and R16, which is what tells a phone it can draw default USB power

If you want to use a different panel, change R1 and R2. If you want a different charge current, change R5.

Pictures

Schematic:

schematic-charger schematic-boost

PCB:

pcb

The buck switching loop, with Q1, D1 and L1 kept as tight as I could get them and each ground return taking its own via right at the pad:

buck

The boost section around U2 and L2:

boost

Bottom layer with the ground pour:

bottom

3D:

3d-angled 3d-bottom

What's in this repo

text
README.md                      this
JOURNAL.md                     build log with everything that went wrong
BOM.csv                        parts list with links
hardware/
  Solar_charger_3.kicad_pro    project file
  Solar_charger_3.kicad_sch    schematic
  Solar_charger_3.kicad_pcb    board
  solar-charger.pretty/        footprints for the 4 parts KiCad doesn't have
  solar-charger.3dshapes/      3D models for those same parts
  gerbers.zip                  manufacturing files
images/                        screenshots

How to build one

Order the board

Send hardware/gerbers.zip to any fab. 2 layer, 1.6mm, 1oz copper, HASL or ENIG. The tightest copper gap on the board is 0.150mm which is inside JLCPCB's 0.127mm minimum so you don't need anything special.

Order the parts

Everything is in BOM.csv with links. Get spares of U1, U2 and U3, those are the three most likely to get wrecked by a bad solder joint.

Solder it

Do U1 and U2 first while the board is still empty, they're the hardest. U2 is a SOT-563 with 0.5mm pitch so check it under magnification for bridges after. Then all the resistors and capacitors, then Q1, D1, L1 and L2. Q1's tab needs enough heat to actually wet. Then U3, and remember the four shield posts are through hole and carry ground. Then P1, P2 and SW1 last since they're through hole.

Build the battery pack

Three 18650 cells in parallel with one 1S BMS across the whole pack.

Use unprotected cells for this. If you parallel three cells that each have their own protection board, the boards don't coordinate with each other and they fight. One BMS for the pack is the right way to do it.

Test it before you connect a battery

Check P1 and P2 for shorts between + and - first. Then put a bench supply on P1 at 6V with the current limit at 500mA. The board should only draw a few mA. Check that U1 pin 9 reads your input voltage, and that U1 pin 6 sits near 1.205V once the loop is regulating.

Only after that, connect the pack to P2 with SW1 off. Then switch it on and measure the USB-C output, you should get 5.0V give or take 0.1V.

Mount it

Four M3 holes, 4mm in from each corner. It's meant to bolt onto the back of the panel.

Wiring

P1 pin 1 is panel +, pin 2 is panel -. P2 pin 1 is pack +, pin 2 is pack -.

The panel and the battery are not on the board. They're external and they wire into the two screw terminals.

Known issues

The board hasn't been fabricated or tested yet, everything here is verified in KiCad only.

Three of the part number fields in the schematic are stale and don't match the footprint. L1's MPN field names a 4x4mm 1.5A inductor when the correct one is in the Value field, SW1's MPN names a completely different switch, and U3's LCSC code needs checking against the XKB footprint. Order from BOM.csv and not from those fields.

There are four cosmetic silkscreen warnings left in DRC that don't affect anything electrically.

There's no reverse polarity protection on P1, so wire the panel the right way round.

No enclosure yet, and no battery percentage readout. Both are below.

What I want to add

A fuel gauge board. A MAX17048 across the pack with a small OLED, taking power and I2C off the P2 terminals so the main board doesn't have to change at all. It'd sit behind a momentary button, because an OLED left on all the time would quietly eat whatever the panel is bringing in.

An I-V curve tracer, so I can actually measure a panel's real maximum power point with a swept load and a current sensor, and then check that the CN3791 is parking on it instead of just assuming it does.

Credits

U1 is the Consonance CN3791 and U2 is the TI TPS61023. Both were designed in from their datasheets.

Footprints and 3D models come from the KiCad standard libraries, except the terminal blocks, the slide switch and the USB-C connector, which are in hardware/solar-charger.pretty and hardware/solar-charger.3dshapes in this repo.

License

MIT

Parts

34
QtyValueFootprintReferences
3100kResistor_SMD:R_0805_2012MetricR2, R12, R15
210uF/25VCapacitor_SMD:C_1206_3216MetricC6, C7
21kResistor_SMD:R_0805_2012MetricR3, R4
256kResistor_SMD:R_0805_2012MetricR9, R16
2WJ25C-B-2Psolar-charger-library:TerminalBlock_Wuerth_691311400102_P7.62mmP1, P2
10.05RResistor_SMD:R_2512_6332MetricR5
1100nFCapacitor_SMD:C_0805_2012MetricC1
110uFCapacitor_SMD:C_0805_2012MetricC9
110uH SRN8040TA-100MInductor_SMD:L_Bourns_SRN8040TAL1
1120RResistor_SMD:R_0805_2012MetricR17
12.2uH NR4018T2R2MInductor_SMD:L_Taiyo-Yuden_NR-40xxL2
1220nFCapacitor_SMD:C_0805_2012MetricC2
122uFCapacitor_SMD:C_0805_2012MetricC5
122uFCapacitor_SMD:C_1206_3216MetricC8
1357kResistor_SMD:R_0805_2012MetricR1
1750kResistor_SMD:R_0805_2012MetricR14
1AOD4185Package_TO_SOT_SMD:TO-252-3_TabPin2Q1
1CN3791Package_SO:SSOP-10_3.9x4.9mm_P1.00mmU1
1KT-0603RLED_SMD:LED_0603_1608MetricLED1
1LED (yellow-green)LED_SMD:LED_0805_2012MetricLED2
1OS102011MS2Qsolar-charger-library:SW_Slide_1P2T_CK_OS102011MS2QSW1
1SS34_C8678Diode_SMD:D_SMAD1
1TPS61023DRLRPackage_TO_SOT_SMD:SOT-563U2
1USB-C 16Psolar-charger-library:USB_C_Receptacle_XKB_U262-16XN-4BVC11U3

The 30 most common of 34 parts.

Questions

How big is the Solar charger 3 PCB?

It measures 90 × 60 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Solar charger 3 use?

34 parts, built around the CN3791, USB-TYPE-C-019, WJ25C-B-7.62-02P-13-00A and SWPA4030S100MT. 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 Solar charger 3 KiCad files?

From the Vaaxs/solarCharger repository on GitHub, at the commit this page was made from: the board is Solar charger 3.kicad_pcb and its schematic Solar charger 3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Solar charger 3 design in my own project?

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

Similar boards

  • 2 layers60 × 60 mmWater level esp8266-esphome solar charing, the printed circuit board in 3D

    Water level esp8266-esphome solar charing

    Hidayatur-rahman/Solar-Water-Level-Monitor-ESP8266-ESPHome-

    A solar-powered water tank level monitoring system built around the ESP8266 (ESP-12E), designed in KiCad and running on ESPHome

    68 partsMIT
  • 4 layers70 × 70 mmAi camera, the printed circuit board in 3D

    Ai camera

    maxlab-io/tokay-lite-pcb

    Tokay AI Camera - ESP32 camera development board

    161 parts130CERN-OHL-P-2.0
  • 4 layers70 × 70 mmMaxlab io tokay lite pcb ai camera, the printed circuit board in 3D

    Maxlab io tokay lite pcb ai camera

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    176 parts1
  • 4 layers47.1 × 43.3 mmHelixQueledPrint, the printed circuit board in 3D

    HelixQueledPrint

    LarsDwars/HelixQueledPrint

    An break out board and LED driver for RGBW LED's from the showtec helix s5000 or any queled Q4xx light

    133 parts
  • 2 layers216 × 164 mmMPPT Li Ion CN3791 charger board panel, the printed circuit board in 3D

    MPPT Li Ion CN3791 charger board panel

    SolderedElectronics/MPPT-Li-Ion-CN3791-charger-board-hardware-design

    Hardware design, BOM, gerbers and 3D files for MPPT-Li-Ion-CN3791-charger-board designed by Soldered Electronics.

    988 parts5
  • 2 layers92 × 110.6 mmPOWERBANK CLEAN2, the printed circuit board in 3D

    POWERBANK CLEAN2

    Onaensar/Survibank

    Hybrid Powerbank: Solar + MagSafe + 18W Fast Charge

    69 parts