Hello everyone,
I am working on a project using an HB100 microwave Doppler radar module with an STM32F411 board to detect motorcycles being ridden on a sidewalk/pavement area.
My goal is not only to detect “motion/no motion”. I want to read the HB100 IF signal as cleanly as possible, amplify it with an op-amp circuit, sample it with the STM32 ADC, and then use amplitude and dominant Doppler frequency to distinguish between a walking person and a motorcycle.
The idea is that a motorcycle will usually move faster than a pedestrian and may also give a stronger radar reflection because of its metal parts. However, I understand that amplitude alone is not reliable, because distance, angle, target size, and reflection conditions also matter. So I want to keep the analog front-end clean and then do most of the classification in software.
Main parts I have:
Current circuit idea:
I plan to power the HB100 from 5V. I plan to power the MCP6002 from 3.3V so that the op-amp output is safe for the STM32F411 ADC input. HB100 GND, MCP6002 GND, and STM32 GND will be common.
Since the op-amp will run from a single supply, I plan to create a 1.65V virtual reference:
3.3V -- 10K -- VREF -- 10K -- GND
I will decouple VREF with 100nF and 10uF to GND.
HB100 IF input stage:
HB100 IF → 100nF series capacitor → non-inverting input of the first MCP6002 op-amp stage
The input node after the capacitor will be biased to VREF using 100K. I am also considering adding a 10K load resistor from the HB100 IF output to GND, because I have seen similar HB100 application circuits using an IF load resistor around this range.
First op-amp stage:
First stage output → 100nF series capacitor → second stage non-inverting input
This second input node will be biased to VREF with 22K. This gives a high-pass corner around 72 Hz. The purpose is to reduce very slow movement, DC drift, and low-frequency noise.
Second op-amp stage:
MCP6002 output → 1K series resistor → STM32 ADC input
At the ADC input I plan to add 100nF to GND, giving a simple low-pass filter around 1.6 kHz.
Expected behavior:
With no movement, the ADC should read around the middle of the range, approximately 1.65V. When there is motion, the signal should swing around this bias point. In software I plan to subtract the moving average, calculate RMS/amplitude, and use FFT or Goertzel analysis to estimate the dominant Doppler frequency.
Questions:
Thank you.
I am working on a project using an HB100 microwave Doppler radar module with an STM32F411 board to detect motorcycles being ridden on a sidewalk/pavement area.
My goal is not only to detect “motion/no motion”. I want to read the HB100 IF signal as cleanly as possible, amplify it with an op-amp circuit, sample it with the STM32 ADC, and then use amplitude and dominant Doppler frequency to distinguish between a walking person and a motorcycle.
The idea is that a motorcycle will usually move faster than a pedestrian and may also give a stronger radar reflection because of its metal parts. However, I understand that amplitude alone is not reliable, because distance, angle, target size, and reflection conditions also matter. So I want to keep the analog front-end clean and then do most of the classification in software.
Main parts I have:
- HB100 Doppler radar module
- STM32F411 development board
- MCP6002-E/P DIP-8 dual op-amp, 2 pcs
- Resistors: 1K, 4.7K, 10K, 22K, 47K, 100K, 1M
- 47K trimmer potentiometer
- 10K trimmer potentiometer
- Capacitors: 10nF, 100nF ceramic; 1uF, 10uF, 47uF, 100uF electrolytic
- Breadboard and perfboard
- 3.3V / 5V breadboard power supply module
- 12V 1A adapter and LM7805 regulator
Current circuit idea:
I plan to power the HB100 from 5V. I plan to power the MCP6002 from 3.3V so that the op-amp output is safe for the STM32F411 ADC input. HB100 GND, MCP6002 GND, and STM32 GND will be common.
Since the op-amp will run from a single supply, I plan to create a 1.65V virtual reference:
3.3V -- 10K -- VREF -- 10K -- GND
I will decouple VREF with 100nF and 10uF to GND.
HB100 IF input stage:
HB100 IF → 100nF series capacitor → non-inverting input of the first MCP6002 op-amp stage
The input node after the capacitor will be biased to VREF using 100K. I am also considering adding a 10K load resistor from the HB100 IF output to GND, because I have seen similar HB100 application circuits using an IF load resistor around this range.
First op-amp stage:
- Non-inverting amplifier
- Rg = 1K from inverting input to VREF
- Rf = 100K from output to inverting input
- Gain ≈ 101
First stage output → 100nF series capacitor → second stage non-inverting input
This second input node will be biased to VREF with 22K. This gives a high-pass corner around 72 Hz. The purpose is to reduce very slow movement, DC drift, and low-frequency noise.
Second op-amp stage:
- Non-inverting amplifier
- Rg = 4.7K from inverting input to VREF
- Rf = 22K + 47K trimmer from output to inverting input
- Adjustable gain ≈ 5.7 to 15.7
- Total gain ≈ 575 to 1585
MCP6002 output → 1K series resistor → STM32 ADC input
At the ADC input I plan to add 100nF to GND, giving a simple low-pass filter around 1.6 kHz.
Expected behavior:
With no movement, the ADC should read around the middle of the range, approximately 1.65V. When there is motion, the signal should swing around this bias point. In software I plan to subtract the moving average, calculate RMS/amplitude, and use FFT or Goertzel analysis to estimate the dominant Doppler frequency.
Questions:
- Is it a good idea to power the MCP6002 from 3.3V while powering the HB100 from 5V, assuming all grounds are common?
- Is a 10K load resistor from HB100 IF to GND appropriate, or should I use something closer to 12K, 22K, or a higher value?
- Is the first-stage gain of about 101 too high for the HB100 IF signal? I am concerned about saturation and noise, but I also know the HB100 IF output is very small.
- Is the second-stage high-pass corner around 72 Hz reasonable for trying to reduce pedestrian/slow movement components, or should I lower it to around 20–30 Hz and leave the classification mostly to software?
- Is a total adjustable gain of roughly 575–1585 reasonable for this application, or should I design for lower gain to avoid clipping when a motorcycle passes close to the sensor?
- Is the 1K series resistor plus 100nF capacitor at the STM32 ADC input a good idea? Should I add any extra protection for the STM32F411 ADC pin?
- Is the MCP6002, with its 1 MHz gain-bandwidth product, suitable for this two-stage HB100 Doppler IF amplifier?
- Will this circuit be too noisy on a breadboard? Should I test on breadboard first and then move quickly to perfboard?
- For motorcycle vs pedestrian detection, would you recommend making the analog front-end more selective with a stronger band-pass filter, or keeping the analog front-end relatively clean/wideband and doing the classification in STM32 software?
- What mounting angle would you recommend for the HB100? I know that if the target moves sideways across the sensor, the Doppler frequency can become much lower, so I am thinking about mounting the sensor at around 30–45 degrees relative to the sidewalk direction.
Thank you.
Attachments
-
544.9 KB Views: 5