基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)_第1頁(yè)
基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)_第2頁(yè)
基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)_第3頁(yè)
基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)_第4頁(yè)
基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于AVR單片機(jī)的轉(zhuǎn)速測(cè)量和行程測(cè)量系統(tǒng)王樹超 李祥偉 樊帥帥一 設(shè)計(jì)目的,思想和功能通過(guò)設(shè)計(jì)轉(zhuǎn)速測(cè)量系統(tǒng),熟悉AVR單片機(jī)的使用和利用ICC軟件編程,設(shè)計(jì)出一種具有一定實(shí)用價(jià)值的轉(zhuǎn)速測(cè)量系統(tǒng),并用于行程測(cè)量和超速報(bào)警等儀器。通過(guò)實(shí)用光電開關(guān),將外界的轉(zhuǎn)動(dòng)信號(hào),轉(zhuǎn)化為電信號(hào),來(lái)觸發(fā)單片機(jī)內(nèi)部的計(jì)時(shí)中斷,結(jié)合內(nèi)部的定時(shí)系統(tǒng),就可以測(cè)出外部信號(hào)(轉(zhuǎn)動(dòng))的頻率,換算成轉(zhuǎn)速。然后將轉(zhuǎn)動(dòng)次數(shù)累加,轉(zhuǎn)換成行程。 我們的儀器可以實(shí)現(xiàn)對(duì)風(fēng)扇等器物的轉(zhuǎn)速的測(cè)量,也可以應(yīng)用于對(duì)汽車等交通工具行程和速度的測(cè)量。二 硬件設(shè)計(jì)思想和電路原理圖(1)、硬件電路流程光電開關(guān)ATmeaga16轉(zhuǎn)速顯示超速警報(bào)行程顯示三 電路

2、原理圖三 如何使用硬件資源 光電開關(guān)使用時(shí),將其接地端接在單片機(jī)某個(gè)輸出低電平的引腳上,信號(hào)輸出端接在單片機(jī)的輸入引腳上。四 軟件設(shè)計(jì)流程系統(tǒng)初始化T0外部中斷,100個(gè)外部脈沖中斷一次T2內(nèi)部計(jì)時(shí)中斷,每504us中斷一次掃描斷數(shù)碼管清零并初始化T2計(jì)數(shù)器,賦值轉(zhuǎn)速,圈數(shù)自加,就緒標(biāo)志置位計(jì)時(shí)變量自加進(jìn)入主函數(shù)判斷刷新標(biāo)志是否為1是否求出轉(zhuǎn)速,行程并送顯示區(qū),判讀是否需警報(bào),清零就緒標(biāo)志等待五 程序/ICC-AVR application builder : 2008-5-31 7:42:42/ Target : M16/ Crystal: 1.0000Mhz#include <iom

3、16v.h>#include <macros.h>flash unsigned char led_710=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;flash unsigned char position8=0x08,0x04,0x02,0x01,0x80,0x40,0x20,0x10;unsigned char dis_buff8;/ 顯示緩沖區(qū),存放要顯示的8個(gè)字符的段碼值unsigned char posit;intok = 0;unsigned char new;long int freq;unsigned l

4、ong int zhuansu,xingcheng=0,a=0,b=0;void port_init(void) PORTA = 0x00; DDRA = 0xFF; PORTB = 0xf0; DDRB = 0xf0; PORTC = 0x00; /m103 output only DDRC = 0xFF; PORTD = 0xff; DDRD = 0xFF;/call this routine to initialize all peripheralsvoid init_devices(void) /stop errant interrupts until set up CLI(); /d

5、isable all interrupts port_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; /timer interrupt sources SEI(); /re-enable interrupts /all peripherals are now initializedvoid display(void)PORTD = 0x00;PORTA = led_7dis_buffposit;if (posit=1|posit=5) PORTA = PORTA | 0x80; PORTD = positionposit; if (+posit

6、 >=8) posit = 0;/ T/C0 比較匹配中斷服務(wù),100個(gè)計(jì)數(shù)脈沖中斷一#pragma interrupt_handler int2_isr:20 void int2_isr(void)new = TCNT2;TCNT2 = 0;TIFR |= 0x02;zhuansu= freq;xingcheng=a; /a用來(lái)累計(jì)行程xingcheng+;freq = 0;ok = 1;/ T/C2 比較匹配中斷服務(wù),504us一次#pragma interrupt_handler int0_isr:4 void int0_isr(void)freq+; SEI();/ 開中斷,允許

7、中斷嵌套,T/C0中斷可打斷該中斷服務(wù)display();void to_disbuff(void)/ 頻率,行程值轉(zhuǎn)化為BCD碼送顯示緩沖區(qū)unsigned char i,j=3;unsigned char x,y=7;for (i=0;i<=3;i+)dis_buffj-i = zhuansu% 10;zhuansu = zhuansu/ 10; /在PD0到PD3輸出轉(zhuǎn)速的值for(x=0;x<=3;x+)dis_buffy-x=xingcheng%10;xingcheng=xingcheng/10; /在PD4到PD7輸出行程的值void main(void) unsign

