電動車蹺蹺板本科畢業(yè)設(shè)計論文_第1頁
電動車蹺蹺板本科畢業(yè)設(shè)計論文_第2頁
電動車蹺蹺板本科畢業(yè)設(shè)計論文_第3頁
電動車蹺蹺板本科畢業(yè)設(shè)計論文_第4頁
電動車蹺蹺板本科畢業(yè)設(shè)計論文_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、電動車蹺蹺板摘要本方案以msp430(MSP430F22X4)單片機、直流電機驅(qū)動電路、傾角傳感器、反射式紅外傳感器、LED、蜂鳴器等電路構(gòu)成。小車采用前后兩對反射式紅外傳感器,能沿著黑線在蹺蹺板上往返行駛,并始終保持在蹺蹺板上;同時,利用傾角傳感器對小車當(dāng)前所在位置的傾斜角進行測量。小車控制程序主要對采集信號分析轉(zhuǎn)換,結(jié)合PWM調(diào)速控制電機轉(zhuǎn)速和轉(zhuǎn)向,從而使小車快速在蹺蹺板上取得平衡;小車通過LED和蜂鳴器來實現(xiàn)平衡指示以及實時顯示,從而完成整個設(shè)計過程。關(guān)鍵詞:MSP430F22X4 閉環(huán)控制 傾角傳感器 PWM調(diào)速 AbstractThe programme to msp430 (MSP

2、430F22X4) microcontroller, motor drive circuit, angle sensor, reflecting infrared sensors, LED, buzzer, and other circuit. Vehicles used before and after the two pairs of reflecting infrared sensors, along the black line in the can on the seesaw from travelling, and always maintain the seesaw on the

3、 same time, using angle sensor on the current location of the car tilt angle measurement. Trolley control procedures for collecting the main signal of conversion, with PWM speed control motor speed and steering, thus making the car fast to strike a balance on the seesaw; car through the LED and buzz

4、er to achieve balanced instruction and real-time display, thus completing the entire design process .Key word:MSP430F22X4 Closed-loop control Angle sensor PWM Speed 一、方案比較與論證整個系統(tǒng)可劃分為控制模塊、AD轉(zhuǎn)換模塊、電源模塊、顯示模塊,測量模塊,驅(qū)動模塊。系統(tǒng)框圖如圖1所示:圖1 系統(tǒng)框圖為實現(xiàn)各模塊的功能,設(shè)計了幾種不同的方案進行論證。1.控制模塊采用msp430單片機作為系統(tǒng)控制的方案。該單片機具有高速的運算能力以及含有

5、豐富的功能模塊,例如:多通道1014位AD轉(zhuǎn)換器,雙路12位DA轉(zhuǎn)換器,比較器,看門狗定時器和多個16位,8位定時器(可進行捕獲,比較,PWM輸出)以及FALASH存儲器,他可以在運行過程中由程序控制寫操作和段擦除(In system programmable),不需要額外的高電壓等,軟件編程靈活,自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制。 2.電源模塊采用兩個干電池供電。將電機驅(qū)動電源與單片機以及其他電路完全隔離開,利用光電耦合器傳輸信號,這樣可將電機的干擾消除,提高系統(tǒng)的穩(wěn)定性。3.驅(qū)動模塊方案一:采用由大功率達林頓管組成的H型驅(qū)動電路。該電路承載電流大,但電路復(fù)雜,體積大。方案二:采

6、用L298N組成的驅(qū)動電路,驅(qū)動芯片L298N是驅(qū)動二相或四相步進電機的專用芯片,電路實現(xiàn)容易,與單片機接口方便,控制比較簡單??紤]到我們選用的是直流電機,工作穩(wěn)定,且小車不宜過重,故選擇方案二。4.測量模塊尋跡系統(tǒng)方案一:用光敏電阻組成光敏探測器。光敏電阻的阻值可以跟隨周圍環(huán)境光線的變化而變化。當(dāng)光線照射到蹺蹺板上面時,光線發(fā)射強烈,光線照射到黑線上面時,光線發(fā)射較弱。因此光敏電阻在蹺蹺板和黑線上方時,阻值會發(fā)生明顯的變化。將阻值的變化值經(jīng)過比較器就可以輸出高低電平。但是這種方案受光照影響很大,并且不能夠穩(wěn)定的工作。因此我們考慮其他更加穩(wěn)定的方案。方案二:用紅外光電對管尋跡傳感器。現(xiàn)有的封裝

