09Aug 2013

Making the electronics for a $7 USD doppler motion sensor

I had no idea that you could find this kind of motion sensors on the internet for so cheap... But they come with a catch: you need to design some electronics for them.

PCB Back

I'm sure you're quite familiar with the Doppler effect: you send an RF signal at a given frequency to a target, and if this object/person is moving the reflected signal's frequency will be shifted.

Doppler effect
This is the reason why a fire truck's siren has a higher pitch when the truck is going towards you than when it is going away. Anyway, this is the module you can find online:

official HB100s
You'll notice the 4 patch antennas to send/receive the 10.525GHz. This frequency is really nice as the sensor will still work if there is some wood/plastic in front of it!
The HB100 outputs a low level voltage (few uV) whose frequency represents the speed at which an object is moving towards or away from the sensor. The output can be very noisy, so in addition to amplifying the signal, we need to filter out frequencies that don't match what we expect from ordinary objects. Have a look at my schematics, based on an example found in the HB100 datasheet:

Backpack schematics
Let's analyze them step by step. U1 is a SOIC component containing 2 operational amplifiers: opamp A & opamp B.
The HB100's output is connected to P1 and C4/(R4&R2&R1) form a high pass filter. The signal at the opamp A positive input (IN+A) is centered at Vcc/2 because of this high-pass filter and the voltage divider made by R1 & R2.
The opamp A, R5, C5, R6 and C6 form a non-inverting band pass filter circuit. It amplifies the signal at IN+A by 100 (R6/R5) between 3.4Hz (1/2*pi*R5*C5) and 72Hz (1/2*pi*R6*C6). The gain is 1 outside this frequencies, so the opamp A's output is also centered around Vcc/2.
The latter signal is then passed through an inverting band pass filter circuit. The gain is 121 (R7/R8) between 4.1Hz (1/2*pi*C8*R8) and 72Hz (1/2*pi*C7*R7). The gain is 0 outside these frequencies, but because Vcc/2 is present at IN+B the opamp B's output will also be centered around Vcc/2.

Here are the two types of bandpass filters presented in a better way (different component values are used):
Bandpass filters
Anyway, you might wonder why the last amplifying stage's lower cutoff frequency is slightly higher than the previous'. This is made so to avoid amplifying the DC component as the band pass filter is not ideal (see above picture).
So we finally amplified the HB100 signal by 100*121 = 12100... so you can guess that a lot of noise can be amplified.
To avoid that, FB1 removes the power supply's noise and the chosen opamps have a high common mode rejection ratio (CMRR).

PCB Front
The amplified signal maximum voltage is detected using D1, R9 and C9. It is common to add a resistor in parrallel with C9 but as we are working with very low frequencies C9's leakage will do the trick.
To output a nice square signal, we use a discriminator (U2) detecting when the voltage crosses Vcc*0.55.

And there you have it: a nice doppler motion detector.

So here are all the files used to make this sensor. I recently migrated to KiCAD!
Bill of Materials Production files HB100 application note HB100 datasheet

If you don't have time to make one yourself... have a look at my store on tindie :-) .


1. On Thursday, April 10 2014, 22:57 by Daniel

Thanks for sharing! Great place to start!

2. On Tuesday, April 22 2014, 16:38 by Esteban

Good job !

Which antenna did you use for RX and TX?

3. On Tuesday, April 22 2014, 16:40 by limpkin

@Esteban : Hello, the antennas haven't been designed by me as I only made the back PCB.

4. On Monday, June 2 2014, 03:20 by S D

I am trying to make this device using DIP components, but the chips are not made in the DIP pin package. What chips would you use instead or the OPA2365 and the MAX9031 that are available in DIP?

5. On Saturday, July 12 2014, 23:49 by Travis

What would the use of the voltage output be? I have simulated a very similar circuit in Multisim, and get nice results with the square wave frequency output, but as I increase the frequency the voltage decreases, and I'm not sure that should be happening.


6. On Thursday, July 17 2014, 23:54 by Chris

@SD, I used OPA2350, which is available as DIP and has a very similar spec.

7. On Monday, October 6 2014, 15:33 by rayui

Hi! Would it be possible to use two of these for the purposes of signal triangulation? Or, would the motion detectors become confused by each other's signals operating at the same frequency?

8. On Monday, October 6 2014, 21:10 by limpkin

@rayui : Sorry, they'd actually be confused...

9. On Tuesday, October 7 2014, 16:07 by rayui

Would it be possible to cut the TX of a second unit and wire the oscillator output of the first to the pre-mix stage of the second? Then you could have two receivers but with only one transmit signal.

10. On Tuesday, October 7 2014, 16:09 by limpkin

