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