朱萬浩,章盼梅,孔令棚,張紫凡
(1.廣州城市理工學院 電氣工程學院,廣東廣州 510800;2.廣州城市理工學院機械工程學院,廣東廣州 510800)
水下機器人是一種在深水極限環(huán)境工作的智能機器人,能潛入水中代替人工完成某些操作,又稱為水下無人機。目前它主要用于水下探測、水下救援等,已成為開發(fā)海洋的重要工具之一。近年來,隨著智能控制技術、水下導航定位技術、通信技術、水下探測技術的不斷進步,水下機器人得到了快速發(fā)展,應用范圍也越來越大。
當前有部分學者對水下機器人控制系統(tǒng)進行研究,以尋求穩(wěn)定性更好、可靠性更高的水下機器人,以服務于各領域。文獻[1]設計了一臺應用在漁業(yè)養(yǎng)殖領域的低成本模塊化水下觀察機器人,用于觀察水下養(yǎng)殖環(huán)境,提高漁業(yè)養(yǎng)殖的自動化水平。文獻[2]為解決水下偵察、探測等困難,開發(fā)了一款能潛水探測的智能機器人,設計了系統(tǒng)總體方案和各功能模塊,用實驗驗證了方案的可行性。文獻[3]針對當前軍用水下機器人價格昂貴、設計復雜的缺點,設計了一臺價格便宜、結構簡單的水下機器人。文獻[4]面對深海設備檢修作業(yè)時的困難,提出了水下機器人的總體模塊化設計,并用虛擬仿真技術進行仿真測試。文獻[5]為解決水下機器人傳感器經(jīng)常出現(xiàn)故障的難題,提出一種小波變換的傳感器故障檢測方法,提高了水下機器人的檢測效率。
為了解決當前水下探測、水下救援等難題,文中利用STC15W 單片機、無線通信模塊、攝像頭模塊、舵機模塊等控制技術,設計了一臺智能控制的水下機器人。
系統(tǒng)總體方案設計分為硬件電路設計和軟件設計兩大部分。設計水下機器人前,首先要確定水下機器人的目標功能,然后通過對比擇優(yōu)法,選擇方案,實現(xiàn)設計目標[6-7]。
水下機器人工作原理:首先,遙控器上的單片機通過A/D 模數(shù)轉換讀取搖桿上的角度信號,經(jīng)過一系列分析轉換后,把角度信號和其他的附加指令打包成一長串數(shù)據(jù),通過SPI 協(xié)議寫入無線模塊中;然后,遙控器的無線模塊通過一系列指令進行模塊間的通信,將數(shù)據(jù)發(fā)送給水下機器人的無線模塊;接著,水下機器人在接收到數(shù)據(jù)后,一方面會對發(fā)送模塊產(chǎn)生應答,另一方面發(fā)送命令到水下機器人的中央處理器;中央處理器收到指令后,通過SPI 協(xié)議讀出該無線模塊所傳輸?shù)臄?shù)據(jù),根據(jù)預先設定的程序進行運算;最后,中央處理器把陀螺儀模塊上讀取的實時姿態(tài)信號轉換成電信號,以脈沖寬度調(diào)制方式發(fā)送給電調(diào)和舵機,從而實現(xiàn)水下機器人的智能控制。系統(tǒng)總體架構如圖1 所示。

圖1 系統(tǒng)總體架構
水下機器人硬件電路由STC15W 單片機、攝像頭模塊、陀螺儀模塊、電機控制模塊、無線模塊、舵機模塊等組成。
水下機器人選用STC15W4K48S4 單片機作為中央處理器。該單片機是新一代增強型單片機,是我國自主生產(chǎn)的第一款具有國際先進水平的單片機。它具有性價比高、抗干擾性強、運行速度快,且能與MCS-51 單片機兼容等優(yōu)點,目前在市場上得到廣泛的應用[8-9]。STC15W4K48S4 單片機功能包含大容量程序存儲器、集成MAX810 專用復位電路、EEPROM Data Flash、看門狗、7 組8 位并行端口、A/D 比較器、內(nèi)置系統(tǒng)ISP 監(jiān)控程序、定時器0/1/2/3/4 超高速四串口、可當D/A 使用的8 路10 位PWM、高精度集成R/C時鐘等。除上述功能外,它還具有大容量片內(nèi)EEPROM、ISP/IAP。單片機的功能框圖如圖2 所示。

