宋 林,吳尹紅
(攀枝花學院,四川 攀枝花 617000)
近年來,隨著江河湖泊的開采、水底調研探索以及軍事等領域的運用,無人水下航行器(Unmanned Underwater Vehicle,UUV)得到越來越廣泛的應用。UUV進行江海湖泊水底世界的探索需要各個傳感器反饋的數據綜合判斷水下環境來反饋自身環境信息和調整自身狀態。UUA搭載的采集設備,可對水底環境進行采樣,通過采集到的環境信息經過反饋處理,可進行地圖繪制,也可根據IMU慣性測量單元檢測出當前的機體狀態。本設計采用四翼螺旋槳結構,可飛出水面方便觀測回收。
本文研究的無人水下航行器以STM32單片機為主控芯片,搭載MS5803溫度壓力傳感器,以溫度壓力傳感器計算溫度、深度與海拔。電量計芯片HLW8032測量電壓計算電量,避免電量不足無法回收。為避免在失聯情況下,UUA發生碰撞損壞航行器,本設計還增加了障礙檢測設計。對于UUA的姿態控制采用MPU6050六軸陀螺儀配合STM32主控芯片進行姿態控制與機翼故障檢測。LoRa模塊負責傳輸采集到的姿態深度、速度等數據和指令的接受。其整體硬件思路如圖1所示。
圖1 整體硬件思路
本文選用STM32F446RET6芯片為微控制單元(Microcontroller Unit,MCU),采用ARM框架Cortex-M4內核、180 MHz主頻、50個I/O接口、128 kB RAM、512 kB Flash,3個高精度的12位ADC配有16個通道,擁有4個USART、2個速度達11.25 Mbit/s的UART、4個速度達45 Mbit/s的SPI、2個CAN、SDIO、HDMI等接口。與其它單片機相比,STM32價格較便宜且性能高,性價比極高,同時具有方便設計的配套軟件,且生成代碼易維護。
MPU6050具有X軸、Y軸、Z軸加速度計和X,Y,Z三軸角加速度計,可以輸出三軸加速度,三軸角速度。其中,INT引腳接口為中斷引腳。MPU6050中,時鐘引腳SCL與數據傳輸引腳SDA連接控制芯片的I2C接口,控制芯片可以通過I2C通信協議讀取數據。MPU6050除SDA與SCL兩個接口外,還有XDA與XCL接口,這兩接口是用于連接地磁計,配合地磁計組合成九軸慣性測量單元。姿態控制與故障檢測都需靠MPU6050計算出機體的俯仰角,橫滾角與偏航角。
市場上電子調速器通常一端接電源,一端接電機,剩余三根線分別為5 V輸出,GND與信號線,不需要再用5 V降壓芯片進行降壓。為避免電壓不足造成的電池損壞與UUA電量不足無法回收,則需要進行電量計算,市場上對于電池電量的計算常采用測量電壓確定電量的方法,因電壓與電量非線性關系需對電壓與電量關系進行量化后一一對應。本文所采用的為HLW8032計量芯片,其優點是可通過UART通信直接讀取數據,相比于HLW8012工作電流更高但其功能更為豐富,使用更為方便。
為保證水下UUV航行安全、數據采集與控制等需求外,還需要對當前壓強進行實時測量。UUV實時位置與距離水底位置信息,無人水下航行器常采用回聲測距原理計算測量,如單/雙頻單波束聲吶、多波束聲吶等[1],但考慮到成本與用途本文則采用MS5803壓力傳感器進行深度測試。壓強信息的采集主要利用壓強較為敏感的傳感器,將從外界采集到的信息用ADC轉換器,轉換為數字信號。在經過一系列的復雜運算,得到需要的壓強值,再通過MCU讀取出測量所得壓強與溫度,最后通過壓強計算,可以得到機器人目前的下潛深度,因此也可被稱為深度傳感器[2]。其中,深度可由壓強公式計算得出。
姿態解算算法各有特點,選擇合適的姿態解算算法是得到更為準確的姿態信息的關鍵,也可由姿態矩陣計算得出所需的載波姿態和方位距離等重要信息,這也是慣性導航算法的重要數據來源過程[3]。MPU6050官方推出了自動數字處理,即DMP庫。與歐拉角法、四元數法相比,DMP庫可通過移植直接讀取姿態角,而不需要煩瑣的調試參數工作[4]。MPU6050配合地磁計能完整的輸出四元數,除輸出三軸角速度與三軸加速度外,MPU6050還可輸出芯片溫度值,本文所設計的UUA其姿態解算便是采用了DMP庫。
四翼無人水下航行器受力分析,如圖2所示。無人水下航行器四翼安裝4個無刷電機,改變這4個無刷電機螺旋槳旋轉速度改變四翼的升力F1,F2,F3,F4。當四翼電機旋轉時,因螺旋槳的造型,四翼上電機螺旋槳旋轉時會產生一個與旋轉相反的轉矩T1,T2,T3,T4。如果其四翼同時旋轉時,旋轉方向相同,則四翼上螺旋槳產生的轉矩會使機身旋轉。為使航行器不產生自轉,因此,使對角的兩翼螺旋槳正轉或者反轉,另一對螺旋槳與之相反則可以使四翼產生的轉矩相互抵消。通過改變其中一對對角兩翼無刷電機的轉速,從而改變機體運動姿態[5]。當F1=F3>F2=F4時,則UUA逆時針旋轉,反之正轉;當F1=F2>F4=F3時,則UUA向y軸正方向運動,反之y軸負方向運動;當F1=F4>F2=F3時,則UUA向x軸正方向運動,反之x軸負方向運動。
圖2 受力運動分析示意
UUV控制部分解碼出從慣性測量單元模塊收集到的姿態數據之后,從解碼出的結果對姿態進行相應的調整,即通過控制模塊輸出PWM信號到電調部分,對無刷電機進行轉速調節。此時,需要通過PID算法進行調節輸出需要的控制量,從而避免電機因本身質量分布不規則導致的姿態無法達到預定狀態。在實際運用中,把這種比例、積分和微分通過計算反饋線路控制輸出量的方式,稱為PID算法。PID控制的優勢在于結構簡單數學原理清晰、易于實現且性能優良,常用的公式為:
式中:e(t)為期望值與當前狀態值的偏差;u(t)為PID調節后的系統控制輸人量;Kp指比例系數;K1積分系數;KD微分系數。
本文研究設計的水下無人航行器對于故障檢測也做了相應設計,當其中某一機翼破損時,當前姿態平衡會被打破。例如,當F1對應機翼損壞時,當前四翼兩對角螺旋槳旋轉時保持的平衡會被打破不僅出現傾斜且機身會順時針旋轉。當PID算法連續調節多次且誤差依舊太大,則可認為機翼發生破損,通過姿態解算,根據旋轉方向可知是哪一對角出現故障,根據誤差傾斜角度可判斷出其中損壞的機翼。
若信號丟失,MCU輸出PWM信號給予UUA搭配舵機,通過舵機的轉動帶動超聲波模塊,通過超聲波模塊檢測出障礙避免損壞UUA。對于復雜地形,如水底洞穴探索,若因信號丟失而原路返回,則需要考慮電量是否充足,中途是否發生障礙變故,根據實際情況出發,若無變故則當入水時將運行軌以數據結構“圖”的形式儲存,若無意外則通過記錄入水時起始位置與當前的位置,最后通過Floyd算法進行求解。若UUA信號丟失返回時原路出現障礙,則須通過超聲波模塊檢測障礙,同時重新記錄路徑再通過算法計算出最優路徑。
本次設計使用的無線通信模塊選用E220-400T30S模塊,其理論通信距離為10 km,發送長度為200 Byte,更加適用于傳輸較大的數據。相比于其他無線模塊,可在其現有功能上進行二次開發,如調節空中速率,更改發送功率,進行分包設定等優點。
對于上位機主要功能是通過MCU自帶的ADC采集到的搖桿與撥盤電壓值,再將這些電壓值等分處理設置成對應的方向,油門等信息,然后將處理后的信息發送給下位機。同理,下位機也可將采集到的信息進行處理,因無線通信模塊接收到數據即可根據設置好的發送機制將數據發送出去,無須考慮起始位和完成標志位,但因數據較多,仍需將所有的信息設置地址加信息的格式發送給無線通信模塊,方便對數據的還原。因水下通信的局限性,須考慮延長信號接收線至水面。
本文通過對無人水下航行器的設計研究,其電路原理,如圖3所示。無人水下航行器以高性能的STM32F446RE微控制器為核心的處理系統,四翼采用4個無刷電機為動力源,搭配六軸陀螺儀以Floyd算法配合超聲波模塊檢測障礙在失聯情況下自動返航,同時,利用陀螺儀mpu6050對自身四翼破損情況進行檢測,其模型和實物,如圖4所示。通過該方案成功的設計了無人水下航行器。
圖3 航行器電路原理
圖4 模型和實物