《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AT89C52的機器人在復(fù)雜路線下的自主尋跡系統(tǒng)
基于AT89C52的機器人在復(fù)雜路線下的自主尋跡系統(tǒng)
EEworld
摘要: 考慮到實用性和性價比,采用AT89C52單片機作為機器人的控制芯片。AT89C52是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,片內(nèi)含8 KB的可反復(fù)擦寫的只讀存儲器(PEROM)和256B的隨機存取數(shù)據(jù)存儲器(RAM),32個I/O口線,3個16位定時/計數(shù)器,1個全雙工串行通行口。器件采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS51指令系統(tǒng)及8052產(chǎn)品引腳兼容。
Abstract:
Key words :

  引言

  智能尋跡機器人是一種被廣泛研究的機器人,而且國內(nèi)外都有許多重要的比賽都以尋跡機器人為核心展開。

  所謂的復(fù)雜路線,即由小半徑彎道、各種角度折道、直道等組成的不規(guī)則導(dǎo)引線,它是相對由大半徑彎道組成、過渡平滑的簡單路線而言的。筆者所設(shè)計的尋跡機器人小車,以AT89C52單片機為控制芯片,采用自制的3個紅外光電傳感器,以簡單的設(shè)計、較低的成本實現(xiàn)了復(fù)雜路線下機器人的自主尋跡。

  1 硬件及電路

  1.1 控制芯片

  考慮到實用性和性價比,采用AT89C52單片機作為機器人的控制芯片。AT89C52是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,片內(nèi)含8 KB的可反復(fù)擦寫的只讀存儲器(PEROM)和256B的隨機存取數(shù)據(jù)存儲器(RAM),32個I/O口線,3個16位定時/計數(shù)器,1個全雙工串行通行口。器件采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS51指令系統(tǒng)及8052產(chǎn)品引腳兼容。

  1.2 傳感器模塊

  作為尋跡機器人的“眼睛”,選擇合適的傳感器是關(guān)鍵。目前市面上可選用的傳感器主要有CCD傳感器和紅外光電傳感器兩種。近年來CCD傳感器技術(shù)已趨成熟,在近幾屆“飛思卡爾”杯智能車大賽上,采用CCD傳感器的智能車越來越多,并取得了不錯的成績。不過,CCD傳感器價格較高,體積較大,數(shù)據(jù)處理相當(dāng)復(fù)雜,因此在按既定路線行走的尋跡機器人設(shè)計中,紅外光電傳感器以其體積小、價格低、數(shù)據(jù)處理簡單而顯得更有優(yōu)勢。

  紅外光電傳感器由1個紅外發(fā)射管和1個光敏二極管組成。工作時,紅外發(fā)射管發(fā)射的紅外光被被測表面反射回來,光敏二極管接收被反射光。由于被測表面的材質(zhì)不同,反射率也不一樣。當(dāng)被測表面為白色時,反射光較強,光敏二極管將導(dǎo)通;反之,被測表面為黑色時,光敏二極管將截止。考慮到外界環(huán)境光照等干擾因素,輸出的電壓值有一定的波動范圍,若直接輸給單片機,可能導(dǎo)致檢測判斷錯誤。因此,需要將輸出電壓通過比較器(LM324)與預(yù)置的閾值電壓比較,然后得出一個高低電平輸給單片機。閾值電壓通過試驗測量得出,其電路如圖1所示。其中LED為傳感器工作指示燈,R1為閾值電壓調(diào)節(jié)電阻。

  

