prunkdump / arduino-variometer

Arduino based variometer with accelerometer, screen, gps and sdcard code
GNU General Public License v3.0
84 stars 40 forks source link

BMP280 #7

Closed Hasi123 closed 5 years ago

Hasi123 commented 7 years ago

Hi,

Thanks for sharing your project. I have a suggestion for you: You could try to implement the Bosch BMP280 barometer sensor. It is much cheaper, than the MS5611 and has almost the same performance.

prunkdump commented 7 years ago

Yes you're right, this need to be added to the project !

Even if I think that the BMP280 does not really have almost the same performance than the ms5611.

I contact you when I have found the time to work on it.

Thanks !

Baptiste.

Hasi123 commented 7 years ago

I made a quick and dirty adaptation for the BMP280 using Adafruit's library. It works, but is probaby very inefficient. https://github.com/Hasi123/arduino-variometer

Hasi123 commented 7 years ago

I changed Adafruit's library to use your fastwire communication.

prunkdump commented 6 years ago

Hello Hasi !

I'am really sorry ! I accidentally removed watching on this issue so GitHub don't send me emails when you put your comments.

I checked you work and it seems good ! Have you tried in flight ?

The only problem is that you feed the Kalman filter each time you get a new value from the accelerometer, regardless of if you have a new value from the barometer.

When I have some times, I will try to adapt you code.

Thanks you for the help !

Hasi123 commented 6 years ago

Since I have a broken leg, I cannot test it in flight yet. As soon as I`m able, I will test it.

Hasi123 commented 6 years ago

Finally I can fly again and was able to test the vario. It worked quite well even with my faulty Code. It would be nice to see it implemented with your routine with the interrupts.

As far as I understand you take a reading from the Barometer as fast as possible using timer interrupts and if the new value arrives, you feed it into the kalman filter. Am I right? I might try to do it myself...

Hasi123 commented 6 years ago

So new update: I read through the BMP280 datasheet and the sensor reads the pressure at a stable frequency internally in normal mode, so there is no need to use timers. I changed the BMP280's settings a bit to better suite our application.

edit: I'm not sure how long the I2C reads and the calculations take. This could be run on the timer if it is a limiting factor.

edit2: So I did some measurements of how long what takes and here are my results:

I think I will build a version with the MPU6500 (the only compatible MPU, that supports 1.8V) that runs on 2 AAA cells at 1Mhz. It should be good for about 200 hours.

Hasi123 commented 6 years ago

Finally I could test the vario in thermally conditions and it works like a charm! I did a 30km flight in the middle of november. It is very accurate and does not suffer from sudden pressure changes due to an increase or decrease in speed, that I sometimes had with my old homemade vario (only barometer with a low pass filter).

prunkdump commented 6 years ago

That's great !!!

I have just ordered a BMP280 board to improve the code with you.

The BMP280 have multiple modes. The only drawback of using the "continous" mode is that it consume more energy.

When I have the time to work on It I will sent to you a version of the code with timers interrupts. So you can compare the two versions.

I'm also very interested by you 1.8V setup !

Good job !

Baptiste.

m00nsp3ll commented 5 years ago

bmp280 have also temperature sensor on it, it could be useful to implement temperature data into vario if bmp280 usage is possible

Hasi123 commented 5 years ago

The temperature data from the barometer is actually used to compensate altitude readings with both the ms5611 and the BMP280.

It would be interesting to test the BMP388, because it has even more resolution and accuracy than older sensors...

prunkdump commented 5 years ago

The code now support the BMP280 barometer.

Thanks for the report.