Kraftwerk - A versatile DC power distributor for remote operation



Introduction

Operating a remote amateur radio station comes with many challenges. In my station design for SO5CW, I tried to follow the approach of making things as simple as somehow possible (a.k.a. the KISS principle). Fewer components means fewer things that can break. But taking this approach to the extreme may introduce some risks. One example is the distribution of DC (typically 13.8V) for various components in and around the station.

For my initial station design, I had a single large DC supply that was connected to a bus bar, to which a number of devices (in addition to the radio) were connected. These include some devices inside the shack (RRC controller, band decoder, antenna tuner) but also devices outside, connected via long (30m+) cables, like the remote antenna tuner at the antenna base, and an antenna switch.

A common bus bar for 13.8V distribution is associated with several risks:

After a scan of available devices on the market, nothing that satisfied my requirements (see below) was found. Therefore, a "smart" DC power distributor was developed, which reduces the risks listed above - at the expense of increased complexity.

Requirements and Design

The device was designed specifically with my own remote station in mind, but it is generic enough to be useful for others. It can be extended to a different number of outputs, or voltages, if needed. It meets the following requirements:

A Raspberry Pi Zero 2 W was chosen as the controller for this devices. It provides all the advantages of a fully fledged Linux computer at a cost of less than €20. It has a number of GPIOs that can be used to control relays and LEDs, an I2C controller to talk to the current/voltage sensors, and a WiFi module to connect to the local network and eventually to a VPN for remote control.

The Raspberry Pi is powered from its own small "wall wart" power supply, and it is intended to be "always on", even if the rest of the station is switched off.

A current and power monitor INA220A from Texas Instruments was chosen to measure to current and voltage of each outgoing DC channel. The values can be read from the Pi by I2C. There's a variant INA226 that has an ALERT pin that can be programmed to immediately indicate an overload condition. I did not use the INA226 (reading out the currents by I2C is fast enough for my taste), but the PCB has the required connections and pull-up resistors to use it. A 10 mΩ shunt resistor allows a maximum measurement range of more than 8 A. The 4W resistors chosen for this design are overdesigned, and might be replaced by 1W types instead.

Dedicated LED indicators for each of the outputs (ON/OFF and Alert) allow a quick overview of the state of the device, even without a computer.

RF signal components are blocked with a Wuerth WE-SL-5 744272471 SMT common mode choke, rated for 1.8A.

A bidirectional transient-voltage-suppression diode (TVS) P6SMB16CA at the output is used.

The DC voltage is switched with a OMRON G2RL-1A-E relay, driven by an A2982 source driver.

A standard LM7805 voltage regulator in a TO-220 housing was added to one channel to provide a regulated voltage of 5 V, which is needed for an Ethernet switch. I deliberately did not use a DC-DC converter here because the current requirement is low (200mA) and therefore the losses are acceptable, and there is nothing to worry about in terms of RFI.

Monitoring of external voltages / logic signals is achieved by standard opto couplers PC817X1NSZ1B, which are connected to GPIO pins of the Raspberry Pi.

All components were integrated on a PCB with the dimensions 150 mm × 108 mm, which fits nicely into a UM-PRO-KIT-B108-L150-7035 DIN rail housing kit from Phoenix Contact.

Circuit, PCB and BOM

The schematics and PCB were generated with KiCad and are available in a git repository: https://git.fkurz.net/dj1yfk/so5cw-kraftwerk/.

For convenience, the schematic is also available in PDF format.

SO5CW Remote Power Controller BOM
IDReferenceNamePart / Source (example)CostQtyCost Tot.
1C1 - C17Capacitor 100nF 0805Reichelt C0805C104K5RAC0.02 €170.34 €
2D1 - D4, D10Bidirectional TVS DiodeDigikey P6SMB16CA0.22 €51.10 €
3D5 - D9LED YellowReichelt SLO SMD-Y0603-00.11 €50.55 €
4D11 - D16LED RedReichelt SLO SMD-R0603-00.08 €50.40 €
5J1 - J5, J7 - J9Screw TerminalsReichelt AKL 059-020.31 €82.48 €
6J6Header (fem.) 2x20 2.54mmReichelt BKL 101209631.55 €11.55 €
7K1 - K5Relay 1xNO 12VReichelt G2RL-1A-E DC121.60 €58.00 €
8L1 - L5CMC Choke WürthWürth 7442724712.88 €514.40 €
9R1, R2, R7, R23, R40Resistor 10mOhm 4WReichelt VIT KN350-85B0R10.75 €53.75 €
10R3-R6,R8,R9,R24,R25,R41-R47Resistor 10Ohm 06030.02 €150.30 €
11R32 - R36, R48, R49Resistor 10kOhm 06030.02 €220.44 €
12R19 - R22,R26 - R31, R53, R57, R58Resistor 5.6kOhm 06030.02 €130.26 €
13R10 - R18,R37 - R39,R50 - R52, R54Resistor 0Ohm 06030.02 €10.02 €
14R55, R56Resistor 2k2Ohm 06030.02 €20.04 €
15U1 - U5Power monitor INA 220Digikey 296-44353-1-ND1.63 €58.15 €
16U6, U9Optocoupler PC817X1NSZ1BReichelt PC817X1NSZ1B0.35 €20.70 €
17U7Relay Driver A2982Reichelt A 2982 SLW-T1.80 €11.80 €
18U8Voltage Regulator LM7805 TO220Reichelt MC 78M05 CTG0.58 €10.58 €
19Raspberry Pi Zero 2 WReichelt RASP PI ZERO2 W17.90 €117.90 €
20Header 2x20 2.54mm h=10mmReichelt BKL 101205160.63 €10.63 €
21Hex Standoff M2.5x100.10 €20.20 €
22Heatsink TO220Reichelt FK235MIL11.30 €11.30 €
23DIN Rail HousingUM-PRO-KIT-B108-L150-703515.76 €115.76 €
24PCB 150mm x 108mm 2 layer FR4Aisler15 €115 €
Sum~100 €

