版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于AVRMega16的測速系統(tǒng)</p><p> 1.設(shè)計的目的與意義:本設(shè)計的速度測量主要應(yīng)用于輪式設(shè)備的速度測量中(如車輛,轉(zhuǎn)輪等),特別適用于如自行車,人力三輪車等要求低成本的應(yīng)用中。</p><p> 本研究的目的是通過單片機的控制實現(xiàn)速度的測量和超速的報警,其中有七段數(shù)碼管輸出速度的值,有控制按鈕來控制Km/h 和m/s顯示,由蜂鳴器來進(jìn)行報警。<
2、;/p><p> 2. 設(shè)計內(nèi)容與方法:本設(shè)計的速度測量主要是測量轉(zhuǎn)軸的角速 度,利用角速度和線速度的轉(zhuǎn)換關(guān)系轉(zhuǎn)換為線速度,從而測量出物體的行進(jìn)速度。角速度的測量利用紅外光發(fā)射和探測而測出轉(zhuǎn)軸的角速度,利用單片機的處理并用七段數(shù)碼管輸出速度值。如果速度超過指定值時,蜂鳴器發(fā)出響聲提示。</p><p><b> 3.設(shè)計電路圖:</b></p><
3、p> 4.硬件功能說明:本部分包括對硬件設(shè)計思想的說明和硬件用途的說明。</p><p> 硬件設(shè)計思想說明:本課程設(shè)計主要是通過測量輪式車的輪軸轉(zhuǎn)動角速度,轉(zhuǎn)換為小車行進(jìn)的線速度。這要求我們要設(shè)計一個信號采集源來采集角速度信息傳遞到單片機進(jìn)行處理。我們利用紅外反射接收對管產(chǎn)生電信號,利用固定在軸上的擋板來使軸運動信息與電信號關(guān)聯(lián),最后輸入單片機處理。單片機轉(zhuǎn)換的速度值通過四位七段數(shù)碼管來顯示,如果超速
4、通過蜂鳴器來提示超速,同時又led閃爍來提醒。</p><p> 信號收集轉(zhuǎn)換系統(tǒng)說明:</p><p><b> 原理如圖所示</b></p><p> 我們的擋板開孔將360°分為四等分,這樣做可以提高精度。將擋板放置于光電對管發(fā)射管和接收管之間。軸的周期性運動使擋板周期性的遮擋發(fā)射管與接收管的紅外線傳播,是光電對管產(chǎn)生周期
5、性的電信號,最后通過接線傳輸?shù)絾纹瑱C。</p><p> 光電對管原理如圖所示。</p><p> 光電對管是由紅外線發(fā)光二極管和光明三極管組成,我們在集電極串入1k的電阻,輸出集電極電壓值。當(dāng)光電三級管導(dǎo)通時由于集電極有電流流過會使輸出電壓降低使呈現(xiàn)低電平狀態(tài),當(dāng)三極管截止時,輸出電壓近似等于+5V,呈現(xiàn)為高電平。信號由PD6口輸入。</p><p><
6、b> 速度顯示系統(tǒng)說明:</b></p><p><b> 七段數(shù)碼管如圖示。</b></p><p> 我們選用的是四位集成的共陽極七段數(shù)碼管,采用PA0~PA7口分別控制a~p七段和小數(shù)點,利用PC0,PC1,PC6,PC7口分別控制1、2、3、4位的七段數(shù)碼管顯示。最終實現(xiàn)四位動態(tài)掃描顯示。</p><p> 蜂
7、鳴器電路如圖所示。</p><p> 我們利用PD0口來控制蜂鳴器的工作,當(dāng)PD0口輸出為高電平時,三極管導(dǎo)通蜂鳴器發(fā)聲。PD0口為低電平時三極管截止,蜂鳴器中沒有電流流過,不工作</p><p><b> LED電路如圖示。</b></p><p> 我們利用PD1口來控制LED的顯示,當(dāng)超速時,PD1口周期性的輸出高電平使LED燈閃爍
8、提示超速。未超速時輸出低電平二極管不導(dǎo)通。</p><p><b> 鍵盤電路如圖。</b></p><p> 我們采用PD2口作為鍵盤檢測口。當(dāng)檢測到鍵盤按下時,七段數(shù)碼管顯示為Km/h。正常情況下顯示為m/s。</p><p> 5.軟件設(shè)計流程與設(shè)計思想</p><p> 軟件流程:軟件流程圖如下所示。&l
9、t;/p><p> 軟件設(shè)計思想:我們課程設(shè)計的測速功能主要是由單片機內(nèi)部定時器T0實現(xiàn)的,通過T0的精確定時測出兩次脈沖時間,轉(zhuǎn)換成脈沖頻率,最后轉(zhuǎn)換為所求速度。</p><p><b> 6.系統(tǒng)測試:</b></p><p> 我們通過Proteus仿真軟件對軟件部分行了測試。</p><p> 圖中為當(dāng)輸入的
10、脈沖頻率為10Hz是輸出輸出值。</p><p> 圖中為輸入頻率為30Hz時的輸出值</p><p> 第三張圖的輸入脈沖為45Hz。</p><p> 分析三張圖中結(jié)果輸出值與輸入值的比例近似相等,說明測速部分基本運行正常。</p><p> 按鍵和顯示轉(zhuǎn)換部分測試</p><p> 當(dāng)10<V&l
11、t;15時,D1亮,第一次超速提示。</p><p> 當(dāng)鍵盤按下時,顯示為Km/h值。</p><p> 當(dāng)輸出大于15時,D2(實際為蜂鳴器)亮,第二次超速提示。</p><p><b> 7.設(shè)計所需資源:</b></p><p> 硬件:AVR實驗開發(fā)板(包括了蜂鳴器,按鍵,LED),光電對管,集成四位共
12、陽極七段數(shù)碼管。</p><p> 軟件:ICCAVR,AVRstudio,Protel 99SE,Proteus。</p><p> 8.成員分工及貢獻(xiàn)情況:</p><p> 李慶浩 硬件加工、電路板設(shè)計和焊接、部分軟件編寫、報告書寫 </p><p><b> 貢獻(xiàn)率 34%</b></p>
13、<p> 林鳴遠(yuǎn) 部分軟件編寫、部分電路制作、網(wǎng)頁制作、報告書寫</p><p><b> 貢獻(xiàn)率 33%</b></p><p> 劉波 電路板設(shè)計和焊接(包括Protel電路制作)、Proteus軟件仿真、 報告書寫、PPT制作。</p><p><b> 貢獻(xiàn)率 33%</b></p>
14、;<p><b> 9.項目改進(jìn)設(shè)想:</b></p><p> 1.應(yīng)為自行車等車輛不能采用有線電源供電,由于耗電量較大,干電池消耗量巨大,充電電池由于容量有限不理想,所以我們的下一步改進(jìn)設(shè)想是利用發(fā)電裝置將車輛的部分動能轉(zhuǎn)換為電能為設(shè)備供電?;蛘呒友b太陽能電池,利用太陽能供電。</p><p> 2.我們設(shè)想加入矩陣鍵盤,在不同的路段輸入不同的
15、限速值。</p><p><b> 10.參考資料:</b></p><p> 馬潮 編著,AVR單片機嵌入式系統(tǒng)原理與應(yīng)用實踐,北京航空航天大學(xué)出版社,2007。</p><p> 李茂奎 等 編著,單片機原理及接口技術(shù)實驗講義,山東大學(xué)物理學(xué)院,2009。</p><p><b> 附錄:項目軟件&
16、lt;/b></p><p> #include <iom16v.h></p><p> #include <macros.h></p><p> unsigned int f_time=0,l_time=0;// f_time l_time即first 和last,存儲兩次間隔的初始態(tài)和末態(tài),以timer1的時序為單位。 <
17、;/p><p> float time=0; //time 記錄兩次時間間隔 ,以秒為單位</p><p> char point=3; //小數(shù)點的位置</p><p> double v; //速度</p><p> const char led_7[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,
18、0x7D,0x07,0x7F,0x6F,0x40,0x39,0x00};</p><p> const char position[4]={0xfe,0xfd,0xbf,0x7f};</p><p> char dis_buf[4]={0};</p><p> char v_ok=0; //v_ok=1時 顯示速度,預(yù)定0.5s刷新一次速度</p&g
19、t;<p> #define SECOND 3906.25 //一秒鐘</p><p> #define R 1.5 //車輪半徑</p><p> void port_init(void)</p><p><b> {</b></p><p> PORTA = 0
20、x00;</p><p> DDRA = 0xff;</p><p> PORTB = 0x00;</p><p> DDRB = 0x00;</p><p> PORTC = 0x00; //m103 output only</p><p> DDRC = 0xff;</p><p
21、> PORTD = BIT(2);</p><p> DDRD = BIT(0)|BIT(1);</p><p><b> }</b></p><p> //TIMER1 initialize - prescale:1024</p><p> // WGM: 0) Normal, TOP=0xFFFF&
22、lt;/p><p> // desired value: 0.1Hz</p><p> // actual value: 0.100Hz (0.0%)</p><p> void timer1_init(void)</p><p><b> {</b></p><p> TCCR1B =
23、0x00; //stop</p><p> TCCR1A = 0x00;</p><p> TCCR1B = 0xC5; //start Timer</p><p><b> }</b></p><p> void timer0_init(void)</p><p><b>
24、{</b></p><p> TCCR0 = 0x00; //stop</p><p> TCNT0 = 0x00; //set count</p><p> OCR0 = 0x7D; //set compare</p><p> TCCR0 = 0x0B; //start timer</p><p
25、><b> }</b></p><p> void init_devices(void)</p><p><b> {</b></p><p> //stop errant interrupts until set up</p><p> CLI(); //disable all i
26、nterrupts</p><p> port_init();</p><p> timer1_init();</p><p> timer0_init();</p><p> MCUCR = 0x00;</p><p> GICR = 0x00;</p><p> TIMSK =
27、 0x22; //timer interrupt sources</p><p> SEI(); //re-enable interrupts</p><p> //all peripherals are now initialized</p><p><b> }</b></p><p> #pragma in
28、terrupt_handler display:iv_TIM0_COMP //顯示速度,兼為速度刷新的標(biāo)準(zhǔn) j=1時 速度刷新</p><p> void display(void)</p><p><b> {</b></p><p> //compare occured TCNT0=OCR0</p><p>
29、 static char i=0,j=0;</p><p> if(j++==0) v_ok=1;</p><p> PORTC=~0xff;</p><p> if(i>=4)i=0;</p><p> PORTA = ~(led_7[dis_buf[i]]);</p><p> PORTC = ~
30、position[i];</p><p> if(i==point) PORTA&=~BIT(7);</p><p><b> i++;</b></p><p><b> }</b></p><p> #pragma interrupt_handler timer1_capt_isr
31、:iv_TIM1_CAPT //上升沿觸發(fā) </p><p> void timer1_capt_isr(void)</p><p><b> { </b></p><p> //timer 1 input capture event, read (int)value in ICR1 using;</p><
32、p> // value=ICR1L; //Read low byte first (important)</p><p> // value|=(int)ICR1H << 8; //Read high byte and shift into top byte</p><p> {f_time=l_time;l_time=ICR1;} </
33、p><p><b> }</b></p><p> void to_buf()</p><p><b> { </b></p><p><b> char i=0;</b></p><p> double tem_v=v;</p>
34、<p> if(v>=1000){point=3;}</p><p> if(v>=100&&v<1000){point=2;tem_v*=10;}</p><p> if(v>=10&&v<100){point=1;tem_v*=100;}</p><p> if(v<10){p
35、oint=0;tem_v*=1000;}</p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p> dis_buf[3-i]=(int)tem_v%10;</p><p> tem_v/=10;</p><p><b>
36、}</b></p><p><b> }</b></p><p> void scank(void)</p><p><b> {</b></p><p><b> }</b></p><p> void main(void)<
37、;/p><p><b> {</b></p><p> init_devices();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> if(v_ok)</b>
38、;</p><p><b> {</b></p><p><b> v_ok=0;</b></p><p> time=(l_time-f_time)/SECOND;</p><p> if(time==0)v=0;</p><p> else v=1.57*(1/
39、time)*R;</p><p> // f_time=l_time;en=1;</p><p> if(v>10&&v<15)</p><p> PORTD|=BIT(0);</p><p> else if(v>15)PORTD|=BIT(1);</p><p> //
40、else PORTD&=~(BIT(0)|BIT(1));</p><p> if(!(PIND&BIT(2)))</p><p><b> v*=3.6;</b></p><p><b> to_buf();</b></p><p><b> }</b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dyp-me007超聲波模塊avrmega16程序
- dyp-me007超聲波模塊avrmega16程序
- 基于avrmega128的modbus程序
- 基于視頻的車輛測速系統(tǒng)研究.pdf
- 基于DSP的雷達(dá)測速計量系統(tǒng)的研究.pdf
- 基于DSP的固體多普勒測速系統(tǒng)的研究.pdf
- 基于調(diào)制光源的光子多普勒測速系統(tǒng).pdf
- 基于CPLD-FPGA的相關(guān)測速系統(tǒng).pdf
- 基于視頻和DSP的車輛識別測速系統(tǒng).pdf
- 基于相控陣的多普勒測速系統(tǒng)的硬件實現(xiàn).pdf
- 基于GPS的道路測速系統(tǒng)校準(zhǔn)儀器設(shè)計.pdf
- 基于雙目立體視覺的車輛測速系統(tǒng).pdf
- 基于單片機的電機測速系統(tǒng)設(shè)計()副本
- 基于相關(guān)測量技術(shù)的激光測速系統(tǒng)研究.pdf
- 基于FPGA的高速多通道并行測速系統(tǒng)設(shè)計.pdf
- 基于ARM的互相關(guān)紅外測速系統(tǒng)研究.pdf
- 基于DSP的激光互相關(guān)測速系統(tǒng)研究.pdf
- 電機測速課程設(shè)計---電機測速系統(tǒng)設(shè)計
- 基于DSP的雷達(dá)測速監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 用戶寬帶測速系統(tǒng)
評論
0/150
提交評論