圖2 STC15W4K48S4單片機的功能框圖
電調(diào)的作用是輸出三路相位相差為120°的脈沖信號,用以驅動無刷電機旋轉。電調(diào)通過檢測輸入脈沖的寬度PWM 來改變電調(diào)輸出信號的頻率,輸出到電機,最終實現(xiàn)改變無刷電機轉速的目的。當前,電調(diào)在車輛模型、航海模型、船舶模型、飛碟模型、飛盤模型等領域得到廣泛的應用。電調(diào)工作時需配合電機同步使用,它可識別單片機所傳達的控制信號,對電機進行控制驅動。通過電調(diào)驅動電機,實現(xiàn)了電調(diào)在各領域的廣泛應用[10-11]。
電調(diào)分為有刷電調(diào)和無刷電調(diào),設計選擇無刷電機作為水下機器人的動力源,因此需選擇無刷電調(diào)與電機搭配使用。通常情況下,電調(diào)除控制無刷電機轉向外,還需控制轉速。在實際運行中,轉速通過脈沖寬度調(diào)制(PWM)技術進行控制。PWM 技術實質(zhì)上是通過改變高電平時間所占總周期的比例,用高頻率的PWM 方波將原來的直接導通方式替換掉,也即通過控制PWM 的實際導通時間達到控制無刷電機轉速的目的。電調(diào)輸入的是直流電,設計選用鋰電池或穩(wěn)壓電源為其供電。電調(diào)輸出的是三相脈動直流,因此可以將它與電機的三相進行連接。可以通過改變電調(diào)與電機的連接方式改變電機轉向。無刷電調(diào)的工作原理如圖3 所示。

圖3 無刷電調(diào)的原理圖
舵機又稱為伺服電機,與其他的普通直流電機相比,舵機具有如下特點:一是舵機存在最大旋轉角度,只可控制舵機在一定角度范圍內(nèi)旋轉;二是舵機具有反饋控制系統(tǒng),通過反饋角度信息實現(xiàn)精確控制與保持角度的目的;三是舵機控制精度并不太高、位置穩(wěn)定性偏低[12-13]。但由于舵機結構緊湊、體積小、控制原理簡單和性價比高,因此文中使用舵機控制水下機器人的攝像模塊。舵機通過速度傳感器、角位置傳感器進行反饋,形成一個閉環(huán)控制系統(tǒng)。根據(jù)速度傳感器和角位置傳感器的靈敏度不同,舵機作出不同精度的速度和角度反應。舵機工作時,讀取返回值的大小,并與預設值進行對比后,將其存在的偏差值回饋給系統(tǒng),從而達到閉環(huán)控制的目的,如圖4 所示。

圖4 舵機閉環(huán)控制框圖
無線模塊NRF24L01的通信是通過SPI通信雙向協(xié)議來進行的,該模塊使用全球統(tǒng)一的通信頻段,在2.4~2.5 GHz的頻率下工作[14-15]。無線模塊NRF24L01是目前一款發(fā)展較好、功能較齊全的通信模塊,雖然內(nèi)置了調(diào)制器、解調(diào)器等器件,但工作電流損耗卻不大。當無線模塊處于接收模式時,可接收6 路來自不同信道的信號,但發(fā)送信號的頻道必須相同。發(fā)送過來的數(shù)據(jù)可同時發(fā)送給同一個正處于接收模式下的無線模塊,各個通道數(shù)據(jù)使用的地址并不相同。當無線模塊對其6 路數(shù)據(jù)進行接收、識別并記錄地址后,會向各原發(fā)送模式下的無線模塊發(fā)送應答信號,發(fā)送與接收應答的環(huán)節(jié)是通過通道0 實現(xiàn)的,如圖5 所示。