7、好的紅外對管應(yīng)用電路簡單,工作穩(wěn)定,再加上控制芯片的電壓比器功能模塊處理采集信號,容易實現(xiàn)題目要求。經(jīng)比較,本系統(tǒng)選擇方案二。在平衡系統(tǒng)中,根據(jù)要求,只要蹺蹺板兩端與地面的距離差小于40mm即可認為平衡,本設(shè)計通過傾角傳感器檢測蹺蹺板水平傾角,所以只要水平傾角保持在0附近的某個角度范圍之內(nèi)即認為蹺蹺板達到平衡狀態(tài)。其閉環(huán)結(jié)構(gòu)框圖如圖2所示。圖2 閉環(huán)控制系統(tǒng)結(jié)構(gòu)圖該系統(tǒng)的工作原理是:小車駛上蹺蹺板后,通過傾角傳感器不斷測量蹺蹺板的傾角(即實際傾角),該實際傾角與給定傾角作比較,形成傾角偏差,通過直流電機控制小車前后微移,不斷修正該傾角偏差,最終使傾角保持在給定范圍之內(nèi),此時蹺蹺板便達到平衡狀態(tài)

8、。二、主要電路設(shè)計分別在小車的四個角位置上安裝反射紅外光電傳感器,在蹺蹺板的四周距離板邊貼上34厘米的黑膠線,一旦車底遇到黑線便開始尋跡,使小車保持在蹺蹺板上運動。電機驅(qū)動模塊采用L298N,其內(nèi)部集成兩個橋式電路驅(qū)動器,OUTl、OUT2和OUT3、OUT4之間分別接2個電動機。5、7、10、12腳接輸入控制電平,控制電機的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機的啟停。如下圖所示,單片機P4.0、P4.1輸出的信號控制右邊直流電機,P4.2、P4.3輸出的信號控制左邊直流電機。信號包括二組PWM波,每一組PWM波用來控制一個電機的轉(zhuǎn)速。因此結(jié)合PWM波就能控制電機的轉(zhuǎn)速和方向了。為了防

9、止由于電機部分大電流對單片機的影響,我們改善了電路,在單片機和L298N之間加上了光電耦合器,將控制部分電路和電動機電路隔離,使電機在轉(zhuǎn)動和調(diào)制過程中穩(wěn)定正常。小車上蹺蹺板尋找平衡點,測得平衡時傾角傳感器輸出的模擬量,以此來作為一個平衡校驗的基準。當(dāng)小車被放置于蹺蹺板一端時,傾角傳感器與地面產(chǎn)生了一個角度,且隨著小車的行駛不斷地變化。小車內(nèi)部單片機對傳感器輸出的模擬量進行采樣,然后與基準值進行比較。接著單片機采用預(yù)先設(shè)定好的算法對電機進行控制,使其小車在平衡點徘徊,維持平衡。三、系統(tǒng)軟件設(shè)計1、軟件流程圖: 通過對單片機的編程,利用它的中斷定時功能,由外部采集的數(shù)據(jù),實現(xiàn)軟件對小車行駛時間的計

10、算,以及對電機一系列動作的控制等。主要是軟件編程達到對硬件控制的目的。主要程序流程圖4所示:圖4 程序流程圖2、軟件所實現(xiàn)的功能: 檢測小車的行駛狀態(tài)并及時糾正行駛路徑; 控制小車的行駛速度(PWM調(diào)速); 顯示小車的行駛時間并儲存; 控制小車尋找平衡點; 在平衡狀態(tài)時產(chǎn)生聲光報警;四、數(shù)據(jù)測試1.測試設(shè)備自制蹺蹺板:長1600mm、寬300mm,秒表,卷尺。2.測試結(jié)果1.不加配重情況下表1:從A點到C點的時間測試測試項目第1次第2次第3次第4次AC所用時間/s6666表2:平衡點測試測試項目第1次第2次第3次第4次尋找平衡點時間/s3475375634753567d=dA-dB/mm12.

