STM32+MS5611氣壓計測量海拔,IIC方式

氣壓轉海拔的經驗公式,自行搜索《氣壓溫度求海拔高度》《關於大氣壓力與海拔高度經驗計算公式的討論》,這裏貼兩個參考公式:

或者:    也即

https://wenku.baidu.com/view/87130b0d168884868762d67a.html?from=search

硬件連接:

PS引腳決定了MS5611從哪個接口輸出數據,PS拉高代表使用IIC接口,拉低使用SPI接口。

CSB引腳控制MS5611的IIC地址, IIC地址爲0x111011Cx,其中的字符C代表CSB的反相,也即,當CSB拉高時,C爲0;其中的字符X爲讀寫控制bit,讀時X應設爲1,寫時應設爲0,這是IIC一貫的要求,不多說。由於MS5611的地址中,只有一個bit是可控的,系統中同一個IIC總線下最多隻能掛載2個MS5611。

 

注意事項:

1、寫驅動時,一定要參考英文官方原版datasheet,可以用bing英文版搜"MS561101BA03 datasheet",百度搜出的中文版錯誤一堆。氣壓計家族MS5xxx有很多,請確認你下載的數據手冊是MS5611,百度搜出來一個名字是5611,結果下載下來是MS5207。

2、網上有人說,不同的測量頻率下,MS5611測量值會跳動,只能放到嚴格的週期性定時中斷裏去,經過我實測,並沒有出現這個問題。我估計他們遇到的問題可能是,轉換尚未完成,就去讀AD了。按照手冊要求,讀氣壓的標準步驟如下:

(1)從PROM讀出出廠的校準參數C1~C6
(2)①啓動溫度AD轉換-->②讀取AD值-->③啓動氣壓AD轉換-->④讀取AD值-->⑤把兩個AD值按手冊給的公式轉成真實溫度和氣壓。

手冊指出,在不同的過採樣率(OSR)下,所需的AD轉換時間是不一樣的,例如OSR=4096時,耗時9.04ms,也即①->②的間隔一定要>9.04ms,③->④同理。

我採集的結果如下:

計算出的海拔高度,短時波動0.5m,長時間會漂好幾米,用上位機記錄了幾分鐘如下:

上圖局部放大如下(波動0.5m):

晚上室內桌面上靜止測試了14小時(19:00->09:00),每秒採集2次溫度和海拔(氣壓),結果如下:

海拔波動30m

溫度波動2度(溫度波動應該是正常的,畢竟從太陽落山開始溫度就會一直下降)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章