傳感器電路圖

  圖1 傳感器電路圖

  根據(jù)上述電路,自制了3個簡易的紅外光電傳感器。經(jīng)測試表明,性能良好,有效檢測距離為1~4 cm,滿足機器人尋跡的要求。

  1.3 驅(qū)動模塊

  驅(qū)動機器人行走的2個電機需要不同的轉(zhuǎn)速來實現(xiàn)轉(zhuǎn)彎。選用的驅(qū)動芯片為L293D,它包含4個輸出通道,最大輸出峰值電流為1.2 A,能同時驅(qū)動2個直流電機工作;其信號輸入端和使能端接收到來自單片機的信號,控制電機的通斷以及正、反轉(zhuǎn),還可以通過向使能端輸入不同占空比的方波信號來調(diào)整電機轉(zhuǎn)速 (PWM方式)。

  如圖2所示,IN端口接控制信號,OUT端口接電機的兩端,EN端口接使能信號。一組IN端口輸入為高/低或低/高電平時,能實現(xiàn)電機的正/反轉(zhuǎn)。一組IN端口輸入均為高或低電平時,電機將停轉(zhuǎn)。EN使能端為高電平時,相應(yīng)端口輸入信號有效;反之,則輸入信號無效。在EN端輸入PWM波,通過調(diào)整 PWM波的占空比,即可實現(xiàn)電機的無級調(diào)速。

  

 電機驅(qū)動電路

 

  圖2 電機驅(qū)動電路

  2 尋跡控制

  機器人尋跡控制示意圖如圖3所示,機器人采用前輪驅(qū)動后輪輔助的三輪差動式行走方式。車體前部兩輪均為主動輪,由兩個電機分別驅(qū)動,利用它們的轉(zhuǎn)速差來控制機器人運動方向;后輪為從動萬向輪,僅起著支撐車體的作用。車底板前部以車體中心線為軸線對稱放置著3個自制的紅外光電傳感器,作為機器人的尋跡傳感器。

  

 

  圖3 尋跡控制示意圖

  機器人尋跡場地中除了黑線,其他區(qū)域均為白色。當(dāng)傳感器正下方為黑線時,輸出“0”狀態(tài),當(dāng)其為白色區(qū)域時,輸出“1”狀態(tài)。因此,理論上3個傳感器輸出的組合狀態(tài)會有8種,如表1所列。每一種組合狀態(tài)都對應(yīng)著一種機器人下一步的行走動作,共有前進、左轉(zhuǎn)、快速左轉(zhuǎn)、右轉(zhuǎn)、快速右轉(zhuǎn)、原地旋轉(zhuǎn)、停止 7種動作。

  表1

  

 

  本機器人有著雙級轉(zhuǎn)彎的設(shè)計,即普通轉(zhuǎn)彎和快速轉(zhuǎn)彎。當(dāng)機器人對黑線的偏離量比較小時,使用普通轉(zhuǎn)彎,即兩個驅(qū)動輪都向前運動,速度一大一小,依靠兩輪的速度差來實現(xiàn)轉(zhuǎn)彎;而當(dāng)機器人偏離黑線較遠時,使用快速轉(zhuǎn)彎,即兩個驅(qū)動輪一個向前運動,一個向后運動,這樣能迅速實現(xiàn)轉(zhuǎn)彎。普通轉(zhuǎn)彎用于大半徑彎道、大角度折道,而快速轉(zhuǎn)彎則用于小半徑彎道和直角銳角折道等非平滑過渡路線。對于非封閉路線,還設(shè)計了原地旋轉(zhuǎn)的動作,來實現(xiàn)原路返回:一旦機器人小車走完全程,3個傳感器將均檢測到白色區(qū)域,輸出組合狀態(tài)“111”,此時一輪全速前進,一輪全速后退,小車原地旋轉(zhuǎn),直到掉過頭來傳感器檢測到黑線為止。

  3 程序設(shè)計

  程序設(shè)計時,采用匯編語言編程。其思路為:第1步,系統(tǒng)初始化后,讀取單片機P2口的值,然后對其P2.0、P2.1、P2.2按位取與,得到傳感器模塊的組合值。第2步,將得到的組合值與預(yù)定的值比較,若相等則執(zhí)行相應(yīng)的動作,否則繼續(xù)比較,直到獲得正確的動作。比較完全部動作后,轉(zhuǎn)到第1步重新掃描傳感器的狀態(tài)值。

  為了進一步提高系統(tǒng)的安全性和可靠性,還需增加異常處理算法。可能出現(xiàn)的異常情況有:過小彎道或小角度折道時,機器人還來不及轉(zhuǎn)過彎來,就已經(jīng)完全偏離黑線。這種情況下,3個傳感器都輸出“1”,檢測不到黑線,若不及時處理,機器人將無法繼續(xù)尋跡。針對該情況,設(shè)計了原地旋轉(zhuǎn)動作來找回預(yù)定路線,不過原地旋轉(zhuǎn)有順、逆時針之分,因此還得區(qū)分開來。改進后編程的思路為:每次讀取P2口值之前,將其上一次的傳感器組合值存入某個寄存器,當(dāng)出現(xiàn)組合值為 “111”的情況時,立即查詢上一次的值,根據(jù)該值,可以判斷出機器人是從哪一側(cè)偏離黑線的,從而進行順或逆時針原地旋轉(zhuǎn)。其主要程序如下:

  ……;系統(tǒng)初始化

  SENSOR: MOVA,P2

  ANLA,#07H;讀P2口值,對P2.0、P2.1、P2.2按位取與

  CJNEA,#07H,NEXT;如組合值為111,直接轉(zhuǎn)到動作判斷程序,否則轉(zhuǎn)到NEXT

  LJMPDATA_PROCESS

  NEXT:MOVR5,A;將本次傳感器組合值賦給R5

  LJMPDATA_PROCESS

  DATA_PROCESS: CJNE A,#07H,D1;對組合值判斷,確認為常規(guī)動作還是旋轉(zhuǎn)動作

  LJMP ROTATE

  D1:……;繼續(xù)常規(guī)動作判斷

  ……

  ROTATE: MOV A,R7 ;旋轉(zhuǎn)判斷,將上一次傳感器組合值賦給A

  CJNE A,#06H,R1;對上一次傳感器組合值判斷,決定順逆旋轉(zhuǎn)

  LJMPCLOCKWISE

  R1:……;繼續(xù)順逆判斷

  ……

  CLOCKWISE:……;順時針旋轉(zhuǎn)動作

  LJMP DELAYS

  DELAYS:MOV A,R5

  MOV R7,A;將本次傳感器組合值賦給R7

  LCALL DELAY;調(diào)用DELAYS子程序進行延時

  LJMP SENSOR ;重新掃描傳感器狀態(tài)

  END;程序結(jié)束

  結(jié)語

  根據(jù)上述設(shè)計思路,我們制作出尋跡機器人并進行了測試。測試場地如圖4所示,黑色導(dǎo)引線寬度為3 cm,黑線周圍區(qū)域均為白紙覆蓋。測試結(jié)果表明:該尋跡機器人能在此復(fù)雜路線下平穩(wěn)、順利地沿著黑線走完全程,并在終點沿原路返回,達到了預(yù)期的目標(biāo)。這為進一步研究復(fù)雜環(huán)境下的自動行走機器人提供了參考。

  

機器人尋跡測試圖

 

  本文的創(chuàng)新點為:使用3個自制的紅外光電傳感器,以簡單的設(shè)計和較少的硬件實現(xiàn)了復(fù)雜路線下機器人的尋跡。而基于該機器人雙級轉(zhuǎn)彎的設(shè)計思想,可以增加傳感器數(shù)量、組成傳感器陣列來實現(xiàn)多級轉(zhuǎn)彎,從而對機器人的自主尋跡有著更為精確的控制。

  參考文獻

  [1] 韓毅,張雪峰.一種低成本尋跡機器人的實現(xiàn)[J].微計算機信息,2008,52:233235.

  [2] 朱益斌,胡學(xué)龍,朱亞鋒,等.自主式尋跡機器人小車的設(shè)計[J].國外電子測量技術(shù),2006,25(7):4042.

  [3] 何立民.MCS51系列單片機應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。