在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MS5837-30BA水深壓力傳感器詳細解讀

廣州工控傳感科技有限公司 ? 2023-06-03 10:33 ? 次閱讀

大家好,我是【廣州工控傳感★科技】MS5837-30BA傳感器事業(yè)部,張工。

MS5837-30BA水深壓力傳感器模塊包括一個高線性壓力芯片和一個低功耗24位ADC,內(nèi)部校準(zhǔn)系數(shù)。提供精確的數(shù)字24位壓力和溫度值以及不同的操作模式,允許優(yōu)化轉(zhuǎn)換速度和電流消耗。高分辨率的溫度輸出允許在沒有任何附加傳感器的情況下實現(xiàn)高度計和溫度計功能。MS5837-30BA可以通過IC總線接口連接到任何微控制器通信協(xié)議簡單,無需對設(shè)備內(nèi)部寄存器進行編程

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F7a86a58bj00rgfw2p00d3d000j900hwp.jpg&thumbnail=660x2147483647&quality=80&type=jpg


MS5837-30BA

一. MS5837-30BA水深傳感器解讀

1.簡介:無人機實現(xiàn)定高飛行要依靠高度數(shù)據(jù),那么水下航行器想要實現(xiàn)定深航行同樣需要垂直方向的位置數(shù)據(jù),也就是深度,我們使用MS5837-30BA這款壓力傳感器來測量水深。關(guān)于MS5837的使用網(wǎng)上有很多教程,其實都不用看,看數(shù)據(jù)手冊就行了,寫得非常非常全面。什么?看不懂英文?好的我已經(jīng)把它翻譯了一遍,可以說是非常非常詳細了,相信我,看了數(shù)據(jù)手冊,就會寫驅(qū)動程序了。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fd48b4abej00rgfw3100cud000j100gsp.jpg&thumbnail=660x2147483647&quality=80&type=jpg


MS5837-30BA

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F07db7703j00rgfzdo00btd000j100ibp.jpg&thumbnail=660x2147483647&quality=80&type=jpg


MS5837-30BA

2. 性能參數(shù)

電氣特性,性能特征等請看手冊,我們只關(guān)注算法

MS5837-30BA可以配置成不同的ADC轉(zhuǎn)換精度,用OSR表示,精度越高轉(zhuǎn)換越慢,下表顯示了不同精度對應(yīng)的轉(zhuǎn)換時間。每次讀ADC轉(zhuǎn)換數(shù)據(jù)前要先發(fā)送轉(zhuǎn)換命令,必須要按照最大的轉(zhuǎn)換時間去寫一個延時,延時時間夠了才能繼續(xù)發(fā)送讀轉(zhuǎn)換完成的數(shù)據(jù),不然數(shù)據(jù)是錯的。比如OSR=4096時轉(zhuǎn)換時間是7.40-9.04,那么延時時間可以設(shè)置成10ms.

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F3d420fecj00rgg0am002cd000l10048p.jpg&thumbnail=660x2147483647&quality=80&type=jpg



3. 典型電路

MS5837使用IIC通訊,典型應(yīng)用電路如下圖。經(jīng)典的IIC通訊電路。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F5b972c09j00rgg0ax001od000hw009rp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



4. 深度數(shù)據(jù)解算算法

(1) 一階算法

數(shù)據(jù)解算算法說明書里給了流程圖

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F0de97170j00rgg0bg009ed000kn00hlp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



翻譯成算法語言:

1) 開始。限定了工作條件,壓力測量值0~ 30Bar,溫度值范圍-20~85℃,參考溫度20℃。這個參考溫度會用到。

2) 從PROM中讀校準(zhǔn)參數(shù)。一共六個值C1-C6,這組值出廠已經(jīng)校準(zhǔn)過了。其物理含義嘛請看英文表述,不懂也沒關(guān)系,我們會計算就行了。后面給了推薦的數(shù)據(jù)類型都為unsigned int16,數(shù)據(jù)位數(shù)16位,數(shù)值范圍0~65536,最后一列是示例值。這組校準(zhǔn)參數(shù)是每次上電后必須從傳感器內(nèi)部的PROM中讀取一次的,這6個數(shù)據(jù)C1-C6后面解算要用。

