|Experimenting with inexpensive FMCW radar modules|
This project is about experimenting with inexpensive FM-CW radar modules as can be found on AliExpress:
- gaining experience with the hardware
- gaining experience on what kind of compensation/calibration is needed
- apply it in a fun project, e.g. pedestrian speed indicator, or detect bats with it
Perhaps start a cool collection of inexpensive "software-defined" radar projects?
The current generation of inexpensive radar modules (around E40,-) has these typical features:
- operates on 24 GHz
- has quadrature outputs (I and Q) so it can not just detect movement (through Doppler) but also distinguish direction
- has a modulation input that allows a subtle change of the radar operating frequency
- often combined with a cortex M0 or M3/M4 microcontroller,
- pre-configured with firmware to do detection of object speed and direction
Interesting investigation into the electronics for the CDM324 24 GHz sensor.
An FM-CW radar is a few steps more advanced than the very basic Doppler radars (like the HB-100), typically:
- I and Q outputs as described above
- Modulation input, that allows you to quickly sweep the radar frequency
The basic idea behind an FM-CW radar is that the frequency is sweeped, at some continuous rate. A signal that is reflected by an object in the view of the radar, will arrive back at the radar with some delay. Because of the delay, the outgoing signal will have already changed in frequency compared to the incoming reflected frequency. At the radar, the delayed incoming signal is "mixed" with the outgoing signal, resulting in a low-frequency I+Q output of the difference frequency. The difference frequency at the output of the radar is therefore linearly related to the time delay, so also linearly related to the object distance.
The IVS-362 from Innosent is a tunable 24 GHz radar module, with the following typical specifications
- tuning voltage range about 0.7 - 2.5 V = 1.8V
- modulation sensitivity = 720 MHz/V
- mentions a sweep time of 1024 us, supporting the typical 1 ms sweep time assumed in the calculation below
- mentions a bandwidth of 177 MHz, comparable with the assumption as used in the calculation below
I have very little to go on, so making a couple of assumptions:
- radar works at 24 GHz, therefore wavelength = 12.5 mm
- suppose the range of a full FM sweep is 150 MHz
- object distance d is 1 meter, so time-of-flight = 2 * d / c = 6.67 ns
- to get a 1 kHz difference frequency at this range, we need a chirp rate of delta_f / delta_t = 1 kHz / 6.67 ns = 150 GHz/s
- the FM sweep therefore has to be done in 1 ms, or 1000 sweeps/s
- suppose the FM sweep consists of 100 individual steps, we need 100,000 steps/s
So the modulation output needs to be updated at 100 kHz, and the IQ inputs needs to be sampled at (say) 10 kHz. Quite challenging, but not necessarily impossible.
- do the available radar modules actually use the FM modulation input of the radar? -> I will assume that unless it's specifically advertised, this is NOT the case (even though it uses a frontend that could)
- how is the FM modulation input wired to the CPU? The STM32 processors typically used don't have a DAC output! -> is the ramp perhaps generated with help of an opamp circuit (e.g. current source charging a capacitor)
- some STM32 MCUs *do* have a DAC, see this application note
- can we find source code of existing firmwares? -> probably NO at this point
- can we reprogram the microcontroller -> SWD-signals are generally brought out to a header -> might be flash locked, might be possible to physically replace with an unlocked STM32
- This application note describes the levels: in short 0 = fully unlocked, 1 = flash locked but JTAG/SWD/etc still works, unlock erases flash, 2 = fully locked, JTAG/SWD/etc disabled
- How to cope with real-world inaccuracies, like IQ inbalance -> I guess now that a linear correction matrix can fix most of it, but how to determine the coefficients, preferably automatically
- I-Q outputs are not exactly 90 degrees apart
- I-Q outputs have an amplitude inbalance
- I-Q outputs have a bias
- dynamic range: this needs to be high, since the radar equation has a 4th-power dependency on distance -> maybe not so critical, range detection relies on measuring a frequency, not an amplitude
- Get some rough idea of
- inaccuracies a described above
- Frequency change per m/s
- Typical modulation index: MHz / V on the modulation input, and the corresponding sweep rate > 150 MHz / ms doesn't seem unreasonable
- Choose signal processing properties
- choose an appropriate sample rate
- can we calculate an FFT fast enough, fixed point or floating point
- what properties should the FFT have, obviously complex->complex, window function?
- can we stack multiple FFTs for increased sensitivity? -> yes probably, stack them in IQ (not power)
Available FMCW radar modules
- https://www.acconeer.com/products has a list of smart radar modules
From Yanwu Tech:
- FMK24-A series, a range of FMCW modules which appear identical in hardware at least, a.k.a. as "FM24-NP100".
- FM24-NP100 on Aliexpress.
AliExpress 24 GHz radar with FMCW, no CPU:
- Yh-24g04, a 24 GHz quadrature doppler radar (no CPU), has modulation input, for about E16,-
- YH-24G01 (no CPU), for about E15,-
AliExpress 24 GHz radar, DM-series:
- DM-39, a 24 GHz quadrature doppler radar with CPU for about E32,-. The page shows a SRK1101 radar, with I/Q outputs and tune input. Mentions Cortex M0.
- DM-19, a 24 GHz quadrature doppler radar with CPU for about E48,-. Appears similar in possibilities to DM-39. Mentions Cortex M3/M4 processor.
- another DM-19, 24 GHz quadrature doppler radar, about E40,-
- DM-19 / DB-16 another FMCW radar model, about E39,-
Even though the front-end used can be modulated, no mention is made of FMCW or ranging application!
AliExpress 24 GHz radar, FM-series:
- FM-42, a 24 GHz FMCW radar with CPU for about USD107,-
- FM-49 another FMCW radar module, M3/M4 CPU, claims range 4m, accuracy 5 cm, about E52,-
AliExpress 24 GHz radar, other:
- 182MOD, a module outputting speed for about USD28,- appears to use a 5-pin radar (Vcc,Gnd,I,Q,tune?)
- USRR187 mentions FMCW, has CPU (UART output), pin defintion not clear, for about E38,-
- TD-24G-B-002, claims to support ranging, but information is confusing, about E21,- More information: http://www.hrtsensor.com/prodetail-13346865.html
Analog front-end for many of the radar modules above seems to be SRK1101A:
- this page claims it has an SPI interface, but I doubt that
- 250 MHz bandwidth
- 25 dB receive gain