栗克國(guó),李志飛,劉瑞恒
(1.交通運(yùn)輸部天津水運(yùn)工程科學(xué)研究院,天津300456;2.天津水運(yùn)工程勘察設(shè)計(jì)院,天津300456)
水位測(cè)量是模型試驗(yàn)和工程應(yīng)用中最重要的一項(xiàng)工作,在河道、航道、港池、水槽等模型試驗(yàn)中,實(shí)時(shí)精確的水位數(shù)據(jù)的模型試驗(yàn)需要的基本參數(shù),也是模型試驗(yàn)過(guò)程控制的重要依據(jù)之一。傳統(tǒng)的模型水位測(cè)量?jī)x器,如探針?biāo)粌x、跟蹤式水位儀、電容式水位儀、壓力式水位儀、浮子式水位儀、超聲水位儀等一般都不能同時(shí)滿(mǎn)足實(shí)時(shí)、精確及高可靠性要求[1]。應(yīng)用于原型觀測(cè)的水位測(cè)量設(shè)備,如雷達(dá)水位儀、氣泡水位儀等,不僅尺寸體積較大難以應(yīng)用在模型試驗(yàn),而且測(cè)量精度亦難以滿(mǎn)足模型試驗(yàn)需要。
隨著技術(shù)進(jìn)步,水位儀作為水位測(cè)量工具,越來(lái)越向著高精度、高可靠性、智能化、無(wú)線化方向發(fā)展。
NB-IOT 技術(shù)是物聯(lián)網(wǎng)技術(shù)的一種,其專(zhuān)注于低功耗廣覆蓋、是一種可在世界范圍內(nèi)廣泛使用并推廣的新技術(shù)。具有功耗小、連接點(diǎn)多、覆蓋面積廣、傳輸速率低、消耗成本低、易于優(yōu)化架構(gòu)等特點(diǎn),在車(chē)聯(lián)網(wǎng)、智慧水利、智能家居等領(lǐng)域應(yīng)用中嶄露頭角[2-3]。
結(jié)合模型試驗(yàn)水位測(cè)量需求及現(xiàn)有設(shè)備特點(diǎn),本文設(shè)計(jì)了基于STM32 及NB-IOT 的超聲跟蹤式水位儀,通過(guò)滾珠絲杠帶動(dòng)超聲傳感器的結(jié)構(gòu),將滾珠絲杠和超聲傳感器聯(lián)合使用,在保證短距超聲傳感器采集精度的基礎(chǔ)上,使用滾珠絲杠擴(kuò)展總體測(cè)量量程,實(shí)現(xiàn)高精度較大量程的模型試驗(yàn)水位自動(dòng)測(cè)量。通過(guò)引入NB-IOT 模塊,實(shí)現(xiàn)了水位數(shù)據(jù)的無(wú)線傳輸和多臺(tái)設(shè)備的無(wú)線組網(wǎng)。測(cè)試表明,本傳感器測(cè)量精度可達(dá)0.2 mm,能夠滿(mǎn)足模型試驗(yàn)高精度水位數(shù)據(jù)采集需求。
超聲跟蹤水位儀,包含以STM32F103C8T6 MCU為核心的控制單元、以集成式步進(jìn)電機(jī)及滾珠絲杠為核心的運(yùn)動(dòng)單元、以UNCK_9114 為前端傳感器的測(cè)量單元、以NB 模塊為核心的通信單元等,產(chǎn)品結(jié)構(gòu)如圖1所示。
圖1 產(chǎn)品結(jié)構(gòu)圖Fig.1 Product structure diagram
應(yīng)用時(shí),將水位自動(dòng)測(cè)量?jī)x安放在待測(cè)水體上方,控制單元控制步進(jìn)電機(jī)帶動(dòng)導(dǎo)向桿及超聲傳感器向下運(yùn)動(dòng),并實(shí)時(shí)讀取超聲傳感器采集數(shù)據(jù)和滑塊的位置數(shù)據(jù),當(dāng)水面到傳感器的距離達(dá)到傳感器量程2/3 時(shí),關(guān)停步進(jìn)電機(jī),并以傳感器采集到的原始值加上滑塊到水位儀零點(diǎn)的距離作為當(dāng)前水位值進(jìn)行輸出。在連續(xù)測(cè)量過(guò)程中,不斷監(jiān)測(cè)并計(jì)算當(dāng)前水位值及水位變化率,MCU 微控制器根據(jù)水位變化動(dòng)態(tài)調(diào)節(jié)點(diǎn)擊運(yùn)動(dòng),保證傳感器到水面距離在傳感器有效量程內(nèi)。
傳感器的硬件原理框圖如圖2所示,以STM32F103C8T6 為主運(yùn)算控制器,UNCK_9114 為超聲傳感器,步進(jìn)電機(jī)為執(zhí)行單元,外擴(kuò)電源管理、NB 通信、OLED 顯示、Flash 存儲(chǔ)、鍵盤(pán)等功能。
圖2 硬件原理框圖Fig.2 Hardware block diagram
控制單元以STM32F103C8T6 MCU 為核心,通過(guò)外圍電路實(shí)現(xiàn)2 路RS485 接口,1 路RS232 接口,1 路SPI 接口Flash 存儲(chǔ),1 路OLED 接口,2 路數(shù)字量輸出,3 個(gè)鍵盤(pán)接口,1 個(gè)數(shù)字量輸入接口,1路電池電壓監(jiān)測(cè),1 個(gè)電源控制接口。
系統(tǒng)設(shè)計(jì)支持鋰電池供電,通過(guò)DCDC 模塊進(jìn)行電壓轉(zhuǎn)換,實(shí)現(xiàn)更高效率電源管理。
控制單元的2 路RS485 接口,1 路接步進(jìn)電機(jī),用于控制電機(jī)運(yùn)動(dòng),1 路預(yù)留為對(duì)外通信端口。
1 路RS232 接口,與UNCK_9114 超聲傳感器接口連接,用于讀取超聲傳感器狀態(tài)及數(shù)據(jù)。
1 路SPI 接口與Flash 存儲(chǔ)器連接,用于存儲(chǔ)儀器配置信息及水位信息。
1 路OLED 接口用于連接OLED 顯示屏,顯示儀器狀態(tài)及實(shí)時(shí)數(shù)據(jù)。
兩路數(shù)字量輸出接口,其中1 路連接外部指示燈,通過(guò)不同燈光狀態(tài)指示儀器運(yùn)行情況,1 路為內(nèi)部指示燈,指示詳細(xì)運(yùn)行狀態(tài)。
3 個(gè)鍵盤(pán)接口,組成組合式鍵盤(pán),實(shí)現(xiàn)人機(jī)交互功能。
1 個(gè)數(shù)字量輸入接口,用于連接觸水信號(hào)指示器,輔助判斷水位計(jì)探頭距離水面距離。
1 路電池電壓監(jiān)測(cè)接口,用于監(jiān)測(cè)系統(tǒng)電量;1個(gè)電源控制接口,用于實(shí)現(xiàn)系統(tǒng)按鍵操作開(kāi)關(guān)機(jī)功能。
圖3為控制單元MCU 部分電路圖。
圖3 控制單元MCU 部分電路圖Fig.3 MCU circuit diagram of control unit
集成式步進(jìn)電機(jī)位于儀器頂端,通過(guò)聯(lián)軸器與滾珠絲杠連接,可帶動(dòng)滾珠絲杠轉(zhuǎn)動(dòng),滾珠絲杠上滑塊可在絲杠帶動(dòng)下上下移動(dòng),滑塊上固定有導(dǎo)桿,導(dǎo)桿下端安裝超聲傳感器,至此,超聲傳感器可在電機(jī)帶動(dòng)下經(jīng)由絲杠和導(dǎo)桿上下移動(dòng)。
為保證滑塊在設(shè)定范圍內(nèi)移動(dòng),在滾珠絲杠上端和下端分別安裝上限位和下限位,分別與電機(jī)控制器的對(duì)應(yīng)端口連接。
一體式步進(jìn)電機(jī)為一種將控制器、驅(qū)動(dòng)器及電機(jī)集成在一體的一體化設(shè)備,其支持RS485 或CAN總線控制,支持ModBus 通信協(xié)議,具有參數(shù)設(shè)置、運(yùn)動(dòng)控制、狀態(tài)監(jiān)測(cè)、報(bào)警等多種指令,可實(shí)現(xiàn)定步長(zhǎng)、定速度、定距離運(yùn)動(dòng)控制。根據(jù)多次試驗(yàn),選擇STM42 系列485 總線步進(jìn)電機(jī),選擇步距角1.8°,工作電流1.7 A,靜力矩3.8 kg·cm。工作時(shí)選擇32細(xì)分。
滾珠絲杠選擇1205 規(guī)格滾珠絲杠,外徑12 mm,導(dǎo)程5 mm。
根據(jù)步進(jìn)電機(jī)特性,步進(jìn)電機(jī)控制誤差不丟步情況下不超過(guò)1 個(gè)步距角,經(jīng)過(guò)滾珠絲杠轉(zhuǎn)換,則運(yùn)動(dòng)單位的定位精度為5 mm/200=0.025 mm,考慮安裝時(shí)控制絲杠與地面垂直,偏差不超過(guò)1°,則由于安裝引起的相對(duì)誤差約為tan1°=0.0175=1.75%,則運(yùn)動(dòng)系統(tǒng)的精度可表示為0.025 mm×(1+0.0175)≈0.0255 mm。
本次設(shè)計(jì)的高精度水位儀,設(shè)計(jì)精度0.2 mm,運(yùn)動(dòng)機(jī)構(gòu)定位精度為0.0255 mm,運(yùn)動(dòng)機(jī)構(gòu)誤差占允許誤差的12.75%,滿(mǎn)足設(shè)計(jì)要求。
圖4為運(yùn)動(dòng)單元3D 側(cè)視圖。
圖4 運(yùn)動(dòng)單元3D 側(cè)視圖Fig.4 3D side view of motion unit
為了達(dá)到0.2 mm 的精度指標(biāo),在傳感器選型中,重點(diǎn)考慮系統(tǒng)精度指標(biāo),鑒于水位變化較快,需要同步考慮傳感器相應(yīng)頻率。
經(jīng)過(guò)試驗(yàn),堡盟公司UNCK09T9114 傳感器具備30 mm~200 mm 測(cè)量范圍,重復(fù)精度0.1 mm,分辨率0.1 mm,響應(yīng)時(shí)間7 ms,聲波頻率380 kHz,內(nèi)置溫度補(bǔ)償。
為驗(yàn)證其實(shí)際精度,在實(shí)驗(yàn)室對(duì)2 個(gè)傳感器進(jìn)行靜態(tài)水位穩(wěn)定性試驗(yàn),試驗(yàn)時(shí)長(zhǎng)24 h,環(huán)境溫度25 ℃±2 ℃,每10 min 采集1 次數(shù)據(jù),共計(jì)采集144組數(shù)據(jù),2 個(gè)傳感器數(shù)據(jù)偏差如圖5所示。
圖5 超聲傳感器穩(wěn)定性試驗(yàn)數(shù)據(jù)Fig.5 Stability test data of ultrasonic sensor
從圖中數(shù)據(jù)可以看出,24 h 內(nèi)傳感器數(shù)據(jù)略有變化,最大變化量0.1 mm,短時(shí)段內(nèi)數(shù)據(jù)變化量0.03 mm,與標(biāo)稱(chēng)精度一致。
儀器設(shè)計(jì)2 種通信方式,內(nèi)部通過(guò)跳線選擇采用何種方式,一種是通過(guò)RS485 口與上位機(jī)通信,一種是使用NB 模塊將數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)云平臺(tái)上。
通信模塊選用上海移遠(yuǎn)通信公司BC95 模塊,其外形尺寸為23.6 mm×19.9 mm×2.2 mm,其集成UART 端口方便與MCU 連接,支持低功耗模式。
Flash 存儲(chǔ)器選用GD25Q32 存儲(chǔ)器,通過(guò)SPI口與MCU 通信。
顯示屏選用中景園電子2.8 寸256×64 OLED模組,具有功耗低、對(duì)比度高,使用方便等優(yōu)點(diǎn)。
供電部分采用12 V 成組鋰電池供電,通過(guò)DCDC 模塊提供步進(jìn)電機(jī)需要的24 V 電源,使用ASM1117-3.3 穩(wěn)壓芯片為傳感器提供3.3 V 電源。
系統(tǒng)軟件使用Keil uVision5 集成開(kāi)發(fā)環(huán)境,使用C 語(yǔ)言開(kāi)發(fā),采用模塊化設(shè)計(jì)方法設(shè)計(jì),主要包括系統(tǒng)初始化、水位檢測(cè)、水位跟蹤控制、人機(jī)交互、狀態(tài)顯示更新、數(shù)據(jù)通信、數(shù)據(jù)采集存儲(chǔ)等功能模塊。
軟件主流程如圖6所示,系統(tǒng)上電后,首先進(jìn)行系統(tǒng)自檢和初始化,從Flash 讀取儀器配置參數(shù),并根據(jù)參數(shù)設(shè)置儀器狀態(tài),初始化完成后控制電機(jī)向上運(yùn)動(dòng)到上限位,重新標(biāo)記儀器零點(diǎn),然后循環(huán)調(diào)用水位跟蹤控制算法控制電機(jī)運(yùn)動(dòng),處理串口響應(yīng)事件、鍵盤(pán)事件、存儲(chǔ)、處理屏幕顯示等。
圖6 主程序流程Fig.6 Main program flow chart
水位跟蹤控制是高精度超聲水位儀能否正常工作的核心模塊,核心思想是通過(guò)實(shí)時(shí)獲取傳感器距離水面高度判斷當(dāng)前水位變化情況,根據(jù)水位變化率決定是否啟動(dòng)電機(jī)調(diào)節(jié),保證在水位大幅度波動(dòng)過(guò)程中保持水面到傳感器探頭距離在傳感器有效量程范圍內(nèi),從而擴(kuò)展儀器測(cè)量范圍。
實(shí)際應(yīng)用時(shí),定義Adjust_motor(u16 water_now,u16 water_last,u32 motor_now,u32 motor_last)函數(shù)實(shí)現(xiàn)水位跟蹤控制功能,該函數(shù)中,根據(jù)4 個(gè)可變參數(shù)(傳感器當(dāng)前數(shù)據(jù),傳感器上次數(shù)據(jù),電機(jī)當(dāng)前位置,電機(jī)上次位置)控制電機(jī)運(yùn)動(dòng)。
該模塊主要流程如下:
(1)比較當(dāng)超聲讀取數(shù)據(jù)是否在調(diào)節(jié)啟動(dòng)閾值內(nèi),如果進(jìn)入控制閾值,則進(jìn)入流程2;
(2)比較電機(jī)位置變化,判斷電機(jī)是否處于運(yùn)動(dòng)過(guò)程中;如果電機(jī)運(yùn)動(dòng)中,則跳轉(zhuǎn)到5,否則進(jìn)入流程3;
(3)根據(jù)當(dāng)前水位與上一次水位計(jì)算水位變化速率,根據(jù)變化速率調(diào)節(jié)電機(jī)運(yùn)動(dòng)距離、運(yùn)動(dòng)速度參數(shù);根據(jù)水位變化方向設(shè)置電機(jī)運(yùn)動(dòng)方向;
(4)根據(jù)3 計(jì)算的參數(shù),控制電機(jī)運(yùn)動(dòng);
(5)返回1 繼續(xù)閉環(huán)循環(huán)。
使用Timer2 作為閉環(huán)控制定時(shí)器,完成傳感器數(shù)據(jù)讀取及水位跟蹤算法計(jì)算,并控制電機(jī)執(zhí)行相應(yīng)動(dòng)作。
NB 通信設(shè)置為透明傳輸工作方式,使用AT 指令配置目標(biāo)地址及參數(shù)。
為驗(yàn)證儀器精度,選用2 臺(tái)樣機(jī)分別進(jìn)行測(cè)試,在玻璃水槽內(nèi)進(jìn)行比對(duì)試驗(yàn),以SCM60 水位測(cè)針作為標(biāo)準(zhǔn)器,分別以10 cm、20 cm、30 cm、40 cm、50 cm、60 cm 6 個(gè)水位值進(jìn)行比對(duì)測(cè)量。測(cè)量數(shù)據(jù)如表1、表2所示。
表1 1 號(hào)精度試驗(yàn)數(shù)據(jù)Tab.1 Accuracy test data of #1
分析表1及表2數(shù)據(jù),兩個(gè)樣機(jī)比對(duì)誤差均在0.1 mm 以下,儀器精度滿(mǎn)足實(shí)際要求。
表2 2 號(hào)精度試驗(yàn)數(shù)據(jù)Tab.2 Accuracy test data of #2
本文通過(guò)軟硬件設(shè)計(jì),研制了一種基于STM32及NB-IOT 的超聲跟蹤水位儀,通過(guò)機(jī)械跟蹤方式擴(kuò)展高精度超聲傳感器量程,集成NB-IOT 技術(shù)實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸,給模型試驗(yàn)水位采集提供了一種新的測(cè)量方式,具有較大的實(shí)用價(jià)值。