一、系統(tǒng)設(shè)計(jì)
1、設(shè)計(jì)要求
(1)自動(dòng)尋跡小車開(kāi)始處于設(shè)置模式下,通過(guò)按鍵設(shè)置運(yùn)行時(shí)間,完成設(shè)置時(shí)間后,按下開(kāi)始鍵小車啟動(dòng),同時(shí)顯示當(dāng)前運(yùn)行的時(shí)間。
(2)小車按指定路線運(yùn)行,自動(dòng)區(qū)分直線軌道和彎路軌道,在指定彎路處拐彎,實(shí)現(xiàn)靈活前進(jìn)、轉(zhuǎn)彎等功能。
(3)小車行走在預(yù)設(shè)的時(shí)間后,自動(dòng)停止,數(shù)碼管顯示行走的時(shí)間,3秒后顯示行走距離。
(4)中途可以按右鍵強(qiáng)制停止,提前結(jié)束,顯示行走時(shí)間,距離。
2、小車循跡的原理
這里的循跡是指小車在白色地板上循黑線行走,通常采取的方法是紅外探測(cè)法。
紅外探測(cè)法,即利用紅外線在不同顏色的物體表面具有不同的反射性質(zhì)的特點(diǎn),在小車行駛過(guò)程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機(jī)就是否收到反射回來(lái)的紅外光為依據(jù)來(lái)確定黑線的位置和小車的行走路線。紅外探測(cè)器探測(cè)距離有限,一般最大不應(yīng)超過(guò)3cm。
3、模塊方案比較與論證
根據(jù)設(shè)計(jì)要求,本系統(tǒng)主要由控制器模塊、電源模塊、尋跡傳感器模塊、直流電機(jī)及其驅(qū)動(dòng)模塊、電壓比較模塊等模塊構(gòu)成。
為較好的實(shí)現(xiàn)各模塊的功能,我們分別設(shè)計(jì)了幾種方案并分別進(jìn)行了論證。
3.1車體設(shè)計(jì)
方案1:購(gòu)買玩具電動(dòng)車。購(gòu)買的玩具電動(dòng)車具有組裝完整的車架車輪、電機(jī)及其驅(qū)動(dòng)電路。但是一般的說(shuō)來(lái),玩具電動(dòng)車具有如下缺點(diǎn):首先,這種玩具電動(dòng)車由于裝配緊湊,使得各種所需傳感器的安裝十分不方便。其次,這種電動(dòng)車一般都是前輪轉(zhuǎn)向后輪驅(qū)動(dòng),不能適應(yīng)該題目的方格地圖,不能方便迅速的實(shí)現(xiàn)原地保持坐標(biāo)轉(zhuǎn)90度甚至180度的彎角。再次,玩具電動(dòng)車的電機(jī)多為玩具直流電機(jī),力矩小,空載轉(zhuǎn)速快,負(fù)載性能差,不易調(diào)速。而且這種電動(dòng)車一般都價(jià)格不菲。因此我們放棄了此方案。
方案2:自己制作電動(dòng)車。經(jīng)過(guò)反復(fù)考慮論證,我們制定了左右兩輪分別驅(qū)動(dòng),前萬(wàn)向輪轉(zhuǎn)向的方案。即左右輪分別用兩個(gè)轉(zhuǎn)速和力矩基本相同的直流電機(jī)進(jìn)行驅(qū)動(dòng),車體首部裝一個(gè)萬(wàn)向輪。由此可以輕松的實(shí)現(xiàn)小車坐標(biāo)不變的90度轉(zhuǎn)彎。
在安裝時(shí)我們保證兩個(gè)驅(qū)動(dòng)電機(jī)同軸。當(dāng)小車前進(jìn)時(shí),左右兩驅(qū)動(dòng)輪與前萬(wàn)向輪形成了三點(diǎn)結(jié)構(gòu)。這種結(jié)構(gòu)使得小車在前進(jìn)時(shí)比較平穩(wěn),可以避免出現(xiàn)后輪過(guò)低而使左右兩驅(qū)動(dòng)輪驅(qū)動(dòng)力不夠的情況。為了防止小車重心的偏移,前萬(wàn)向輪起支撐作用。
對(duì)于車架材料的選擇,我們經(jīng)過(guò)比較選擇了鋁合金。用有鋁合金做的車架比塑料車架更加牢固,比鐵制小車更輕便,美觀。
3.2控制器模塊
方案1:采用stc宏晶公司的stc89c52單片機(jī)作為主控制器。stc89c5是一個(gè)低功耗,高可*性,超低價(jià),無(wú)法解密,高性能的8位單片機(jī),片內(nèi)含32k空間的可反復(fù)擦寫(xiě)100,000次的Flash只讀存儲(chǔ)器, 32個(gè)IO口,且stc系列的單片機(jī)可以在線編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。
從方便使用的角度考慮,我們選擇了此方案。
3.3電源模塊
方案1:采用12V蓄電池為直流電機(jī)供電,將12V電壓降壓、穩(wěn)壓后給單片機(jī)系統(tǒng)和其他芯片供電。蓄電池具有較強(qiáng)的電流驅(qū)動(dòng)能力以及穩(wěn)定的電壓輸出性能。雖然蓄電池的體積過(guò)于龐大,在小型電動(dòng)車上使用極為不方便,但由于我們的車體設(shè)計(jì)時(shí)留出了足夠的空間,并且蓄電池的價(jià)格比較低。因此我們選擇了此方案。
綜上考慮,我們選擇了此方案。
3.4穩(wěn)壓模塊
方案1:用一個(gè)7805直接降壓,用大散熱片。雖然結(jié)構(gòu),原理簡(jiǎn)單,但電流過(guò)大,使電路不穩(wěn)定,容易燒壞穩(wěn)壓塊我們放棄了此方案。
方案2:直接用兩7805把電壓直接穩(wěn)壓到5V,理論上由于降壓過(guò)大容易燒穩(wěn)壓塊,用兩個(gè)7805并聯(lián)。但兩個(gè)穩(wěn)壓塊出現(xiàn)饋贈(zèng)問(wèn)題,后用修改電路解決此問(wèn)題,我們最后選擇了此方案
3.5尋跡傳感器模塊
方案1:用光敏電阻組成光敏探測(cè)器。光敏電阻的阻值可以跟隨周圍環(huán)境光線的變化而變化。當(dāng)光線照射到白線上面時(shí),光線發(fā)射強(qiáng)烈,光線照射到黑線上面時(shí),光線發(fā)射較弱。因此光敏電阻在白線和黑線上方時(shí),阻值會(huì)發(fā)生明顯的變化。將阻值的變化值經(jīng)過(guò)比較器就可以輸出高低電平。
但是這種方案受光照影響很大,不能夠穩(wěn)定的工作。因此我們考慮其他更加穩(wěn)定的方案。
方案2:用RPR220型光電對(duì)管。RPR220是一種一體化反射型光電探測(cè)器,其發(fā)射器是一個(gè)砷化鎵紅外發(fā)光二極管,而接收器是一個(gè)高靈敏度,硅平面光電三極管。
RPR220采用DIP4封裝,其具有如下特點(diǎn):
塑料透鏡可以提高靈敏度。
內(nèi)置可見(jiàn)光過(guò)濾器能減小離散光的影響。
體積小,結(jié)構(gòu)緊湊。
當(dāng)發(fā)光二極管發(fā)出的光反射回來(lái)時(shí),經(jīng)過(guò)lm339電壓比較芯片,通過(guò)對(duì)門(mén)限電壓進(jìn)行比較,輸出高低電平,通過(guò)調(diào)整門(mén)限電壓可以調(diào)整傳感器單元的靈敏度。此光電對(duì)管調(diào)理電路簡(jiǎn)單,工作性能穩(wěn)定。
因此我們選擇了方案2。
3.6電機(jī)模塊
本系統(tǒng)為智能電動(dòng)車,對(duì)于電動(dòng)車來(lái)說(shuō),其驅(qū)動(dòng)輪的驅(qū)動(dòng)電機(jī)的選擇就顯得十分重要。由于本實(shí)驗(yàn)要實(shí)現(xiàn)對(duì)路徑的準(zhǔn)確定位和精確測(cè)量,我們綜合考慮了一下兩種方案。
方案1:采用直流減速電機(jī)。直流減速電機(jī)轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝配簡(jiǎn)單,使用方便。由于其內(nèi)部由高速電動(dòng)機(jī)提供原始動(dòng)力,帶動(dòng)變速(減速)齒輪組,可以產(chǎn)生較大扭力。
我們所選用的直流電機(jī)減速比為1:2,減速后電機(jī)的轉(zhuǎn)速為50r/min。我們的車輪直徑為6cm,因此我們的小車的理論最大速度可以達(dá)到
V=2πr•v=3.14*0.08*50/60=0.1570m/s
因我們用軟件對(duì)電機(jī)調(diào)速,實(shí)際值要比這小一些
注意:在實(shí)際計(jì)算時(shí)用的是理論值。
能夠較好的滿足系統(tǒng)的要求,因此我們選擇了此方案。
3.7電機(jī)驅(qū)動(dòng)模塊
方案1:采用專用芯片L298N作為電機(jī)驅(qū)動(dòng)芯片。L298N是一個(gè)具有高電壓大電流的全橋驅(qū)動(dòng)芯片,它相應(yīng)頻率高,一片L298N可以分別控制兩個(gè)直流電機(jī),而且還帶有控制使能端。用該芯片作為電機(jī)驅(qū)動(dòng),操作方便,穩(wěn)定性好,性能優(yōu)良。
方案2:對(duì)于直流電機(jī)用分立元件構(gòu)成驅(qū)動(dòng)電路。由分立元件構(gòu)成電機(jī)驅(qū)動(dòng)電路,結(jié)構(gòu)簡(jiǎn)單,價(jià)格低廉,在實(shí)際應(yīng)用中應(yīng)用廣泛。但是這種電路工作性能不夠穩(wěn)定。
因此我們選用了方案1。
4、最終方案
經(jīng)過(guò)反復(fù)論證,我們最終確定了如下方案:
(1)車體用鋁合金車架手工制作。
(2)采用stc89c52單片機(jī)作為主控制器。
(3)用12V蓄電池為直流電機(jī)供電,將12V電壓經(jīng)7805(帶大散熱片)降壓、穩(wěn)壓后為單片機(jī)系統(tǒng)和其他芯片供電。
(4)用RPR220型光電對(duì)管進(jìn)行尋跡。
(5)L298N作為直流電機(jī)的驅(qū)動(dòng)芯片。
二、硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)
1、傳感器模塊的設(shè)計(jì)
因此我們考慮用比較器的方案。
在圖中,可調(diào)電阻RV1可以調(diào)節(jié)比較器的門(mén)限電壓,而且經(jīng)試驗(yàn)驗(yàn)證給此電路供電的電池的壓降較小。因此我們選擇此電路作為我們的傳感器檢測(cè)與調(diào)理電路。
2、尋跡光電對(duì)管的安裝
考慮到設(shè)計(jì)要求,本次設(shè)計(jì)僅用4對(duì)光電傳感器就能完成設(shè)計(jì)要求,采用直線型排列,中間2對(duì)傳感器用來(lái)校正小車的尋跡路線,保證小車運(yùn)行的直線性。兩側(cè)的傳感器用來(lái)檢測(cè)小車過(guò)線,可以實(shí)現(xiàn)小車的轉(zhuǎn)彎。
4、電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)
我們采用電機(jī)驅(qū)動(dòng)芯片L298N作為電機(jī)驅(qū)動(dòng),驅(qū)動(dòng)電路的設(shè)計(jì)如圖7所示:
L298N的5、7、10、12四個(gè)引腳接到單片機(jī)上,通過(guò)對(duì)單片機(jī)的編程就可以實(shí)現(xiàn)兩個(gè)直流電機(jī)的PWM調(diào)速以及正反轉(zhuǎn)等功能。這里的二極管作用是釋放電機(jī)線圈的自感電能
電容c3起緩沖作用,經(jīng)過(guò)試驗(yàn)在調(diào)速時(shí)下方的電機(jī)接收的是一個(gè)高脈沖的電流,由于直流電機(jī)靈敏性不是很好,我們也考慮用周期長(zhǎng)的脈沖,但由于掃描數(shù)碼管就會(huì)慢,數(shù)碼管就會(huì)出現(xiàn)顫動(dòng)。綜合考慮,我們選擇接電容起緩沖作用。
4、測(cè)量距離設(shè)計(jì)
我們采用用一個(gè)光電對(duì)管感應(yīng)輪子黑白條來(lái)算出輪子轉(zhuǎn)動(dòng)的角度間接測(cè)出行走的距離。
(考慮輪子的打滑問(wèn)題,需要多次進(jìn)行測(cè)試,由于經(jīng)驗(yàn)不足,整體調(diào)試周期過(guò)長(zhǎng),在本文結(jié)束之前未能得到最終的結(jié)果,應(yīng)以實(shí)際為準(zhǔn),對(duì)此表示歉意。)
三、軟件實(shí)現(xiàn)
我們所設(shè)計(jì)的部分軟件請(qǐng)從這里下載:http://www.torrancerestoration.com/ziliao/file/xiaoc05.rar
四、心得
P0 要想用做io口時(shí)必須加上拉電阻,即使用上拉電阻驅(qū)動(dòng)能力也不怎么好。本作品用共陰數(shù)碼管,驅(qū)動(dòng)電路設(shè)計(jì)比較復(fù)雜,數(shù)字不夠亮,最好用共陽(yáng)數(shù)碼管,加上三極管驅(qū)動(dòng)可能效果會(huì)好一些。
本作品改進(jìn)了lm339電壓比較器接控制門(mén)限電壓的電阻的方式,沒(méi)有采用接4個(gè)變阻器,用的是統(tǒng)一接一個(gè)變阻器,這樣方便調(diào)整靈敏度。在光電對(duì)管傳感器電路上也有改變,直接把發(fā)射極和集電極接在5V電源上,這樣可以使電流更大,試驗(yàn)證明當(dāng)接通時(shí)電流不足以燒壞三極管。
直流并聯(lián)了電容,電容c3起緩沖作用,經(jīng)過(guò)試驗(yàn)在調(diào)速時(shí)下方的電機(jī)接收的是一個(gè)高脈沖的電流,由于直流電機(jī)靈敏性不是很好,我們也考慮用周期長(zhǎng)的脈沖,但由于掃描數(shù)碼管也會(huì)慢,數(shù)碼管就會(huì)出現(xiàn)顫動(dòng),我們同時(shí)考慮用時(shí)鐘中斷掃描刷新數(shù)碼管,但那樣使中斷頻繁發(fā)生(大約50ms)而且數(shù)碼管刷新一次用時(shí)也會(huì)很長(zhǎng)(大約24ms),造成中斷過(guò)長(zhǎng),那樣會(huì)大大加大整個(gè)循環(huán)周期,基本看不到數(shù)碼管顯示連續(xù)的數(shù)。綜合考慮,我們選擇接電容起緩沖作用。
由于單片機(jī)高頻的對(duì)數(shù)碼管進(jìn)行掃描,在程序設(shè)計(jì)的時(shí)候就要求主程序的周期不能過(guò)長(zhǎng),這對(duì)于我們小車執(zhí)行尋跡,調(diào)速,定時(shí),計(jì)時(shí),測(cè)距,直角轉(zhuǎn)彎等功能的程序要求是非常高的,經(jīng)過(guò)我綜合考慮后決定主函數(shù)只有刷新數(shù)碼管和探測(cè)黑線的功能剩下的所有功能都用中斷處理,同時(shí)要求產(chǎn)生的中斷時(shí)間不能過(guò)長(zhǎng)。這些就造就了我的程序到目前為止已經(jīng)有350行的長(zhǎng)度。
在整個(gè)測(cè)試階段我們充分考慮程序功能的連續(xù)性和兼容性,由于89c52單片機(jī)速度的局限,同時(shí)程序需要實(shí)時(shí)對(duì)數(shù)碼管高速的刷新頻率我們不能設(shè)計(jì)車太高的速度。經(jīng)過(guò)反復(fù)測(cè)試綜合考慮我們采用目前的方案
五、結(jié)束語(yǔ)
我們的尋跡小車在完成設(shè)計(jì)要求的前提下,充分考慮到了外觀、成本等問(wèn)題,在性能和價(jià)格之間作了比較好的平衡。由于設(shè)計(jì)要求并不復(fù)雜,我們沒(méi)有在電路中增加冗余的功能。
由于作者水平的局限性,部分觀點(diǎn)存在錯(cuò)誤,希望指正,指教,對(duì)此表示感謝。
特別感謝:
張洪軍老師和實(shí)驗(yàn)室老師的指導(dǎo),及接偉權(quán),張新濤,黃紹軍等學(xué)長(zhǎng)的建議和指教,還有陳振宇,吳曠和全組成員,沒(méi)有你們就沒(méi)有我們今天。
程序片段 /******************************************* 數(shù)碼管刷新函數(shù) ********************************************/ void display(uchar qw,uchar bw,uchar sw,uchar gw)//顯示函數(shù) { P2=0xe0; P1=tabledu[qw]; delay(6); P2=0xd0; P1=tabledu[bw]; delay(6); P2=0xb0; P1=tabledu[sw]; delay(6); P2=0x70; P1=tabledu[gw]; delay(6); P2=0x0f;// } /******************************************* 任務(wù)初始化函數(shù) ********************************************/ void init0()//任務(wù)1初始化函數(shù) { EA=1; EX0=1; EX1=1; IT1=IT0=1; P0=0x00; flag=1; jishu=0;// } void init()//任務(wù)2初始化函數(shù) { TH0=(65536-50000)/256;//初始化加1計(jì)數(shù)器 TL0=(65536-50000)%256; TH1=(65536-50000)/256;//初始化加1計(jì)數(shù)器 TL1=(65536-50000)%256; ET1=1; TR1=1; EA=1; ET0=1; TR0=1; TMOD=0x11; dsh=(qw*10+bw)*60;// jishu=1;// } void jiesu()//終止函數(shù) { if(flag6==0) { flag5=1; flag6=1; cnt1=0; } ET0=0; P0=0; display(qw,bw,sw,gw); }