FMCW Radar Build and Signal Processing
~200 min8 StepsBuild a working FMCW radar using PlutoSDR or HackRF: generate LFM chirps, process beat frequencies with FFT, implement moving target indication, and display a live range profile.
- PlutoSDR (ADALM-PLUTO) or HackRF One — PlutoSDR strongly preferred for full duplex
- Two 2.4 GHz patch antennas with SMA connectors
- GNU Radio 3.10+ installed
- Python 3.10+ with NumPy, SciPy, Matplotlib, pyadi-iio
- Metal test targets: aluminum sheet metal, cookie tin, or similar
FMCW radar is fundamentally different from pulsed radar: instead of measuring time-of-flight directly, you measure the frequency difference between the transmitted and received signal. This beat frequency is proportional to range — no nanosecond timing required.
Frequency-Modulated Continuous Wave (FMCW) radar continuously transmits a chirp signal whose frequency sweeps linearly over time. The reflected echo from a target returns after a time delay τ = 2R/c. Since the transmit frequency has changed during that delay, mixing TX and RX produces a beat tone at a constant frequency — the beat frequency — which encodes range.
Core FMCW equations
Chirp rate (slope):
k = BW / T_sweep [Hz/s]
Beat frequency from a target at range R:
f_beat = (2 × R × k) / c = (2 × R × BW) / (c × T_sweep)
Range from measured beat frequency:
R = (f_beat × c × T_sweep) / (2 × BW)
Range resolution (minimum separable distance):
ΔR = c / (2 × BW)
With 100 MHz sweep bandwidth: ΔR = 1.5 m. With HackRF's 20 MHz instantaneous BW: ΔR = 7.5 m. PlutoSDR at 10 MHz BW: ΔR = 15 m.
Beat frequency is constant for a stationary target
As long as the target doesn't move, the same range produces the same beat tone — you can average many chirps to improve SNR without smearing.
Moving targets add Doppler frequency
A target at velocity v adds ±2v·fc/c to the beat frequency. This shifts the range FFT peak and can be separated with slow-time processing (Doppler FFT).
Maximum unambiguous range
R_max = fs × c × T_sweep / (2 × BW), where fs is sample rate. With 20 MHz BW and 1 ms sweep at 20 MHz sample rate: R_max ≈ 150 m.
TX-to-RX isolation
The transmit signal leaks directly into the receiver, appearing as a large DC or near-DC beat tone. This clutter must be suppressed to see close-range targets.