Renesas recently released a new I2C sensor that caught our eye: a tiny miniature sensor for measuring airflow velocity. It's a measure we're interested in, because many industrial processes need well-regulated ventilation to run reproducibly, and progressive clogging of filters can significantly affect ventilation capabilities. Let's take a look at this sensor...
The sensor in question is the Renesas FS3000. It comes in two variants: the FS3000-1005, which can measure airflow up to 7.2 m/sec, and the FS3000-1015, which can measure airflow up to 15 m/sec. We tested the FS3000-1015 version, using SparkFun's small breakout board for the FS3000.
The Sparkfun breakout board
Measurements are read out via a digital I2C interface. So we'll be experimenting with a Yocto-I2C.
Reading the sensor via I2C
This sensor is one of the simplest to use that we've seen. It works in 3.3V and needs no configuration commands. You can simply read 3 bytes directly from the I2C interface: the first byte received is a checksum, and the next two contain the measured value, in big-endian. If you're using a Yocto-I2C, you can query it with the following command:
{S}51xxxxxx{P}
And here's the result:
Manual query of the FS3000 air speed sensor
The first value returned is 0x0195, or 405 in decimal, which corresponds to the value expected when air is not flowing through the sensor.
The second value, returned while blowing on the sensor, is 0x06F7, or 1783 in decimal: according to the specification, this would correspond to 4.6 m/s, which seems reasonable. The sensor reading therefore works correctly.
Automatic query and conversion to m/s
Converting the value returned by the RS3000-1015 into m/s is not trivial, as the output is not linear. Here's the diagram provided by Renesas in the data sheet:
Interpretation of the value returned by the FS3000-1015, according to the data sheet
Rather than interpolating between these points for each measure, we have calculated a 4th degree polynomial that interpolates these reference points well. Here it is:
Polynomial to obtain air speed in m/s from the points provided in the FS3000-1015 data sheet
We can therefore define the following job in the Yocto-I2C to automatically obtain in real time the raw value of the FS3000 in genericSensor1, the conversion into [m/s] in genericSensor2 and the value in [km/h] in genericSensor3:
{"writeLine": "{S}51xxxxxx{P}"},
{"expect": "28:{A}(BYTE)($val:WORDB).*"},
{"compute" : "$x = $val / 1000"},
{"compute" : "$v = 0.1984*pow($x,4) - 1.283*pow($x,3) + 3.382*$x*$x - 0.966*$x - 0.065"},
{"compute" : "$1 = $val"},
{"compute" : "$2 = $v"},
{"compute" : "$3 = $v * 3.6"}
]}}
Real-life testing
On the data sheet, Renesas advertises a typical accuracy of 5% of the measuring range. A separate document specifies all the external parameters that could affect measure accuracy: temperature, humidity, gas density if it's not air, turbulence, and so on. Let's take a look at some concrete experiments.
Our first test involved placing the sensor in the middle of the suction pipe of a reflow oven, the one we use to solder Yoctopuce module plates. This is a typical case where we're interested in ensuring a well-controlled environment, so that the oven temperature profile doesn't vary from one production batch to the next. We compared the measure with an Amprobe TMA10A reference sensor.
Our reference anemometer: Amprobe TMA10A
Unfortunately, the result was somewhat disappointing: there was almost a factor of 2 between the measures returned by the two sensors, despite various positioning trials. Since the various environmental parameters listed in the Renesas additional documentation couldn't explain such a difference, we removed the connector we'd soldered to the back of the sensor (on the pads provided by SparkFun), and this already improved the measure a little: clearly, it's not a good idea at all to put a connector in line with the airflow sensor. But even with surface-welded cables under the module, the measure is still rather unsatisfactory.
We then ran a few tests in front of a variable-speed fan. The proportionality of the measures seems quite good, but there's still a significant error factor on the interpretation in m/s between the Renesas sensor and our reference anemometer.
Finally, to test over a slightly wider range and with another reference measure, we measured the relative wind speed 75cm away (on the side) from a car travelling at various speeds, between 25km/h and 50km/h. Here, we were surprised to find that our reference anemometer indicated a much higher speed than that of the car, while the Renesas sensor always indicated a lower speed. The most likely explanation is that the airflow around the car is more turbulent than we anticipated, amplifying the measure on the propeller anemometer we used as a reference. The Renesas sensor, on the other hand, being very small and highly directional, seems to underestimate the average speed when the airflow is not perfectly laminar and long-linear with the sensor alignment.
Conclusion
This little Renesas FS3000 sensor seems to us to be an interesting solution, thanks to its small size and reasonable price, for ensuring the stability over time of a ventilation system. On the other hand, unless you have a reasonable knowledge of fluid dynamics - which we don't - it is probably difficult to obtain a credible quantified measure with this type of sensor.