劉慶鵬,付明陽,于雨,惠力,魯成杰
(齊魯工業大學(山東省科學院)山東省科學院海洋儀器儀表研究所,山東 青島 266100)
海流計是測量海水流速流向的儀器,依測量原理不同,目前有機械海流計、電磁海流計和聲學多普勒海流計三種類型[1]。機械海流計雖然結構設計較簡單,但是價格實惠,性能可靠且使用更為方便,現在仍被廣泛應用在海洋觀測剖面浮標(Argo浮標)[2]、錨定資料浮標、潛標、自動觀測站臺和調查船[3]等很多場合,使用量占海流計總量的一半以上。目前,國外的機械海流計已進入了中國市場,如挪威的安德拉RCM系列海流計[4]等,雖然性能優異,但價格昂貴。中國海洋大學研制的SLC9-2型機械海流計代表了當前國內機械海流計的發展水平,至今仍在我國廣泛使用,但是存在測流精度不高,無法測量低流速的問題。由于機械海流計不能測量三維流速,且測量數據單一,實用性大為下降,有必要開發可拓展的能夠測量不同海流層流速流向的機械海流計測控模塊,以提高其性能。本文利用高性能、高可靠性的控制局域網絡(controller area network,CAN)總線技術,以STM32F103RCT6芯片為核心設計了機械海流計測控模塊,使用幾個該模塊連接在不同的海流層,可以采集不同海流層的信號,并且進行數據輸出控制與遠程傳輸。
海流計的總體結構由水上接收機和水下探測模塊節點組成,接收機通過CAN總線和水下探測節點模塊相連,需要時可以把接收到的數據通過接口電路傳給上位機進行處理。機械海流計總體框圖如圖1所示。

圖1 機械海流計總體設計框圖Fig.1 General design block diagram of mechanical current meter
水下探測控制模塊以STM32F103RCT6芯片為控制核心,主要由最小系統電路、CAN總線接口電路、流速測量電路、流向測量電路等組成。該測控模塊的系統結構框圖如圖2所示。

圖2 水下探測模塊節點框圖Fig.2 Node block diagram of underwater detection module
測控模塊主要功能如下:
(1)具備流速測量功能和流向測量功能;
(2)具備CAN總線通信功能;
(3)具備遠程設置模塊的CANID、波特率等參數的功能。
系統工作流程如下:上位機發出控制指令,測控模塊接收指令后產生中斷接收CAN總線數據幀,并按照數據幀的類型執行相應的操作。當模塊接收到參數設置幀時,模塊設置系統參數并把參數值存入SD卡中;當接收到傳輸數據幀的指令時,該測控模塊進行流速與流向數據的采集工作,并將數據傳輸到CAN總線網絡上,最后傳給上位機。
主控制器的核心控制芯片使用意法半導體(ST)公司的F103系列的低功耗高性能芯片STM32F103RCT6。該芯片是ST公司推出的32位ARM架構微處理器,采用Cortex-M3內核,工作頻率為72 MHz,還包含兩個集成電路總線(inter-integrated circuit,I2C)、三個串行外設接口(serial peripheral interface,SPI)、一個安全數字輸入輸出卡(secure digital input and output,SDIO)和一個CAN,考慮系統成本和系統綜合性能,此芯片符合該測控模塊的具體要求[2]。
最小系統電路包括BootLoader啟動電路、供電電路、復位電路、時鐘晶振電路和SW調試電路。由外接的8 MHz的晶振構成時鐘電路,為系統提供時鐘信號;供電電路采用低壓降穩壓芯片ASM1117-3.3,將外部提供的5 V電壓轉為供給STM32核心芯片的3.3 V電壓;采用RC電路對芯片上電復位。最小系統電路如圖3所示。

