過 磊
(江蘇聯合職業技術學院 無錫機電分院,江蘇 無錫 214028)
基于AT89S52的機器人驅動系統研制
過 磊
(江蘇聯合職業技術學院 無錫機電分院,江蘇 無錫 214028)
研制了一種基于AT89S52的機器人驅動系統,通過該系統開發增加了學生興趣,加深了對機器人、直流電機、PWM知識的理解。介紹了驅動系統總體設計、硬件電路設計和控制軟件設計,重點介紹了PWM調速子程序。
AT89S52;機器人;驅動系統
近年來,將成熟的單片機技術應用于機器人控制系統一直是個研究熱點,這樣既可以降低開發難度,又可以縮短開發周期。本文設計研制的這款機器人驅動系統,就以AT89S52單片機為核心,由它控制驅動輪動作,調速采用PWM算法。該驅動系統開發難度低、可操作性強,而機器人本體則是江蘇省職業教育創新大賽獲獎作品
基于AT89S52單片機的機器人驅動系統結構框圖如圖1所示。該系統采用三輪結構,其中左前輪和右前輪為驅動輪,后輪為支撐輪。系統主要由AT89S52單片機控制模塊、紅外遙控指令接收模塊、左右直流電機驅動模塊、LED/LCD狀態顯示模塊和電源模塊組成。

圖1 機器人驅動系統結構框圖
機器人運行時,電源模塊啟動,將機器人供電電壓分為9 V直流電機驅動電壓和5 V單片機控制電壓;遙控模塊負責接收紅外遙控器信號,并將信號處理后傳輸給單片機;AT89S52單片機模塊收到遙控信號,運算處理后向驅動輪發送控制信號,驅動機器人完成相應動作,控制信號分動作控制和調速控制兩類,同時向顯示模塊發送當前狀態顯示信號;驅動和顯示模塊接收控制信號并根據信號完成各自的驅動和顯示任務,為增加顯示的直觀性,機器人設置了LED和LCD兩種顯示方式。
2.1 單片機最小系統
單片機最小系統由3部分組成:電源電路、晶振電路、復位電路。機器人核心控制單元為AT89S52單片機,AT89S52是一種低功耗、高性能COMS 8位微處理器,具有8 kB在系統可編程Flash存儲器,使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器[1]。
2.2 L298驅動模塊
單片機I/O口電流在10 mA左右,無法直接驅動負載直流電機,為保證驅動系統有足夠的電流,設計采用了驅動集成電路芯片L298。L298芯片內部是雙橋高電壓大電流功率集成電路,直接采用邏輯電平控制,可用來驅動繼電器、線圈、直流電機、步進電機等電感性負載,它的驅動電壓可達46 V,直流電流總和可達4 A,其內部具有2個完全相同的功率放大回路[2]。
機器人直流電機驅動電路原理圖如圖2所示。雙腳跳針J3為驅動電路控制開關,用來控制電路供電,L298用來驅動機器人左、右兩輪直流電機,直流電機的邏輯控制信號從單片機P2口的P2.0~P2.5這6個引腳發出,8個二極管D1~D8單向導通,起到對直流電機的保護作用。L298芯片供電電壓與機器人控制電路供電電壓一致,為直流5 V,而左、右電機驅動電壓為直流9 V,它們分別接L298芯片4號VS和9號VSS引腳。

圖2 機器人直流電機驅動電路原理圖
有了以上驅動電路,就可以將單片機控制信號通過驅動芯片L298與機器人動作聯系起來,具體邏輯信號與動作關系如表1所示。其中,“1”為高電平,“0”為低電平,“X”為任意狀態。

