0 引言
目前許多高等教育院校采用教育機(jī)器人進(jìn)行課堂教學(xué)和培養(yǎng)學(xué)生的創(chuàng)新能力。本文設(shè)計(jì)的教育機(jī)器人通過(guò)紅外光電傳感器陣列檢測(cè)路面信息并利用模糊自整定PID算法將采集的路面信息和電機(jī)運(yùn)行數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,實(shí)現(xiàn)教育機(jī)器人的智能巡航并將機(jī)器人的狀態(tài)顯示輸出。
1 機(jī)器人的組成及工作原理
機(jī)器人由硬件和軟件兩部分組成。采用STC12CSA60S2單片機(jī)作為系統(tǒng)控制的核心部件,完成路面信息檢測(cè)、直流電機(jī)控制、電機(jī)轉(zhuǎn)速檢測(cè)、數(shù)碼管顯示、蜂鳴器報(bào)警以及鍵盤(pán)輸入等功能,硬件系統(tǒng)框圖如圖1所示。
軟件部分主要完成路況檢測(cè)、PID電機(jī)控制、輸入輸出人機(jī)接口,可實(shí)現(xiàn)各種機(jī)器人巡航動(dòng)作、智能循跡等功能。
2 STC12系列單片機(jī)
本文采用的STC12C5A60S2單片機(jī)是是宏晶科技生產(chǎn)的STC12系列單片機(jī)。該單片機(jī)是單時(shí)鐘/機(jī)器周期(1T),具有高速、低功耗、超強(qiáng)抗干擾和無(wú)法解密諸多優(yōu)點(diǎn)。指令代碼完全兼容傳統(tǒng)8051,速度快8-12倍。工作電壓為3.3 V~5.5 V(5V單片機(jī)),有6個(gè)16位定時(shí)器,兼容普通8051的定時(shí)器或4個(gè)外部中斷,具有看門(mén)狗和EEPROM功能,并且內(nèi)部集成MAX810專(zhuān)用復(fù)位電路。
3 硬件設(shè)計(jì)
3.1 系統(tǒng)電源
由于電機(jī)在啟動(dòng)瞬間電流很大,要求電源有足夠大的驅(qū)動(dòng)能力,因此系統(tǒng)采用雙電源供電方式。利用LM7805將12 V鋰電池組電壓轉(zhuǎn)換為5 V穩(wěn)壓電源給單片機(jī)最小系統(tǒng)電路、路面檢測(cè)電路、數(shù)碼管顯示電路和電機(jī)測(cè)速電路供電。而電機(jī)驅(qū)動(dòng)電路直接由另外一組鋰電池輸出的12 V電壓直接供電。
3.2 電機(jī)驅(qū)動(dòng)電路
本系統(tǒng)使用的直流電機(jī)額定電壓為12 V,額定轉(zhuǎn)速為300 rpm。電機(jī)驅(qū)動(dòng)電路采用專(zhuān)用芯片L298N作為電機(jī)驅(qū)動(dòng)芯片。用該芯片作為電機(jī)驅(qū)動(dòng),不僅穩(wěn)定性好,大大地簡(jiǎn)化驅(qū)電路,而且驅(qū)動(dòng)能力大,有利于電機(jī)轉(zhuǎn)速的穩(wěn)定。電機(jī)驅(qū)動(dòng)電路如圖2所示。
3.3 紅外光電傳感器尋跡陣列模塊
紅外光電檢測(cè)電路工作原理是:紅外線(xiàn)射到路面并反射,利用紅外線(xiàn)在黑線(xiàn)和白線(xiàn)對(duì)光的反射系數(shù)不同的特點(diǎn)一白色反光線(xiàn),黑色吸收光線(xiàn),電路設(shè)計(jì)一個(gè)發(fā)射紅外光和一個(gè)紅外光敏二極管,當(dāng)檢測(cè)到黑線(xiàn)時(shí),檢測(cè)電路向單片機(jī)發(fā)出一個(gè)高電平信號(hào)。當(dāng)檢測(cè)到白色時(shí),檢測(cè)電路向單片機(jī)發(fā)出一個(gè)低電平信號(hào)。
由7組紅外光電檢測(cè)電路排成一排構(gòu)成一個(gè)紅外光電傳感器陣列模塊,安置在機(jī)器人的車(chē)頭位置。在對(duì)黑線(xiàn)循跡的過(guò)程中,紅外光電傳感器陣列模塊可以求得機(jī)器人對(duì)黑線(xiàn)軌跡位移偏移量。單片機(jī)檢測(cè)到紅外光電傳感器陣列模塊的信號(hào)與機(jī)器人的位移偏移量如表1所示。
當(dāng)機(jī)器人行駛的狀態(tài)不一樣時(shí),7組傳感器輸出的值也對(duì)應(yīng)不同,從表中可以得到機(jī)器人在巡航過(guò)程中機(jī)器人所處位置與黑色軌跡的偏移量。
3.4 車(chē)速檢測(cè)模塊
教育機(jī)器人系統(tǒng)通過(guò)車(chē)速檢測(cè)模塊來(lái)讀取當(dāng)前車(chē)速。采用的方法是在后左右輪上分別粘貼一個(gè)均勻分布有黑白條紋的編碼盤(pán)(見(jiàn)圖3(a)),利用圖3(b)的檢測(cè)電路來(lái)對(duì)編碼盤(pán)上的黑白條紋進(jìn)行檢測(cè)。當(dāng)車(chē)輪轉(zhuǎn)動(dòng)時(shí),紅外接收管接收到的反射光強(qiáng)弱高低變化就會(huì)產(chǎn)生與車(chē)輪轉(zhuǎn)速相對(duì)應(yīng)的脈沖信號(hào),將該脈沖信號(hào)進(jìn)行放大整形后輸入單片機(jī)的引腳P3.4和P3.5,記錄單位時(shí)間內(nèi)所得到的脈沖數(shù),就能夠表示出當(dāng)前車(chē)左右輪子的速度,同時(shí)通過(guò)累加可以計(jì)算出小車(chē)所行走的路程。
3.5 其他電路
數(shù)碼管顯示電路主要是顯示當(dāng)前機(jī)器人的行走速度。采用LED數(shù)碼管動(dòng)態(tài)顯示,段碼用PNP三極管驅(qū)動(dòng)。系統(tǒng)顯示的距離范圍在10米之內(nèi),選用4位LED共陽(yáng)數(shù)碼管,通過(guò)單片機(jī)編程實(shí)現(xiàn)動(dòng)態(tài)掃描顯示。顯示字符由單片機(jī)P0口送出,P1.6、P1.7、P3.0和P3.1分別控制每一位數(shù)碼管的動(dòng)態(tài)顯示。
報(bào)警電路通過(guò)單片機(jī)P3.7控制蜂鳴器來(lái)完成。P3.7輸出低電平時(shí),蜂鳴器報(bào)警;P3.7輸出高電平,蜂鳴器不報(bào)警。單片機(jī)的外部中斷輸入口P3.2和P3.3與地之間分別接入輕觸按鈕作為系統(tǒng)的啟動(dòng)和停止開(kāi)關(guān),作為按鍵輸入電路。
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)控制的實(shí)現(xiàn)是由軟件完成的。軟件設(shè)計(jì)基于keilC51編寫(xiě)的,采用模塊化結(jié)構(gòu)設(shè)計(jì),各個(gè)功能子塊獨(dú)立。在結(jié)構(gòu)上由1個(gè)主程序文件main.c和8個(gè)子程序文件(key.c、pid.c、detect.c、seg.c、speed.c和motor.c)組成。main.c主程序文件完成一系列任務(wù)的初始化工作和處理各個(gè)任務(wù)工作的協(xié)調(diào)。key.c文件完成按鍵中斷檢測(cè)和蜂鳴器報(bào)警任務(wù);seg.c文件完成數(shù)碼管顯示;sp∞d.c文件完成電機(jī)速度檢測(cè);motor.c完成PWM的配置和電機(jī)的控制;detect.c文件完成紅外光電傳感器陣列檢測(cè);pid.c文件實(shí)現(xiàn)模糊參數(shù)自整定PID運(yùn)算處理。其中定時(shí)器TO產(chǎn)生采樣周期T秒定時(shí)中斷,每間隔T秒中斷一次,完成一次PID控制計(jì)算,同時(shí)調(diào)用模糊參數(shù)自整定PID運(yùn)算子程序?qū)y(cè)試轉(zhuǎn)速和設(shè)定轉(zhuǎn)速進(jìn)行差值計(jì)算得到輸出值,用于配置PWM的輸出,控制電機(jī)轉(zhuǎn)速。主程序和定時(shí)器TO中斷處理流程圖如圖4所示。
4.1 模糊PID參數(shù)自整定控制器原理
PID參數(shù)模糊自整定是找出PID中3個(gè)參數(shù)與e和ec之間的模糊關(guān)系,在運(yùn)行中通過(guò)不斷檢測(cè)e和ec,根據(jù)模糊控制原理來(lái)對(duì)3個(gè)參數(shù)進(jìn)行在線(xiàn)修改,以滿(mǎn)足不同e和ec對(duì)控制參數(shù)的不同要求,而使被控對(duì)象有良好的動(dòng)穩(wěn)態(tài)性能。從系統(tǒng)的穩(wěn)定性、響應(yīng)速度、超調(diào)量和穩(wěn)態(tài)精度等方面來(lái)考慮,Kp,Ki,Kd的作用如下:Kp的作用是加快系統(tǒng)的響應(yīng)速度,提高系統(tǒng)的調(diào)節(jié)精度;Ki用于消除系統(tǒng)的穩(wěn)態(tài)誤差;Kd改善系統(tǒng)的動(dòng)態(tài)性能。圖5是PID控制器設(shè)計(jì)結(jié)構(gòu)原理圖。
由PID各個(gè)參數(shù)對(duì)系統(tǒng)的影響得到:
(1)當(dāng)誤差|e|較大時(shí),說(shuō)明誤差的絕對(duì)值較大,不論誤差的變化趨勢(shì)如何,都應(yīng)該考慮控制器的Kp取較大值,以提高響應(yīng)的快速性;而為防止因?yàn)閨ec|瞬時(shí)過(guò)大,kd應(yīng)該取較小的值;為控制超調(diào),ki也應(yīng)該取值很小。
(2)當(dāng)誤差|e|在中等大小時(shí),為保證系統(tǒng)的相應(yīng)速度并控制超調(diào),應(yīng)減小Kp,Ki值應(yīng)增大,Kd應(yīng)適中。
(3)當(dāng)誤差|e|較小時(shí),為保證系統(tǒng)具有良好的穩(wěn)態(tài)特性,應(yīng)加大Kp、Ki的取值,同時(shí)為避免產(chǎn)生振蕩,Kd的取值應(yīng)該和|ec|聯(lián)系起來(lái)。
教育機(jī)器人屬于典型的非線(xiàn)性、時(shí)變、模型不確定復(fù)雜系統(tǒng)。在實(shí)際中,機(jī)器人行駛道路有直道、大彎道、“S”型小彎道。利用教育機(jī)器人在相同的路況下其特性基本不變,可分別確定這3種道路參數(shù)下的最佳PID參數(shù)。其核心思想是把控制周期內(nèi)的機(jī)器人狀態(tài)視為不變,只要控制周期較短,就可實(shí)現(xiàn)很好的控制效果。在機(jī)器人實(shí)際的行使中,每10ms進(jìn)行1次控制,可滿(mǎn)足要求。
4.2 PID參數(shù)設(shè)定
模糊PID控制根據(jù)系統(tǒng)運(yùn)行的不同狀態(tài),考慮Kp、Ki、Kd三者的關(guān)聯(lián),根據(jù)工程經(jīng)驗(yàn)并依據(jù)各參數(shù)的作用,通過(guò)大量的測(cè)試獲得本系統(tǒng)對(duì)應(yīng)路況下的PID參數(shù),實(shí)驗(yàn)數(shù)據(jù)如下:
(1)在直道上系統(tǒng)取kp=3,Ki=5,kd=0,測(cè)試環(huán)境為一條長(zhǎng)度5 m的長(zhǎng)直道;
(2)在大彎道上系統(tǒng)取kp=10,Ki=1,kd=1,測(cè)試環(huán)境為直道進(jìn)入一個(gè)半徑為100 cm的3/4圓;
(3)在“S”型小彎道上系統(tǒng)取kp=7,Ki=4,kd=3,測(cè)試環(huán)境為3個(gè)90度圓弧構(gòu)成的"S"型小彎道。
5 結(jié)束語(yǔ)
用STC12C5A60S2單片機(jī)配合紅外光電陣列檢測(cè)模塊對(duì)直流電機(jī)執(zhí)行參數(shù)自整定模糊PID控制器,解決了直流電機(jī)在巡航過(guò)程中產(chǎn)生抖動(dòng)前進(jìn)的控制問(wèn)題,使得教育機(jī)器人在行走的過(guò)程中更平穩(wěn),且控制方法簡(jiǎn)單、實(shí)用。