圖3 最小系統電路圖Fig.3 Circuit diagram of minimum system
STM32F103RCT6內嵌了CAN控制器,支持CAN協議2.0A和2.0B。CAN收發器采用廣州金升陽公司的TD301MCAN模塊,采用3.3 V電源供電。CAN總線收發模塊不僅包含CAN收發器的收發數據的功能,還具有電源隔離、信號隔離和總線保護功能。該模塊主要負責把CAN控制器的邏輯電平轉化CAN總線傳輸的差分電壓。為防止電源電壓不穩造成瞬態電壓干擾,在電源和地之間接了一個瞬態電壓抑制二極管(TVS),同時為了防止靜電ESD干擾CAN總線數據傳輸,在CANH與CANL之間跨接了兩個瞬態電壓抑制二極管。為了實現低功耗設計的目的,在CAN 收發器接口的電源端加上了一個PMOS管,當需要向接收機發送數據時,SWITCH口提供高電平,Q1導通,給收發器供電,以這種方式實現加電控制。CAN總線接口電路具體如圖4所示。

圖4 CAN總線接口電路Fig.4 CAN bus interface circuit
流速測量方案中海流計機械轉子轉速由低功耗、高穩定度的霍爾器件A1104E進行檢測,檢測轉速是在海流計機械轉子上貼上等距的4塊磁鋼[5]。根據霍爾效應,當旋轉的磁鋼轉至霍爾元件的瞬間,會在霍爾元件的兩端產生一個電勢差,從而在其輸出端產生一個脈沖信號,再通過STM32的定時器及計數器記錄[6]設定時間t內的脈沖個數N,由此可得單位時間內的脈沖數n。
(1)
海流計標定時,在測量范圍0.02~6.50 m/s內,每隔0.50 m/s測定一次流速與n的關系,這樣可得到標定系數表,詳見表1。

表1 標定系數表
由此可計算得到海流流速v與脈沖個數n之間的多項式擬合系數ai。
v=a0+a1n+a2n2+a3n3+…+aini。
(2)
實際使用中,系數取到三次方項,即使用下述公式(3)由STM32測得的n值計算流速v。
v=a0+a1n+a2n2+a3n3。
(3)
流速測量的流程圖如圖5所示。

圖5 流速測量流程圖Fig.5 Flowchart of current velocity measurement
流向測量電路采用三軸磁阻傳感器HMC5883L測量三維磁強計數據,其感應到的X軸方向的磁場強度Hx與Y軸的磁場強度Hy的矢量和為地磁場水平分量HN。地磁場水平分量HN與X軸的夾角即為方位角[7]。采用三軸加速度計和三軸陀螺儀組件MPU6050測量三維加速度A和三維陀螺儀數據G,采用四元數法進行數據融合后對三軸磁阻傳感器數據作傾角矯正,最后將方位角數據傳輸到CAN總線網絡上同時記錄到SD卡中。姿態解算電路如圖6所示。

圖6 姿態解算電路圖Fig.6 Schematic of attitude solution
測控模塊采用Kingston公司生產的4G SD卡 作為存儲設備,SD卡通過SDIO接口與芯片連接。其接口電路見圖7。

圖7 SD卡接口電路Fig.7 SD card interface circuit
機械海流計測控模塊的軟件分為水上接收機軟件、水下探測器數據采集模塊和CAN總線通信模塊[8]。水上接收機軟件主要負責數據的接收、存儲、顯示和人機交互,并在需要時通過接口電路將數據傳輸給上位機處理。水下探測器數據采集模塊主要負責流速和流向的數據采集,并將采集到的數據進行處理后傳輸到CAN總線網絡上。CAN控制器初始化函數、CAN幀發送函數和CAN幀接收函數一起構成CAN總線通信模塊。
水上接收機軟件主要負責數據的接收、存儲、顯示和人機交互,并在需要時通過接口電路將數據傳輸給上位機處理。具體的軟件流程如圖8所示。

