Skip to the content
PCBKitNew board
4 layers373.1 × 220.9 mmSolarpump, the printed circuit board in 3D

Solar powered pump for allotment garden water supply

Size
373.1 × 220.9 mm
Copper layers
4
Thickness
1.76 mm
Parts
450
Nets
461
Pads
1,958
Tracks, vias
3,658, 933
Pours
51
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
25 Nov 2021
Updated
25 Mar 2025

Overview

Solarpump is an open-source printed circuit board by rivimey, from the rivimey/solarpump repository on GitHub. It is a 4-layer board of 373.1 × 220.9 mm with 450 parts on 461 nets, routed with 3,658 tracks and 933 vias.

It is built around the RP2040, 74LVC1G125 and SN65HVD234D, with the BCR430UW6, ACS71240LLCBTR-025B3 and L6398D among its other parts. Its parts include 108 resistors, 107 capacitors, 29 diodes, 26 transistors and 25 ICs. It belongs with the power boards and the RP2040 boards of this library.

Main components

11

README

README.md

Solar powered Water pump controller

Introduction

The project has been to put together a water pump powered by a solar panel, with a battery for reserve power. The need was to pump water from a stream beside allotment garden up to the allotment for watering plants. The whole unit needs to be completely portable because the area was was prone to theft.

Initial version

An initial version was created using off the shelf components, and it worked to a degree. The solar panel linked to the battery using a cheap solar controller, PWM based, and the rest of the circuit was wire and switches.

Parts:

  • VerRich Diaphragm pump, 12V Water Pumps 70W Self Priming Pump 6 L/Min

  • Photonic Universe 10A Solar Charge Controller for up to 160W panel.

  • BETOP 60W foldable solar panel kit, 18V.

  • 12V LED Panel Digital Voltmeter Color LED Digital Display

  • 12V 20A illuminated rocker switches.

  • 3-pin XLR plugs and sockets for the Solar input

