資源描述:
《基于MSP430 循跡小車報告 源程序分享》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、智能循跡小車報告摘要:本設(shè)計(jì)由尋跡信息采集電路,電機(jī)驅(qū)動電路以及MCU控制模塊四大部分構(gòu)成。MCU控制模塊是本設(shè)計(jì)的核心部分,該部分以一片TI公司的MSP430F149為控制中心,實(shí)現(xiàn)對各個模塊的控制。尋跡信息采集部分以反射式光電傳感器和比較器組成,將采集到的數(shù)據(jù)處理后送至單片機(jī)。電機(jī)由以L298N為核心部件的電路驅(qū)動。該小車具有自動尋跡起始點(diǎn)檢測功能。基于穩(wěn)定的硬件電路設(shè)計(jì)以及精確可靠的軟件算法,小車能夠?qū)崿F(xiàn)預(yù)期功能。關(guān)鍵詞:MSP430,L298N,尋跡。一、循跡信息采集模塊小車在前進(jìn)時,要實(shí)現(xiàn)尋跡功能,可以采用高靈敏度的反射式光電傳感器對地面進(jìn)行掃描,再將采集到
2、的數(shù)據(jù)經(jīng)過比較器后輸出高低電平,最后送入單片機(jī)處理。經(jīng)過對一只ST188的測試,發(fā)現(xiàn)ST188接收管輸出端的低電平輸出大致為0.78V,高電平的輸出大致為2.85V,經(jīng)過比較器后輸出低電平為0.03V,高電平為3.26V,能夠被單片機(jī)所識別。小車在白色地面行駛時,紅外發(fā)射管發(fā)出的紅外信號被反射,接收管收到信號后,輸出端為低電平。而當(dāng)紅外信號遇到黑色導(dǎo)軌時,紅外信號被吸收,接收管不能接收到信號,輸出端為高電平。單片機(jī)通過采集每個紅外接收管的輸出端電壓,便可以檢測出軌道的位置,從而控制小車的轉(zhuǎn)向,使小車一直沿軌道前進(jìn)。ST188采用高發(fā)射功率紅外光電二極管和高靈敏度光電晶
3、體管組成。檢測距離為4-13mm。本小車一共采用了5只ST188光電對管,一只位于黑線上方,兩只位于黑線左右用于直走微調(diào),最左最右端兩只用于轉(zhuǎn)彎。我們在光電對管的發(fā)射端串聯(lián)的一個電位器來調(diào)節(jié)發(fā)射管的電壓,以便在不同的環(huán)境下進(jìn)行調(diào)節(jié)。循跡模塊原理如圖所示:注意:在實(shí)際制作中,光電對管應(yīng)盡量靠近地面,以減少干擾。二、電壓比較模塊電壓比較模塊我們采用了3塊LM393芯片,一塊LM393芯片上有兩個電壓比較模塊,我們只用到了其中的5個電壓比較。我們在LM393的同向輸入給定一個參考電壓,與在端光電對管的接收端的電壓進(jìn)行比較,若接收端電壓比參考電壓大,則輸出一個,反之輸出一個。
4、三、電機(jī)驅(qū)動模塊本次小車采用了由兩個減速電機(jī)和一個萬向輪制作的三輪移動平臺,在電機(jī)驅(qū)動方面采用了L298來控制兩個減速電機(jī)。MSP430F149為芯片提供驅(qū)動信號,傳至PWM控制各個電機(jī)的轉(zhuǎn)速,從而調(diào)整小車的前進(jìn)速度和轉(zhuǎn)向。L298模塊的原理圖如圖所示。注意:制作L298模塊時應(yīng)注意在芯片后面留散熱片的空間。四、電源模塊采用了一塊穩(wěn)壓芯片7805搭建的12V轉(zhuǎn)5V的電路,如圖:四、控制模塊本次設(shè)計(jì)采用了一片MSP430F149為控制核心,主要用于循跡和電機(jī)PWM控制。五、程序部分程序開始運(yùn)行便進(jìn)入掃描狀態(tài),在直走時不斷進(jìn)行左右微調(diào)保證小車行走在線中間。走迷宮的程序必須
5、要有優(yōu)先級,可左轉(zhuǎn)優(yōu)先或直走優(yōu)先,在T字口,十字口一律左轉(zhuǎn)或右轉(zhuǎn)。以左轉(zhuǎn)優(yōu)先為例,程序優(yōu)先級順序?yàn)椋鹤筠D(zhuǎn)>直走>右轉(zhuǎn)>左微調(diào)>右微調(diào)>原地轉(zhuǎn)圈。附錄:程序:1初始化程序(具體PWM自己調(diào)):#include"main.h"/*******************************************函數(shù)名稱:CLK_Init()功能:時鐘設(shè)置參數(shù):無返回值:無********************************************/voidClk_Init(void){uchari;BCSCTL1=0x00;//XT2振蕩器、不分頻BCSCT
6、L2=SELM_2+SELS;//選擇MCLKSCLK的時鐘源為高速時鐘,不分頻do{IFG1&=~OFIFG;//清除振蕩失效標(biāo)志for(i=0xff;i>0;i--);//等待}while((IFG1&OFIFG)!=0);//等待振蕩器工作正常}/*******************************************函數(shù)名稱:PWM_Init功能:初始化PWM參數(shù):無返回值:無********************************************/voiddelay_us(uinttime){uchari=0;while(ti
7、me--){while((i++)!=8);i=0;}}//延時MSvoiddelay_ms(uchartime_1){while(time_1--)delay_us(1000);}voidPWM_Init(){P4DIR=0xff;//P4PWM輸出P4SEL=BIT1+BIT2+BIT3+BIT5;P4DIR=BIT1+BIT2+BIT3+BIT5;TBCCTL1
8、=OUTMOD_7;//捕獲/比較控制寄存器,輸出為模式7TBCCTL2
9、=OUTMOD_7;//PWMRESET/SET模式TBCCTL3
10、=OUTMOD_7;//TBCCRn--復(fù)