圖5 無線模塊星形網(wǎng)絡拓撲圖
單片機軟件開發(fā)技術與硬件技術是相互促進、共同發(fā)展的。單片機編程方式由一開始的匯編語言到現(xiàn)在的高級語言,發(fā)展非常迅速。目前主流的單片機開發(fā)軟件有Keil MDK、Code Sourcery、GNU Tools、Green Hills 等。雖然Keil 系統(tǒng)軟件中沒有中文版本,但因為它具有強大的功能和良好的兼容性,因此受到廣大設計人員的喜愛[16]。當前許多高校的學生或科技公司的設計人員都使用Keil 軟件進行編程。對于很多初學者,只需要掌握C 語言以及Keil 的基礎操作,就可完成程序的最終編寫。
水下機器人的主程序設計步驟:單片機由外置電源上電后,內(nèi)部系統(tǒng)進行初始化,單片機I/O 口呈高阻態(tài)。單片機將所有I/O 口初始化為準雙向口,初始化無線模塊、清除狀態(tài)寄存器緩存等。無線模塊初始化后將其設置成接收模式,設置狀態(tài)寄存器接收數(shù)據(jù)的地址,接著判斷NRF24L01 無線模塊是否接收到數(shù)據(jù),若接收到數(shù)據(jù),則讀取狀態(tài)寄存器一個字節(jié);若沒有接收到數(shù)據(jù),則返回。然后程序判斷是否接收到正確的數(shù)據(jù),若數(shù)據(jù)正確,則從RX FIFO 將數(shù)據(jù)讀出傳遞給單片機,由單片機根據(jù)數(shù)據(jù)對三相直流無刷電機正轉、反轉等進行控制;若數(shù)據(jù)不正確,則返回,如圖6 所示。

圖6 水下機器人主程序流程圖
無線模塊的程序設計步驟:NRF24L01 無線模塊在接收到數(shù)據(jù)后,引腳RX_RD 置1,同時拉低IRQ 的電平,此時單片機進入外部中斷狀態(tài)。單片機讀取狀態(tài)寄存器數(shù)據(jù),將讀取的數(shù)據(jù)放入sta 中,判斷中斷標志位RX_RD 是否成功讀取數(shù)據(jù)。若讀取數(shù)據(jù)成功,則調(diào)用SPI_Read_Buf 函數(shù),確定讀取的寄存器、地址、數(shù)組以及位數(shù),并將數(shù)據(jù)存取至RX_BUF;若讀取數(shù)據(jù)成失敗,則返回重新讀取數(shù)據(jù)。然后,程序將最初讀取狀態(tài)寄存器的數(shù)據(jù)寫入狀態(tài)寄存器中,完成中斷復位操作并跳出外部中斷,恢復進入外部中斷程序前的現(xiàn)場,繼續(xù)向下執(zhí)行其他程序,如圖7所示。

圖7 無線模塊設計流程圖
系統(tǒng)測試是設計的最后一個環(huán)節(jié),是保證水下機器人穩(wěn)定可靠運行的關鍵。在水下機器人軟件系統(tǒng)設計完成之后,進行系統(tǒng)測試。測試前首先要進行硬件電路的檢測和組裝,然后再進行軟件程序調(diào)試[17]。
硬件電路測試時,首先逐個檢查無線通信模塊、電機模塊、陀螺儀模塊、遙控器模塊等外觀是否完好、電路板有無虛焊;然后通電測試能否正常工作。各個模塊測試通過后,把它們組裝成一個整體進行工作,檢測能否正常開機、電機等模塊能否正常工作;最后把水下機器人投入水中,檢查有無漏水等情況。水下機器人實物模型如圖8 所示。

圖8 水下機器人實物模型
開啟水下機器人和遙控器的電源,把水下機器人投入水中,進行程序調(diào)試。旋轉遙控器的“向左”和“向右”手柄,水下機器人向左和向右運行;旋轉“向前”和“向后”手柄,水下機器人做出前進和后退動作;點擊“攝像頭開關”,可在手機屏幕上實時監(jiān)控水中環(huán)境[18]。水下機器人遙控手柄實物如圖9 所示。

圖9 水下機器人遙控手柄
基于STC15W 單片機的水下機器人控制系統(tǒng)搭載了攝像頭模塊、無線通信模塊、陀螺儀模塊等,實現(xiàn)了水下環(huán)境的實時監(jiān)控,解決了水下探測、水下救援的困難。水下機器人自試運行以來,系統(tǒng)穩(wěn)定性高、可靠性好,沒有發(fā)生漏水和無法控制等情況。
該文的亮點是利用單片機和嵌入式技術設計了一臺水下機器人,為技術人員開發(fā)水下機器人和學生學習單片機、嵌入式系統(tǒng)等技術提供參考。