Need Help to Designing an Arduino-Based Ultrasonic Doppler Sensor Using MA40S4R/S

Do you mean you want to “measure wind velocity”, like this WINDSONIC4: 2-D Sonic Wind Sensor with SDI-12 Output?

No, it's a basic mechanical sensor. It measures objects.

Dunning and Kruger got it right.

There are people who blow off what they don’t know.

That is fine, but the OP wants to use the echo return.

For ultrasonic Doppler projects using MA40S4R / MA40S4S,
the biggest challenge is the analog front-end, not the Arduino code.

You usually need:

  • A proper driver stage for the transmitter
  • A high-gain pre-amplifier for the receiver
  • Band-pass filtering around the ultrasonic frequency

LM358 can work for initial testing, but noise and gain control
are very important. HC-SR04 modules are not ideal for Doppler
because they are designed for distance measurement, not frequency shift.

Start by testing the transmitter and receiver separately on an oscilloscope,
then add amplification and filtering step by step.

Consider asking that team member to post sensible questions.

The simple answer is:

  1. Measure the frequency of the transmitted pulse.
  2. Measure the frequency of the return pulse.
  3. Subtract the two.
  4. If the return frequency is lower, the target is receding. If the return frequency is higher, the target is approaching.
  5. The frequency difference is proportional to target velocity.
  6. Calculate target velocity.

In practice, there are things to consider:

  1. Is the bandwidth of the ultrasonic transducer wide enough to cover the velocity of interest. e.g. 10 m/s = 2.33 kHz Doppler shift.
  2. Air temperature. Speed of sound varies vs air temperature.
  3. Humidity has a small effect.
  4. Angle of target approach.

Probably other things that I can't think of a the moment.

At the low frequencies of the ultrasonic sensors, I suggest measuring the pulse length of one pulse out vs. one pulse received. That would eliminate having fractional/float values.
We are still waiting for the OP to reply to our questions.

My ultrasonic range sensors emit 8 pulses per event. Perhaps if I made my own unit, it could time the 8 pulse return in micros.

At 20C, sound travels 343 m/s… .343 m/ms and we can measure 250x closer on our best day.

Max range may be 4 meters, I get 23.32 ms round trip. That could give 42 reads per second… not terrible.

I'm not understanding this. Are you saying one burst which would consist of say 8 pulses or actually just one pulse?

In the original posting, the OP wants to build his own devices using stand along sender and receiver. So could do one ping and one ping only!

If by one ping you mean one pulse I don't get where the frequency change happens. If the ultrasonic transmit transducer were to emit one pulse of the "diaphragm" then that pressure wave would propagate until it hits a solid object where it then reverses direction and returns to the receiver. I can't grasp how the pulse width would encode a Doppler frequency shift.

If the solid object is moving toward the sender, the resulting echo will be shorter than the original pulse. Reverse if the object is moving away. The pulse length is 1/frequency. But since we have only one pulse, the pulse length is easier to measure.

So the pulse would be a width such that for a 40 kHz square wave it would have a duration of 25 e-6 seconds / 2. I can see where the return time of the pulse can be timed to determine distance. In the case of the reflector moving toward the receiver its velocity would produce a pressure waveform with a slightly higher pressure and it seems like you would have to integrate that waveform to get any sort of useful information about the moving object that produced it and that that would be fraught with all sorts of unsolvable problems.

No, the pressure wave just begins earlier and ends earlier.

Then what is the equation that defines reflector velocity with respect to Ts and Tr where Ts = transmitted pulse width and Tr = reflected pulse width.

if the receiver perceives the echo as different in frequency then the pulse width must be different too

google says

What is the frequency of a single pulse?

not sure , but i bet the reflected pulse is doppler shifted. i imagine the pulses need to be at regular intervals to allow agc and bandpass filtering to be useful too.
i must look at my fish finder one day and see if it sends out single pulses or bursts of pulses, it does not measure fish speed of course

What does a Doppler shifted single pulse even mean?

Your fish finder is a range sensor not a velocity sensor. You could calculate the velocity of a target by calculating the movement between two samples and the elapsed time.

The proposal is that the pulse width of a single pulse after reflection off a target approaching or receding from an observer is different in a way that can be measured and converted to target velocity. My belief is that it cannot.