Skip to content

Shipped · 2026

PCB-printed dipoles

Dipole antennas printed straight onto the board with an integrated microstrip-to-parallel-strip balun, replacing the brass ones I used to cut by hand.

Part of ML-beamforming ground station

The receipt

Front and back of a fabricated printed dipole. The front shows the feed trace and one arm with trim marks; the back shows the other arm, the balun strip and the ground plane, with the SMA edge connector soldered on.
One of the five boards, front and back, with its SMA connector fitted.

The problem

My beamforming ground station needs four antennas, and a phased array is fussy about them in a way a single antenna never is. The four elements have to be electrically identical, because any difference between them shows up as a phase or amplitude error I didn’t ask for. And each one’s phase centre has to sit exactly where the maths says it is. At 915 MHz, being 10 mm off is about 11° of phase error before the phase shifters have done anything.

Off-the-shelf 915 MHz antennas don’t tell you where their phase centre is, or promise it’s the same from one unit to the next. Hand-built brass ones can’t promise it either.

Constraints

How it works

The dipole is printed on the PCB, and so is the balun that feeds it. A 50 Ω microstrip line (2.80 mm wide on 1.6 mm FR4) carries the signal up from the SMA connector. Part way up the board, the ground plane underneath stops and narrows into a strip the same width as the trace. That makes a parallel-strip line, which is balanced, and over its 43.4 mm quarter-wave length the unbalanced current turns into balanced current. At the top, each strip opens into one arm of the dipole on its own side of the board.

The balun section works out to about 63 Ω, between the 50 Ω feed and a printed dipole’s usual 65 to 75 Ω, so it also does some impedance matching for free. I didn’t design for that; it just fell out of the geometry.

I drew the copper directly in KiCad’s PCB editor (an antenna has no netlist, so there’s no schematic), got it DRC-clean, and ordered five boards: four for the array and one spare.

Layer artwork. Front copper: a 2.8 mm feed trace running up to a 65 mm arm with trim marks. Back copper: the other arm, a 43.4 mm balun strip and the ground plane.

The hard part

Every version fought me on the balun, the bit that stops current running down the outside of the feed cable. In an array that matters more than usual: stray radiation from the cable would change every time the cables moved, and I’d end up measuring my cable routing instead of the beamforming.

The three iterations: a brass rod with a sleeve balun (abandoned), a brass rod with a Pawsey stub (workable but fragile), and the double-sided printed dipole (adopted)

  1. Brass rod with a sleeve balun. The plan was to slide RG405 semi-rigid over the RG316 feed. RG405 is about 2.2 mm across. RG316 is 2.5 mm. That plan died on paper.
  2. Brass rod with a Pawsey stub. This one worked electrically. But because the elements had to be detachable, the stub shorted to the SMA connector’s body 82 mm below the feed, so the connector’s position became an electrical dimension I had to reproduce to the millimetre, four times, by hand.
  3. Printed dipole. Four boards from one fab run match to about 0.1 mm, with no stubs to cut or solder.

The arm length was the other unknown. My two closed-form estimates said 49 mm and 58 mm, which disagree by almost 20 %. So I had the arms fabricated long, at 65 mm, with silkscreen trim marks at 60, 57, 54, 51 and 48 mm. Too long is fixable with a blade; too short is not.

Then the boards came back resonating at 901.6 to 904.6 MHz, already well matched at 915 MHz. Trimming to the first mark would have pushed resonance to around 977 MHz, so I didn’t trim anything. The real resonant arm length is close to 64 mm, meaning both estimates were short (by 23 % and 9 %) because neither accounts for the 10 mm arm width or the balun.

Measuring them came with its own lesson: standing next to the array while it was being swept moved the resonance by about 10 MHz, so every recorded sweep was taken with me standing well clear.

Numbers

Return loss at 915 MHz
−16.8 to −19.4 dB
VSWR at 915 MHz
1.24 to 1.34
Resonance spread across 4 boards
0.33 %
−10 dB bandwidth
≥ 85 MHz

Stack

← All work