過 磊
(江蘇聯合職業技術學院無錫機電分院,江蘇 無錫214028)
機器人技術融合了機械、電子、傳感器、計算機、人工智能等學科知識,涉及當今許多前沿技術[1],機器人的設計制作有助于激發學生研究興趣,培養嚴謹的科研態度和良好的職業技能。一些發達國家已把機器人制作比賽作為創新教育的戰略性手段,開展機器人設計制造活動,是培養學生創新精神和實踐能力的最佳活動之一,也是機電類學生開展綜合知識訓練的最佳平臺。根據五年制高職機器人課程特點,設計一種以AT89S52為核心的智能循跡機器人,該機器人有循跡和遙控兩種狀態,從功能上可分為循跡、驅動、遙控、液晶及報警、電源等模塊。
機器人采用模塊化設計思路,按功能來劃分機器人各模塊,具體有:(1)兩路傳感器接收模塊,實現機器人循跡功能;(2)左、右輪驅動模塊,實現機器人直流電動機控制功能;(3)紅外遙控接收模塊,實現機器人人工干預功能;(4)液晶顯示模塊,作為機器人LCD顯示升級接口;(5)LED狀態顯示模塊,實現機器人運行狀態顯示功能;(6)蜂鳴器報警模塊,實現機器人意外報警功能。
機器人以AT89S52為控制核心,接收傳感器或遙控器發送信號,實時處理后再反饋回控制信號,控制機器人實現不同的動作。機器人除上述6大功能靠硬件電路實現外,系統還增加了對直流電動機的PWM調速功能模塊,但與其他模塊不同的是,此模塊完全通過軟件實現,屬于“軟”模塊,所以未在硬件電路中體現,機器人總體方案原理如圖1所示。

根據機器人總體方案原理圖,結合機器人機械本體和制作材料,設計機器人結構布局,原則是在優先考慮機器人總體質量分布均衡的前提下,再考慮細節布局,最后設計完成的機器人結構布局如圖2所示。機器人設計采用后輪直接驅動,機器人動作實際上為左、右兩直流電動機控制。

機器人循跡模塊原理圖如圖3所示,循跡功能主要依靠機器人前端左右兩個型號為ST188的反射式紅外光電傳感器實現,其檢測距離為4~13 mm。ST188由1個紅外發射管(發射器)和1個光電二極管(接收器)構成,紅外發射管發出的紅外光線在遇到不同顏色物體時,反射回的光信號強弱不同,其被光電二極管接收,引起光電二極管光生電流的變化,將這個變化轉為電壓信號,就可以被處理器接收并處理,進而實現對反光性差別較大的兩種顏色(如白底黑線,黑白兩色)的識別[2]。

機器人運行時,如果傳感器在白色背景上,輸出高電平;如果檢測到黑線,輸出低電平。把兩路傳感器反饋信號接到單片機的P2.6和P2.7引腳上,就能實現循跡功能。但實驗中發現傳感器根據路面顏色和距離的不同,輸出的是一個電壓范圍,并不是一個開關信號,其輸出電壓的大小與傳感器距離黑色路徑的垂直距離有關,距黑線越近,則電壓越低,距黑線越遠,則電壓越高。為實現黑白線對應的開關信號,在機器人循跡電路中增加了一塊電壓比較器芯片LM393,基準電壓由1個100 kΩ的可調電阻R19提供,可以根據傳感器與路面顏色及距離實時調節。LED高亮發光管DS1和DS7是循跡狀態指示燈,當機器人運行在黑線上點亮,出線則滅,用于直觀顯示機器人當前狀態。電路中的雙腳跳針J1用來控制循跡電路供電,實現電路開關作用,接通則啟用機器人循跡功能。
機器人動作主要包括前進、后退、左轉、右轉、停止5種,由AT89S52單片機控制實現,由于單片機I/O口的電流只有10 mA左右,對于直流電動機這類負載較大的器件,單片機無法為其提供足夠的電流,所以設計采用了驅動集成電路芯片L298。L298芯片內部是雙橋高電壓大電流功率集成電路,直接采用邏輯電平控制,可用來驅動繼電器、線圈、直流電動機、步進電動機等電感性負載,它的驅動電壓可達46 V,直流電流總和可達4 A,內部有2個完全相同的功率放大回路[3]。
機器人驅動模塊原理圖如圖4所示,圖中雙腳跳針J3作為開關用來控制電路供電,L298用來驅動機器人左右兩側直流電動機,直流電動機的邏輯控制信號從單片機P2口的P2.0~P2.5 6個引腳發出,8個二極管D1~D8單向導通,起到對直流電動機的保護作用。L298芯片供電電壓與機器人硬件電路供電電壓一致,為直流5 V,而電動機驅動電壓供電為直流9 V,它們分別接L298芯片4號VS和9號VSS引腳。有了以上電路,就可以將單片機控制信號通過驅動芯片L298,與機器人動作聯系起來。具體邏輯信號與動作關系如表1所示,表中“1”為高電平,“0”為低電平,“X”為任意狀態。


