夏重民,王揚(yáng)揚(yáng),李函鎂,高銘浩
(沈陽航空航天大學(xué)自動化學(xué)院,遼寧沈陽,110136)
計(jì)算機(jī)控制技術(shù)作為一門應(yīng)用性很強(qiáng)的課程,只有將理論學(xué)習(xí)和實(shí)踐緊密結(jié)合才能掌握課程精髓?,F(xiàn)有的計(jì)算機(jī)控制技術(shù)的課內(nèi)實(shí)驗(yàn)多是依托計(jì)控原理實(shí)驗(yàn)箱開設(shè)的,學(xué)生基于51 單片機(jī),在實(shí)驗(yàn)箱上進(jìn)行輸入輸出通道采集、步進(jìn)電機(jī)、直流電機(jī)的調(diào)速實(shí)驗(yàn)、溫度閉環(huán)控制系統(tǒng)實(shí)驗(yàn)等單一環(huán)節(jié)的實(shí)驗(yàn)項(xiàng)目,缺少解決實(shí)際復(fù)雜工程問題的訓(xùn)練培養(yǎng)。為此,設(shè)計(jì)一個(gè)寫字機(jī)器人的工程案例,將接口技術(shù)、控制器設(shè)計(jì)、控制系統(tǒng)調(diào)試與控制效果分析各知識要點(diǎn)融合,通過計(jì)算機(jī)控制系統(tǒng)各模塊的協(xié)調(diào)合作,使學(xué)生了解系統(tǒng)的工作原理和過程,有效培養(yǎng)學(xué)生綜合運(yùn)用專業(yè)知識及分析解決問題的能力,激發(fā)學(xué)生學(xué)習(xí)興趣。
(1)布置實(shí)驗(yàn)任務(wù)
要求學(xué)生根據(jù)提供的Arduino 單片機(jī),步進(jìn)電機(jī)及驅(qū)動模塊,舵機(jī)模塊,鍵盤及語音模塊等硬件,自行組裝設(shè)計(jì)一個(gè)寫字機(jī)器人,編寫控制算法,最終機(jī)器人能夠自動書寫簡單的文字。
(2)實(shí)驗(yàn)進(jìn)度安排
寫字機(jī)器人的實(shí)驗(yàn)項(xiàng)目較單一環(huán)節(jié)的驗(yàn)證或設(shè)計(jì)型實(shí)驗(yàn)相對復(fù)雜,因此實(shí)驗(yàn)采取分組進(jìn)行的方式,3 個(gè)同學(xué)一組,每組完成一個(gè)寫字機(jī)器人的設(shè)計(jì)與開發(fā)。組長安排組內(nèi)同學(xué)分工,每人負(fù)責(zé)系統(tǒng)的一個(gè)或幾個(gè)模塊。首先各組分別提交寫字機(jī)器人的實(shí)驗(yàn)預(yù)習(xí)報(bào)告,報(bào)告中包括系統(tǒng)總體設(shè)計(jì)方案,擬采取的研究方法,組內(nèi)同學(xué)分工,進(jìn)度安排,每階段預(yù)期成果。老師審查通過后,學(xué)生自行預(yù)約實(shí)驗(yàn)時(shí)間,在6 周內(nèi)完成實(shí)驗(yàn)任務(wù),并提交實(shí)驗(yàn)總結(jié)報(bào)告,詳細(xì)說明軟硬件設(shè)計(jì)方案,實(shí)驗(yàn)結(jié)論與調(diào)試分析。
(3)實(shí)驗(yàn)考核方式
由于實(shí)驗(yàn)采取分散模式,因此考核方式也需要隨之調(diào)整。實(shí)驗(yàn)成績由實(shí)操過程評價(jià)、實(shí)驗(yàn)結(jié)果評價(jià)、文檔評價(jià)三部分組成。實(shí)操過程評價(jià)主要考察學(xué)生在實(shí)驗(yàn)過程能否采取合適的方法或手段進(jìn)行寫字機(jī)器人軟硬件的開發(fā),是否具備自主分析解決問題的能力;實(shí)驗(yàn)結(jié)果評價(jià)考核學(xué)生設(shè)計(jì)制作的寫字機(jī)器人工作是否正常,功能是否實(shí)現(xiàn)完整,能否根據(jù)實(shí)驗(yàn)結(jié)果得出有效結(jié)論;文檔評價(jià)考察實(shí)驗(yàn)預(yù)習(xí)與總結(jié)報(bào)告的規(guī)范性,報(bào)告論述是否充分完整,條理是否清晰。
根據(jù)設(shè)計(jì)的實(shí)驗(yàn)內(nèi)容,以一組3 名學(xué)生的實(shí)驗(yàn)過程為例,說明寫字機(jī)器人的實(shí)驗(yàn)過程。
(1)任務(wù)目標(biāo)制定
寫字機(jī)器人通過按鍵選定需要書寫的文字。Arduino 中預(yù)先定義了所能繪制的文字及對應(yīng)數(shù)字編號。接收到按鍵信號后,根據(jù)編輯好的走步程序,將走步序列與控制程序相結(jié)合,Arduino 單片機(jī)控制步進(jìn)電機(jī)及舵機(jī)實(shí)現(xiàn)寫字功能。
(2)總體方案設(shè)計(jì)
設(shè)計(jì)的寫字機(jī)器人硬件結(jié)構(gòu)框圖如圖1 所示。系統(tǒng)分為以下五個(gè)模塊:Arduino 控制核心;步進(jìn)電機(jī)及驅(qū)動模塊;舵機(jī)模塊;鍵盤模塊;電源模塊。
圖1 寫字機(jī)器人的硬件結(jié)構(gòu)框圖
Arduino 寫字機(jī)器人的程序采用C 語言編寫。初始化設(shè)置后,Arduino 控制核心檢測是否有寫字命令發(fā)布,如果接收到按鍵發(fā)出的寫字命令,查表轉(zhuǎn)換成Arduino 單片機(jī)可以處理的形式,控制步進(jìn)電機(jī)和舵機(jī),執(zhí)行筆的寫字動作,直至文字書寫完成。
(3)基于計(jì)算機(jī)控制技術(shù)教學(xué)目標(biāo)點(diǎn)的任務(wù)分解
根據(jù)設(shè)計(jì)的總體方案,實(shí)現(xiàn)寫字機(jī)器人主要有以下三個(gè)研究任務(wù):書寫內(nèi)容的選定與處理、XY 向步進(jìn)電機(jī)控制、Z向舵機(jī)控制,對應(yīng)計(jì)算機(jī)控制技術(shù)的輸入輸出通道采集技術(shù)、控制器設(shè)計(jì)的教學(xué)目標(biāo)點(diǎn)。組長根據(jù)研究任務(wù),分配同學(xué)完成各模塊的軟硬件設(shè)計(jì),最后系統(tǒng)聯(lián)合調(diào)試,完成寫字機(jī)器人的寫字任務(wù)。
(4)寫字筆的移動控制及實(shí)物展示
以寫字機(jī)器人的核心功能——寫字筆的移動控制為例,說明軟硬件設(shè)計(jì)實(shí)現(xiàn)過程。
Arduino 控制核心接收到需要書寫的文字后,Arduino控制核心規(guī)劃運(yùn)動路徑,對步進(jìn)電機(jī)和舵機(jī)進(jìn)行運(yùn)動控制,從而實(shí)現(xiàn)寫字筆的移動。XY 方向,用(x,y) 坐標(biāo)表示寫字筆的位置。Arduino 利用逐點(diǎn)比較插補(bǔ)法計(jì)算前后的兩個(gè)坐標(biāo)之間的線段各點(diǎn)坐標(biāo),將各點(diǎn)的位置轉(zhuǎn)換為驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)動的脈沖量、方向,最終實(shí)現(xiàn)筆頭在XY 平面的移動。Z 方向,控制器通過PWM 信號控制SG90 舵機(jī),實(shí)現(xiàn)寫字筆的起落控制,信號為1 時(shí),落筆狀態(tài);信號為0 時(shí),抬筆狀態(tài)。
上述過程中的逐點(diǎn)比較插補(bǔ)法是計(jì)算機(jī)控制技術(shù)中的重要知識點(diǎn)之一,具體到寫字機(jī)器人的實(shí)驗(yàn)內(nèi)容,就是根據(jù)寫字要求在軌跡的起點(diǎn)和終點(diǎn)計(jì)算出若干個(gè)中間點(diǎn)坐標(biāo)。每一步都要將當(dāng)前瞬時(shí)坐標(biāo)同規(guī)定的筆畫軌跡相比較,然后判斷其偏差,再決定下一步,如果當(dāng)前點(diǎn)走到規(guī)定筆畫外面,那下一步就要往里面走;如果當(dāng)前點(diǎn)在筆畫里面,那么下一步就要往外面走,縮小偏差得出一個(gè)十分近似指定筆畫的軌跡,最大偏差不超過一個(gè)脈沖當(dāng)量。即步進(jìn)電機(jī)每步都要進(jìn)行偏差判別、坐標(biāo)進(jìn)給、新偏差計(jì)算和終點(diǎn)比較4個(gè)步驟。第一步,判別寫字筆的當(dāng)前位置,根據(jù)偏差值確定寫字筆位置是在直線的上方(或線上),還是在直線的下方;第二步坐標(biāo)移動,根據(jù)判別的結(jié)果,Arduino 控制器決定寫字筆往哪個(gè)方向的坐標(biāo)(x 或y)移動一步;第三步,計(jì)算寫字筆移動后的新偏差,為筆的下一步動作提供依據(jù),遞推下去;第四步,判斷寫字筆是否到達(dá)筆畫的終點(diǎn),在計(jì)算偏差同時(shí),還要進(jìn)行終點(diǎn)比較。如果到達(dá)了終點(diǎn),則停止偏差運(yùn)算,并發(fā)出停止或轉(zhuǎn)換其他子程序的命令。遞推次數(shù)由計(jì)數(shù)變量E 決定,每完成一次插補(bǔ)計(jì)算,E 自減1,當(dāng)計(jì)數(shù)變量減為0時(shí),完成插補(bǔ)程序,程序結(jié)束跳出,等待進(jìn)行下一次插補(bǔ)計(jì)算。不同象限、不同走向的直線插補(bǔ)計(jì)算公式和控制器發(fā)出的控制方向都是不同的,需要將坐標(biāo)和寫字筆的進(jìn)行方向根據(jù)象限等的不同而進(jìn)行變換。第一象限偏差的遞推公式:當(dāng)Fm≥0 時(shí),沿+x 軸方向進(jìn)給一步,
流程圖如圖2 所示。圓弧插補(bǔ)算法的思想與之類似。
圖2 直線插補(bǔ)流程圖
最終軟硬件聯(lián)合調(diào)試后,寫字機(jī)器人的實(shí)物圖如圖3 所示。學(xué)生通過實(shí)驗(yàn)可以形象地理解系統(tǒng)設(shè)計(jì)思想、相關(guān)硬件電路設(shè)計(jì)、控制算法原理,提高實(shí)踐技能。
通過寫字機(jī)器人實(shí)驗(yàn)項(xiàng)目,學(xué)生完成了系統(tǒng)硬件電路的搭建以及軟件的設(shè)計(jì),學(xué)習(xí)了筆式兩自由度自動控制系統(tǒng)的實(shí)現(xiàn)和調(diào)試方法,設(shè)計(jì)的實(shí)物作品可以體現(xiàn)計(jì)算機(jī)控制技術(shù)的相關(guān)理論知識。這種綜合實(shí)驗(yàn)訓(xùn)練方式所達(dá)到的效果優(yōu)于普通的課內(nèi)實(shí)驗(yàn)。有助于提高學(xué)生的知識應(yīng)用能力和自主學(xué)習(xí)能力,培養(yǎng)工程意識。
圖3 寫字機(jī)器人實(shí)物圖