@rayui : that'd be possible. However given that you're dealing with GHz signals that won't work...

11. On Tuesday, October 7 2014, 16:17 by rayui

You mean that the phase shift wouldn't be enough between the two receivers to triangulate from?

12. On Tuesday, October 7 2014, 16:24 by limpkin

@rayui : I mean that you won't be able to transmit a high impedance GHz signal for more than a few cm :)

13. On Tuesday, October 7 2014, 16:38 by rayui

Wow. I'm out of my depth now. Do you have some resources I could read to better understand that?

14. On Tuesday, October 7 2014, 16:40 by limpkin

@rayui : this provides a nice introduction: http://en.wikipedia.org/wiki/Transmission_line

15. On Tuesday, October 7 2014, 16:49 by rayui

Oh, right. The wires become antennas. Makes sense, I should've guessed that. Thanks :)

16. On Saturday, October 11 2014, 17:16 by Hal

Thanks for offering this nice device! Do you know the maximum velocity this device will detect? Or the smallest flat object it can detect? It made me think of an application in which I want to monitor the vibration of a beam or plate.


17. On Saturday, October 11 2014, 21:23 by limpkin

@Hal : I honestly have no idea, sorry!

18. On Wednesday, October 29 2014, 16:50 by Matt

I think you answered this above, but I'm curious as to whether this device could possibly measure distance to an object (moving or static), rather than simply velocity?

19. On Thursday, October 30 2014, 19:42 by Cody

I bought an HB100 recently but i haven't had a chance to incorporate it into any of my projects yet. Any way i was wondering if you sold just the "breakout board" by itself as i already have the HB100. Thanks!

20. On Saturday, November 15 2014, 16:41 by limpkin

@Matt : The measurement wouldn't be reliable indeed.

21. On Saturday, November 15 2014, 16:41 by limpkin

@Cody : Sorry! I only sell the complete assembly.

22. On Wednesday, November 26 2014, 15:52 by Brian

What kind of range would this have? i.e. would it be something like 60 feet or 60 inches?

Would it work well if the object you are measuring goes across the front of it? (rather than coming directly at or going away from it). e.g. put it out the window of your house to measure the speed of cars going by.

23. On Thursday, November 27 2014, 19:37 by limpkin

@Brian : Something around 20 feet depending on how big the object is. I'm quite sure it wouldn't work very well if it went across the front of it.

24. On Friday, February 20 2015, 18:09 by Afshin

Hi... I recently purchased this module (haven't received it yet). A couple of quick questions:

1) Do you have a document explaining VOUT and FREQ_OUT based on the relative speed of the two objects. In other words, if I connect the VOUT to an ADC, what would the number indicate vis-a-vis the frequency shift? Same for FREQ_Out, if I connect that pin to a GPIO and time the pulses, what do the numbers mean? I need to be able to measure positive and negative frequency shifts. Thanks

25. On Saturday, February 21 2015, 20:13 by limpkin

@Afshin : Hello, thanks for your purchase! VOUT is proportional to the amount of reflected energy so you'll have to experiment. As for the FREQ_OUT ouput, I invite you to have a look at the application note.

26. On Tuesday, March 3 2015, 17:37 by Afshin

Thanks very much for the response... To let you know, I would like to ascertain the speed difference between the moving object and the module... as such, does the FREQ_OUT have indication to that effect?

27. On Tuesday, March 3 2015, 18:34 by limpkin

@Afshin : in theory yes... but I doubt that will be the case in practice, depending on your setup.

28. On Tuesday, March 3 2015, 19:40 by Aux

Did anyone overhere succesfully connect this sensor to an Arduino or Raspberry? I am very interested in the wiring you have done to connect it. anyone got some pics or a youtube link?

29. On Friday, March 20 2015, 11:04 by Valdomi Land

this device can be used to measure tennis ball speed ( with a speed exceeding 220 km / h )?

30. On Friday, March 27 2015, 23:44 by Aux

I did some study on this, but I don't want to shortcut the sensor so a confirmation of my wiring would be nice.

I came to this Arduino connection:

31. On Sunday, March 29 2015, 20:31 by limpkin

@Valdomi Land : Unfortunately no!

32. On Sunday, March 29 2015, 20:33 by limpkin

@Aux : as long as you correctly configure the IOs you should be fine!

33. On Monday, March 30 2015, 09:56 by Robojuchen

On Valdomi lands question and answer to it:

Do you think it is impossible to change filter component's values to measure faster objects speed? Is there some limitation in opamps or HB100 modules performance or in your filter design?

34. On Wednesday, April 1 2015, 00:39 by limpkin

@Robojuchen : It is of course possible to change the filter components values, as long as you don't exceed the opamp GBW product :)