8、ed char i;port_init();init_devices(); DDRA=0xFF;/ LED數(shù)碼管 DDRD=0xFF; / T/C2初始化 TCCR2=0x0A;/ 內(nèi)部時(shí)鐘,8分頻(1.0000M/8=125KHz),CTC模式, TCNT2=0x00;/ 基時(shí)為8us OCR2=0x3E;/ OCR2 = 0x3E(62),(62+1=63)/125 = 0.504ms/ T/C0初始化 TCCR0=0x0E;/ 外部T0腳下降沿觸發(fā)計(jì)數(shù),CTC模式 TCNT0=0x00; OCR0=0x63;/ OCR0 = 0x62(99),(99 + 1) = 100 TIMSK=0

9、x82;/ 允許T/C2、T/C0比較匹配中斷 for (i=0;i<=7;i+)dis_buffi=0; SEI();/ 開放全局中斷 while (1) if (ok) b= 416666666/(zhuansu*63+new); /b用來(lái)檢測(cè)是否超過(guò)報(bào)警轉(zhuǎn)速zhuansu = zhuansu*63+new;/ 累計(jì)100個(gè)脈沖的時(shí)間間隔zhuansu = 416666666/zhuansu;/ 換算成轉(zhuǎn)速a=xingcheng;xingcheng=xingcheng*314;xingcheng=xingcheng/10;to_disbuff();/ 轉(zhuǎn)速,行程值送顯示ok = 0;

10、if (b>400)PORTB&=0x0f; /超速警報(bào)燈顯示 if (b<=400) PORTB|=0xf0; 五 測(cè)試過(guò)程和測(cè)試數(shù)據(jù)第一次測(cè)試 2008年6月6日 12號(hào)宿舍樓123宿舍 測(cè)試對(duì)象 電風(fēng)扇數(shù)據(jù):轉(zhuǎn)速 3.97 4.52 4.53 4.53 4.53 4.53 4.52 4.52 行程 0.31 0.62 0.94 1.26 1.57 1.88 2.20 2.51報(bào)警 無(wú) 有 有 有 有 有 有 有第二次測(cè)量 2008年6月7日 12號(hào)宿舍樓123宿舍 測(cè)試對(duì)象 電風(fēng)扇轉(zhuǎn)速 2.01 4.53 4.53 4.52 4.53 4.53 4.52 4.53 行

11、程 0.31 0.62 0.94 1.26 1.57 1.88 2.20 2.51報(bào)警 無(wú) 有 有 有 有 有 有 有第三次測(cè)量 2008年6月7日 12號(hào)宿舍樓123宿舍 測(cè)試對(duì)象 電風(fēng)扇轉(zhuǎn)速 4.02 5.53 5.54 5.53 5.54 5.52 5.53 5.54行程 0.31 0.62 0.94 1.26 1.57 1.88 2.20 2.51報(bào)警 無(wú) 有 有 有 有 有 有 有數(shù)據(jù)解釋:開始時(shí)由于各器件尚未就緒,開機(jī)后不能直接進(jìn)入測(cè)試狀態(tài),故,測(cè)試數(shù)據(jù)偏低。形成測(cè)量時(shí),默認(rèn)為半徑為0.5米。對(duì)于不同的器件,可以按實(shí)際情況稍作修改。六 分析相應(yīng)指標(biāo)參數(shù)(1)測(cè)量的絕對(duì)誤差:由于TC

12、2計(jì)數(shù)器有1的誤差,所以測(cè)量周期的絕對(duì)誤差為+/-(8us/63),若考慮中斷響應(yīng)事件的影響,若考慮中斷響應(yīng)時(shí)間,則絕對(duì)誤差為+/-(812)/63us.,即周期測(cè)量的絕對(duì)誤差??梢姕y(cè)量的時(shí)間越長(zhǎng)相對(duì)誤差越小。(2)最低轉(zhuǎn)速測(cè)量值0r/s34359738360us。頻率值為0.00029hz,則響應(yīng)的轉(zhuǎn)速值為0.00097r/s.。(3)最高測(cè)量轉(zhuǎn)速70r/s左右我們令數(shù)碼管在轉(zhuǎn)33圈時(shí)刷新一次,如果一秒鐘刷新兩次,我們無(wú)暇分辨的話,最高測(cè)量的轉(zhuǎn)速應(yīng)為70r/s左右。(3)使用資源2個(gè)定時(shí)器,2個(gè)中斷。(4)筮待改進(jìn)之處: 我們的產(chǎn)品針對(duì)只有三個(gè)葉片的風(fēng)扇或車輪設(shè)計(jì),如果要測(cè)量其他葉片數(shù)目的車輪速度時(shí),需換算。 我們行程測(cè)量設(shè)計(jì)針對(duì)的是半徑0.5米的車輪,適應(yīng)其他輪子,需換算。 解決方案:可以外加一個(gè)鍵盤掃描程序,將其葉片數(shù)和半徑輸入。 不過(guò),我們的作品可以用來(lái)嵌入某個(gè)固定參數(shù)的產(chǎn)品中,因此,對(duì)普適性的要求也不是必須的。七 設(shè)計(jì)所需的全部資源和成本A

溫馨提示

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

評(píng)論

0/150

提交評(píng)論