Showing results for 
Search instead for 
Did you mean: 

Ultrasonic Anemometer


I'm a bachelor student fron The Netherlands and I'm currently working on a project to build an ultrasonic anemometer. It should be able to measure wind speed in one dimension by sending sound pulses back and forth between two points (30KHz transducers) and measuring the lagtime.

I have access to some pretty old NI hardware and I'm not sure if it's actually fast enough to accomplish this, but this is not the problem, as a proof-of-concept would be good enough. 

So, I'm fairly new to LabView and I haven't been able to figure out how to send out a short 30KHz pulse via the analog-out of a DAQ, how to listen for pulses at the receiving end or how to measure the time between these accurately.

Would anyone be able to give me some pointers?


Arjen de Waal 

0 Kudos
Message 1 of 16

The trick I knew is to couple sender and receiver. Whenever your receiver detect a puls, send a new one. This is a task for a 555 😉  


(Another often seen setup is a Stratocaster/ Marshall combination ... play me the sound of wind 😉  


Like that you only have to measure the puls repetition frequence. A nice task for the sound card  (round about 30cm distance should give 1kHz) or use a more precise timer...


But also take a look at all that other parameters, that have an influence on the speed of sound... temperature is only one (major) but ....


have fun with you project 


Greetings from Germany

LV since v3.1

“ground” is a convenient fantasy

'˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'

0 Kudos
Message 2 of 16
Thanks for the response, but I don't think that would work. The trick is to measure in both directions, so that you can eliminate the influence of temperature, pressure and humidity. The windspeed would be half the distance between the transducers times the inverted time in one direction minus the inverted time in the other (v = d/2*(1/T1-1/T2)).
0 Kudos
Message 3 of 16

Good point 🙂


So how about a combination of both?  If the pulse is detected, send an echo back? Together with an RS-flipflop you get a puls width modulated signal. 50/50 for no wind ... add and RC filter and you can build it without any software .... 

OK, I'm an old analog guy 😉

Back to software: For a proof of concept, why not using the sound card? Two sender  and receiver with amps are alreadybuild with 48(96?)kHz samplerate   ? Go down to 10kHz  use sinusfit to measure the phase  .... Now I want to play, but no time... 😞  


Have fun and enjoy your project


Greetings from Germany

LV since v3.1

“ground” is a convenient fantasy

'˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'

0 Kudos
Message 4 of 16
Ah, nice idea to use a soundcard, but why go down to 10KHz? The transducers I have only work at 30KHz.
0 Kudos
Message 5 of 16




BW of your Soundcard?



Greetings from Germany

LV since v3.1

“ground” is a convenient fantasy

'˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'

0 Kudos
Message 6 of 16

How fast is your data acquisition equipment?  Just because it is old does not mean that it is slow.  How many channels of analog input (AI) and analog output (AO) do you have available?


I would consider running the AI and the AO in separate parallel loops.  Run the AI continuously.  Generate a pulse for one channel of the AO, then after a time longer than the maximum sound travel time between sensors, generate the pulse for the second transducer.  If you have 3 or 4 channels of AI available, put the transmitted pulse (or a reduced amplitude sample of it) on the extra channels.  That way you have all of the timing information in the AI datastream.


What are the timing requirements?  In other words what is the difference in timing between the upstream and downstream pulses at the slowest wind speed you wish to detect?



0 Kudos
Message 7 of 16

Hi Flapke

First of all be careful then using sound card. Most of the sound card use both analog and digital filters to stop frequencies outside the 20-20Khz audio frequency. The input is also in most cases AC coupled. If you are using a 30 KHz sound pulse my guess is that you need to sample it with at lest 300Khz to get a decent signal for analysis. The synchronization problem may be solved by sampling both the excitation signal and the measured signal. But this is not ideal either. This because most AD equipment do not have simultaneous sampling. They have 1 ADC and multiplexed input. This cause some skewness in the signal timing



Besides which, my opinion is that Express VIs Carthage must be destroyed deleted
(Sorry no Labview "brag list" so far)
0 Kudos
Message 8 of 16

Ok, so a soundcard probably won't work, unless I use multiple, I guess. The NI hardware I have available here is a PCI-6024E, which apparently has two analog outputs, which is good, but only a samplerate of 10kS/s. I'm not too sure, but can this thing even output a 30KHz tone? And how would I go about doing this?

The analog ins have a samplerate of 200kS/s, which should be enough to at least detect a decent breeze, according to my calculations.

0 Kudos
Message 9 of 16

Hello Flapke,


thank you for your forum post. You need about 50 samples each period to generate a proper analog output signal. This means you will need aboud 150 kS/s to generate a signal from 30 kHz.


If you have any questions, please don't hesitate to contact me,


best regards,

Martijn S
Applications Engineer
NI Netherlands
0 Kudos
Message 10 of 16