3)讀數(shù)字壓力D1與數(shù)字溫度和D2,這是MS5837輸出的24位模數(shù)轉(zhuǎn)換值。推薦數(shù)據(jù)類型為unsigned int32。這兩個數(shù)據(jù)是原始數(shù)據(jù),還不準(zhǔn),需要經(jīng)過C1-C6這組校準(zhǔn)參數(shù)去校準(zhǔn)。

4) 計算溫度。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fe7fadb46p00rgg0bu000ed000go0019p.png&thumbnail=660x2147483647&quality=80&type=jpg



好地,到這里讀到校準(zhǔn)后的溫度值了。

5) 計算溫度補償后的壓力。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fff182b6ep00rgg0cg0010d000ga001vp.png&thumbnail=660x2147483647&quality=80&type=jpg



提到了一堆物理命名,不用管,應(yīng)用公式去計算就行了。好的,到這里我們得到溫度補償后的壓力值了。

(2) 二階算法

上面使用的是一階溫度補償算法,說明書里給了二階溫度補償后的算法流程圖:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fe806aa99j00rgg0cs004sd000jc00fxp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



相應(yīng)算法在框圖中表示得很清楚哈,命名都為你命好了。最后得到的結(jié)果就是TEMP2和P2,也就是二階算法計算的溫度和壓力。

5. IIC讀數(shù)據(jù)的寄存器與時序

仔細看看,算法其實很明了,數(shù)據(jù)的類型,命名都按說明書里推薦的來就行了。那么現(xiàn)在我們只關(guān)注怎么去讀數(shù)據(jù),IIC讀數(shù)據(jù)的關(guān)鍵,一是寄存器地址,二是通信時序。 說明書里寫得很詳細。

(1)MS5837命令

MS5837只有5個基本命令:

1、復(fù)位

2、讀取出廠校準(zhǔn)值C1-C6

3、數(shù)據(jù)D1轉(zhuǎn)換(壓力值數(shù)據(jù))

4、數(shù)據(jù)D2轉(zhuǎn)換(溫度值數(shù)據(jù))

5、讀取ADC的轉(zhuǎn)換結(jié)果(24位溫度值與壓力值)

每條I2C通信消息已啟動條件開始,以停止條件結(jié)束。MS5837-30BA地址是1110110x(寫:x=0,讀:x=1)。即寫0xEC,讀0xED.

(2)寄存器地址

寄存器地址在下表給出

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F85cf1c63j00rgg0d8007pd000jw00dtp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



五個命令對應(yīng)的寄存器地址顯示的很詳細了。

1、復(fù)位命令寄存器是0x1E ;

2、讀取出廠校準(zhǔn)值C1-C6,看最后一欄,bit4-bit6為000-111,C1-C6對應(yīng)的地址為0xA2-0xAC;

3、數(shù)據(jù)D1轉(zhuǎn)換(壓力值數(shù)據(jù)),注意這是個寫命令。這里不同的精度對應(yīng)地址不一樣,對應(yīng)選擇就行,比如OSR=4096,地址為0x48;

4、數(shù)據(jù)D2轉(zhuǎn)換(溫度值數(shù)據(jù)),注意這是個寫命令。這里不同的精度對應(yīng)地址不一樣,對應(yīng)選擇就行,比如OSR=4096,地址為0x58;

5、讀轉(zhuǎn)換結(jié)果,地址0x00.

(3)通信時序

進一步,繼續(xù)看通信時序,這里一步都不能錯,包括有沒有應(yīng)答信號

復(fù)位命令

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Ff0763d37p00rgg0dk001td000jt003op.png&thumbnail=660x2147483647&quality=80&type=jpg



寫代碼的時候按照其時序進行就可以了,示例如下:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Ff4cd7b46p00rgg0dx000qd000jn0023p.png&thumbnail=660x2147483647&quality=80&type=jpg



讀PROM指令(讀校準(zhǔn)系數(shù)C1-C6)

PROM的讀取命令由用戶在復(fù)位后執(zhí)行一次。校準(zhǔn)參數(shù)存儲在7個地址中,占據(jù)112bits的內(nèi)存空間(每個數(shù)據(jù)16位)。讀PROM命令是8bits,返回數(shù)據(jù)16bit(MSB模式,也就是高位在低地址)。PROM讀指令包含兩步,第一步設(shè)置系統(tǒng)進入PROM讀模式,第二步讀返回結(jié)果。

