盧瑞輝,吳錘紅
(福建農(nóng)林大學(xué) 機(jī)電工程學(xué)院,福建 福州 350002)
2010年優(yōu)酷網(wǎng)站上,網(wǎng)友上傳了日本一家餐廳里的一段視頻:一輛兩輪自平衡自動(dòng)送餐車在為指定的客人送餐。[1]從視頻中可以看到,這家餐廳只有一臺(tái)這種送餐車,還在試驗(yàn)研究階段,尚未推廣。但是,這些兩輪自平衡小車經(jīng)過改造后,可以快速方便地應(yīng)用到諸如運(yùn)輸、代步和承載等環(huán)境當(dāng)中。這里商機(jī)潛力巨大,一些外國公司已經(jīng)將它們商業(yè)化,并投放到了市場(chǎng)。[2]
由于沒有該送餐車的其他相關(guān)資料,必須利用自己的方案實(shí)現(xiàn)兩輪送餐車送餐的目標(biāo)。為了做到這一點(diǎn),最起碼要解決三個(gè)問題:首先要解決的也是最關(guān)鍵的是平衡運(yùn)動(dòng)的問題;其次是送餐車怎么選擇行進(jìn)路線的,又是怎么樣定位的;最后還要考慮它是如何避開障礙物的。此次,自平衡自動(dòng)送餐車的研究不是純粹為了送餐,而是為了研究其中的控制策略及控制方法,從而對(duì)自動(dòng)控制理論有一個(gè)更好的認(rèn)識(shí)。
餐廳模擬環(huán)境,如圖1所示,送餐車的行進(jìn)路線由事先規(guī)劃好的黑線作為引導(dǎo)。
圖1 餐廳模擬示意圖
經(jīng)過認(rèn)真的分析研究,確定了自平衡自動(dòng)送餐車系統(tǒng)的總體設(shè)計(jì),其整體框架如圖2所示。在進(jìn)行具體的電路設(shè)計(jì)之前,要對(duì)MCU STC12C5A60S2的I/O口進(jìn)行合理分配。這需要充分考慮系統(tǒng)各個(gè)輸入輸出情況,做好總體規(guī)劃。
圖2 送餐車硬件總體設(shè)計(jì)
自平衡自動(dòng)送餐車的電路采用模塊設(shè)計(jì)(如圖3所示)方法。模塊化可以幫助理清思路,總覽全局。不僅有利于電路設(shè)計(jì),而且還便于將來PCB電路板的重新拼接,再次利用。系統(tǒng)利用Protel 99SE軟件進(jìn)行電路設(shè)計(jì),大部分主要器件的管腳圖及封裝,該軟件的元件庫都沒有,需要自己根據(jù)元件的實(shí)際情況來畫。
圖3 硬件電路圖
自平衡自動(dòng)送餐車采用可移動(dòng)的,能充電的12V鋰電池作為供電來源。但是,由于在整個(gè)系統(tǒng)中,各個(gè)模塊所需要的電壓有可能是不同的。因此電源模塊需要輸出多種不同幅值的電壓,以滿足系統(tǒng)的要求。經(jīng)過對(duì)系統(tǒng)的全面分析,可知道電源模塊至少要滿足這兩個(gè)要求:提供12V,5V,3.3V這三類幅值的電壓;每種電壓要有一定數(shù)量的引出端子。
自平衡自動(dòng)送餐車的主控芯片為MCU STC12C5A60 S2,[3]以它為核心組建系統(tǒng)的CPU模塊。該MCU的I/O口較多,可以按組分別把它們引出來,以便與其他外設(shè)相連,構(gòu)建送餐車系統(tǒng)。用5個(gè)8芯白色底座分別引出P0,P1,P2,P3,P4口;至于P5只有4個(gè)I/O口,需要1個(gè)4芯白色底座即可。本次設(shè)計(jì)將采用的晶振頻率為11.0592MHz。瓷片電容C3起到了穩(wěn)定MCU工作電源的功效。
自平衡自動(dòng)送餐車姿態(tài)數(shù)據(jù)主要包括車體的傾斜角度和傾斜角速度。這可分別利用加速度傳感器MMA7260和陀螺儀ENC-03MB測(cè)得。只有綜合利用這兩個(gè)傳感器才能得到所需要的正確信號(hào),用MMA7260測(cè)得的傾斜角度來校正ENC-03MB信號(hào)積分所得的角度。為了便于程序的編寫,采用以LMV358為主的硬件處理電路對(duì)姿態(tài)數(shù)據(jù)進(jìn)行處理。處理之后的傾斜角度和傾斜角速度信號(hào),用2芯白色底座將O1,O2接到MCU的P1.0(ADC0),P1.1(ADC1)口,進(jìn)行A/D轉(zhuǎn)換。
自平衡自動(dòng)送餐車有兩個(gè)車輪,需要用到一塊L298N驅(qū)動(dòng)芯片。驅(qū)動(dòng)芯片的使能端ENA與ENB都接VCC,也就是說它們始終被鉗位為高電平,其四個(gè)輸入端隨時(shí)都可以輸入,不受限制。四個(gè)輸入端由4芯白色底座從MCU引入,IN1,IN2,IN3,IN4分別對(duì)應(yīng)的接P2.0,P2.1,P2.2,P2.3。二極管D6,D7,D8,D9可起到對(duì)MOTOR1的續(xù)流保護(hù)作用;二極管D2,D3,D4,D5可起到對(duì)MOTOR2的續(xù)流保護(hù)作用。另外,為了更加直觀的了解兩個(gè)直流電機(jī)的正反轉(zhuǎn)情況,引入了4個(gè)LED指示燈。
為了測(cè)得電機(jī)的轉(zhuǎn)速利用了兩個(gè)光電編碼器搭建了速度檢測(cè)模塊電路。該模塊的電路比較簡單,只需要直接將與電機(jī)同軸安裝的左右光電編碼器的脈沖輸出接到MCU的脈沖捕獲接口P4.2(CCP0),P4.3(CCP1)。至于車輪轉(zhuǎn)速的計(jì)算將由軟件編程加以實(shí)現(xiàn)。
送餐車的行進(jìn)定位電路主要由3個(gè)光電開關(guān)RPR220和1個(gè)四電壓比較器LM339M(用了3路,還剩1路)組成。現(xiàn)以其中一路為例進(jìn)行介紹。當(dāng)發(fā)出的紅外光遇到的是白線,紅外光會(huì)被反射,RPR220的光電三極管將導(dǎo)通。此時(shí)LM339M第一個(gè)比較器的反向輸入端的電壓,幅值大約為5V,大于同向輸入端的電壓,比較器的輸出端相當(dāng)于接地。當(dāng)發(fā)出的紅外光遇到的是黑線,紅外光會(huì)被吸收,RPR220的光電三極管將截止。此時(shí)LM339M第一個(gè)比較器的反向輸入端的電壓,幅值大約為0V,小于同向輸入端的電壓,比較器的輸出端相當(dāng)于開路。但是由于在輸出端接了一個(gè)上拉電阻,它將向系統(tǒng)輸入高電平信號(hào)。另外兩路的原理完全類似,不再贅述。行進(jìn)定位3路的檢測(cè)信號(hào)由LO1,LO2,LO3接到MCU 的P2.4,P2.5,P2.6進(jìn)行傳輸。
送餐車的避障要完成兩個(gè)任務(wù),共用到兩個(gè)紅外光電傳感器E18-D80NK。一個(gè)通過調(diào)節(jié),使它的避障距離為30cm;另一個(gè),則調(diào)為60cm。它們的輸出需要接10k的上拉電阻。當(dāng)障礙物的距離小于避障距離時(shí),傳感器將輸出低電平;當(dāng)障礙物的距離不小于避障距離時(shí),傳感器將輸出高電平。兩個(gè)傳感器的輸出E18OUT1,E18OUT2分別接到MCU P3.2(INT0),P2.7(INT1)口。
自平衡自動(dòng)送餐車的相關(guān)信息將由YB12864-ZA進(jìn)行顯示,控制輸入除了四個(gè)按鍵之外,還有紅外遙控,其中后者為主要控制輸入,前者為備用。為了便于操作把它們劃分在一起。
自平衡自動(dòng)送餐車的硬件制作完成之后,就可以著手進(jìn)行系統(tǒng)的軟件開發(fā)了。在進(jìn)行程序編寫之前,要對(duì)系統(tǒng)工作的整體流程有一個(gè)宏觀的把握,如圖4所示。這個(gè)流程的順利實(shí)現(xiàn),依賴于實(shí)際可行的系統(tǒng)控制算法和匯編語言主程序及各功能模塊子程序的設(shè)計(jì)實(shí)現(xiàn)。該系統(tǒng)以Protues 7.7為開發(fā)平臺(tái),結(jié)合UltraEdit-32強(qiáng)大的編輯功能,利用STC單片機(jī)的專用下載軟件STC-ISP V488下載hex文件,進(jìn)行程序的編寫調(diào)試。
圖4 系統(tǒng)工作流程
系統(tǒng)的總體控制算法(如圖5所示),通過對(duì)各控制的耦合,得出一個(gè)整合控制量對(duì)電機(jī)加以控制。
圖5 系統(tǒng)總體控制算法
其中RPR220的檢測(cè)控制算法如表1所示,當(dāng)RPR220發(fā)射的紅外光被吸收時(shí),該路的輸出為高電平。當(dāng)RPR220發(fā)射的紅外光被反射時(shí),該路的輸出為低電平。根據(jù)3路的輸出情況,采取相應(yīng)的方向控制策略。除此之外,還需要根據(jù)紅外的輸入,送餐車位置信息,進(jìn)行零半徑回轉(zhuǎn)。在回轉(zhuǎn)的時(shí)候,送餐車的運(yùn)行不受3路RPR220檢測(cè)的影響?;剞D(zhuǎn)完成之后,再啟用RPR220檢測(cè)控制算法。
表1 RPR220檢測(cè)控制算法
避障控制算法分為任務(wù)一(緊急任務(wù))和任務(wù)而(普通任務(wù))。緊急任務(wù)優(yōu)先級(jí)別高于普通任務(wù)。換句話說,就是在執(zhí)行普通任務(wù)的時(shí)候,要是出現(xiàn)了緊急任務(wù)的響應(yīng)條件,則立即停止執(zhí)行普通任務(wù)而轉(zhuǎn)為緊急任務(wù)。另外,這兩個(gè)任務(wù)是不可能同時(shí)執(zhí)行。是執(zhí)行哪個(gè)任務(wù),主要由障礙物的距離決定,如表2所示。兩個(gè)E18-D80NK的檢測(cè),共有3種結(jié)果。根據(jù)不同的結(jié)果,執(zhí)行相應(yīng)的任務(wù)。
表2 E18-D80NK避障控制算法
紅外遙控器沒有輸入的時(shí)候,送餐車保持在初始位置,速度給定為零。紅外遙控器輸入為1-5桌的時(shí)候,送餐車直接向前行進(jìn)。紅外遙控器輸入為6-10桌的時(shí)候,送餐車先進(jìn)行零半徑回轉(zhuǎn),速度給定為零,再向前行進(jìn)。
除了姿態(tài)數(shù)據(jù)用硬件電路處理之外,其余的都將用軟件進(jìn)行處理,最難的也是最關(guān)鍵的是PID算法軟件實(shí)現(xiàn)問題。原因在于匯編語言沒有自帶的積分運(yùn)算和微分運(yùn)算。本系統(tǒng)的控制器采用增量式PID算法,采樣周期為T,比例系數(shù)為kP,積分時(shí)間常數(shù)為TI,微分時(shí)間常數(shù)為TD。它們之間存在kI=kP×T/TI,kD=kP×TD/T的關(guān)系,算法的表達(dá)式演算如下:
ΔU(k)=U(k)-U(k-1)
=k{kP1{[e(k)-e(k-1)]+T/TIe(k)+TD/T[e(k)-
2e(k-1)+e(k-2)]}}
(4-1)
在式子(4-1)中,k為采樣時(shí)刻序號(hào),U(k)為控制器第k次采樣時(shí)刻輸出值,e(k)為第k次采樣時(shí)刻偏差值,且k=kp/kp1=2n,在實(shí)際的工程應(yīng)用中,增量式PID參數(shù)調(diào)節(jié)可借助于k進(jìn)行協(xié)調(diào)。增量式PID算法對(duì)控制對(duì)象的擾動(dòng)較小。盡管系統(tǒng)出現(xiàn)故障,執(zhí)行器也仍能保持前一步的控制狀態(tài)。增量式PID算法操作容易。它不必對(duì)偏差值e(k)進(jìn)行累加,只需輸出作為控制量的ΔU(k)。如果知識(shí)了e(k),e(k-1),e(k-2),就可以算出ΔU(k)。再加上U(k-1),就能算出U(k)。在匯編實(shí)現(xiàn)的時(shí)候,先將e(k)歷史數(shù)據(jù)存于事先定義好的數(shù)據(jù)存儲(chǔ)單元。然后,通過平移替換的方法對(duì)其循環(huán)保存,可有效地傳遞數(shù)據(jù)。
將各個(gè)模塊連接好之后,按下總電源開關(guān),就可以進(jìn)行自平衡自動(dòng)送餐車系統(tǒng)的整體調(diào)試了。
首先看送餐車能不能保持平衡,然后看看能不能以一定的速度穩(wěn)定運(yùn)行,在轉(zhuǎn)彎處能不能順利轉(zhuǎn)彎,全面檢查是否可以穩(wěn)定的進(jìn)行平衡運(yùn)動(dòng)。之后,將它置于規(guī)劃好的軌跡之內(nèi),看它是否可以跟蹤軌跡。還要測(cè)試它能不能穩(wěn)定的停在目標(biāo)位置,實(shí)現(xiàn)成功定位。最后還要觀察它可不可以有效的執(zhí)行緊急避障任務(wù)和普通避障任務(wù)。通過系統(tǒng)開發(fā)平臺(tái),不斷完善,不斷改進(jìn),直到完成任務(wù)。
由于此課題的設(shè)計(jì)難度比較大,引言部分給出的三個(gè)需要解決問題都是一個(gè)比較大的課題,都需要花費(fèi)大量的時(shí)間及精力。加之自身能力的因素,及時(shí)間的限制,研究條件的制約,本研究主要解決了小車的平衡問題。至于行進(jìn)路線的選擇和定位策略以及避障這兩個(gè)問題,采取了較為簡單的解決方法,要是送餐車可以智能選擇行進(jìn)路線,不借助地面標(biāo)示符就可以進(jìn)行準(zhǔn)確定位,清晰辨別客人和障礙物,那系統(tǒng)就更具智能化了。這有待將來選擇更好的控制策略,采用更加適合的控制算法作出研究改進(jìn),以期進(jìn)一步提高送餐車智能化水平。
[1]雙輪自平衡送餐機(jī)器人[EB/OL].(2010-12-21).[2011-11-28].http://v.youku.com/v_show/id_XOTk5NzAzMzI=.html.
[2]曹志杰.一種自平衡雙輪移動(dòng)機(jī)器人控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2008,3.
[3]STC12C系列單片機(jī)器件手冊(cè)[EB/OL] .(2009-06-24) [2012-03-18].http://wenku.baidu.com/link?url=xanDqMIbU6Fw94Vhq_rQ_FNBVSDh1hUEjK4 jaVLXCmZZtLfSkIt5NGq7fYiZMTEM0a6a_eUUIAaNmCaJBanT9q-zOUIJ2-Vu2JQApQ0pABK.