Monday 16 May 2011

Component Selection - The pressure sensor

The key to any good vario is a ultra accurate and responsive pressure sensor. Pressure sensors come in many flavors. We want one that is designed to measure barometric air pressure. The integrated digital pressure sensors I am interested in incorporate an analogue sensor, a A/D converter, some kind of digital filter, and a digital interface. These integrated sensor modules greatly simplify measuring pressure. The procedure is pretty simple from an electronics point of view:
  • Provide the sensor power.
  • Interface with the sensor using I2C or SPI from a microcontroller (they all have a few pins for this)
  • Get some config parameters from the sensor.
  • Send commands to do a pressure conversion then read the pressure. 
This last part is the key and provides the measure of effectiveness for the sensor. We want a sensor to convert as quickly as possible (over 5 Hz) and provide the most accurate pressure measurement possible. In all cases there will be a natural 'noise' in the pressure measurements. This is measured as RMS (or standard deviation), in general over 10 measurements.

After a bit of googling I reckon the best pressure sensor modules to use are those from MEAS-SA (they used to be called Intersema). Other sensors from MEAS are used in leading commercial varios. In some cases I think leading vario manufactures do not use integrated modules, preferring to optimise pressure measurement rate and accuracy with their own A/D conversion and filtering. Here are some of the integrated modules: http://www.meas-spec.com/pressure-sensors/board-level-pressure-sensors/altimeter-pressure-sensor-modules.aspx. Of these, the MS5611 looks to be the perfect sensor for vario's. It is marketed by MEAS as a 'Variometer Module', although I am unsure if any paragliding varios are using it yet. It only came out in 2010. The MS5801 also looks good, but it is more expensive and it does not look to offer better performance (but it is weather proof'ish). The MS5611 is probably around $5 at 1000's quantities. Samples should be around $15 each.

The MS5611 should be able to read at about 50 to 100 times a second (depending on the other stuff done by the microcontroller) at a resolution of about 0.012 mBar (which is equivalent to about 10cm change in altitude). If I spit out pressure at 5Hz this will allow me to do some averaging and get even better resolutions. The only problem with this sensor is its availability. As far as I can determine the only way to get it is to order samples through MEAS or from their distributors. This initially posed some challenges for me, but now a few months later I have a source that should work (thanks Rob and Soph!).

When I first looked the only sensor that was easy to get with decent performance was the Bosch BMP085. This is 'widely' available, meaning a number of hobby electronics stores stock it. I got the one with a breakout board from Sparkfun (http://www.sparkfun.com/products/9694). The raw module is about $8.95, I paid a bit more for the breakout one as I knew I would be experimenting on the breadboad.

The BMP085 specs are not as good as the MS5611. I can only measure about 20 times a second, and at this rate the resolution is 0.03 mBar (equivalent to about 25 cm altitude change). Hari Nair has used it in his machines that go ping successfully so I was convinced that it would be good enough.

I looked at other sensors but both of these are in the right cost band and should have good enough performance (their is no better than the MS5611). My approach is to get the BMP 085 for my initial prototypes because it is easy to source, then try to get the MS5611 for my production prototypes and integrate it into the design later. The classic balance of risk, cost and schedule; all in my little project...

Below is a graph comparing the resolution (in meters of altitude equivalent) vs. the time it takes between pressure measurements (in pascals) of the two pressure sensors discussed. With each sensor you can select what level of oversampling you want to trade off between resolution and time.  The information comes from each of the datasheets and has not been verified by me.