以讀C3為例:寄存器地址0xA0+3*2

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F9a97e41bp00rgg0e7001nd000j7003hp.png&thumbnail=660x2147483647&quality=80&type=jpg



MS5837返回數(shù)據(jù)位16位:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fba9cc4cbp00rgg0eh001hd000fs002kp.png&thumbnail=660x2147483647&quality=80&type=jpg



這一段同樣的,寫代碼的時候按照其時序進行就可以了,注意前面提到了校準(zhǔn)系數(shù)有6個,依次讀六次就行了。示例如下:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F9ec72a1fj00rgg0er002gd000jj007pp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



好的,現(xiàn)在我們會讀PROM中的校準(zhǔn)系數(shù)了。

數(shù)據(jù)D1/D2轉(zhuǎn)換

轉(zhuǎn)換命令用于啟動未補償?shù)膲毫?D1)或未補償?shù)臏囟?D2)轉(zhuǎn)換。經(jīng)過轉(zhuǎn)換之后,使用ADC讀命令,結(jié)果以MSB模式輸出。注意了,每次必須先發(fā)送轉(zhuǎn)換命令,而且需要等轉(zhuǎn)換完成,再發(fā)送讀ADC命令,這樣就能讀到正確的D1或D2數(shù)據(jù)。

比如 分辨率=4096,數(shù)據(jù)類型=D1,

IIC指令啟動壓力轉(zhuǎn)換(地址0x48)

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F689847a0p00rgg0f1001cd000gi003ip.png&thumbnail=660x2147483647&quality=80&type=jpg



讀ADC數(shù)據(jù)

等待10ms等轉(zhuǎn)換完成(轉(zhuǎn)換時間查表),轉(zhuǎn)換完成之后發(fā)送ADC讀命令(0x00)

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fa1067c77p00rgg0fb001id000hp0039p.png&thumbnail=660x2147483647&quality=80&type=jpg



MS5837的返回數(shù)據(jù)為24位:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F8750280ep00rgg0fl001dd000in002dp.png&thumbnail=660x2147483647&quality=80&type=jpg



好的,用代碼表示上面三步的時序

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F54efb5daj00rgg0fv0036d000jg009gp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



好的,現(xiàn)在我們會讀D1和D2了,結(jié)合前面讀到的C1-C6,就可以開心的使用算法流程用一階算法或二階算法計算溫度與壓力了,知道了壓力就可以計算深度了。

二. STM32讀取水深傳感器驅(qū)動程序

經(jīng)過上面的解讀,相信你已經(jīng)啥都會了,現(xiàn)在一起來寫一下驅(qū)動代碼。

建立一個MS5837.h和MS5837.c的文件(IIC的驅(qū)動就略去不貼了,這里我用的IIC0用以與IIC區(qū)分)

MS5837.h文件內(nèi)容:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fb1871857p00rgg0g6000md000ji002hp.png&thumbnail=660x2147483647&quality=80&type=jpg



MS5837.h文件先按照說明書定義一些變量:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F9d482060j00rgg0gh0040d000ji00fnp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



然后添加初始換、復(fù)位、讀數(shù)據(jù)等函數(shù):

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F21c64794j00rgg0gt0055d000jj00frp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



通過調(diào)用 void MS5837_Getdata(float * outTemp, float * outPress)就可以讀到經(jīng)過二階算法解算的溫度與壓力值,當(dāng)然了這個值是絕對壓力值,與大氣壓結(jié)合經(jīng)過計算就能算出深度了。

三. 傳感任務(wù)增加讀水深的應(yīng)用程序

現(xiàn)在我們繼續(xù)封裝,回到我們之前創(chuàng)建的sensor.h和sensor.c文件,在sensor.c文件中添加以下代碼

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2Fcce05e13p00rgg0j5001dd000jc002gp.png&thumbnail=660x2147483647&quality=80&type=jpg



這個地方我人為的給大氣壓賦了一個比正常偏小的值,這樣算出來的深度永遠為正的,對于定深控制是沒有影響的。當(dāng)然了你可以初始化時用MS5837將大氣壓讀出來,再作為測量的大氣壓值。

當(dāng)然了,可以濾一下波,還是滑動平均濾波

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F08f8aa89j00rgg0jf002rd000js007qp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



