# How to measure speed with Doppler effect and ultrasonic waves

Hi, for my school project, I have to create a speed sensor using ultrasonic waves with my Arduino card. I immediately thought about using the Doppler effect, but I can't get a reflected signal and measure its frequency. Do you have any idea ?

Speed of what? If it's something that passes two points, then you can use two sensors. If you mean something like the speed of a car at a distance, you cannot do it with Arduino ultrasonic sensors.

I want to measure the speed of an object that moves.

Oh, I misunderstood. I thought you wanted to measure the speed of an object that doesn't move.

And it don't really needs to be able to mesure high speeds. My goal is mostly to determine the maximum measurable speed

Once you figure out how to ask a decent question and provide useful details, you will get help.

I can't get a reflected signal and measure its frequency. Do you have any idea ?

You will need an ultrasonic transmitter and an ultrasonic receiver.

Finding the speed of a moving object relative to an ultrasonic sensor (such as the HC-SR04) is a trivial task if you calculate the speed as the difference between two distance readings divided by the time between the two readings.

Finding the speed of an object relative to an ultrasonic sensor using the Doppler effect is considerably more difficult. If you can understand everything on this link and on this link, then you may have a chance of hacking the HC-SR04 and figuring out how to do it.

1) measure distance 1. 2) wait some time 3) measure distance 2.

speed = (distance 2 - distance 1) / time waited

Of course you could also try doing it the hard way and try the doppler effect...

You can buy CDM324 or HB100 doppler modules.

Those modules are RF based, not ultrasound as OP requires.

wvmarle:
Those modules are RF based, not ultrasound as OP requires.

Like a lot of students that post here, their project ‘wants’ are hardly ‘requirements’. You are giving way too much weight to the ‘have to’ in the OP.

Last night, i thought about using another transducer, like those we use in school laboratories (but smaller if possible), in order to have two signals to compare. I found this one : https://www.soselectronic.com/products/various/t4016-ust-40-t-2178 can you confirm to me that it allows to obtain 2 signals of which I will be able to measure the frequency?

Any transducer should be able to work as a microphone, too, but the signal may be very weak.

When you read the data sheet that's linked to from that page, you see a test setup where they use a standard capacitor microphone to record the sound from this sensor.

If you can find a microphone that's sensitive for 40 kHz, and you get the Arduino to measure the frequency of the sound received, and that's NOT trivial! Frequency counting as such is simple, but you have to deal with other frequencies in the same signal. You can do quite a bit with a band pass filter, that should help a lot to clean up the signal, but you still have to deal with the possibility of other frequencies. The band pass filter probably has to have a pretty wide bandwidth - you can calculate the expected frequencies based on the speeds you want to measure and design your filters accordingly.

thank you, tomorrow, I will do the test with the school’s transducer

https://www.soselectronic.com/products/various/t4016-ust-40-t-2178

You will need an amplifier for that transducer.

Hi, alexprime100, I am sorry, it might be too late for your school project. But possibly you or anybody else could still be interested in the matter. Well, using the Arduino UNO it probably will not work. In case you got an Arduino DUE and some piezo speaker and one of the cheap electret condensor microphones you can use this: https://clauduino.i-networx.de/p_tools/tools19.html