11、320.512.814.7表3:平衡點到B的時間測試測試項目第1次第2次第3次第4次平衡點B所用時間/s9888車頭到B點的距離/mm15201931表4:平衡點倒退回A點的時間測試測試項目第1次第2次第3次第4次B點停止時間/s5555BA所用時間/s151515152.加配重情況下表5:從地面指定位置駛上蹺蹺板測試測試項目第1次第2次第3次第4次時間/s19201920表6:加重后尋找平衡點時間測試測試項目第1次第2次第3次第4次平衡時間/s29344518d=dA-dB/mm20.510.69.515.8表7:加另一重物后平衡點測試測試項目第1次第2次第3次第4次平衡時間/s113291

12、6d=dA-dB/mm14.615.811.212.5根據(jù)測量,完成全過程的總時間均小于180秒。五、總結(jié)在本次課題訓(xùn)練中,我們基本完成了題目各項要求。從本次設(shè)計中我們體會到,對小車實施控制不僅是電子控制問題,其中也涉及到了力學(xué)和光學(xué)等方面的知識。在有限的時間里未能完美的解決小車尋找平衡點的的問題。在對直流電機的調(diào)速和精確控制上還不是很靈活,在以后的訓(xùn)練中應(yīng)該多加學(xué)習(xí)和鍛煉。參考文獻 1 魏小龍.MSP430系列單片機接口技術(shù)及系統(tǒng)設(shè)計實例.北京航空航天大學(xué)出版社.2002.11 2 全國大學(xué)生電子設(shè)計競賽組委會.全國大學(xué)生電子設(shè)計競賽獲獎作品選編(2005).北京理工大學(xué)出版社.2007.0

13、2 3 康華光.電子技術(shù)基礎(chǔ)(模擬部分).高等教育出版社.2006.01 4 謝自美.電子線路設(shè)計實驗測試(第三版).華中科技大學(xué)出版社.2007.08附錄:1、總電路圖2、源程序/* 電動車蹺蹺板軟件設(shè)計主控程序功能描述:(1)主程序調(diào)度所有消息,初始化系統(tǒng);(2)電機驅(qū)動模塊包含所有與電機驅(qū)動有關(guān)的函數(shù),接受不同的控制命令及速度控制,并付諸實施;(3)軌跡采樣模塊包含所有與軌跡采樣有關(guān)的函數(shù),并進行相關(guān)處理,輸出結(jié)果;(4)平衡測量模塊包含小車在蹺蹺板上尋找平衡的所有函數(shù),并進行相關(guān)處理,出入單片機中,最終用來控制小車的前進和后退,達到蹺蹺板平衡。(5)顯示模塊 -分階段顯示電機行駛所用的

14、時間;(6)報警提示模塊 -在小車起步、平衡、到達終點及返回原點停止時做出提示;*/主函數(shù)部分:“main.c”#include #include SYSTEMS.Hunsigned char StartDisplay,Count,DaojishitimeFlag;unsigned int RunTime,ChongJi;unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /數(shù)碼管用變量unsigned char Ge,Shi,Bai,Qian;main( void ) unsigned int n; W

15、DTCTL=WDTPW+WDTHOLD; /關(guān)看門狗 BCSCTL1 =CALBC1_1MHZ; /設(shè)定DCO為1MHZ DCOCTL =CALBC1_1MHZ; do /等待晶振穩(wěn)定 IFG1 &=OFIFG; for(n=5000;n0;n-); while(OFIFG&IFG1); initsystems(); /系統(tǒng)初始化 xianshi_daojishi();/*第一階段A-C*/while(1)GoForward();if(P4IN&0x60)=0x0) /到達C點 P2OUT&=BIT3; P2OUT&=BIT2; for(ChongJi=5000;ChongJi0;ChongJ

16、i-); P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1;break;/*第二階段C點平衡*/ Balance();P2OUT |=BIT2; /電機正轉(zhuǎn)前進 P2OUT &=BIT3; for(ChongJi=50000;ChongJi0;ChongJi-);/*第三階段C-B*/while(1)GoSlowForward();if(P4IN&BIT3)!=BIT3) /到達B點 P2OUT|=BIT3;P2OUT&=BIT2; for(ChongJi=40000;ChongJi0;ChongJi-); P2OUT&=BIT3; P2OUT&=BIT2;xiansh

17、i_daojishi();break;/*第四階段B-A*/while(1)/number=AYFilter();BackForward();if(P4IN&0x60)=0x0) /從上坡到下坡轉(zhuǎn)換 P2OUT&=BIT3; P2OUT&=BIT2; for(ChongJi=10000;ChongJi0;ChongJi-);P2OUT|=BIT3; P2OUT&=BIT2; for(ChongJi=20000;ChongJi0;ChongJi-); while(1) BackSlowForward(); if(P4IN&BIT4)!=BIT4) break; break; /*完成停車*/St

