劉慶鵬,付明陽,于雨,惠力,魯成杰
(齊魯工業(yè)大學(xué)(山東省科學(xué)院)山東省科學(xué)院海洋儀器儀表研究所,山東 青島 266100)
海流計(jì)是測量海水流速流向的儀器,依測量原理不同,目前有機(jī)械海流計(jì)、電磁海流計(jì)和聲學(xué)多普勒海流計(jì)三種類型[1]。機(jī)械海流計(jì)雖然結(jié)構(gòu)設(shè)計(jì)較簡單,但是價(jià)格實(shí)惠,性能可靠且使用更為方便,現(xiàn)在仍被廣泛應(yīng)用在海洋觀測剖面浮標(biāo)(Argo浮標(biāo))[2]、錨定資料浮標(biāo)、潛標(biāo)、自動(dòng)觀測站臺(tái)和調(diào)查船[3]等很多場合,使用量占海流計(jì)總量的一半以上。目前,國外的機(jī)械海流計(jì)已進(jìn)入了中國市場,如挪威的安德拉RCM系列海流計(jì)[4]等,雖然性能優(yōu)異,但價(jià)格昂貴。中國海洋大學(xué)研制的SLC9-2型機(jī)械海流計(jì)代表了當(dāng)前國內(nèi)機(jī)械海流計(jì)的發(fā)展水平,至今仍在我國廣泛使用,但是存在測流精度不高,無法測量低流速的問題。由于機(jī)械海流計(jì)不能測量三維流速,且測量數(shù)據(jù)單一,實(shí)用性大為下降,有必要開發(fā)可拓展的能夠測量不同海流層流速流向的機(jī)械海流計(jì)測控模塊,以提高其性能。本文利用高性能、高可靠性的控制局域網(wǎng)絡(luò)(controller area network,CAN)總線技術(shù),以STM32F103RCT6芯片為核心設(shè)計(jì)了機(jī)械海流計(jì)測控模塊,使用幾個(gè)該模塊連接在不同的海流層,可以采集不同海流層的信號(hào),并且進(jìn)行數(shù)據(jù)輸出控制與遠(yuǎn)程傳輸。
海流計(jì)的總體結(jié)構(gòu)由水上接收機(jī)和水下探測模塊節(jié)點(diǎn)組成,接收機(jī)通過CAN總線和水下探測節(jié)點(diǎn)模塊相連,需要時(shí)可以把接收到的數(shù)據(jù)通過接口電路傳給上位機(jī)進(jìn)行處理。機(jī)械海流計(jì)總體框圖如圖1所示。
圖1 機(jī)械海流計(jì)總體設(shè)計(jì)框圖Fig.1 General design block diagram of mechanical current meter
水下探測控制模塊以STM32F103RCT6芯片為控制核心,主要由最小系統(tǒng)電路、CAN總線接口電路、流速測量電路、流向測量電路等組成。該測控模塊的系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 水下探測模塊節(jié)點(diǎn)框圖Fig.2 Node block diagram of underwater detection module
測控模塊主要功能如下:
(1)具備流速測量功能和流向測量功能;
(2)具備CAN總線通信功能;
(3)具備遠(yuǎn)程設(shè)置模塊的CANID、波特率等參數(shù)的功能。
系統(tǒng)工作流程如下:上位機(jī)發(fā)出控制指令,測控模塊接收指令后產(chǎn)生中斷接收CAN總線數(shù)據(jù)幀,并按照數(shù)據(jù)幀的類型執(zhí)行相應(yīng)的操作。當(dāng)模塊接收到參數(shù)設(shè)置幀時(shí),模塊設(shè)置系統(tǒng)參數(shù)并把參數(shù)值存入SD卡中;當(dāng)接收到傳輸數(shù)據(jù)幀的指令時(shí),該測控模塊進(jìn)行流速與流向數(shù)據(jù)的采集工作,并將數(shù)據(jù)傳輸?shù)紺AN總線網(wǎng)絡(luò)上,最后傳給上位機(jī)。
主控制器的核心控制芯片使用意法半導(dǎo)體(ST)公司的F103系列的低功耗高性能芯片STM32F103RCT6。該芯片是ST公司推出的32位ARM架構(gòu)微處理器,采用Cortex-M3內(nèi)核,工作頻率為72 MHz,還包含兩個(gè)集成電路總線(inter-integrated circuit,I2C)、三個(gè)串行外設(shè)接口(serial peripheral interface,SPI)、一個(gè)安全數(shù)字輸入輸出卡(secure digital input and output,SDIO)和一個(gè)CAN,考慮系統(tǒng)成本和系統(tǒng)綜合性能,此芯片符合該測控模塊的具體要求[2]。
最小系統(tǒng)電路包括BootLoader啟動(dòng)電路、供電電路、復(fù)位電路、時(shí)鐘晶振電路和SW調(diào)試電路。由外接的8 MHz的晶振構(gòu)成時(shí)鐘電路,為系統(tǒng)提供時(shí)鐘信號(hào);供電電路采用低壓降穩(wěn)壓芯片ASM1117-3.3,將外部提供的5 V電壓轉(zhuǎn)為供給STM32核心芯片的3.3 V電壓;采用RC電路對芯片上電復(fù)位。最小系統(tǒng)電路如圖3所示。
圖3 最小系統(tǒng)電路圖Fig.3 Circuit diagram of minimum system
STM32F103RCT6內(nèi)嵌了CAN控制器,支持CAN協(xié)議2.0A和2.0B。CAN收發(fā)器采用廣州金升陽公司的TD301MCAN模塊,采用3.3 V電源供電。CAN總線收發(fā)模塊不僅包含CAN收發(fā)器的收發(fā)數(shù)據(jù)的功能,還具有電源隔離、信號(hào)隔離和總線保護(hù)功能。該模塊主要負(fù)責(zé)把CAN控制器的邏輯電平轉(zhuǎn)化CAN總線傳輸?shù)牟罘蛛妷?。為防止電源電壓不穩(wěn)造成瞬態(tài)電壓干擾,在電源和地之間接了一個(gè)瞬態(tài)電壓抑制二極管(TVS),同時(shí)為了防止靜電ESD干擾CAN總線數(shù)據(jù)傳輸,在CANH與CANL之間跨接了兩個(gè)瞬態(tài)電壓抑制二極管。為了實(shí)現(xiàn)低功耗設(shè)計(jì)的目的,在CAN 收發(fā)器接口的電源端加上了一個(gè)PMOS管,當(dāng)需要向接收機(jī)發(fā)送數(shù)據(jù)時(shí),SWITCH口提供高電平,Q1導(dǎo)通,給收發(fā)器供電,以這種方式實(shí)現(xiàn)加電控制。CAN總線接口電路具體如圖4所示。
圖4 CAN總線接口電路Fig.4 CAN bus interface circuit
流速測量方案中海流計(jì)機(jī)械轉(zhuǎn)子轉(zhuǎn)速由低功耗、高穩(wěn)定度的霍爾器件A1104E進(jìn)行檢測,檢測轉(zhuǎn)速是在海流計(jì)機(jī)械轉(zhuǎn)子上貼上等距的4塊磁鋼[5]。根據(jù)霍爾效應(yīng),當(dāng)旋轉(zhuǎn)的磁鋼轉(zhuǎn)至霍爾元件的瞬間,會(huì)在霍爾元件的兩端產(chǎn)生一個(gè)電勢差,從而在其輸出端產(chǎn)生一個(gè)脈沖信號(hào),再通過STM32的定時(shí)器及計(jì)數(shù)器記錄[6]設(shè)定時(shí)間t內(nèi)的脈沖個(gè)數(shù)N,由此可得單位時(shí)間內(nèi)的脈沖數(shù)n。
(1)
海流計(jì)標(biāo)定時(shí),在測量范圍0.02~6.50 m/s內(nèi),每隔0.50 m/s測定一次流速與n的關(guān)系,這樣可得到標(biāo)定系數(shù)表,詳見表1。
表1 標(biāo)定系數(shù)表
由此可計(jì)算得到海流流速v與脈沖個(gè)數(shù)n之間的多項(xiàng)式擬合系數(shù)ai。
v=a0+a1n+a2n2+a3n3+…+aini。
(2)
實(shí)際使用中,系數(shù)取到三次方項(xiàng),即使用下述公式(3)由STM32測得的n值計(jì)算流速v。
v=a0+a1n+a2n2+a3n3。
(3)
流速測量的流程圖如圖5所示。
圖5 流速測量流程圖Fig.5 Flowchart of current velocity measurement
流向測量電路采用三軸磁阻傳感器HMC5883L測量三維磁強(qiáng)計(jì)數(shù)據(jù),其感應(yīng)到的X軸方向的磁場強(qiáng)度Hx與Y軸的磁場強(qiáng)度Hy的矢量和為地磁場水平分量HN。地磁場水平分量HN與X軸的夾角即為方位角[7]。采用三軸加速度計(jì)和三軸陀螺儀組件MPU6050測量三維加速度A和三維陀螺儀數(shù)據(jù)G,采用四元數(shù)法進(jìn)行數(shù)據(jù)融合后對三軸磁阻傳感器數(shù)據(jù)作傾角矯正,最后將方位角數(shù)據(jù)傳輸?shù)紺AN總線網(wǎng)絡(luò)上同時(shí)記錄到SD卡中。姿態(tài)解算電路如圖6所示。
圖6 姿態(tài)解算電路圖Fig.6 Schematic of attitude solution
測控模塊采用Kingston公司生產(chǎn)的4G SD卡 作為存儲(chǔ)設(shè)備,SD卡通過SDIO接口與芯片連接。其接口電路見圖7。
圖7 SD卡接口電路Fig.7 SD card interface circuit
機(jī)械海流計(jì)測控模塊的軟件分為水上接收機(jī)軟件、水下探測器數(shù)據(jù)采集模塊和CAN總線通信模塊[8]。水上接收機(jī)軟件主要負(fù)責(zé)數(shù)據(jù)的接收、存儲(chǔ)、顯示和人機(jī)交互,并在需要時(shí)通過接口電路將數(shù)據(jù)傳輸給上位機(jī)處理。水下探測器數(shù)據(jù)采集模塊主要負(fù)責(zé)流速和流向的數(shù)據(jù)采集,并將采集到的數(shù)據(jù)進(jìn)行處理后傳輸?shù)紺AN總線網(wǎng)絡(luò)上。CAN控制器初始化函數(shù)、CAN幀發(fā)送函數(shù)和CAN幀接收函數(shù)一起構(gòu)成CAN總線通信模塊。
水上接收機(jī)軟件主要負(fù)責(zé)數(shù)據(jù)的接收、存儲(chǔ)、顯示和人機(jī)交互,并在需要時(shí)通過接口電路將數(shù)據(jù)傳輸給上位機(jī)處理。具體的軟件流程如圖8所示。
圖8 接收機(jī)軟件流程圖Fig.8 Software flowchart of receiver
流速流量采集模塊最主要的任務(wù)是采集機(jī)械轉(zhuǎn)子轉(zhuǎn)速并轉(zhuǎn)換為相應(yīng)的流速,采集測控模塊的三維姿態(tài)數(shù)據(jù)并通過四元數(shù)法矯正姿態(tài)得到流向。接收到上位機(jī)發(fā)送的采集數(shù)據(jù)指令后,進(jìn)入數(shù)據(jù)采集流程:STM32核心芯片定時(shí)60 s,計(jì)數(shù)器開始累計(jì)脈沖數(shù),60 s后可知脈沖采集數(shù)量并采集一次方位角信息;采集后的信息進(jìn)入單片機(jī)處理得出最終的流速和流向數(shù)據(jù),加時(shí)間戳后發(fā)送到CAN總線網(wǎng)絡(luò)并存儲(chǔ)到SD卡中。數(shù)據(jù)采集流程圖如圖9所示。
圖9 數(shù)據(jù)采集流程圖Fig.9 Flowchart of data acquisition
協(xié)議是網(wǎng)絡(luò)通信的關(guān)鍵。本設(shè)計(jì)使用的是具有11位標(biāo)識(shí)符的標(biāo)準(zhǔn)幀,其中高4位代表幀類型,低7位對模塊ID進(jìn)行標(biāo)識(shí)。CAN總線協(xié)議幀類型(FT)規(guī)定了4種類型的協(xié)議幀,占4位,00代表參數(shù)有參數(shù)設(shè)置幀,01代表讀取數(shù)據(jù)幀,10代表數(shù)據(jù)幀,11代表故障幀。幀類型后面是數(shù)據(jù)長度碼(DLC),占4位,表示數(shù)據(jù)長度字節(jié)數(shù)。具體協(xié)議格式如圖10所示。
圖10 CAN總線通信協(xié)議說明Fig.10 CAN bus communication protocol description
CAN總線初始化的目的主要是設(shè)置CAN總線工作時(shí)的參數(shù),初始化的內(nèi)容包括CAN控制器硬件使能、CAN控制器復(fù)位、設(shè)置總線波特率、初始化中斷、選擇工作模式等。具體流程如圖11所示。
圖11 CAN總線初始化流程圖Fig.11 CAN bus initialization flowchart
CAN幀發(fā)送函數(shù)通過將已經(jīng)打包完畢的CAN幀發(fā)送到CAN總線上來實(shí)現(xiàn)數(shù)據(jù)的發(fā)送[9]。CAN幀打包完畢后進(jìn)入發(fā)送函數(shù)流程:第一步,判斷是否有空閑的發(fā)送緩沖區(qū),若沒有則返回失??;若有則進(jìn)一步選擇空閑的緩沖區(qū),然后啟動(dòng)發(fā)送命令,進(jìn)而返回成功,啟動(dòng)發(fā)送將CAN幀發(fā)送到CAN總線網(wǎng)絡(luò)。CAN發(fā)送函數(shù)的程序流程如圖12所示。
圖12 CAN發(fā)送函數(shù)程序流程圖Fig.11 Flowchart of CAN sending function program
CAN幀接收函數(shù)以中斷方式調(diào)用以提高系統(tǒng)效率[10]。從CAN總線網(wǎng)絡(luò)收到CAN幀數(shù)據(jù),觸發(fā)接收中斷,進(jìn)入讀取CAN接收緩沖區(qū)流程:首先判斷接收緩沖區(qū)中是否有需要接收的CAN幀數(shù)據(jù),若沒有數(shù)據(jù)則標(biāo)志緩沖區(qū)沒有數(shù)據(jù)幀并返回;若判斷接收緩沖區(qū)內(nèi)有數(shù)據(jù)則讀出該數(shù)據(jù)幀,并標(biāo)志數(shù)據(jù)有效,最后返回。見圖13。
圖13 CAN接收數(shù)據(jù)函數(shù)流程圖Fig.13 Flowchart of CAN receiving data function
經(jīng)過多次海上試驗(yàn),得到本文設(shè)計(jì)測控模塊的性能參數(shù),如表2所示。
表2 測控模塊主要性能參數(shù)
中國海洋大學(xué)研制的SLC9-2型機(jī)械海流計(jì)是目前國內(nèi)機(jī)械海流計(jì)領(lǐng)域的性能代表,本測控模塊與SLC9-2的對比表詳見表3。由表3 可以看出,設(shè)計(jì)的測控模塊具有流向測量精度高、流速測量范圍大、重量輕等優(yōu)點(diǎn),并且采用電纜供電相比更換電池能測量更長的時(shí)間。經(jīng)測算,設(shè)計(jì)模塊的平均功率為290 mW,低于SLC9-2型機(jī)械海流計(jì)的300 mW。
表3 測控模塊與SLC9-2性能對比
本文在分析當(dāng)前機(jī)械海流計(jì)的基礎(chǔ)上對其測控模塊進(jìn)行了重新設(shè)計(jì)和提升,選用低功耗的控制芯片和外圍器件,并對CAN收發(fā)器件進(jìn)行加電控制,降低了系統(tǒng)功耗。
通過與SLC9-2型海流計(jì)電路性能對比可知,本文設(shè)計(jì)的測控模塊具有流向測量精度高、流速測量范圍大、質(zhì)量小、功耗低、啟動(dòng)流速低等優(yōu)點(diǎn)。并且該模塊實(shí)現(xiàn)方法簡單,節(jié)點(diǎn)擴(kuò)展非常方便,通過CAN總線連接能夠完成對不同海流層流速和流向的測量,提高了測量的靈活性,具有較強(qiáng)的實(shí)用價(jià)值。由于沒有對海流計(jì)的機(jī)械結(jié)構(gòu)進(jìn)行改進(jìn),因此該設(shè)計(jì)還存在在淺水域工作不穩(wěn)定的缺點(diǎn)。在之后的工作中,將對機(jī)械結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計(jì),以達(dá)到更好的測量效果。