陳利 饒闖 侍中樓*
(江漢大學(xué)工程訓(xùn)練中心,湖北 武漢 430000)
隨著人類社會的不斷發(fā)展,水資源污染愈發(fā)嚴(yán)重,在黨的十九大報告中提出堅持人與自然和諧共生,樹立和踐行“綠水青山就是金山銀山”的生態(tài)文明理念之后,水面垃圾的清理問題得到人們的高度重視,水上清潔機(jī)器人有了廣闊的應(yīng)用前景,針對目前小型水上清潔機(jī)器人操作復(fù)雜、成本造價頗高的問題,我們研制開發(fā)了一款基于Arduino 的小型清潔機(jī)器人,可進(jìn)行淺海和湖泊的垃圾收集工作,能夠有效的解放人力、改善生態(tài)環(huán)境。
以電子系統(tǒng)為核心的控制系統(tǒng)是機(jī)器人運行的主要方式,本文介紹了一種基于Arduino 的水上機(jī)器人的控制系統(tǒng)。要建立水上機(jī)器人的控制系統(tǒng),硬件設(shè)備是系統(tǒng)運行的基礎(chǔ)和關(guān)鍵,它對整個系統(tǒng)的穩(wěn)定性、控制的準(zhǔn)確性和反饋的時耗性都有直接的影響。水上機(jī)器人控制系統(tǒng)的硬件部分主要包括Arduino 控制器、動力部分、收集部分、自動調(diào)節(jié)部分、無線控制部分、電池模塊等。其中,動力部分由涵道推進(jìn)器、雙向無刷電調(diào)兩部分組成;收集部分由ULN2003APG 驅(qū)動芯片、步進(jìn)電機(jī)和同步帶組成;自動調(diào)節(jié)部分由紅外光電傳感器、超聲波傳感器和OV7670CMOSVGA 攝像頭模塊組成;無線控制部分由PS2無線遙控手柄和無線接收器組成。系統(tǒng)結(jié)構(gòu)如圖1 所示。
Arduino 是一個開源的單片機(jī)電子設(shè)計平臺,硬件部分由Atmel AVR 單片機(jī)、I/O 接口及相關(guān)電路組成,軟件部分則包括標(biāo)準(zhǔn)的程序編譯器和程序下載器,本系統(tǒng)的主控制器采用Arduino Mega 2560。
圖1 系統(tǒng)結(jié)構(gòu)圖
相比于51 單片機(jī),Arduino 最大的優(yōu)點在于,功能齊全而且學(xué)習(xí)非常簡單。同時,Arduino 可以跨平臺使用,在Windows、Macintosh OSX、Linux 三大主流操作系統(tǒng)上都可以運行,而其他的大多數(shù)控制器只能在Windows 上開發(fā)。Arduino 的核心庫文件都是開源的,在開源協(xié)議范圍內(nèi)可以任意修改原始設(shè)計及相應(yīng)代碼。所以選擇了Arduino 控制板。除了流行的Arduino UNO 外,Arduino Mega2560 是Arduino 系列中的一種,Mega 和UNO 的主要區(qū)別在于處理器,ATmega2560 比ATmega328 內(nèi)存更大,外圍設(shè)備更多。如果需要控制更多的傳感器,需要同時連接更多的引腳,應(yīng)當(dāng)優(yōu)先選擇Arduino Mega 2560(相關(guān)參數(shù)如圖2)。
圖2 MEGA 2560 相關(guān)參數(shù)
由于Arduino 控制板輸出的直流電壓不足以驅(qū)動涵道推進(jìn)器工作,所以我們采用PWM(脈沖寬度調(diào)制)+外置電源+無刷電調(diào)(ESC)的方式來控制電機(jī)的輸入電壓。PWM占空比越高,等效電壓就越高;占空比越低,等效電壓就越低。控制器給出的PWM波形只是控制信號,輸出電壓(3.3V/5V)不能驅(qū)動無刷直流電機(jī),所以推進(jìn)器驅(qū)動方式采用雙向無刷電調(diào)進(jìn)行調(diào)速控制。無刷電調(diào)(ESC)可以驅(qū)動無刷直流電機(jī)進(jìn)行工作,其原理是電機(jī)可以根據(jù)控制器輸出的控制信號PWM來調(diào)節(jié)電機(jī)轉(zhuǎn)速。
推進(jìn)電機(jī)的選擇主要是在考慮航行助力和航速的條件下選擇推進(jìn)電機(jī)的功率。理論計算通常采用機(jī)器人航行阻力與螺旋槳的推進(jìn)功率和航速的近似關(guān)系式
式(1) 中:NX 為電機(jī)的軸功率(KW);ρ 為湖水密度(kg/m3);Q 為機(jī)體橫剖面面積(m2);CR 為阻力系數(shù);V 為航速(m/s)。參考其他文獻(xiàn)對阻力系數(shù)進(jìn)行選擇,確定CR=0.75,湖水密度為1×103kg/m3,機(jī)器人橫剖面積為78750mm2,取航速V=3 m/s。將所有參數(shù)代入公式,并考慮超載、風(fēng)、浪對機(jī)器人的影響保留一定的余量,最終確定電機(jī)的總推進(jìn)功率為300W。由于采用雙軸推進(jìn),故單個電機(jī)的功率為150W。我們選擇F2838B 作為推進(jìn)電機(jī),該電機(jī)工作電壓7.4V-16.8V,額定電流10A,此電機(jī)采用直流調(diào)速,直流調(diào)速快準(zhǔn)穩(wěn),符合水上清潔機(jī)器人的需要。
收集部分我們采用步進(jìn)電機(jī)驅(qū)動同步帶來收集水面垃圾。
ULN2003APG 驅(qū)動芯片作為步進(jìn)電機(jī)的驅(qū)動芯片,ULN2003APG 驅(qū)動芯片驅(qū)動步進(jìn)電機(jī)的引腳接線如圖3 所示,其中IN1-IN4 連接Arduino Mega 2560 控制器,輸出槽口連接步進(jìn)電機(jī),5-12V 的“+”接電源正極,“-”接電源負(fù)極,驅(qū)動芯片上的4 個指示燈可實時顯示控制步進(jìn)電機(jī)的脈沖變化。ULN2003 工作電壓較高,工作電流較大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負(fù)載電流下并行運行。通常單片機(jī)驅(qū)動ULN2003 時,上拉2K 的電阻較為合適,同時,COM端引腳應(yīng)該懸空或接電源,ULN2003APG 引腳圖及邏輯框圖如圖4 所示。
圖3 ULN2003APG 驅(qū)動原理圖
圖4 ULN2003APG 引腳圖及邏輯框圖
攝像頭識別部分我們采用的是OV7670 帶FIFO 的模塊的攝像頭。因為帶FIFO 的攝像頭可以將攝像頭拍攝的數(shù)據(jù)暫時存在FIFO 里,然后Arduino Mega 2560 將拍攝的數(shù)據(jù)讀出。FIFO 的存儲速度很快,可以將攝像頭的數(shù)據(jù)暫時存起來,以便CPU 將獲得的數(shù)據(jù)慢慢取出來并處理,能有效地提高系統(tǒng)整體的運行速度。
我們采用E18-D80NK 光電傳感器(接線原理圖如圖5 所示)實時測量機(jī)器人到水面的距離,E18-D80NK 是一種集發(fā)射與接收于一體的光電傳感器,E18-D80NK 光電傳感器由發(fā)送器,接收器和檢測電路三部分構(gòu)成,該元件有探測距離遠(yuǎn),可見光干擾較小,成本低廉,使用簡便的優(yōu)點。
我們采用HC-SR04 超聲波測距模塊(接線原理圖如圖6 所示)監(jiān)測垃圾儲存箱的存儲量。HC-SR04 的一端發(fā)出超聲波,接觸到障礙物后反射,被另一個端口接收,通過檢測超聲波發(fā)射和接收的時間差,就可以根據(jù)聲波傳播的速率算出HC-SR04 和障礙物之間的距離。該傳感器有兩種模式可以選擇,單線模式只需要一根信號線,大大減少了I/O 口的資源利用;雙線模式需要兩根信號線,一根輸入信號線和一根輸出信號線。HC-SR04超聲波測距模塊在有效探測范圍內(nèi)可自動標(biāo)定,無需任何人工調(diào)整就可以獲得障礙物的準(zhǔn)確位置。該傳感器具有測量精度高、抗環(huán)境干擾能力強(qiáng)的特點。
圖5 E18-D80NK 原理圖
圖6 HC-SR04 原理圖
續(xù)航方面,電池模塊是機(jī)器人的能量來源,機(jī)器人的續(xù)航指標(biāo)、單次工作時間、單次巡航里程等都與電池的質(zhì)量和容量有關(guān)。電池我們采用ZO-25C-2200-3SIP-11.1V PRO 模塊,該電池容量為1300mAh,電壓額定電壓為11.1V,通過計算可得機(jī)器人的續(xù)航時間長達(dá)40 小時。該電池模塊具有容量高、體積輕的特點,且具有續(xù)航時間長、性能平穩(wěn)持久、不容易鼓包、循環(huán)性能突出等優(yōu)點。
圖7 PS2 手柄接收器原理圖
我們采用PS2 手柄實現(xiàn)操控者對機(jī)器人的控制,無線控制部分主要由PS2 手柄與接收器(原理圖如圖7 所示)兩部分組成,手柄主要負(fù)責(zé)發(fā)送指令信息;接收器與單片機(jī)相連,用于接收手柄發(fā)來的信息,并傳遞給單片機(jī)。同時單片機(jī)也可通過接收器,向手柄發(fā)送命令,兩者之間相輔相成,PS2 手柄的傳輸范圍為20m。
該控制系統(tǒng)主要由動力推進(jìn)系統(tǒng)、自動調(diào)節(jié)水深系統(tǒng)、收集傳送系統(tǒng)和能源續(xù)航系統(tǒng)四個部分組成,各系統(tǒng)相互協(xié)調(diào)、分工合作來實現(xiàn)對水上清潔機(jī)器人運動的精確控制、狀態(tài)的精準(zhǔn)監(jiān)測。
首先通電后檢查機(jī)器人的健康狀況(包括電量、儲存余量等)。如果各種參數(shù)正常的話,機(jī)器人開始自動巡航,否則,蜂鳴器將會報警提示,需要進(jìn)行人工修復(fù),符合出發(fā)要求才可以進(jìn)行自動巡航。巡航時攝像頭會檢測附近是否有垃圾,有垃圾則機(jī)器人向垃圾所在方位移動,收集水面上的漂浮垃圾,同時,傳感器會檢測船體的吃水深度,控制器會控制電子閥、排水泵進(jìn)出水,使船體的吃水深度趨近于正常值的范圍內(nèi)。之后會重新檢測吃水深度,如果吃水深度未達(dá)到極限值,系統(tǒng)會給出指令,機(jī)器人會繼續(xù)進(jìn)行自動巡航。否則,小船就會選擇最佳返回路徑,垃圾收集結(jié)束。系統(tǒng)設(shè)計流程圖如圖8 所示。
圖8 系統(tǒng)設(shè)計流程圖
自動調(diào)節(jié)水深系統(tǒng)由超聲波傳感器、貯水艙、電磁閥、排水泵等組成。超聲波傳感器位于機(jī)器人箱體頂部,通過超聲波測距的方式測量傳感器與水面之間的高度。當(dāng)吃水深度(測量高度)在設(shè)定范圍內(nèi)時,機(jī)器人正常運行。當(dāng)測量高度大于設(shè)定范圍的值時,機(jī)器人吃水過淺,此時電子閥打開,水由電子閥進(jìn)入到貯水艙,機(jī)器人所受重力增加,機(jī)器人下沉,直至測量高度到達(dá)設(shè)定范圍。若測量高度小于設(shè)定范圍,則排水泵開始工作,將貯水艙中的水排出艙外,減小機(jī)器人所受重力,機(jī)器人上浮,直至測量高度在設(shè)定范圍內(nèi)。自動調(diào)節(jié)水深系統(tǒng)設(shè)計流程圖如圖9 所示。
圖9 自動調(diào)節(jié)水深系統(tǒng)設(shè)計流程
圖10 巡航收集系統(tǒng)設(shè)計流程圖
該系統(tǒng)由OV7670 攝像頭模塊、ULN2003APG 驅(qū)動芯片、步進(jìn)電機(jī)和同步帶組成。自動巡航時,攝像頭自動檢測并識別漂浮垃圾。當(dāng)攝像頭檢測范圍內(nèi)出現(xiàn)垃圾時,Arduino 控制板控制動力推進(jìn)系統(tǒng)向目標(biāo)位置移動,當(dāng)機(jī)器人靠近漂浮物時,Arduino 控制板給ULN2003APG 驅(qū)動芯片輸出高電平,步進(jìn)電機(jī)帶動同步帶開始工作,將垃圾收集到垃圾儲存箱內(nèi)。巡航收集系統(tǒng)設(shè)計流程圖如圖10 所示。
該系統(tǒng)由E18-D80NK 光電傳感器、蜂鳴器、低壓報警器和電池模塊組成。主要負(fù)責(zé)檢測機(jī)器人的狀況,當(dāng)機(jī)器人發(fā)生以下狀況時,機(jī)器人會警報提示,并選擇最佳路徑返航。
2.3.1 光電傳感器位于垃圾儲存箱內(nèi)的頂部,能夠?qū)⒗鴥Υ嫦鋬?nèi)的存儲狀況轉(zhuǎn)換成電信號,反饋給Arduino 控制板與設(shè)定值進(jìn)行比較,當(dāng)檢測值小于設(shè)定值時,會觸發(fā)蜂鳴器。
2.3.2 低壓報警器會實時監(jiān)測電源電量,當(dāng)電壓低于11.1V時,報警器會報警提示。
本文介紹了一種基于Arduino 的清潔機(jī)器人控制系統(tǒng),該系統(tǒng)由涵道推進(jìn)器、雙向無刷電調(diào)、ULN2003APG 驅(qū)動芯片、步進(jìn)電機(jī)、紅外光電傳感器、超聲波傳感器、OV7670CMOSVGA 攝像頭模塊和PS2 無線遙控手柄等元件構(gòu)成。系統(tǒng)具有自動巡航、收集傳送、自動調(diào)節(jié)吃水深度、自動檢測機(jī)器人實時狀況的功能,方便操作,適用于現(xiàn)代家居小區(qū)湖泊處的垃圾清理任務(wù),該產(chǎn)品的設(shè)計開發(fā)不僅可以為人類提供生活上的便利方便,有效地減少水上垃圾,而且具有超高的市場應(yīng)用價值和廣泛的推廣前景。