18、op(); while(1) StartDisplay=0; chuli(); xianshi(); P2OUT&=BIT3; P2OUT&=BIT2; void initsystems() P2DIR |=BIT0+BIT1+BIT2+BIT3; /接電機 P2OUT =0x00; P3DIR =0xff; /P3口接數(shù)碼管 P3OUT =0x00; P1DIR =0xff; /P1口低4位接數(shù)碼管段選 P4DIR =0X07; /P4.7接MISO P4.3P4.6紅外輸入 /定時器初始化部分 TACTL=TASSEL1+TACLR; /定時器A時鐘源為SMCLK,并清TAR CCTL0

19、|=CCIE; /CCR0中斷使能 CCR0 =50000; /計數(shù)值為50000個SMCLK周期,50ms TACTL |=MC0; /啟動定時器A為增計數(shù)模式 _BIS_SR(GIE); /打開總中斷/*數(shù)碼管顯示倒計時*/void xianshi_daojishi() unsigned char daojishi_time=6; StartDisplay=0; /在顯示倒計時時,路程行駛時間停止 P1OUT &=BIT0; /選通個位 P1OUT |=BIT1+BIT2+BIT3; /防止其他位被選 Count=0; while(daojishi_time0) P3OUT=tableda

20、ojishi_time; /數(shù)據(jù)給數(shù)碼管 if(DaojishitimeFlag) daojishi_time-; DaojishitimeFlag=0; P1OUT=0x0f; StartDisplay=1;/*定時器中斷服務(wù)*/#pragma vector = TIMERA0_VECTOR /ccr0中斷服務(wù)_interrupt void ta0_isr(void)Count+; /秒計數(shù) if(Count=20) DaojishitimeFlag=1; Count=0; if(StartDisplay=1) RunTime+; if(RunTime=999) RunTime=0; /*路

21、程顯示部分函數(shù)*/void chuli() Ge= RunTime%10; Shi= RunTime%100/10; Bai= RunTime%1000/100; Qian= RunTime/1000;void xianshi() P1OUT=0x0e; /P1.0用作個位顯示 P3OUT=tableGe; delay(); P1OUT=0x0d; /P1.1用作十位選擇 P3OUT=tableShi; delay(); P1OUT=0x0b; /P1.2用作百位選擇 P3OUT=tableBai; delay(); P1OUT=0x07; /P1.3用作千位選擇 P3OUT=tableQia

22、n; delay();void delay() /數(shù)碼管延時 unsigned i; for(i=100;i0;i-);/*Name: SYSTEMS.HDescription: 主函數(shù)main.c包含.h文件。*/#ifndef _SYSTEMS#define _SYSTEMS#include void initsystems();void xianshi_daojishi() ;void chuli();void xianshi();void delay() ;extern Stop();extern BackForward();extern BackSlowForward();exter

23、n AYFilter();extern AXFilter();extern GoSlowForward();extern GoForward();extern Balance();#endif電機驅(qū)動部分:“motor.c”#include #include MOTORCONTROL.H/*小車前進上坡*/void GoForward() P2OUT|=BIT2; /電機正轉(zhuǎn)前進 P2OUT&=BIT3; if(P4IN&BIT5)!=BIT5)|(P4IN&BIT6)!=BIT6) /偏離位置 if(P4IN&BIT5)=BIT5) /左方傳感器接P4.5 P2OUT |=BIT1; /右邊

24、偏離,向左轉(zhuǎn) P2OUT &=BIT0; if(P4IN&BIT6)=BIT6) /右方傳感器接P4.6 P2OUT |=BIT0; /左邊偏離,向右轉(zhuǎn) P2OUT &=BIT1; else /未偏離位置 P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; /*小車前進下坡*/void GoSlowForward() unsigned int pwm_count; P2OUT&=BIT2; /電機反轉(zhuǎn) P2OUT |=BIT3; for(pwm_count=10000;pwm_count0;pwm_count-); P2OUT|=BIT2; /電機正轉(zhuǎn)前進 P2OUT&

