隋美麗,楊立平,呂江毅,劉敏杰
(北京電子科技職業(yè)學(xué)院 汽車工程學(xué)院,北京100176)
在現(xiàn)代生活中,自動(dòng)控制在生活、科研、軍事等很多領(lǐng)域發(fā)揮了重要的作用。隨著嵌入式技術(shù)和通信技術(shù)的迅猛發(fā)展,自動(dòng)控制系統(tǒng)的功能和穩(wěn)定性都得到了很大的提高。自動(dòng)控制小車的研究涉及單片機(jī)與PC機(jī)通信接口問題、小車遙控器控制、直流電機(jī)的控制方式等[1][2],本文只是對(duì)在自動(dòng)控制的情況下,線控小車控制系統(tǒng)的軟硬件實(shí)現(xiàn)進(jìn)行研究,實(shí)現(xiàn)小車前進(jìn)、后退、轉(zhuǎn)向和加減速等功能。
以STC12C5201AD單片機(jī)為核心,編寫小車驅(qū)動(dòng)程序,使其能接受線控器的控制功能,控制小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速、停止,并且在沒有控制信號(hào)輸出時(shí),小車能保持靜止?fàn)顟B(tài)[3][4]。P1.6、P3.5和P2.1、P3.7控制小車兩個(gè)后輪,舵機(jī)控制輸出口為P2.5,小車采用RS-485總線協(xié)議來接收線控器命令,并與下載功能一起使用P3.0、P3.1口。圖1為小車硬件電路圖。
小車控制程序接收端串口采用RS-485模式通信,通信參數(shù)規(guī)定為:波特率規(guī)定為19200,數(shù)據(jù)位為8位,停止位為1位,無奇偶校驗(yàn),因此,線控器(發(fā)送端)也必須與接收端保持一致。線控器STC12C5202AD主控芯片也必須通過RS-485總線向小車發(fā)送命令來控制小車啟停、轉(zhuǎn)向、尾燈閃爍等。線控器與小車的通信控制協(xié)議(十六進(jìn)制)為:
一個(gè)完整的控制命令包含14個(gè)字節(jié)控制信息,而這些信息中,對(duì)于某一小車而言,只有小車左輪轉(zhuǎn)速(或小車右輪轉(zhuǎn)速)、正反轉(zhuǎn)/燈閃、舵機(jī)轉(zhuǎn)角三個(gè)字節(jié)信息有效信息,因此,可以對(duì)數(shù)據(jù)包進(jìn)行精簡(jiǎn)。但是,要想獲得一個(gè)完整的控制命令包,可以選擇接收30個(gè)字節(jié)數(shù)據(jù)(其中一定包含有一個(gè)完整的控制命令包),當(dāng)接收到30個(gè)字節(jié)命令數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行提取,找出其中的關(guān)鍵性控制命令字。由于每次取30個(gè)字節(jié),會(huì)丟失一些數(shù)據(jù),但由于系統(tǒng)的主頻較高,每秒接收大量的控制數(shù)據(jù)并處理,能夠達(dá)到對(duì)小車的實(shí)時(shí)控制。
圖1 小車電路圖
系統(tǒng)主要依靠軟件來完成控制命令的接收,數(shù)據(jù)的分離與提取、控制命令的執(zhí)行??刂泼钣纱谪?fù)責(zé)接收,將系統(tǒng)晶振定為22.1184MHz,用定時(shí)器T1作為串口波特率發(fā)生器,為了提高傳輸?shù)男剩覀儼巡ㄌ芈识?19200bps,而不是常用的9600bps低速傳輸。如果小車端在接收串口命令時(shí)采用查詢方式,經(jīng)常會(huì)丟失數(shù)據(jù),導(dǎo)致控制實(shí)時(shí)性較差,因此,本系統(tǒng)采用中斷方式,一旦有控制命令傳來,系統(tǒng)會(huì)立刻響應(yīng)。對(duì)于舵機(jī)操作,由于要精確輸出周期為20ms的PWM,其高電平范圍在0.5ms~2.5ms之間,也必須采用精確定時(shí)來完成,在這里我們選用定時(shí)器中斷方式來完成,否則會(huì)產(chǎn)生舵機(jī)控制抖動(dòng)情況。而對(duì)于直流電機(jī)的速度控制,則采用了CPU等待延時(shí)方式,不使用定時(shí)器資源。串口控制命令接收流程如圖2所示,小車驅(qū)動(dòng)程序流程如圖3所示。
圖2 串口控制命令接收流程圖
圖3 小車驅(qū)動(dòng)程序流程圖
小車驅(qū)動(dòng)程序包含延時(shí)子程序、串口初始化子程序、串口接收子程序(中斷方式)、小車后輪正反轉(zhuǎn)子程序、定時(shí)器初始化子程序、舵機(jī)控制子程序和主函數(shù)等[5]。其實(shí)現(xiàn)代碼如下所示:
在小車驅(qū)動(dòng)的軟件設(shè)計(jì)中,采用了模塊化的設(shè)計(jì)思想,各模塊間相互獨(dú)立,實(shí)現(xiàn)功能時(shí)又能做到分工合作,經(jīng)過實(shí)際測(cè)試,達(dá)到了預(yù)期設(shè)計(jì)指標(biāo),滿足了線控要求,并且穩(wěn)定性和抗干擾能力強(qiáng),精度高,誤差低,適用于車模競(jìng)賽、兒童玩具等各種應(yīng)用場(chǎng)合,具有一定的推廣應(yīng)用價(jià)值。
[1] 王建飛.基于單片機(jī)控制的自動(dòng)往返小汽車的新設(shè)計(jì)[J].現(xiàn)代與電子技術(shù),2006,234(19):127-129.
[2] 郭立芝.一種自動(dòng)往返小車設(shè)計(jì)與制作[J].河南機(jī)電高等??茖W(xué)校學(xué)報(bào),2010,(3):10-13.
[3] 王強(qiáng).遙控小車控制系統(tǒng)設(shè)計(jì)[D].青島理工大學(xué),2011.
[4] 王艷.基于51單片機(jī)的紅外遙控小車設(shè)計(jì)和制作[J].北京:電子制作,2010,(06).
[5] 張洪潤(rùn),孫悅,張亞凡.單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.