表1 單片機控制信號與機器人動作關系
2.3 其他模塊
其他模塊主要包含電源模塊、遙控模塊和顯示模塊。電源模塊由電壓轉換芯片LM330、電源指示燈和濾波電容組成,LM330可以將機器人4節1.5 V電池串接而成的9 V供電電壓轉換成5 V電壓,以供控制芯片(如AT89S52、L298等)使用,而機器人左、右輪驅動電機則直接接9 V供電電壓。遙控模塊由紅外接收芯片LT0038和周邊電路組成,LT0038集紅外線接收、放大、整形于一體,沒有紅外遙控信號時為高電平,收到紅外信號時為低電平[3]。顯示模塊由8個綠色LED實現,用雙腳跳針開關J2控制供電,機器人驅動控制時,前進、后退、左轉、右轉和停止等動作都以對應燈號的點亮來指示,為增加直觀性機器人顯示模塊還預留了12864型LCD液晶顯示接口。
機器人驅動系統主程序主要包含動作控制子程序和PWM調速子程序。動作控制是將AT89S52單片機P2.0~P2.5口與驅動芯片L298使能端EN口和輸入端IN口對應引腳相接(具體接法見圖2),再對照表1,單片機控制輸出P2.0~P2.5組合信號就可以實現機器人前進、后退、左轉、右轉和停止等動作控制。
3.1 PWM調速子程序
脈沖寬度調制(Pulse Width Modulation,縮寫為PWM)調速,是一種直流電機廣泛采用的調速方式,它的開關周期恒定,通過改變導通脈沖寬度來改變占空比,從而改變電機兩端電壓均值,達到控制電機轉速的目的[4]。為節約開發成本,增加控制程序靈活性,設計采用PWM算法實現直流電機調速功能,具體將電機速度設為10個等級,由等級數來決定一個周期的高電平的總個數,一個基準脈沖為200 μs,則周期為200 μs×10,即2 ms。單片機控制時,先通過置P2.0或P2.1高電平打開L298使能端,再將PWM調速信號加載至P2.2~P2.5非“0”信號端,比如機器人前進時,輸入端P2.2和P2.4為PWM信號,則電機的轉速由單片機調節PWM信號的占空比來實現。例如,控制機器人運動速度為4級,即一個周期內(10個基準脈沖)有4個高電平數,占空比為4/10,實際速度為全速的40%;再如,控制機器人速度為10級,即一個周期內(10個基準脈沖)有10個高電平數,占空比為10/10,實際速度為全速。嚴格地講,平均速度與占空比并不是嚴格的線性關系,但在一般的應用中,可將其近似看成線性關系[5]。PWM調速流程如圖3所示。
3.2 PWM調速程序代碼
PWM調速程序代碼如下:
unsigned char status=0; //P2口狀態設置變量
unsigned char speed_range; //PWM周期范圍,基準脈沖200us
char data speed_set; //當前速度等級,預設10級
bit bdata signal; //PWM輸出信號標志,“1”高電平,“0”低電平
bit bdata PWM; //PWM有效標志,“1”用PWM調速,“0”不用
unsigned char way=0; //機器人狀態(如前進、后退、左/右轉等),默認停止
/**************定時器,中斷初始化**************/
void initial()
{
P1=0xff;
TMOD=0x12; //設置定時器:T0方式2,T1方式1
IE=0x83;
IT0=1;
TH0=0x48; TL0=0x48; //T0 200us定時初值
TR0=1; //啟動T0
speed_set=0; //當前速度等級清零,機器人運行時讀遙控器值
speed_range=10; //設置PWM周期為2ms(200us*10)
P2_0=1; P2_1=1; //打開電機使能端
status=P2&0xc0;
PWM=0; //清PWM標志位
}
/**************PWM調速子程序,中斷接收**************/
void timer0(void) interrupt 1
{
uint i;
TH0=0x48; TL0=0x48; //重裝200us定時初值
if(PWM) //如果PWM有效
{ for(i=0;i { if(i<=speed_set) {signal=1;} //如果i小于當前速度等級,置PWM輸出標志 else {signal=0;} if(way==1) //前進 {P2_2=signal; P2_4=signal;} else if (way==2) //后退 {P2_3=signal;P2_5=signal;} else if (way==3) //右轉 {P2_2=signal;} else if (way==4) //左轉 {P2_4=signal;} } } else {signal=0;} //如果PWM無效 } 圖3 PWM調速子程序流程圖 研制了一種基于AT89S52單片機的機器人驅動系統,該驅動系統根據紅外遙控信號控制機器人做前進、后退、左轉、右轉和停止運動,并同時帶有10級PWM調速功能。該驅動系統結構簡易,可操作性強。通過該系統的開發,可加深學生對機器人常識、直流電機控制、PWM調速功能等知識的理解,提高其動手能力,收到了良好的教學效果。另外該機器人增加循跡、報警等實用功能模塊后,參加了江蘇省職業教育創新大賽,順利進入決賽展示階段并最終獲獎,從而進一步證明該驅動系統的可操作性和實用性。 [1] 顧劍.無刷直流電機單片機控制調速系統設計[J].電子世界,2014(9):134-135. [2] 宋健.基于L298的直流電動機PWM調速[J].濰坊學院學報,2004,7(4):87-88. [3] 王立鳳.基于AT89C2051的紅外遙控彩燈設計[J].無錫商業職業技術學院學報,2010,12(6):98-99. [4] 庹朝永.基于單片機的直流電機PWM調速系統設計與開發[J].煤炭技術,2011,30(6):62-63. [5] 林金陽,王明福.基于MC51單片機的直流電機PWM調速系統[J].長春工程學院學報(自然科學版),2009,10(3):32-35. Development of Robot Drive System Based on AT89S52 GUO Lei (Wuxi Machinery and Electronic Branch of Jiangsu Union Technical Institute, Wuxi 214028, China) A kind of robot drive system was developed based on AT89S52, which could increase the interest of students and deepen the knowledge of robot, DC motor and PWM. The general design, the hardware circuit and the control software, especially PWM speed control were introduced. AT89S52; robot; drive system 1672- 6413(2015)06- 0137- 03 2014- 09- 29; 2015- 06- 17 過磊(1980-),男,江蘇無錫人,副教授,碩士,主要從事機電一體化技術、機器人技術等方面的教學研究。 TP273 A 江蘇省職業技術教育學會2015~2016年度職業教育研究立項課題(XHXS2015017)
4 結束語