C8051F單片機(jī)在自動機(jī)器人上的應(yīng)用
關(guān)鍵詞:CCTV大學(xué)生機(jī)器人賽;PID控制器;C8051F
在每年中央電視臺舉辦的CCTV大學(xué)生機(jī)器人大賽中,自動機(jī)器人是一個典型的機(jī)電光一體化作品,它可以培養(yǎng)和訓(xùn)練大學(xué)生計算機(jī)、控制論、機(jī)構(gòu)學(xué)、機(jī)械設(shè)計和制造、傳感技術(shù)、人工智能等眾多學(xué)科的知識,是大學(xué)生開展綜合知識訓(xùn)練的良好平臺。同時機(jī)器人制作比賽作為一種創(chuàng)新教育的戰(zhàn)略性手段已經(jīng)逐漸被教育界的人們所認(rèn)可,因此越來越受到各高校的重視和積極參與。在每年的機(jī)器人大賽中,機(jī)器人是由手動機(jī)器人和自動機(jī)器人兩部分組成,自動機(jī)器人在比賽中擔(dān)當(dāng)主要角色,對比賽的勝負(fù)起決定性的作用。
2007年CCTV大學(xué)生機(jī)器人大賽是在一個14 m×14 m的場地上進(jìn)行,以參賽雙方誰先建造完指南針為獲勝,如兩方都沒完成則以各自的得分來決定勝負(fù)。本文設(shè)計的自動機(jī)器人以C8051F310單片機(jī)為MCU。
1 機(jī)器人車體機(jī)械機(jī)構(gòu)設(shè)計
2007年CCTV大學(xué)生機(jī)器人大賽中,比賽內(nèi)容是雙方機(jī)器人把各自的積木放到戰(zhàn)車上。整個自動機(jī)器人的活動區(qū)域內(nèi)沒有設(shè)置障礙,不需要爬坡等越障設(shè)置,相對而言較為簡單。本文設(shè)計并參加比賽的自動機(jī)器人在車體機(jī)械機(jī)構(gòu)上采用雙輪驅(qū)動設(shè)計,通過控制2個驅(qū)動輪的速度和轉(zhuǎn)向來實現(xiàn)不同的運(yùn)動軌跡,驅(qū)動輪在底盤的后面,底盤前面有2個萬向輪,用以支撐整個車體的平衡。在底盤的上面安置積木的夾抓機(jī)構(gòu)和提升機(jī)構(gòu)。
2 機(jī)器人的控制電路設(shè)計
2.1 MCU的選擇
2007年CCTV大學(xué)生機(jī)器人大賽較以往的題目更靈活,自動機(jī)器人的運(yùn)動軌跡更復(fù)雜,因而對自動機(jī)器人的設(shè)計和控制難度也較高。在綜合考慮各種因素后,選用Cygnal公司最近推出的C8051F系列高速單片機(jī)。這種單片機(jī)結(jié)構(gòu)簡單,性能與DSP相近,而且其指令集與51系列單片機(jī)兼容,開發(fā)工作簡單。用于自動機(jī)器人控制的C8051F單片機(jī)具有如下的特點[1]:
(1) 使用Cygnal公司的專利CIP-51微控制器內(nèi)核,采用流水線指令結(jié)構(gòu);70%的指令執(zhí)行時間為1個或2個系統(tǒng)時鐘周期;速度可達(dá)25 MI/s(時鐘頻率為25 MHz時)。這樣就可以應(yīng)用復(fù)雜的控制算法提高控制精度。
(2) 內(nèi)部有4個通用16位計數(shù)器/定時器和專用的看門狗定時器(WDT),不再需要附加外部計數(shù)器件和外部看門狗電路。本文的設(shè)計就是將定時器0和定時器1用作小車左右輪反饋脈沖計數(shù)。
(3) 引入了數(shù)字交叉開關(guān),允許將內(nèi)部數(shù)字系統(tǒng)資源分配給端口I/O引腳。通過設(shè)置優(yōu)先權(quán)給交叉控制寄存器,將片內(nèi)的計數(shù)器/定時器、串行總線、硬件中斷、ADC轉(zhuǎn)換啟動輸入、比較器輸出以及微控制器內(nèi)部的其他數(shù)字信號配置為出現(xiàn)在端口I/O引腳。
(4) 內(nèi)部有1個可編程計數(shù)器陣列(PCA),由1個專用的16位計數(shù)器/定時器和5個16位捕捉/比較模塊組成。通過設(shè)置特殊功能寄存器PCAOCPM將捕捉/比較模塊0和模塊1(CEX0和CEX1)設(shè)置成脈沖寬度調(diào)制器(PWM),用于驅(qū)動電動機(jī)。
(5) 內(nèi)部有12位逐次逼近型ADC,可以在不增外圍電路的前提下方便地檢測模擬信號。
(6) 具有片內(nèi)JTAG和調(diào)試電路,通過JTAG接口并使用安裝在最終應(yīng)用系統(tǒng)中的器件上就可以進(jìn)行全速、非侵入式地在系統(tǒng)調(diào)試,而且支持?jǐn)帱c、單步、觀察點、堆棧監(jiān)視器,支持觀察修改存儲器和寄存器。
自動機(jī)器人的控制MCU選用C8051F系列單片機(jī)是非常合適的,由于可以硬件生成PWM,占用CPU資源很少;高性能的指令系統(tǒng)以及和C語言之間進(jìn)行交叉匯編,為設(shè)計各種控制算法提供了廣闊的空間。其控制電路框圖如圖1所示。
在自動機(jī)器人運(yùn)動控制中采用兩輪驅(qū)動,通過對2個驅(qū)動輪電機(jī)轉(zhuǎn)速和轉(zhuǎn)向的精確控制來控制機(jī)器人的運(yùn)動軌跡。對左右輪驅(qū)動電機(jī)M1、M2的轉(zhuǎn)速采用PWM脈寬調(diào)制進(jìn)行驅(qū)動,單片機(jī)輸出的PWM信號和轉(zhuǎn)向控制信號送給電機(jī)控制專用芯片L298,L298芯片能夠直接驅(qū)動兩個電機(jī)運(yùn)轉(zhuǎn)。在M1、M2電機(jī)上裝有能夠檢測其轉(zhuǎn)速的兩路光電編碼器,兩路光電編碼器的信號分別送給倍頻器和鑒向器,進(jìn)行轉(zhuǎn)速和轉(zhuǎn)向的檢測,轉(zhuǎn)速和轉(zhuǎn)向信號輸送給C8051F310單片機(jī),在其內(nèi)部進(jìn)行PID運(yùn)算,將運(yùn)算后的結(jié)果控制PCA陣列,從而控制PWM的占空比。下面對其電路進(jìn)行具體分析。
2.2 MCU電路
采用C8051F310作為控制電路的MCU[2],用P0口實現(xiàn)對驅(qū)動電機(jī)的控制。P0.0、P0.1用于輸出控制M1、M2轉(zhuǎn)速的PWM信號,P0.2、P0.3用于控制M1、M2的轉(zhuǎn)向;P0.4、P0.5用于M1、M2的轉(zhuǎn)速反饋,即用于計算反饋驅(qū)動電機(jī)的轉(zhuǎn)速;P0.6、P0.7用于檢測M1、M2的轉(zhuǎn)向,即用于取得驅(qū)動電機(jī)的轉(zhuǎn)向反饋。通過P0口實現(xiàn)了對兩個驅(qū)動電機(jī)的閉環(huán)控制。通過嵌入在C8051F310的PID算法,即可實現(xiàn)對M1、M2轉(zhuǎn)速和轉(zhuǎn)向的精確控制,在比賽場地運(yùn)行時可根據(jù)場地上的白色引導(dǎo)線來調(diào)整機(jī)器人的軌跡線。
2.3 電機(jī)的選擇
由于在比賽時電源必須自帶,驅(qū)動電機(jī)采用直流電機(jī),本文采用的是FAULHABER公司生產(chǎn)的2342L024CR直流電機(jī)。通過改變PWM的占空比來改變它的轉(zhuǎn)速,通過改變電源的極性來改變電機(jī)的轉(zhuǎn)向。為了能夠準(zhǔn)確測出電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向,在每個電機(jī)上裝有兩路光電編碼器,光電編碼器輸出與電機(jī)轉(zhuǎn)速成正比的方波信號,兩路信號在頻率上相等,在相位上相差90°,如圖2所示的CHa和CHb信號。
2.4 電機(jī)驅(qū)動電路
為了控制直流電動機(jī),需用半導(dǎo)體功率器件進(jìn)行驅(qū)動。大多數(shù)直流電動機(jī)的驅(qū)動是采用開關(guān)型驅(qū)動方式。由于PWM調(diào)制方式使晶體管工作在開關(guān)狀態(tài),這種調(diào)速方式不僅功率損耗低、效率高,而且具有調(diào)速范圍廣、響應(yīng)速度快等特點。當(dāng)輸入信號為零時,伺服電機(jī)處于微振狀態(tài),克服了靜摩擦力的影響,有利于改善伺服系統(tǒng)低速運(yùn)行時的平穩(wěn)性。
本文采用L298為電機(jī)驅(qū)動芯片,它采用雙H橋式為主驅(qū)動電路,如圖3所示。該電路不僅能夠調(diào)速而且還能正反轉(zhuǎn),可以驅(qū)動同步進(jìn)電機(jī)或同時驅(qū)動2個直流電機(jī)。通過它的2個引腳PWM和DIR實現(xiàn)對電機(jī)的控制。通過改變PWM引腳的占空比,可以實現(xiàn)對電機(jī)的轉(zhuǎn)速控制;通過改變DIR引腳的高低電平,可以實現(xiàn)電機(jī)的正反轉(zhuǎn)控制。
經(jīng)過74LS86芯片倍頻和74LS74芯片鑒向后的信號輸送給MCU(C8051F310),MCU經(jīng)過PID運(yùn)算后的結(jié)果輸送給MCU內(nèi)部的PCA陣列,從而輸出符合要求的PWM脈沖信號以及電機(jī)的轉(zhuǎn)向信號給直流電機(jī),精確控制電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向。
2.7 引導(dǎo)線的檢測
在比賽場地上有3 cm寬的白色引導(dǎo)線,自動機(jī)器人可以沿著引導(dǎo)線確定自己的運(yùn)動軌跡,因此,自動機(jī)器人可以利用白色的引導(dǎo)線來校正自己的運(yùn)動軌跡。為了能夠準(zhǔn)確地檢測到場地的白色引導(dǎo)線,采用光纖傳感器來檢測。光纖傳感器上主要有如圖5所示的發(fā)射光裝置和接收光裝置。
發(fā)射光裝置發(fā)射出的光遇到前方的檢測物后,反射回來給接收裝置,如果檢測物的距離和灰度不同,則反射回來的光的強(qiáng)度也不同。當(dāng)調(diào)節(jié)好距離之后,設(shè)定不同的閾值就可以檢測不同的灰度。光纖傳感器檢測比賽場地上的白色引導(dǎo)線,利用場地灰度不同,即白色引導(dǎo)線比周圍背景的反射率更高的特點,使機(jī)器人行走時引導(dǎo)線處于機(jī)器人兩驅(qū)動輪的中間。具體設(shè)計是:機(jī)器人左右各有4個光纖傳感器,分別為1~4號傳感器,如圖6所示??紤]到引導(dǎo)線的寬度為3 cm,左1號傳感器和右1號傳感器之間的距離設(shè)為4 cm,留1cm的余地,左右傳感器內(nèi)部之間的距離為2.5 cm。機(jī)器人行走時:如果左右光纖傳感器都沒有檢測到引導(dǎo)線,說明引導(dǎo)線在機(jī)器人兩驅(qū)動輪的中間,兩輪的速度正確;當(dāng)左邊的光纖傳感器檢測到引導(dǎo)線,說明左驅(qū)動輪的速度偏大,機(jī)器人在往右邊偏移,這時應(yīng)該減小左驅(qū)動輪速度或增大右驅(qū)動輪速度進(jìn)行校正。左邊的光纖傳感器有4個,當(dāng)1號光纖傳感器檢測到,說明偏移量較小其校正量也應(yīng)較?。蝗绻?號光纖傳感器檢測到,說明偏移量更大,校正量也應(yīng)更大。以此類推,4號光纖傳感器偏移量最大,校正量也最大。若是右邊的光纖傳感器檢測到白色引導(dǎo)線,其原理同左邊的光纖傳感器。這樣MCU就可以通過光纖傳感器傳送來的信號實時調(diào)整左右驅(qū)動輪的速度,使機(jī)器人按要求的路線運(yùn)行。
以上是以C8051F單片機(jī)作為主MCU在自動機(jī)器人控制電路中的應(yīng)用,它通過PID算法和光電檢測器構(gòu)成雙閉環(huán)的控制電路,實現(xiàn)了對驅(qū)動電機(jī)的精確控制,能夠很好地滿足比賽的控制要求。通過比賽實踐證明了該電路具有體積小、功耗低、控制精度高、成本低的優(yōu)點,非常適合大學(xué)生參賽使用,同時也是一個很好的訓(xùn)練和培養(yǎng)學(xué)生實踐創(chuàng)新能力的試驗項目。
從電機(jī)的編碼器上輸出兩路矩型脈沖信號,它們的頻率相等,與電機(jī)的轉(zhuǎn)速成正比,相位上相差90°(如圖2的Cha、CHb)。在PID算法中,為了提高脈沖取樣的頻率,提高算法的控制精度,要求能夠提高編碼器的矩形脈沖分辨率。因此本文對光電編碼器的兩路脈沖信號進(jìn)行倍頻。倍頻芯片采用74LS86,它同時能夠進(jìn)行4個“異或”運(yùn)算:Q=A×B。驅(qū)動電機(jī)的兩路矩形方波信號CHa、CHb輸入給74LS86的A、B端,通過74LS86“異或”運(yùn)算后所得到的頻率為原來的兩倍(如圖2的CHc)。
2.6 鑒向電路
在控制電機(jī)的PID算法中,MCU要知道電機(jī)的正反轉(zhuǎn),即需要鑒向電路。本文所用鑒向器的芯片是74LS74。74LS74是2路正邊緣D觸發(fā)器,它可以同時檢測2路電機(jī)的轉(zhuǎn)向,其工作過程為:74LS74的觸發(fā)端CK引腳和輸入端D引腳分別與電機(jī)光電編碼器輸送過來的2路方波信號CHa、CHb相連。因為74LS74的輸出信號是:Q = CK↑·D,若CK引腳與CHb相連,D引腳與CHa相連,屬于上升沿觸發(fā)器。當(dāng)電機(jī)正轉(zhuǎn)時,其2路脈沖信號如圖4(a)所示,CHb信號上升沿所對應(yīng)的CHa信號為高電平,這時74LS74芯片的輸出端Q為1;當(dāng)電機(jī)反轉(zhuǎn)時,其2路脈沖信號如圖4(b)所示,CHb信號上升沿所對應(yīng)的CHa信號為低電平,這時74LS74芯片的輸出端Q為0。因此通過鑒向電路可以判斷電機(jī)的轉(zhuǎn)向。
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
pid控制器相關(guān)文章:pid控制器原理
光纖傳感器相關(guān)文章:光纖傳感器原理
評論