The BOM contains links to DigiKey, Reichelt and Conrad for convenience. The cost of the PCB varies significantly between different vendors. For projects like these, I prefer to pay a little more and use the European company Aisler, rather than the Chinese sweatshops.

Construction notes

The recommended order of populating the PCB is as follows.

  1. Populate the SMD capacitors.
  2. Populate the diodes and LEDs
  3. Populate driver IC U7
  4. Populate the SMD resistors except for the 0-Ohm-Resistors connecting I2C to the INA220 ICs: R10/R11/R12/R14/R16/R17/R37/R38/R50/R51
  5. Install the Raspberry Pi Zero 2 W (then test the basic function of the relays)
  6. Current monitors INA226 (U1..U5). The VSSOP-10 package is really small, but can reliably be hand soldered in the following way:
    1. Place part in position, hold in place with tweezers
    2. Apply a generous amount of solder across all pins on one side of the IC. Don't worry about shorts.
    3. Check the orientation and alignment of the IC carefully. In particular make sure that the pins on the other side (not yet soldered) of the IC are perfectly aligned with the pads.
    4. Apply solder across the remaining IC pins.
    5. Use fine solder wick (< 1mm width, e.g. Chemtronics 80-1-5) to remove excess solder from the pins on both sides.
  7. Install U1 first and do some sanity checks with a multimeter, e.g.
  8. Then install the I2C resistors for U1 and check if the device can be found on the bus: i2cdetect -y 1 should see device 0x40.
  9. Proceed one by one with U2 to U5, which should be detected as devices 0x41 .. 0x44
  10. Populate the remaining parts (relays, shunt resistors, common mode chokes, voltage regulator, opto-couplers and finally the screw terminals.

Raspberry Pi Setup and Software

You can perform the following steps with the bare Raspberry Pi Zero 2 W. You do not need to connect it to the PCB yet.

  1. Create a SD card with a Raspberry Pi OS using the RPi Imager. Pre-set your WiFi network and your username/password, and (important!) enable the ssh server.
  2. Once you have booted the device, access it via ssh and then edit /boot/firmware/config.txt. Make the [all] section look like this:
    [all]
    enable_uart=0
    dtoverlay=i2c1,pins_2_3
    
    Then reboot. After that, detecting the INA226 devices via I2C as described above should work with i2cdetect -y 1.
  3. Install a few essential packages:
    apt install git python3-smbus2 python3-rpi.gpio
  4. Download the software:
    git clone https://git.fkurz.net/dj1yfk/so5cw-kraftwerk.git
  5. Install it:
    cd so5cw-kraftwerk/src
    sudo make install
  6. Reboot - after the reboot, the software should run and you can access the program within a screen session by attaching to it: screen -rd SO5CW-Kraftwerk. Detach with Ctrl-b d

Software description

The software is still under construction and currently only offers very basic functionality. It shows the state of the five output channels: On/off indicator, measured voltage and current, overflow indicator, and fuse state (1 when "blown", 0 when OK).

Toggle channels by pressing 1..5.


CH1 (1): 12.21 V         0.00 A OVF = 0  FUSE = 0
CH2 (1): 12.20 V         0.00 A OVF = 0  FUSE = 0
CH3 (1):  5.01 V         0.00 A OVF = 0  FUSE = 0
CH4 (1): 12.20 V         0.00 A OVF = 0  FUSE = 0
CH5 (1): 12.21 V         0.00 A OVF = 0  FUSE = 0
IN0: 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
IN1: 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

As soon as a channel's current exceeds the threshold (currently hard coded to 1.5 A for the 13.8V channels and 200mA for the 5V channel), it is switched off and the FUSE state is set to 1, and the fuse LED will be switched on. It can be re-enabled by pressing the appropriate channel number.

The last ten states of the opto-coupled inputs are shown as IN0 and IN1.

To give an immediate optical indication that the device is alive, the fuse indicator LEDs 1 through 5 briefly flash one after another, every second.

The software logs error conditions to syslog.

The software can easily be extended, for example:

With the software implemented in Python, the hurdles to make your own modifications should not be high, even for beginners in programming. The code could/should, however, be modularized a bit...

Pictures

Hover over the pictures to enlarge. More to come!

The partly assembled DC power distributor

Miscellaneous

I ordered three PCBs from Aisler (minimum order quantity) and have one PCBs left, which I happily give away for the price I paid myself. Write me a mail if you want one. I do not have a full kit for sale.



Last modified: Monday, 22-Jun-2026 07:13:08 CEST