表1 單片機控制信號與機器人動作關系表
紅外線遙控裝置具有體積小、功耗低、功能強、成本低等特點,工業設備中,在高壓、輻射、有毒氣體、粉塵等環境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾,所以紅外線遙控是目前使用最廣泛的一種通信和遙控手段[4]。通用紅外遙控系統由發射和接收兩大部分組成,應用編/解碼專用集成電路芯片來進行控制操作,發射部分包括鍵盤矩陣、編碼調制、LED紅外發送器;接收部分包括光、電轉換放大器,解調、解碼電路。
(1)遙控器發射及其編碼
遙控發射器專用芯片很多,根據編碼格式可以分成脈沖寬度調制和脈沖相位調制兩大類,設計采用運用較為廣泛、解碼較為容易的脈沖寬度調制。機器人遙控器以LC7461組成發射電路,當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調制的串行碼,以脈寬為0.565 ms、間隔0.56 ms、周期為1.125 ms的組合表示二進制的“0”;以脈寬為0.565 ms、間隔1.685 ms、周期為2.25 ms的組合表示二進制的“1”。上述“0”和“1”組成的42位二進制碼經38 kHz的載頻進行二次調制以提高發射效率,達到降低電源功耗的目的。然后再通過紅外發射二極管產生紅外線向空間發射,LC7461產生的遙控編碼是連續的42位二進制碼組,其中前26位為用戶識別碼,能區別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼用于核對數據是否接收準確。當遙控器上任意一個按鍵按下超過36 ms時,LC7461芯片的振蕩器使芯片激活,將發射1個特定的同步碼頭,對于接收端而言就是1個9 ms的低電平和1個4.5 ms的高電平,這個同步碼頭可以使程序知道從這個同步碼頭以后可以開始接收數據。
解碼的關鍵是如何識別“0”和“1”,從位定義可以發現“0”和“1”均以0.56 ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56 ms,“1”為1.68 ms,所以必須根據高電平的寬度區別“0”和“1”。如果從0.56 ms低電平過后,開始延時,0.56 ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”。為可靠起見,延時必須比0.56 ms長些,但又不能超過1.12 ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.12 ms+0.56 ms)/2=0.84 ms最為可靠,一般取0.84 ms左右即可[4]。根據紅外編碼的格式,程序應該等待9 ms的起始碼和4.5 ms的結果碼完成后才能讀碼。
(2)機器人接收及解碼
機器人采用的紅外接收電路以雙腳跳針J5控制供電,紅外接收器采用LT0038芯片,單片機接口引腳為P3.2。其中LT0038是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形于一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,沒有紅外遙控信號時為高電平,收到紅外信號時為低電平,而體積和普通的塑封三極管大小一樣。
機器人遙控模塊工作時,接通跳針開關J5啟動紅外接收器,當遙控器按相應按鍵則在大約10 m范圍內可被機器人接收器接收并解碼,傳入單片機后執行相應操作。具體操控為按遙控器“∧”鍵機器人前進、按“∨”鍵后退、按“<”鍵左轉、按“>”鍵右轉;按“≯”鍵停止,機器人上DS10、DS9、DS8、DS6、DS5 5個LED發光管則分別對應一種狀態。
機器人上還預留了12864型LCD液晶顯示模塊接口,接上LCD后可以對機器人運行狀態進行直觀的實時顯示。液晶12864有串并行兩種數據傳送方式,選擇時只需要將PSB設置為相應的高、低電平就可以,低電平為串行驅動,高電平為并行驅動。
并行方式引腳連線:控制線(RS-P1.0、R/W-P1.1、E-P1.2、PSB-P1.3、RST-P1.4)數據線(P0口)使用并行方式時占用的I/O較多,但是速度比較快。
串行方式引腳連線:片選CS-P1.0、數據SID-P1.1、時鐘SCLK-P1.2、模式PSB-P1.3、復位RST-P1.4占用的I/O比較少,因此在I/O不夠用的時候可以用這種方法。但是速度相對并行較慢。
按并行方式設計電路后,修改單片機引腳定義則機器人兩種方式都可以工作。特別要說明的是機器人使用了LCD狀態顯示功能后必須拔掉J2跳針控制的LED的狀態顯示模塊,因為兩者共用了單片機P1口,同時顯示會發生沖突;另外原程序也應適當修改。
機器人除以上主要模塊外還有單片機最小系統模塊、電源模塊、報警模塊等。其中電源模塊中,機器人控制電路系統采用直流5 V,而機器人電源供電和直流電動機驅動電壓為9 V,所以電路中使用了一塊DCDC芯片LM330,紅色發光二極管用來指示機器人電源打開與否,其原理圖如圖5所示。接通跳線開關J4,則啟動機器人報警模塊,使用的是5 V無驅動直流蜂鳴器,由單片機P3.7引腳控制,作用是當機器人處在循跡工作狀態且當前位置不在黑色軌道時鳴叫報警,同時機器人啟動后退程序,直到再次跟蹤到黑色軌道為止。