35. On Thursday, April 2 2015, 21:00 by Aux

Me again, I managed to connect it the sensor to an Arduino Uno

Currently I am using Firmata and ArduinoScope to grab the data from the device.


Any help on the next step would be appreciated. What I try to achieve is to get the speed of the object that is passing the sensor.
I guess I need to get raw data from the device so I can process that into speed.

36. On Monday, April 27 2015, 07:54 by oscar

Hi! nice work! Is the output of the square pulse train fully compatible with the arduino DUE analog input? thanks!

37. On Monday, May 4 2015, 11:10 by limpkin

@oscar : Hello Oscar! You will need to use a resistor divider to bring the voltage to 3.3V.

38. On Thursday, May 7 2015, 09:46 by Bero

Hi, great work.
how small at what velocity objects can be catched?
pellets? bullets?

39. On Tuesday, May 12 2015, 09:33 by Arslan

Before using hb 100 , its library should be bulit in arduino or not ?

40. On Friday, May 15 2015, 20:23 by limpkin

@Bero : Hello there! Unfortunately I don't think this sensor will work with the small objects you describe.

41. On Friday, May 15 2015, 20:23 by limpkin

@Arslan : I'm not sure to understand you...

42. On Sunday, June 21 2015, 09:21 by nic

Hi. I bought a module from you on tindie. I can't get it to behave the way you do in your video. The voltage output goes to Vcc immediately when something is moving in the room. That is, it does not give an output proportional to the distance like in your video. Any suggestions?

43. On Sunday, June 21 2015, 09:37 by limpkin

@nic : From what you describe it seems you are measuring VOUT and not FOUT?

44. On Sunday, June 21 2015, 20:52 by nic

yup. Measuring Vout, isn't that what you are doing with the yellow graph on your oscilloscope? The green one must represent the speed of the object (frequency output)? I can't get anything similar to your yellow graph from VOUT. So what is your yellow graph representing?

45. On Monday, June 22 2015, 23:54 by limpkin

@nic : Yellow is indeed VOUT. Are you sure the HB100 is not affected by reflections inside the room? Ideally there shouldn't be metallic objects close to it.

46. On Tuesday, June 23 2015, 18:27 by nic

I tried to do a test just like your's (just did it). I can't get a result like you show. I have tried to move to another room, no effect. It just climbs up to max voltage whenever something is moving within two or three meters. If i stay still, then it goes down to around 2.5V again (very very slowly). It does not behave like in your video above at all. I feed it with 5V, measure it with an oscilloscope and an arduino analog input. Tried with 16mm of wood in front of the sensor also, same result.

47. On Tuesday, June 23 2015, 22:24 by limpkin

@nic : For information all the HB100 sensors are tested like in the shown video :). How is the HB100 fixed to its support? It should be as close as possible to the table edge.

48. On Friday, June 26 2015, 19:40 by mga

If the sensor is pointed down at the road surface, say at 30 degrees, would it detect road speed (with angle correction in software)

49. On Friday, June 26 2015, 21:36 by limpkin

@mga : Hello there, it would indeed!

50. On Tuesday, July 28 2015, 09:07 by Andreas

@Aux : Did you get the sensor to work with some arduino code and got valid results??

Best regards!

51. On Saturday, August 8 2015, 17:36 by Nightmare

Hi Limpkin, I bought your sensor, and I made myself the board with your diagram, but it doesn´t work as yours, I changed the comparator for this: GENERAL PURPOSE COMPARATOR, SINGLE, 0.2 US, SOIC-8(LM211DT), The Diode for this: DIODE, SCHOTTKY, 1A, 40V(1N5819HW-7-F), the R4 330k resistor for this: MC01W08051330K, and the FB1 for this one: FERRITE BEAD, 0.35OHM, 400mA, 0805(BK2125HM102-T).
Does it really affect the performance of the sensor??

52. On Sunday, August 9 2015, 15:12 by limpkin

@Nightmare : you should be good! 

53. On Wednesday, August 19 2015, 13:58 by Redman

Hello everyone,

right now we are busy with a school project. We want to build a velocimetry with an Arduino and a HB100. Unfortunately we noticed that the HB100 only measures frequencies in a ~20cm range. We tried different ankles and also tried to isolate with a tinplate which we placed around the sender, the resulat was the same.

Any ideas, any experience with that kind of problem?

Many thanks in advance.

Have a nice day!

54. On Thursday, August 20 2015, 11:53 by Alexander S.

Hello There,

We are using a normal Arduino uno and the HB100 to detect the speed of bypassing cars on the street in front of our school, but we have a small problem with it:

By now we have everything set up and working (nearly) properly - the arduino gets a signal by the hb100 and uses a lcd to display the results (-> the speed). Our problem with the hb100 seems to be the range: It seems to retrieve signals within a range of only ~20cm. We already checked all connections and everything seems just fine. We also tried to use a tin plate around the hb100 to isolate signals from other directions, but that didnt help either. Do you have any idea what could be wrong here? Since we want to detect the speed on a normal street,we need a range of at least 5 meters.

Thanks in advance for your time.

55. On Thursday, August 20 2015, 17:38 by limpkin

@Redman : Did you purchase the HB100 from me? 

56. On Thursday, August 20 2015, 17:39 by limpkin

@Alexander S. : Hey Alexander, did you purchase the HB100 from me?

57. On Thursday, August 27 2015, 23:10 by Dave

I've clocked my own car and a few vehicles on a public road with Doppler audio recordings from an HB100, using an Arduino UNO to average through the noise, recognize a target, measure the shift, and calculate the speed. I noticed this post while Googling for the HB-100 spec sheet. I've had some success, but work on it only intermittently, so I redecorated my Arduino code with explanatory commentary and posted it on GitHub along with some audio files and plots to demonstrate the algorithm. Its accuracy is uncertain, but it appears to be close. Your results may vary and you're on your own, but I hope you find it helpful.

58. On Saturday, August 29 2015, 12:24 by limpkin

@Dave : Thanks a lot! 

59. On Saturday, September 19 2015, 01:27 by Ron

Concerning use of this particular module in a car - as a former Air Force Radar Tech, I've also had what used to be called a First Class Radiotelephone License with Ship's Radar Option for almost 50 years. I'm well aware the module is not intended for use in a vehicle. If the AM proto works, I'll try FM and install an FCC Type-Approved module.

I did kluge it inside the rear bumper of my new SUV. It was virtually overloaded by a nearby metal object, so I moved to a quieter location. Now it sees the road surface and/or rear tire. It does have an extended horizontal pattern.

I've pointed it straight up and it still sees either the road or tire. It may be backscatter. I've selectively lined the bumper with pieces from a heavy duty Aluminum oven liner. Still sees the road or tire. The antenna may also have a backside sensitivity, which I haven't yet foiled.

May be time to purchase or kluge a feed horn.



60. On Monday, September 21 2015, 01:28 by limpkin

@Ron : thanks for the feedback!

61. On Monday, September 21 2015, 04:50 by Joseph

Is it possible to detect motion behind a wall or must it within sight?

62. On Monday, September 21 2015, 16:15 by limpkin

@Joseph : I'm guessing this would depend on what the wall is made of.

63. On Wednesday, September 23 2015, 17:43 by Andrew

Great writeup. I'm working on a project utilizing the HB100 and unfortunately, bought the thing before I realized it may not work exactly as planned....

Would the antenna array still receive signal if using multiple HB100's without applying power to the unit? Meaning, if I only amplify the IF output, without applying 5v to the unit, would a signal be adequately produced? My plan was to use three HB100's to track an object.

Otherwise I may need to look at other units elsewhere.

Have you played with Pulse-wave at all with the HB100?

So far I have just made a single sided Eagle layout for the mini amplifier, but I think I need to redo it for signal separation and noise, the more I read about these types of units.

64. On Thursday, October 1 2015, 09:25 by limpkin

@Andrew : The unit needs to be powered as the antenna signal passes through a signal mixer. I didn't play with pulse wave.

65. On Saturday, October 3 2015, 09:56 by Surachate

i would like to know the V_Out, is it mean Distance the target?

if the target far from the doppler 1m and has frequency 20Hz and if the target far from doppler 5m and has frequency 20Hz. Then the Value of V_Out will be equal or not?


66. On Sunday, October 4 2015, 12:23 by limpkin

@Surachate : VOUT is proportional to the amount of reflected RF energy. 

67. On Thursday, October 8 2015, 03:28 by Mario

Hey, I bought one of your modules last week and I just wanted to start off by saying great work!
But now I am trying to make a pulsed doppler separately, and even when I follow the application notes, the output still seems to be continuous wave doppler.
Have you managed to make one using the hb100? Is there any way to improve the schematic on the application notes?

68. On Thursday, October 8 2015, 22:47 by limpkin

@Mario : Hello Mario! Unfortunately I've never tried pulsed mode... but I don't see why its mode of operation should be different than continuous wave doppler. 

69. On Friday, October 9 2015, 03:16 by Nightmare

@Dave : May I have your email address or contact information? I don't know how to contact you in Github but here is my account: https://github.com/Nigthmare

This post's comments feed

Add a comment

Comments can be formatted using a simple wiki syntax.

They posted on the same topic

Trackback URL : http://www.limpkin.fr/index.php?trackback/189