圖8 接收機軟件流程圖Fig.8 Software flowchart of receiver
流速流量采集模塊最主要的任務是采集機械轉子轉速并轉換為相應的流速,采集測控模塊的三維姿態數據并通過四元數法矯正姿態得到流向。接收到上位機發送的采集數據指令后,進入數據采集流程:STM32核心芯片定時60 s,計數器開始累計脈沖數,60 s后可知脈沖采集數量并采集一次方位角信息;采集后的信息進入單片機處理得出最終的流速和流向數據,加時間戳后發送到CAN總線網絡并存儲到SD卡中。數據采集流程圖如圖9所示。

圖9 數據采集流程圖Fig.9 Flowchart of data acquisition
協議是網絡通信的關鍵。本設計使用的是具有11位標識符的標準幀,其中高4位代表幀類型,低7位對模塊ID進行標識。CAN總線協議幀類型(FT)規定了4種類型的協議幀,占4位,00代表參數有參數設置幀,01代表讀取數據幀,10代表數據幀,11代表故障幀。幀類型后面是數據長度碼(DLC),占4位,表示數據長度字節數。具體協議格式如圖10所示。

圖10 CAN總線通信協議說明Fig.10 CAN bus communication protocol description
CAN總線初始化的目的主要是設置CAN總線工作時的參數,初始化的內容包括CAN控制器硬件使能、CAN控制器復位、設置總線波特率、初始化中斷、選擇工作模式等。具體流程如圖11所示。

圖11 CAN總線初始化流程圖Fig.11 CAN bus initialization flowchart
CAN幀發送函數通過將已經打包完畢的CAN幀發送到CAN總線上來實現數據的發送[9]。CAN幀打包完畢后進入發送函數流程:第一步,判斷是否有空閑的發送緩沖區,若沒有則返回失敗;若有則進一步選擇空閑的緩沖區,然后啟動發送命令,進而返回成功,啟動發送將CAN幀發送到CAN總線網絡。CAN發送函數的程序流程如圖12所示。

圖12 CAN發送函數程序流程圖Fig.11 Flowchart of CAN sending function program
CAN幀接收函數以中斷方式調用以提高系統效率[10]。從CAN總線網絡收到CAN幀數據,觸發接收中斷,進入讀取CAN接收緩沖區流程:首先判斷接收緩沖區中是否有需要接收的CAN幀數據,若沒有數據則標志緩沖區沒有數據幀并返回;若判斷接收緩沖區內有數據則讀出該數據幀,并標志數據有效,最后返回。見圖13。

圖13 CAN接收數據函數流程圖Fig.13 Flowchart of CAN receiving data function
經過多次海上試驗,得到本文設計測控模塊的性能參數,如表2所示。

表2 測控模塊主要性能參數
中國海洋大學研制的SLC9-2型機械海流計是目前國內機械海流計領域的性能代表,本測控模塊與SLC9-2的對比表詳見表3。由表3 可以看出,設計的測控模塊具有流向測量精度高、流速測量范圍大、重量輕等優點,并且采用電纜供電相比更換電池能測量更長的時間。經測算,設計模塊的平均功率為290 mW,低于SLC9-2型機械海流計的300 mW。

表3 測控模塊與SLC9-2性能對比
本文在分析當前機械海流計的基礎上對其測控模塊進行了重新設計和提升,選用低功耗的控制芯片和外圍器件,并對CAN收發器件進行加電控制,降低了系統功耗。
通過與SLC9-2型海流計電路性能對比可知,本文設計的測控模塊具有流向測量精度高、流速測量范圍大、質量小、功耗低、啟動流速低等優點。并且該模塊實現方法簡單,節點擴展非常方便,通過CAN總線連接能夠完成對不同海流層流速和流向的測量,提高了測量的靈活性,具有較強的實用價值。由于沒有對海流計的機械結構進行改進,因此該設計還存在在淺水域工作不穩定的缺點。在之后的工作中,將對機械結構進行優化設計,以達到更好的測量效果。