機器人程序采用單片機C語言編寫,同樣按模塊化設計思路編寫控制軟件,軟件控制模塊主要有中斷主程序,循跡子程序,直流電動機控制與PWM調速子程序,遙控子程序,狀態顯示子程序等。主程序流程如圖6所示,圖7為單片機中斷處理流程圖。

機器人處在紅外遙控狀態時,除前進、后退、左轉、右轉和停止5種動作外,還有5級調速功能,由PWM程序實現。脈沖寬度調制(pulse width modulation,縮寫為PWM)就是一種開關周期恒定,通過改變導通脈沖寬度來改變占空比的調制方式,機器人驅動電動機加載平均電壓(Uav)可用公式(1)表示[3]。

式中:Us為供電電源總電壓;ton為開關每次接通的時間;T為開關通斷的時間周期;α為占空比,α=ton/T。
由式(1)可見,改變脈沖占空比,電動機兩端的電壓平均值也隨之改變,電壓改變則轉速也將改變,從而達到調速目的。
單片機調速時,通過P2.0或P2.1使L298使能控制端為高電平,將PWM調速信號加載至IN1~IN4非“0”信號端,(比如機器人前進時,輸入端IN1和IN3為PWM信號,輸入端IN2和IN4為低電平),則電動機的轉速由單片機調節PWM信號的占空比來實現。設計中把直流電動機的速度設成了10個等級,由等級數來決定1個周期的高電平的總個數。按1個脈沖為200μs來計算,1個方波周期10個脈沖,周期即為2 ms。占空比為高電平脈沖個數比上1個周期總的脈沖個數10。當高電平脈沖個數為1時,占空比為1/10,速度最低;當高電平脈沖個數為10時,占空比為1,相當于電動機全速運行,速度最高。機器人根據實驗環境,實際采用5級調速,占空比分別為6/10、7/10、8/10、9/10和1,PWM周期為2 ms。
設計一種基于AT89S52單片機的多功能循跡機器人,該機器人有兩種工作狀態,在循跡狀態時,能在白底黑線上跟蹤軌跡,發生意外時(如“脫軌”)會自動報警并后退尋線直到再次回到軌跡線;在遙控狀態時,能用遙控器控制機器人前后左右移動,并能實現5級調速。該機器人參加江蘇省職業教育創新大賽,順利進入決賽階段并獲三等獎,從而證明了該機器人系統設計的可行性和合理性。
[1]韓建海,劉延斌,庫祥臣.“機器人學”課程教學改革與實踐[J].中國電力教育,2013(8):81-82.
[2]王晶,翁顯耀,梁業宗.自動尋跡小車的傳感器模塊設計[J].現代電子技術,2008(22):192-194.
[3]宋健.基于L298的直流電動機PWM調速[J].濰坊學院學報,2004,7(4):87-88.
[4]王立鳳.基于AT89C2051的紅外遙控彩燈設計[J].無錫商業職業技術學院學報,2010,12(6):98-99.