Wednesday, 9 May 2012

arduino thermal anemometer

This is my first blog post to talk about a thermal anemometer for Arduino. There is some background reading herehere, and here, and a finally a really excellent report by Johan Liljencrants. There is also a good description of the basics of thermal anemometry from the University of Cambrdge here. You could also use the information on this website to perform a much better calibration than I did...

I needed a very small, portable, data logging anemometer to use for a school project. After a few miserable attempts with heated transistors and thermistors I stumbled upon the IST FS5 "thermal mass flow" sensor. I basically used the circuit from the data sheet, using a different op-amp and transistor (and excluding the calibration resistor) and was reasonably happy with the initial performance. I added a second op-amp acting as a difference amplifier (using a 7805 voltage regulator as a 5V reference, because I had one lying around) to match the input range of the Arduino analog in.

The circuit diagram, modified from the data sheet, and a photo of the finished anemometer are shown below. The sensor itself was mounted in a protective 3D printed housing because of the application. In the photo the arduino is mounted inside the tupperware case with the power and USB connector wires visible. I also built a version of this circuit that was portable using a Seeeduino Stalker and rechargeable batteries. The code for  both versions is quite simple, printing the analog input value to either the USB port or the SD card, examples of which can be found elsewhere.

I calibrated my sensor using a TSI transducer anemometer between 25 and 30 degrees Celsius. In all likelihood, if you plan to use such a sensor you will need to calibrate it specifically for the application at an appropriate temperature (since the rate of heat transfer is dependent on the temperature difference between the probe and the fluid). My calibration data and the derived empirical relationship are shown below.

The purpose of this post is really to show the potential of this particular flow sensor and the Arduino to make air speed measurements with a solid state device. To make such a sensor really useful much more rigorous calibration would probably be required. Other interesting possibilities are a PWM constant temperature anemometer (I tried this briefly but I think the existing PID libraries for Arduino are a bit slow, maybe an integer version would work) or the combination of two or more sensors to measure both the air speed and direction.