Skip to the content
PCBKitNew board
4 layers100 × 100 mmController, the printed circuit board in 3D

A 2-Axis Positioning System for use in RF anaechoic chambers

Size
100 × 100 mm
Copper layers
4
Thickness
1.56 mm
Parts
60
Nets
76
Pads
256
Tracks, vias
256, 781
Pours
40
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
22 Sep 2026
Updated
23 Sep 2026

Overview

Controller is an open-source printed circuit board by Heinekamp, from the Heinekamp/RF-Positioning-System repository on GitHub. It is a 4-layer board of 100 × 100 mm with 60 parts on 76 nets, routed with 256 tracks and 781 vias.

It is built around the TMC2209, TPS26631PWP and SMCJ36CA. Its parts include 29 capacitors, 6 resistors, 4 ICs, 4 connectors and 4 inductors. It belongs with the radio and wireless boards and the ESP32 boards of this library.

Main components

3

README

README.md

RF-Positioning-System

A cost-effective 2-axis RF positioning system for characterizing antenna directionality in azimuth and elevation, developed as a bachelor project at the EMES chair at the University of Freiburg. Both axes rotate independently around a fixed centre of rotation, controlled by an ESP32 over a standard SCPI interface over Ethernet or USB.

RF-Positioning-System in an anechoic chamber

Key Specifications

ParameterValue
Positioning range360° independent rotation, azimuth and elevation
Positioning accuracy1.0°
Positioning speed0.1°/s – 180°/s
Frequency range600 MHz – 6 GHz
Payload500 g
DUT height above base1.0 m
Base footprint40 cm × 40 cm
Total weight~20 kg
CommunicationUSB, Ethernet (SCPI)
Power supply12 V DC

Measured Performance

Repeatability of both rotation axes, measured with a motion-capture system across 10 repeated full revolutions:

Azimuth repeatabilityElevation repeatability
Azimuth positioning deviation from the commanded angle, measured after each of 10 repeated full revolutions.Elevation positioning deviation from the commanded angle, measured the same way.

Radiated emissions of the fully assembled, enclosed system were measured with the Ethernet link forced to 10 Mbit/s, against 20 dB under the CISPR 11 Class B radiated emissions limit:

Radiated emissions, 0.5-4.5 GHz, enclosed system, 10 Mbit EthernetRadiated emissions, 0.6-1.0 GHz detail
Radiated field strength from 0.5–4.5 GHz, vertical and horizontal antenna polarization, against the CISPR 11 Class B limit.Detail view of the 0.6–1.0 GHz band from the same measurement — individual emission peaks all remain more than 20 dB below the compliance limit shown at left.

Hardware

The controller is a custom PCB (KiCad project in Electrical/Controller) built around an ESP32, driving two TMC2209 stepper drivers over UART. The mechanical design was done in Autodesk Fusion 360; the full CAD model is available in the Fusion 360 online viewer.

Software

The firmware is written in C++ using the Arduino framework in PlatformIO (see Code/RF-Positioning-System), and exposes a standards-compliant SCPI command set over Ethernet and USB — see that folder's readme for the full command reference and a quick-start example.

Firmware documentation is generated with Doxygen and published here. If the following badge is green, it's up to date: status.

Documentation

The Service Manual covers the system's theory of operation, the full SCPI interface, and maintenance/component-replacement procedures.

Parts

60
QtyValueFootprintReferences
82n2FCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC22, C23, C24, C25, C26, C27, C28, C29
6100nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2, C3, C5, C6, C13, C19
4600Ω@100 MHzCapacitor_SMD:C_2220_5750Metric_Pad1.97x5.40mm_HandSolderL1, L2, L3, L4
4744235900FootprintLibrary:WE-CNSW_1812FL1, FL2, FL3, FL4
31000uFFootprintLibrary:WCAP-ATUL_13X25_DXL_C4, C7, C11
3100uFFootprintLibrary:WCAP-ATG8_6.3X11_DXL_C12, C17, C20
310uFCapacitor_SMD:C_2220_5750Metric_Pad1.97x5.40mm_HandSolderC9, C15, C16
210nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC14, C18
22200uFFootprintLibrary:WCAP-ATG8_16X25_DXL_C1, C10
2RJ45_LED_ShieldedFootprintLibrary:Wuerth 615008137421J3, J4
2TMC2209FootprintLibrary:BTT-TMC2209-V1.3U1, U2
110kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR3
112-28V INFootprintLibrary:BarrelJack_Wuerth_6941xx301002J1
11kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1
11nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC21
11uFCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC8
120kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR6
16.04kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2
1604kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR4
176.8kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR5
1DMN53D0LW-7Package_TO_SOT_SMD:SOT-323_SC-70_HandsolderingQ2
1DMT10H015LK3-13Package_TO_SOT_SMD:TO-252-3_TabPin2Q1
1ESP32FootprintLibrary:Adafruit_Feather_ESP32A1
1LD1086D2M33TRFootprintLibrary:TO-220-3_Vertical-v8508aU5
1LOGOLOGOG***
1SMCJ36CADiode_SMD:D_SMC_HandsolderingD1
1Screw_Terminal_01x02FootprintLibrary:691502710002J2
1TPS26631PWPPackage_SO:HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.75x3.43mm_ThermalVias_HandSolderU3

The 56 most common of 60 parts.

Questions

How big is the Controller PCB?

It measures 100 × 100 mm and has 4 copper layers, 1.56 mm thick.

What parts does the Controller use?

60 parts, built around the TMC2209, TPS26631PWP and SMCJ36CA. 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 Controller KiCad files?

From the Heinekamp/RF-Positioning-System repository on GitHub, at the commit this page was made from: the board is Electrical/Controller/Controller.kicad_pcb and its schematic Electrical/Controller/Controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Controller design in my own project?

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

Similar boards

  • 4 layers90 × 100 mmPCB Cuarto, the printed circuit board in 3D

    PCB Cuarto

    Jose-WaitNRest/PCB-Cuarto

    79 parts
  • 4 layers90 × 100 mmPCB Madre, the printed circuit board in 3D

    PCB Madre

    Jose-WaitNRest/PCB-Madre

    64 parts
  • 2 layers58 × 35.5 mmHat, the printed circuit board in 3D

    Hat

    menloresearch/asimov-1

    v1 of Asimov, an open-source humanoid robot

    24 parts1.4kCERN-OHL-S-2.0
  • 4 layers150 × 83 mmMasthead Controller, the printed circuit board in 3D

    Masthead Controller

    Tuskar-Marine/hardware

    All tools for the Mermaid's Rest open sailing tools

    230 parts6
  • 4 layers154.5 × 112.9 mmLibrePLC32, the printed circuit board in 3D

    LibrePLC32

    AndreiVladescu/LibrePLC32

    The goal of the project is to create a compact, hackable, and well-documented PLC platform for industrial automation experiments, prototyping, education, and open hardware development.

    295 parts14CERN-OHL-P-2.0
  • 2 layers72.8 × 38 mmFanControl, the printed circuit board in 3D

    FanControl

    bakadave/fanControl

    104 parts
  • 6 layers320.6 × 186.1 mmDAB, the printed circuit board in 3D

    DAB

    NovaPrime18/DAB_DCDC

    a 10kW 800V to 200-1000VDC DAB DCDC converter

    761 partsCERN-OHL-S-2.0
  • 6 layers111.8 × 61 mmInput board, the printed circuit board in 3D

    Input board

    waterloo-rocketry/fydp2026

    Master Repo for all FYDP 2026 related code and files

    179 parts