I am currently working on a quadcopter with altitude hold feature. For this I need an accurate sensor with around 10cm resolution.
There are some barometric pressure availiable which are small, cheap and have the required accurancy.
I made a comparison between the:
- LPS25H
- MS5611 01b03
- BMP180
- BMP280
I used an Arduino NANO at 16MHz and read all of the sensors at 25Hz. From the datasheets we can get the figures below:
- LPS25H: 24bit ADC, 128 avg, best update rate: 25Hz
- MS5611: 24bit ADC, 4096 osr, best update rate: 50Hz
- BMP180: 19bit ADC, 8 osr, best update rate: 33Hz
- BMP280: 20bit ADC, 16 osr_p, 2osr_t, best update rate: 26Hz
If you use the settings above and you look at the output data you can calculate the effectiv number of bits. To do this I plotted the raw pressure values as binary and look for the constantly changing bits in the data. I only considered 4 consecutive samples to eliminate drifft or changing athmospheric pressur as a factor. Now the resolutions look like this:
- LPS25H: 14bit
- MS5611: 17bit
- BMP180: 14bit
- BMP280: ...
But to be sure which sensor is the best I made an experiment and compared all sensors against each other. In the graph below you can see the result(click to enlarge).
The black line indicates the "true height". All sensors have been filtered with a moving average of 10 samples.
You can see that the MS5611 gives the best results in terms of accurancy. Below you can see a comparison of the standard diviation and the peak to peak values of the sensors
- LPS25H: sigma=60cm, pkpk=2,85m
- BMP180: sigma=35cm, pkpk=1,52m
- BMP280: sigma=14cm, pkpk=0,65m
- MS5611: sigma=12cm, pkpk=0,62m
In terms of computation the lps25h is the best, because it is already temperature compensated. The bmp180 is the worst when we talk about processing power. Because the algorithm to compensated it is quite long.
Thanks for posting this; been looking at pressure sensors for a weather and air quality station. Probably going to just go with the BMP280 or BME280 for price and availability. How did your quadcopter turn out?
AntwortenLöschenThe pressure sensor alone was not enough because it suffered from noise from the motors. So I added a time of flight distance measurment unit vl6180x. With this I can measure the distance to the ground at lift off and compensate the barometer. So as long as I have the time of flight data I compenssate and than the baro is on its own.
LöschenTobias, nice work, thanks for sharing! Did you consider the fact that a precision requirement of 0.1m can be affected by changes in the barometric pressure, that is changes in the weather can affect fligths with longer duration?
AntwortenLöschenMfG aus Kopenhagen
Michael
very helpful thanks for sharing
AntwortenLöschenHello,
AntwortenLöschenVery interesting. Would you provide raw values?
Also, what is the vertical scale of the graph?
Hi Fernand,
Löschensry this is much too long ago. I dont have any data.
The scale is in meters.
Der Kommentar wurde von einem Blog-Administrator entfernt.
AntwortenLöschen