25、=BIT3; for(pwm_count=12000;pwm_count0;pwm_count-); if(P4IN&BIT5)!=BIT5)|(P4IN&BIT6)!=BIT6) /偏離位置 if(P4IN&BIT5)=BIT5) /左方傳感器接P4.5 P2OUT |=BIT1; /右邊偏離,向左轉(zhuǎn) P2OUT &=BIT0; if(P4IN&BIT6)=BIT6) /右方傳感器接P4.6 P2OUT |=BIT0; /左邊偏離,向右轉(zhuǎn) P2OUT &=BIT1; else /未偏離位置 P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; /*小車倒退上坡*/voi

26、d BackForward() P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; P2OUT|=BIT3; /電機反轉(zhuǎn)后退 P2OUT&=BIT2; /* if(P4IN&BIT5)!=BIT5)|(P4IN&BIT6)!=BIT6) /偏離位置 if(P4IN&BIT5)=BIT5) /左方傳感器接P4.5 P2OUT |=BIT1; /右邊偏離,向左轉(zhuǎn) P2OUT &=BIT0; if(P4IN&BIT6)=BIT6) /右方傳感器接P4.6 P2OUT |=BIT0; /左邊偏離,向右轉(zhuǎn) P2OUT &=BIT1; else /未偏離位置 P2OUT &=BIT

27、0; /方向直流電機停止 P2OUT &=BIT1; */*小車倒退下坡*/void BackSlowForward() unsigned int pwm_count,pwm_loop; P2OUT&=BIT3; /電機正轉(zhuǎn)前進 P2OUT|=BIT2; for(pwm_count=10000;pwm_count0;pwm_count-); P2OUT|=BIT3; /電機反轉(zhuǎn) P2OUT&=BIT2; for(pwm_count=13000;pwm_count0;pwm_count-); if(P4IN&BIT5)!=BIT5)|(P4IN&BIT6)!=BIT6) /偏離位置 if(P4I

28、N&BIT5)=BIT5) /左方傳感器接P4.5 P2OUT |=BIT1; /右邊偏離,向左轉(zhuǎn) P2OUT &=BIT0; P2OUT |=BIT2; P2OUT &=BIT3; for(pwm_loop=5;pwm_loop0;pwm_loop-) for(pwm_count=60000;pwm_count0;pwm_count-); P2OUT &=BIT2; P2OUT |=BIT3; for(pwm_count=60000;pwm_count0;pwm_count-); if(P4IN&BIT6)=BIT6) /右方傳感器接P4.6 P2OUT |=BIT0; /左邊偏離,向右轉(zhuǎn)

29、P2OUT &=BIT1; P2OUT |=BIT2; P2OUT &=BIT3; for(pwm_loop=5;pwm_loop0;pwm_loop-) for(pwm_count=60000;pwm_count0;pwm_count-); P2OUT &=BIT2; P2OUT |=BIT3; for(pwm_count=60000;pwm_count0;pwm_count-); else /未偏離位置 P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; void Balance()unsigned int number,pwm_loop,pwm_time,xiao

30、dou;while(1)number= AYFilter();if(number1403) P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; P2OUT|=BIT2; /電機正轉(zhuǎn)前進 P2OUT&=BIT3; for(pwm_time=40000;pwm_time0;pwm_time-); P2OUT |=BIT0; /方向直流電機停止 P2OUT &=BIT1; P2OUT&=BIT2; /電機反轉(zhuǎn)制動 P2OUT |=BIT3; for(pwm_time=500;pwm_time0;pwm_time-); P2OUT&=BIT2; /電機先停止 P2OUT &=B

31、IT3; for(xiaodou=15;xiaodou0;xiaodou-) /等待板平穩(wěn) for(pwm_time=60000;pwm_time0;pwm_time-);else if(number0;pwm_time-); P2OUT &=BIT0; /方向直流電機停止 P2OUT |=BIT1; P2OUT&=BIT3; /電機正轉(zhuǎn)制動 P2OUT |=BIT2; for(pwm_time=500;pwm_time0;pwm_time-); P2OUT &=BIT2; /電機先停止 P2OUT &=BIT3; for(xiaodou=15;xiaodou0;xiaodou-) /等待板平穩(wěn) for(pwm_time=60000;pwm_time0;pwm_time-);else P2OUT &=BIT2; P2OUT &=BIT3; /平衡,電機停止 P2OUT &=BIT0; /方向直流電機停止 P2OUT &=BIT1; for(pwm_loop=3;pwm_loop0;pwm_loop-) for(pwm_time=60000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論