-
Notifications
You must be signed in to change notification settings - Fork 471
Small pressure sensors
In addition to the wonderful world of 9-axis motion sensors there is a 10th degree of freedom commonly added to the other nine: altitude or height. The altitude is measured with a pressure sensor or altimeter, where the absolute pressure is converted to a local (relative) altitude. Like their motion sensing counterparts, pressure sensors have been getting smaller, cheaper, higher in resolution, and easier to use. I want to compare and contrast some relatively new pressure sensors to get an idea of the current state-of-the-art and what these pressure sensors can do. The technology is evolving rapidly, yet the products introduced within the last year make low-power, portable (aka wearable), high-resolution altimetry very easy to achieve. Here is a comparison between three pressure sensors firmly in the portable category:
Table 1 Pressure sensors from Freescale Semiconductor, Measurement Specialties, and ST Microelectronics illustrate what is possible today.
These aren't the only or best choices, but they are representative of offerings from three leading manufacturers and the table illustrates the trade-off users might have to make. I will discuss each attribute. Here is what the packages look like:
The three pressure sensors come in progressively smaller packages.
The three sensors are offered by three different companies, obviously, each with a slightly different philosophy and focus. Let's start by touring the features of the oldest and most popular of the three: the MPL3115A2. The venerable MPL3115A2 has graced the Sparkfun's storefront for years as a breakout board; I bought one myself for one of my very first Arduino projects. It is a capable, easy to use, and inexpensive sensor with wide acceptance and utility. The MPL3115A2 has 20-bit pressure resolution, a 32 sample FIFO (first-in, first-out) storage register, which can be used as a poor man's data logger or, more usually, for data collecting and averaging while the microcontroller sleeps. This pressure sensor was state-of-the-art only a few years ago, but has been superseded by smaller, higher-resolution, and lower-power competitors. Law of the jungle indeed!
Now for a detailed comparison. The range of the three sensors is comparable. The typical terrestrial air pressure is 1000 millibar near sea level. The MPL3115A2 allows much lower pressures as occurs at altitude, and pressure sensors are typically rated for a maximum altitude limited by this lower bound. The MS5637 allows for both much lower and much higher pressures. One may wonder where on Earth one might encounter such extremes, but this sensor has a variety of industrial uses where such pressures might be encountered, as well as having a much higher maximum altitude than either of the other two. This means this sensor could still be accurately measuring pressure in near exo-atmospheric conditions. Amateur space travel anyone?
The resolution shows a more decided difference. This is simply a function of the 20-bit versus 24-bit differences in word length between the MPL3115A2 and the newer sensors. 1000 millibar/2^20 ~0.001 millibar. Whereas 1000 millibar/2^24 ~0.0001 millibar. This is just the sensitivity of the least significant bit (LSB). Actually, because of the way the pressure is calibrated, the LPS25H has an actual sensitivity of 0.0002 millibar. In practice, the sensors have noise, thermal and electrical, that keep them from achieving these very high resolutions, let alone accuracy; at best, they can reach RMS resolutions of about 100 times the intrinsic sensitivity of the devices. More importantly, this word-length difference in resolution or precision carries over to absolute accuracy as well. The MPL3115A2 quotes an absolute pressure accuracy of +/- 4 millibar. Not bad! But the extra four bits of the other sensors and various strategies for data averaging and noise filtering get them to absolute pressure accuracies of +/- 2 millibar for the MS5637 and to the astonishing claim of +/- 0.2 millibar for the LPS25H. These high absolute accuracies rely on hardware filtering and averaging methods unavailable in the MPL3115A2.
I have designed and built breakout boards for all three of these sensors and my subjective opinion is the MS5637 is by far the easiest to design for, build, and to use. The reason is that this sensor has just four connections, with rather large land pads that make reflow soldering a joy. Similarly, there are no interrupts or other extraneous pins to route out of tight spaces. The full functionality of the sensor can be accessed easily despite the somewhat unconventional i2c protocol. The price to pay is a small one; there is no on board FIFO. But the power output of the little sensor doesn't suffer for the lack. More on this later. The MPL3115A2 is in the middle in terms of difficulty of use. It has eight pins and two interrupts. These can be useful for data ready and sleep mode detection, etc. The lands are big enough so that reflow soldering presents no problems. The sensor is rather large compared to the others and this complicates small board design. The LPS25H is the hardest of the three to use simply because it is soooo very small with 10 pin pads to connect and route. It's not quite that bad since several go to GND. But compared to the other two sensors, I found the most challenge in designing a small board with the LPS25H.
The cost in difficulty is repaid manifold by the enhanced capabilities of the LPS25H. It has a 32 sample FIFO of 24-bits each, has an interrupt for data ready, and has a variety of low and ultra-low power modes while maintaining high resolution in the data. A lot of thought went into this sensor targeting low-power, portable (wearable) applications. The compact package is an advantage in use since weight and size as well as power use are all reduced.
Lastly, we come to power use. The standard for comparing power use is the current required at 1 Hz data output rate. The MPL3115A2 claims only 8.5 microAmp in its high-speed, low resolution mode. This is where the least data averaging or filtering is performed so as to minimize device drive current. In the opposite mode, high-resolution, slow speed where significant oversampling and filtering of the data is performed, the maximal current use is 265 microAmps. This is still tiny compared to the 10s of milliAmps typically used in gyroscope or magnetometer operations.
Nevertheless, the MS5637 and LPS25H use between one-half to less than one-tenth of the power of the MPL3115A2 (depending on the mode required) while achieving 16 times better resolution, half or less the package size, and maintaining similar cost.
In my view it is time to replace the MPL3115A2 with one of these two upstarts, and I have begun to do so in my own work. I particularly favor the MS5637 and highly recommend it. But to be fair, I haven't yet had time to give the LPS25H a proper testing. Either of these representatives of the new class of pressure sensor make attractive partners to the three integrated 9-axis motion sensors I use: MPU9250, LSM9DS0, and BMX055.
An example of a small add-on shield for the Teensy 3.1 microcontroller that combines a 9-axis motion sensor (MPU-9250) with the MS5637 pressure sensor.
Here is an example of a sketch that I wrote for the MS5637 that uses all of its capabilities. A similar sketch for the MPL3115A2 can be found here. One for the LPS25H is here.