This was constructed with the battery, controller and other wiring inside a wooden box bought from Amazon, and with the pump screwed to the top (this helps ensure that any drips of water and electricity don't interact!)

Second design

A second version was designed with the intention of supporting MPPT conversion and also to provide additional information about the current flows. This was because placement of the panel in the prevailing sunlight was easier when you have feedback on what is going on.

However, this second design was never built -- I was never sure enough it would work to make it worth getting a PCB built. I had done a lot of reading around the topic of MPPT converters and was starting to get some idea of the issues and constraints, and could see that what I had would probably have issues.

I did get as far as a KiCad PCB design, though:

The abandoned Solarpump v2

Second build

A new version was built... mostly using the components of the first version in a larger box (a two bottle "wine presentation" box with a nice looking, and water repellant, red varnish). This allowed a much better arrangement of the wiring, and made room for a 12V Car Accessory connector, which was supposed to be helpful for a camping trip.

For this version, a 3D CAD model was built in Blender 3D to verify the dimensions and fit.

Solar pump in its new box

Third design

An Intervention came along, in the way of the "DIY 1KW MPPT Solar Charge Converter" build, published on Instructables. This finally showed a path -- to be fair, not so very different from my earlier attempt but far better explained and, critically, tested! I resolved to rebuild my earlier design around this base.

The Instructables build is https://www.instructables.com/DIY-1kW-MPPT-Solar-Charge-Controller/ and there are links to the firmware and design files in that article.

A design goal for this version was to increase the flow rate somewhat, as although the existing pump worked, it was rather slow. I eventually settled on the Seaflo 41 Series DC Water System Pump 12V 12.5 LPM, which is up to about 2.5x higher flow rate.

Another design goal is to support measurement of water flow rate, so the unit can keep track of total water pumped and water pumped per session. While not strictly necessary this was something I felt was important.

Compared to that version, I decided to:

  • use the Solderparty RP2040 Stamp, partly because I had it and like it;

  • use an alternate half-bridge driver, because the 2104/5 is out of stock at present and the new one integrates a diode;

  • use an alternate current sensor (ACS758), because the article was quite critical of the one suggested (ACS712). I can't tell from the datasheet if it's an improvement, though :-(

  • use more current sensors, to avoid needing to estimate current output from current input, partly to monitor more things directly;

  • use 3 separate SM power supply devices for local power, rather than the arrangement in the original, which looked clunky;

  • use a different, and 8 channel, ADC to measure the extra circuits, and also enabling fast 16-bit sampling and faster MCU comms via SPI. It's slightly more expensive but not a lot, and overall better;

The big change I added was one I alluded to in an earlier mail: I essentially have 2 separate buck converters now, rather than just one, because I wanted to:

  • support MPPT input (eg. 18V);

  • support a controllable battery voltage for charging/float purposes (eg. 15V);

  • support a controllable output voltage (sep from battery) to e.g. control DC pump speed (eg. 9V to 12.5V).

So I've essentially got: MPPT => [Battery] => Simple Buck => Output.

This circuit then has two, switchable, outputs, rather than one, which I hope I've designed right this time! The purpose is to support a fixed link to the pump, plus an 'Aux' circuit for e.g. a car cig socket, for use when e.g. camping. My intention is that the two outputs are not used at the same time, but the circuit allows that option. I decided that USB power delivery, while nice, would be via a commercial car adapter, not built in.

I have derated the components slightly compared to the original, supporting only up to 48V input and up to about current output 18A rather than the 80V and 30A original, as this is meant to be a portable unit and not destined for huge batteries or panel arrays. On the battery front I'm intending to change from a 12V lead acid battery to a 4S3P Lithium one based on twelve 18650 batteries + controller for a 14V output. It should help reduce the weight (the new pump, now 3 gal/min rather than 1gal/min of earlier, is heavier!).

The second smaller board is for a 'front panel', which I envisage with a large "emergency stop" pushbutton, a digital rotary encoder, and a Pimoroni "Pico Display Hat", which is a small LCD on a 40pin R-Pi Pico footprint with 4 small pushbuttons and an RGB led. Most of that is interfaced via an MCP 16-pin IO adapter on the I2C bus, except for the SPI bus for the display itself.

Not shown in the circuit because it's off-board, the main on/off switch will be an SPST switch between the battery and the PCB.

Some pictures of the build so far (from KiCad):

PCB for Solarpump v3

PCB for Solarpump v3

Parts

450
QtyValueFootprintReferences
370.1uFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C19, C20, C22, C23, C24, C26, C27, C28, C30, C31, C49, C118 +21
290.1uFCapacitor_SMD:C_0402_1005MetricC6, C10, C12, C13, C33, C34, C35, C36, C37, C39, C40, C101, C102, C106, C107, C108 +13
2510kResistor_SMD:R_0603_1608MetricR17, R19, R23, R26, R29, R30, R33, R66, R100, R101, R106, R108, R109, R113, R114, R117 +9
13Red,150mcdLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD1, D6, D7, D10, D17, D24, D25, D29, D30, D31, D32, D33, D34
12MountMountingHole:MountingHole_4.3mm_M4H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12
11TVSPackage_TO_SOT_SMD:SOT-23TVS1, TVS2, TVS3, TVS4, TVS5, TVS6, TVS7, TVS8, TVS9, TVS10, TVS11
910KResistor_SMD:R_0603_1608MetricR7, R9, R11, R12, R31, R34, R84, R89, R119
9SQM120P10Package_TO_SOT_SMD:TO-263-2Q2, Q3, Q16, Q18, Q19, Q22, Q23, Q25, Q26
80.1uF,100V TantCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC17, C18, C111, C112, C113, C114, C115, C116
8100RResistor_SMD:R_0603_1608MetricR15, R16, R37, R38, R85, R86, R92, R93
612pFCapacitor_SMD:C_0402_1005MetricC15, C16, C42, C43, C104, C105
61uFCapacitor_SMD:C_0603_1608MetricC54, C66, C69, C78, C100, C103
627RResistor_SMD:R_0603_1608MetricR13, R14, R35, R36, R90, R91
6BCR430UW6Package_TO_SOT_SMD:SC-74-6_1.55x2.9mm_P0.95mmU32, U33, U34, U35, U36, U37
6IRLB8721PBFPackage_TO_SOT_THT:TO-220-3_VerticalQ10, Q11, Q12, Q13, Q14, Q15
522KResistor_SMD:R_0603_1608MetricR3, R57, R58, R59, R60
5470kResistor_SMD:R_0603_1608MetricR18, R22, R102, R110, R115
572RResistor_SMD:R_0603_1608MetricR39, R40, R63, R94, R95
5B150-E3,50VDiode_SMD:D_SMAD4, D8, D11, D26, D27
5Fuse 25AFuse:Fuse_Schurter_UMZ250F1, F2, F3, F4, F5
5IPP019N08NF2SPackage_TO_SOT_THT:TO-220-3_VerticalQ4, Q5, Q6, Q7, Q8
5JST SM03B-SRSS-TBConnector_JST:JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_HorizontalJ13, J20, J21, J26, J27
5SMAJ54CADiode_SMD:D_SMAD2, D19, D22, D23, D28
40RResistor_SMD:R_0603_1608MetricR27, R28, R76, R77
41KResistor_SMD:R_0603_1608MetricR53, R54, R55, R56
41uFCapacitor_SMD:C_0402_1005MetricC11, C14, C38, C41
43K3Resistor_SMD:R_0603_1608MetricR1, R4, R5, R118
44.7k,0.5%Resistor_SMD:R_0603_1608MetricR24, R25, R80, R81
4BC817Package_TO_SOT_SMD:SOT-23Q1, Q17, Q21, Q24
4HSinkMountingHole:MountingHole_2.7mm_M2.5_Pad_ViaHS1, HS2, HS3, HS4
310K NTCsolarpump:SolderWire-0.15sqmm_1x02_P3.5mm_D0.5mm_OD1.5mmTH1, TH2, TH3
310uFCapacitor_SMD:C_0603_1608MetricC61, C117, C120
322uF,>35VCapacitor_Tantalum_SMD:CP_EIA-7360-38_Kemet-EC84, C85, C86
333kResistor_SMD:R_0603_1608MetricR103, R111, R116
34.7kResistor_SMD:R_0603_1608MetricR43, R64, R65
342KResistor_SMD:R_0603_1608MetricR99, R107, R112
3ACS71240LLCBTR-025B3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU22, U26, U31
3Amass_XT30PWsolarpump:Amass_XT30PWJ17, J33, J34
3RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm_ThermalViasU7, U14, U30
3SAMTEC_ET60_24S_2Pr_Pinssolarpump:SAMTEC_ET60T-000-3-08-D02-X-R1-SJ1, J7, J8
3SAMTEC_ET60_24S_2Pr_Socketsolarpump:SAMTEC_ET60S-000-3-08-D02-L-R1-SJ2, J3, J10
3SW_RESETButton_Switch_SMD:SW_SPST_B3U-1000PSW1, SW2, SW9
3USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10104110_HorizontalJ15, J22, J28
3W25Q32JVPackage_SON:WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4mmU4, U13, U28
3XYDBPCNANF-12MHZCrystal:Crystal_SMD_2520-4Pin_2.5x2.0mmY1, Y2, Y3
20.1uF,100VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC109, C110
210AWGPCM_Jumper_AKL:Jumper_P5.08mm_D1.2mmJP1, JP2
210KPotentiometer_SMD:Potentiometer_Bourns_TC33X_VerticalRV1, RV2
210nFCapacitor_SMD:C_0603_1608MetricC21, C32
210uF,50VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC45, C47
21K,1%Resistor_SMD:R_0603_1608MetricR74, R83
21R,1WPCM_Resistor_SMD_AKL:R_2512_6332MetricR20, R21
21kResistor_SMD:R_0603_1608MetricR72, R97
21uF,50VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC44, C46
233K,1%Resistor_SMD:R_0603_1608MetricR73, R82
24K7Resistor_SMD:R_0603_1608MetricR6, R8
2680RResistor_SMD:R_0603_1608MetricR50, R51
2680uF,63VCapacitor_THT:CP_Radial_D16.0mm_P7.50mmCP1, CP2
274LVC1G125Package_TO_SOT_SMD:SOT-23-5U5, U38
2ACS71240Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU8, U15
2ADS131M04-PWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU10, U25
2Conn_DISPConnector_PinHeader_2.00mm:PinHeader_2x08_P2.00mm_VerticalJ6, J9
2HCPL-314JsPackage_SO:SOIC-16W-12_7.5x10.3mm_P1.27mmOC1, OC2
2L6398DPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU11, U23
2LED_CHRLED_SMD:LED_0603_1608MetricD12, D13
2Orange,160mcdLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD14, D15
2S07G-MDiode_SMD:D_SMFD20, D21
2SN65HVD234Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU12, U27
2Si2306BDSPackage_TO_SOT_SMD:SOT-23Q9, Q27
1100KResistor_SMD:R_0603_1608MetricR45
1100uFCapacitor_SMD:C_0603_1608MetricC119
110K,0.5%Resistor_SMD:R_0603_1608MetricR47
110RResistor_SMD:R_0603_1608MetricR120
110nF,100VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC25
1150RResistor_SMD:R_0603_1608MetricR71
11uF,16V TantCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC59
12.5k,0.5%Resistor_SMD:R_0603_1608MetricR42
121.8k,0.5%Resistor_SMD:R_0603_1608MetricR41
1220RResistor_SMD:R_0603_1608MetricR52
1220kResistor_SMD:R_0603_1608MetricR32

The 363 most common of 450 parts.

Questions

How big is the Solarpump PCB?

It measures 373.1 × 220.9 mm and has 4 copper layers, 1.76 mm thick.

What parts does the Solarpump use?

450 parts, built around the RP2040, 74LVC1G125, SN65HVD234D and BCR430UW6. 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 Solarpump KiCad files?

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

Can I use the Solarpump design in my own project?

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

Similar boards

  • 2 layers155 × 130 mmPower DIstrobution Board, the printed circuit board in 3D

    Power DIstrobution Board

    formulaslug/fs-3-schematics

    Electrical Design Repository for fs-3 schematics and PCBs

    80 parts5
  • 4 layers53.2 × 53.2 mmSmart lcc, the printed circuit board in 3D

    Smart lcc

    variegated-coffee/open-lcc-board

    Schematics and PCB files for the Open LCC hardware

    117 parts30CERN-OHL-P-2.0
  • 2 layers100 × 100 mmFlexi lamp controller, the printed circuit board in 3D

    Flexi lamp controller

    i-Saac-IV/flexi-lamp

    A touch-sensing lamp lamp made of flexible PCBs.

    83 partsMIT
  • 4 layers481.3 × 23.7 mmFaraday rescue bms, the printed circuit board in 3D

    Faraday rescue bms

    nhallsny/faraday-rescue

    Open source battery for e-bikes made by the now-defunct Faraday Bicycles

    155 parts8CERN-OHL-P-2.0
  • 8 layers65 × 52 mmRouterCoreBaseRevA, the printed circuit board in 3D

    RouterCoreBaseRevA

    botblox/RouterCoreCore-Baseboard-Designs

    Open source design files for the breakout board (baseboard) for RouterCore.

    127 partsMIT
  • 4 layers74 × 104 mmBeepy, the printed circuit board in 3D

    Beepy

    sqfmi/beepy-hardware

    Beepy Hardware

    160 parts348MIT