基于avrmega16的測速系統(tǒng)_第1頁
已閱讀1頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論