現(xiàn)在,封裝完畢,來到我們的main函數(shù),在之前創(chuàng)建的 sensor_task中添加讀深度的代碼,更新后如下(建議與上一章對照看)

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0811%2F9238d983j00rgg0jr005pd000ji00fxp.jpg&thumbnail=660x2147483647&quality=80&type=jpg



到這里讀水深的任務(wù)就完成啦。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2552

    文章

    51228

    瀏覽量

    754684
  • 芯片
    +關(guān)注

    關(guān)注

    456

    文章

    50950

    瀏覽量

    424758
收藏 人收藏

    評論

    相關(guān)推薦

    壓力傳感器怎么測試好壞

    詳細介紹如何測試壓力傳感器的好壞,包括測試方法、測試步驟以及測試過程中需要注意的事項。 一、壓力傳感器的工作原理 在深入探討測試方法之前,我們有必要了解壓力傳感器的工作原理。
    的頭像 發(fā)表于 12-26 18:46 ?95次閱讀
    <b class='flag-5'>壓力傳感器</b>怎么測試好壞

    氣體壓力傳感器的種類和特點 氣體壓力傳感器在環(huán)保監(jiān)測中的應(yīng)用

    氣體壓力傳感器的種類和特點 氣體壓力傳感器是一種用于檢測氣體壓力的儀器,廣泛應(yīng)用于各種工業(yè)和環(huán)境監(jiān)測領(lǐng)域。以下是一些常見的氣體壓力傳感器種類及其特點: 1. 壓電式
    的頭像 發(fā)表于 12-09 16:25 ?523次閱讀

    氣體壓力傳感器與液體壓力傳感器的區(qū)別

    在工業(yè)自動化和過程控制中,壓力傳感器是不可或缺的組件。它們能夠測量氣體或液體的壓力,并將其轉(zhuǎn)換為電信號,以便進行進一步的處理和控制。氣體壓力傳感器和液體壓力傳感器雖然在功能上相似,但在
    的頭像 發(fā)表于 12-09 16:23 ?320次閱讀

    壓力傳感器屬于什么類別

    壓力傳感器是一種將壓力信號轉(zhuǎn)換為電信號的傳感器,廣泛應(yīng)用于各種工業(yè)、科研和醫(yī)療領(lǐng)域。本文將詳細介紹壓力傳感器的分類、工作原理、性能指標(biāo)、選型
    的頭像 發(fā)表于 06-19 10:00 ?939次閱讀

    常見的壓力傳感器有哪些

    壓力傳感器是一種將壓力信號轉(zhuǎn)換為電信號的傳感器,廣泛應(yīng)用于工業(yè)、醫(yī)療、科研等領(lǐng)域。本文將詳細介紹常見的壓力傳感器類型、工作原理、性能特點以及
    的頭像 發(fā)表于 06-19 09:58 ?2609次閱讀

    壓力傳感器芯片原理是什么

    壓力傳感器是一種將壓力信號轉(zhuǎn)換為電信號的傳感器,廣泛應(yīng)用于工業(yè)、醫(yī)療、科研等領(lǐng)域。壓力傳感器芯片是壓力傳感器的核心部件,其工作原理和性能直接
    的頭像 發(fā)表于 06-19 09:55 ?1140次閱讀

    壓力傳感器芯片有哪些型號

    壓力傳感器芯片是一種將壓力信號轉(zhuǎn)換為電信號的半導(dǎo)體器件,廣泛應(yīng)用于工業(yè)自動化、醫(yī)療設(shè)備、汽車電子、環(huán)境監(jiān)測等領(lǐng)域。本文將詳細介紹壓力傳感器芯片的分類、工作原理、主要參數(shù)、常見型號及其應(yīng)
    的頭像 發(fā)表于 06-19 09:53 ?1889次閱讀

    機油壓力傳感器怎么測量好壞

    的檢測和維修是非常重要的。本文將詳細介紹如何測量機油壓力傳感器的好壞。 一、了解機油壓力傳感器的工作原理 在進行機油壓力傳感器的檢測之前,我們需要了解其工作原理。機油
    的頭像 發(fā)表于 06-19 09:34 ?893次閱讀

    壓力傳感器分類、原理及型號大全

    壓力傳感器是一種將壓力信號轉(zhuǎn)換為電信號的裝置,廣泛應(yīng)用于工業(yè)、醫(yī)療、科研等領(lǐng)域。本文將詳細介紹壓力傳感器的型號、工作原理、性能參數(shù)、應(yīng)用領(lǐng)域等方面的內(nèi)容。 一、
    的頭像 發(fā)表于 06-19 09:19 ?4025次閱讀

    壓力傳感器原理及應(yīng)用介紹

    壓力傳感器是一種將壓力信號轉(zhuǎn)換為電信號的傳感器,廣泛應(yīng)用于工業(yè)、醫(yī)療、科研等領(lǐng)域。本文將詳細介紹壓力傳感器的原理、分類、性能指標(biāo)、選型原則以
    的頭像 發(fā)表于 06-19 09:18 ?3910次閱讀

    如何選擇壓力傳感器量程?如何選擇壓力傳感器接頭?

    壓力傳感器在實際中的應(yīng)用非常之多,比如電子秤中就有壓力傳感器的身影。為增進大家對壓力傳感器的認識,本文將對壓力傳感器量程的選擇方法、壓力傳感器
    的頭像 發(fā)表于 03-20 08:38 ?1321次閱讀
    如何選擇<b class='flag-5'>壓力傳感器</b>量程?如何選擇<b class='flag-5'>壓力傳感器</b>接頭?

    你了解壓力傳感器壓力技術(shù)嗎?壓力傳感器有哪些使用注意事項?

    壓力傳感器早在很久之前便進入了大眾的視野,因此大家對壓力傳感器并不感到陌生。為增進大家對壓力傳感器的認識,本文將對壓力傳感器壓力技術(shù)、
    的頭像 發(fā)表于 03-17 08:36 ?681次閱讀
    你了解<b class='flag-5'>壓力傳感器</b>的<b class='flag-5'>壓力</b>技術(shù)嗎?<b class='flag-5'>壓力傳感器</b>有哪些使用注意事項?

    壓力傳感器型號及參數(shù) 壓力傳感器分類及用途

    壓力傳感器型號及參數(shù) 壓力傳感器是一種用于測量壓力變化的裝置。根據(jù)不同的應(yīng)用需求,市場上有各種不同類型的壓力傳感器,下面是一些常見的壓力傳感器
    的頭像 發(fā)表于 02-04 15:30 ?7401次閱讀

    壓力傳感器原理及應(yīng)用 壓力傳感器容易壞的原因

    壓力傳感器原理及應(yīng)用: 壓力傳感器是一種能夠?qū)⒈粶y壓力轉(zhuǎn)變成電信號的傳感器。其原理主要是利用壓力荷載物體上的變形或
    的頭像 發(fā)表于 01-24 11:35 ?1713次閱讀

    應(yīng)變式壓力傳感器工作原理 應(yīng)變式壓力傳感器由什么組成

    結(jié)構(gòu)體和信號處理電路三部分組成。下面將詳細介紹應(yīng)變式壓力傳感器的工作原理和構(gòu)成。 應(yīng)變式壓力傳感器的工作原理是利用物體受力后產(chǎn)生的應(yīng)變效應(yīng)來測量壓力的大小。應(yīng)變效應(yīng)是指當(dāng)物體受到外力作
    的頭像 發(fā)表于 01-23 14:21 ?2900次閱讀
    主站蜘蛛池模板: 一区二区三区午夜| 午夜伦y4480影院中文字幕| 欧美在线资源| 欧美日韩国产成人高清视频| 永久看片| 亚洲深夜在线| 天堂网传媒| 免费观看片| 456影院第一| 午夜精品福利视频| 国产亚洲精品线观看77| 狠狠狠狼鲁欧美综合网免费 | 国产小视频在线看| 亚洲最色网| 老师喂我吃她的奶水脱她胸罩| 一卡二卡三卡四卡无卡在线| 婷婷天堂| 亚洲色图综合图区| 色婷婷久久免费网站| 美女三级在线| xxxxbbbb欧美| 日本xxxxbbbb| 国产午夜视频在永久在线观看| 久草资源站在线| 草综合| a资源在线| 亚洲午夜一区二区三区| 亚洲人毛茸茸bbxx| 欧美一区福利| 99国产精品农村一级毛片| 日韩欧美在线第一页| 未满十八18周岁禁止免费国产| 久久国产免费福利永久| 91华人在线视频| 永久免费mv网站入口| 欧美一级欧美三级在线观看| 成在线人视频免费视频| 乱色伦图片区| 热re99久久精品国产99热| 色婷婷视频在线观看| 国产一级特黄|