摘 要: 針對深海鉆機的使用環境,設計并實現了甲板實時操作鉆機的一款手操器。該手操器由基于STM32F103VCT6微控制器的控制板以及一些外部輸入輸出設備所組成,其與鉆機系統通過串口通信。由于甲板手操器與海底鉆機距離較長,且串口傳輸距離有限,因此以光纖傳輸為中繼。
關鍵詞: 深海鉆機系統;手操器;STM32;串口通信;光纖傳輸
近些年,我國加大了對海洋科考和探測的力度。探測發現,我國的大陸架淺海海底埋藏著非常豐富的石油、天然氣以及煤、硫、磷等礦產資源,并且在多數海盆中廣泛分布著深海錳結核,它們都是擁有巨大潛力的可利用金屬礦產資源[1]。深海鉆機是我國大洋探測地質的重要工具之一,它可以探取幾千米深海海底數十米以下的地質樣品,為地質學家、物理學家的研究工作提供樣品。但是深海鉆機的操作使用并不方便,傳統的上位機常常用鼠標操作,海面上不確定的風浪導致船體搖晃、甲板不穩,并且上位機一般都在船艙內,這樣往往造成操作人員不能直觀地看到鉆機平臺的工作情況,這給鉆機的操作帶來不便,有時更可能產生操作失誤;再加上鉆機的操作進程較為繁瑣,一次作業長達數十個小時,操作人員壓力巨大。如果操作過程中有失誤并且無法及時停止工作,會對鉆機造成傷害。此外,一套手操器只針對一個應用場合會造成設備的重復和浪費。本文介紹的基于STM32的甲板手操器系統可以應用于多種場合的多種器械的手動控制,并且可以降低計算機操作產生的錯誤率。
1 系統工作原理
甲板手操器的工作模擬圖如圖1所示。甲板手操器系統包括操作控制模塊和數據通信模塊。甲板鉆機操作人員參考監測到的數據來對鉆機執行既定的操作,單片機判斷執行的按鍵、搖桿發出相應的指令,指令將顯示在液晶屏上并通過光端機經光纜發送至水下鉆機執行作業。鉆機操作將全部存入手操器的SD卡日志存檔中。
2 系統硬件描述
2.1系統核心板
由于核心板需要實現4路A/D采樣、90余個掃描按鍵輸入、TFT顯示屏輸出和SD卡的存取,并且需要足夠大的Flash來存放90余個按鍵輸出的控制量及其延時,故手操器的核心板選擇了ST公司生產的STM32F103VCT6微控制器(MCU)。該芯片有高達72 MHz的主頻,并且內置256 KB的Flash,多路的A/D轉換,USART通信來滿足手操器與海底主控系統的通信,且滿足多按鍵、大容量、高速度的需求。手操器核心板結構圖如圖2所示。
2.2 SD卡工作方式
STM32與SD卡之間的通信方式有SDIO和SPI兩種。由于對速度要求不是特別高,因此相互對比下最終使用了SPI方式。STM32提供了3個SPI接口,所以經過簡單的配置就可以直接使用SPI功能外設模塊,如果沒有SPI功能,則需要用軟件模擬SPI協議。
SPI總線系統是一種高速同步的串行外設接口,它可以使MCU和各種外圍設備以串行的方式進行通信交換信息。它可以節省I/O端口,以提高外設的數目和系統的性能。SPI接口是在CPU與外圍低速器件之間進行同步、串行傳輸,在主器件的移位脈沖下,數據按位來傳輸,SPI接口不需要尋址操作,并且為全雙工通信,顯得十分簡單高效,而且速度可達到幾Mb/s[2]。
SPI接口是以主從方式工作的,這種模式通常有一個主器件和一個或多個從器件,其接口包括以下4種信號:MOSI主器件數據輸出,從器件數據輸入;MISO主器件數據輸入,從器件數據輸出;SCLK時鐘信號,由主器件產生;CS片選信號,由主器件控制。
STM32F103VCT6有3個SPI通道,本設計中選用了SPI1作為SD卡的通信接口,其引腳連接如圖3所示。其中卡檢測電路包括兩部分:(1)卡是否完全插入到卡座中;(2)卡是否寫保護。其檢測信號由卡座的兩個引腳以電平的方式輸出。當卡插入到卡座并且插入到位時,圖3中的第11腳由于卡座內部觸點連接到接地,故輸出低電平;當卡拔出時,該引腳由于上拉電阻R12的存在,輸出高電平。卡是否寫保護的檢測同檢測卡是否完全插入的原理基本相同。為了方便文件和數據的存取以及在PC上的修改與讀取,本設計還在STM32中移植了FATFS文件系統[3]。
2.3 液晶顯示屏
本設計中LCD屏選擇TFT-LCD24TP,LCD控制芯片選擇為ILI9325。因為硬件已經固化好,所以ILI9325必須采用SPI的接口。本設計中SD卡占用了STM32的SPI1接口,所以顯示屏接口就選SPI2。
其中時鐘信號的相位與極性是很重要的,它決定了輸出信號捕捉到的數據是從第幾個開始生效的。主要是時鐘相位設置,當CPHA位被置“1”時,SCK在第二個邊沿進行采樣;如果已經設置了在第二個邊沿采樣,第一個有效數據很有可能會丟掉,故一定要確定是否是第一位數據有效。這樣,數據會在第二個時鐘的邊沿被鎖存[4]。如果CPHA被置位為“0”,那么SCK在第一個邊沿被采樣,數據會在第一個時鐘被鎖存。不同時鐘相位下的總線數據傳輸時序如圖4、圖5所示。
顯示屏的成品模塊為34針插口,PB10為片選信號輸入,PB13、PB14和PB15分別為SPI2對應的SCLK、MISO和MOSI。
2.4 按鍵掃描方式
考慮到按鍵較多,且要便于擴展使用,故按鍵的采集方式采用了矩陣掃描的方式,此方式能最大程度地利用I/O口。本設計采用的是13×8的矩陣,首先將I/O口PD0~PD12設為矩陣的13行,模式為推挽輸出;將I/O口PE1~PE8設置為矩陣的8列,模式為下拉輸入。
PD0~PD12端口輸出寄存器ODR置“1”,各個端口逐行產生高電平,接著檢測PE1~PE8的端口輸入寄存器IDR。如果檢測到非“0”位,經過延時排除按鍵抖動后繼續檢測;如果依然存在非“0”位,則進行按鍵值的判斷;如果經過延時后沒有檢測到IDR寄存器中有非“0”存在,則返回。
2.5 搖桿輸入
此手操器設計為兩個搖桿輸入,搖桿選擇為二維雙軸輸入。主要原理為搖桿在縱軸與橫軸上的位移導致兩邊的電位器變化,從而產生不同的輸出電壓。搖桿的工程圖如圖6所示。
使用時,將電位器接入電源(電源電壓為0~3 V之間,否則可能燒毀MCU),電位器中間的輸出引腳分別接至單片機的I/O口。上電控制搖桿時,兩側的兩個電位器會產生不同的電壓值,電壓值由I/O口采集到STM32的A/D處理器計算出相應的電壓值。根據兩個電位器的電壓值來判定。
STM32F103擁有3個12位A/D轉換器,其既可以獨立使用,也可以采用雙重模式來使用,這樣可以提高采樣頻率。它有18個通道來測量16個外部信號源和兩個內部的信號源。在A/D時鐘為14 MHz,采樣周期為1.5個A/D時鐘時,其最大的轉換速率為1 MHz,當A/D時鐘超過14 MHz時準確度將下降[5]。故配置RCC_ADCCLKConfig(RCC_PCLK2_Div4)。
時間設置:ADC_SampleTime_55Cycles5
根據公式:T=T采樣+12.5個周期,則T=55.5+12.5個周期=68/14 ?滋s。
2.6 光纖通信系統
本設計的光纖通信系統由電端機、光發送機、光中繼器、光接收機和光纖光纜組成,其框圖如圖7所示。
電端機是一般的電通信設備,用來處理如模數變換、多路復用等電源信號。光發送機由光源、驅動器和調制器組成。它的功能是把輸入的電信號轉換為光信號,并用耦合技術把光信號經光纖傳輸,其轉換過程是由電信號對光的調制來完成的。光纖纜作為整條通信的線路,其功能為將光發送機的光信號傳輸到光接收機,并且產生盡可能小的失真衰減。
在應用中所用的是鎧裝光纜,由多根光纖合并而成并且外面由金屬套管包裹。
由于甲板與海底鉆機的通信距離非常長,信號經過長距離的傳輸,即便載體是光纖也會產生衰減,故在傳輸過程中要將信號進行整形、放大以生成一定強度的信號繼續傳輸來保證通信質量,所以必須使用中繼器。
光接收機由光檢測器、放大器和相關電路組成,它把從光纖傳輸產生失真和衰減的光信號轉換成電信號,經過一系列的處理(整形、放大等)后,恢復成甲板串口發送的電信號。
3 系統軟件描述
3.1手操器核心板程序流程
系統上電之后,立即對系統進行初始化,MCU初始化時鐘、定時器、GPIO、A/D轉換以及各函數。初始化完成后,對LCD進行清屏并在SD卡中開辟工作區,判斷SD卡剩余空間并在屏幕上顯示,按規則讀取SD卡指定指令文件夾中的內容,以設定的規則載到STM32的Flash中,關閉工作區。重新開辟一個工作區并新建一個文件,判斷按鍵輸入及搖桿的A/D采樣結果,判斷其對應的指令并通過串口輸出,同時將指令顯示于屏幕上,并將操作動作存入新建的文件中。系統的流程圖如圖8所示。
本設計的主要程序主要可以分為以下幾個部分:程序開始與系統初始化,LCD屏的顯示;SD卡的存儲與讀取;搖桿輸入電壓值的A/D轉換以及按鍵的掃描與判斷。
3.2 通信協議
甲板手操器向下位機發送指令的數據是以幀的格式發送的。幀的格式為@XX;nn,bb;\r\n。其中,“@”是幀頭;“XX”代表操作類型,有“BC”、“BS”、“BT”、“RS”等,分別代表“關閉繼電器”、“打開繼電器”、“心跳信號”、“復位信號”;“nn”是下位機主板卡號,從01~02;“bb”是下位機主板的繼電器序號,從01~24。操作類型與下位機主板卡號間用“;”分隔,下位機主板卡號與繼電器序號用“,”分隔,繼電器序號與回車換行符之間用“;”分隔。
通常情況下一條操作指令至少包含兩幀數據,兩幀之間軟件完成一個時延。兩個特殊的指令為:(1)心跳信號@BT;\r\n;(2)系統復位@RS;\r\n。
4 信號穩定性檢測
將SD卡插入PC,在卡中新建一個TXT文件,文件名為“指令配置”,此文檔中寫入鉆機指令,格式如表1所示。
一行代表一個按鍵按下時所要發送的指令,最前面的序號用于按鍵的判別,不在發送內容之中。每串指令都由兩條以上組成,兩條指令之間為延時的時間數值,每條指令以及兩條指令之間的延時時間都以冒號結尾。當SD卡插入單片機并上電后,單片機軟件自動識別。
將手操器板子通過串口線與PC連接,配置板子在PC上的串口為COM7,設置波特率為9 600 b/s,數據位為8 bit,停止位為1 bit,無奇偶校驗位。
系統上電之后,用串口調試助手截獲的信息進行穩定性檢測,計算50個按鍵串口丟包次數與亂碼幀數,其結果如表2所示。
第一次測試時可能由于SD卡與卡槽之間有氧化層導致接觸不是十分良好,誤碼率較高。重新插拔去除氧化層重新測試后4組結果在接受范圍內。
參考文獻
[1] 金翔龍.二十一世紀海洋開發利用與海洋經濟發展的展望[J].科學中國人,2006(11):13-17.
[2] 李世奇,董浩斌,李榮生.基于FatFs文件系統的SD卡存儲器設計[J].測控技術,2011,30(12):79-81.
[3] 張濤,左謹平,馬華玲.FatFs在32位微控制器STM32上的移植[J].電子技術,2010,47(3):25-27,29.
[4] 孫林軍,賀鋒濤.基于STM32控制液晶的接口實現[J].電視技術,2013,37(1):77-79.
[5] 宋敬衛,付廣春,馬獻國.基于STM32的多路電壓采集研究[J].電子世界,2013(12):55-56.
[6] ST. STM32F103xC, STM32F103XxD, STM32F103xE[Z]. 2008.