




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 . . . 基于單片機的自動往返小車雅堂 程 旭摘要本設計以一片單片機STC89C52作為核心來控制自動往返小車,加以控制芯片L298N和單片機聯合控制小車的前進與后退。路面的黑帶檢測使用反射式紅外傳感器,通過STC89C52對輸入的信號進行處理,以動態顯示的形式通過一個四位的數碼管顯示即時里程,另外一個四位數碼管動態顯示小車行駛時間。以紅外傳感器對路面黑線檢測用,行駛距離使用霍爾元件進行檢測。關鍵詞光電檢測 霍爾檢測 動態顯示 L298N控制電動機 L298NABSTRACT:This system is mainly based on a chip called STC89c51 . T
2、his intelligent car designed by us three can run automatically through black lines on the ground.KEY WORDS: single-chip microcomputer control system LED display L298n單片機黑帶檢測路程和時間顯示LED顯示路程,時間L298N電機驅動模塊1.電機驅動調速模塊方案一:采用電阻網絡或數字電位器調整電動機的分壓,從而達到調速的目的。但是電阻絡只能實現有級調速,而數字電阻的元器件價格昂貴。更主要的問題在于一般電動機的電阻較小,但電流很大;分
3、壓不僅會降低效率,而且很難實現。方案二:采用繼電器對電動機的開或關進行控制,通過開關的切換對小車的速度進行調整。方案的優點是電路較為簡單,缺點是繼電器的響應時間慢,機械結構易損壞,壽命較短,可靠性不高。方案三:采用達林頓管TIP4組成的PWM電路。用單片機控制達林頓管使之工作在占空比可調的狀態,精確調整電機轉速。方案四:采用L298N來控制電機的正轉和反轉來實現小車的前進和后退。加上單片機的程序PWM,實現整車的加速與減速,精確小車的速度。基于上述理論分析,擬選擇方案四。2.路面黑帶檢測模塊黑帶檢測的原理是:紅外光線照射到路面并反射,由于黑帶和白紙的系數不同,可根據接的紅外線的強弱判斷是否到達
4、黑帶。方案一:可見光發光二極管與光敏二極管組成的發射接收電路。這種方案的缺點在于其他環境光源會對光敏二極管的工作產生很大的干擾,一旦外界光亮條件改變,很可能造成誤判和漏判;雖然產生超高亮發光二極管可以降低一定的干擾,但這又將增加額外的功率損耗。方案二:反射式的紅外發射接收器。由于采用紅外管代替普通可見光管,可以降低環境干擾。 基于上述理論分析,擬選擇方案二。3. 電源選擇方案一:所有器件采用電源供電,這樣供電電路比較簡單;但是由于電動機啟動瞬時電流很大,會造成電壓不穩,干擾嚴重,缺點十分明顯。方案二:雙電源供電,將電動機驅動電源與單片機以與周邊電路電源完全隔離,這樣做雖然不如單電源方便靈活,但
5、可以將電動機驅動所造成的干擾徹底消除,提高了系統的穩定性。基于上述理論分析,擬選擇方案二。4. 控制單元模塊方案一:采用純數字電路該方案外部檢測采用光電轉換,系統控制部分采用數字電路譯碼對小車電動機兩端電壓調整,來控制小車的運行。時間和行程用加法器進行計數。此系統的設計將會使電路過于復雜,調試時需要改變硬件電路,機動性差。方案二:用單片機控制用光電檢測不同的信號,并經單片機對其處理,傳送給L298信號,使其控制電機的正轉和反轉,配合PWM程序控制,來實現加速減速和剎車。通過單片機部定數器/計數器進行定時、計數,在用單片機串行輸入/輸出口進行顯示控制。此方案電路成熟、工作穩定、容易實現控制。為能
6、更好的實現題目的各種設計要求,所以我們選用第二種方案。用單片機進行控制。其工作框圖如下:光電檢測小車正反轉控制中心STC89C52開 始行駛時間顯示霍爾檢測二 電路設計行駛里程顯示1. 光電檢測部分:我們采用反射式光電檢測電路對跑道上的黑線進行檢測,并用兩個遮光套管套住發光管和接收管以一定的角度緊貼跑道,這樣可以消除外界光線的干擾。為了加強可靠性采用槽型光耦檢測輪子轉動的行程。用LM358電壓比較器輸出高低電平檢測信號。如圖所示:2. STC89C52單片機基本系統此系統以89C52為核心,每檢測到一個黑帶由光電檢測部分產生一個的脈沖,使單片機產生一個外部中斷1,定義檢測黑帶數的變量加1,同時
7、車輪每轉一圈,霍爾元件輸出一個脈沖,是安單片機產生一個外部中斷0,定義圈數的變量加1.通過P3.0和P3.1控制L298來控制電機的正轉與反轉與剎車。當P3.0輸出低電平,P3.1輸出高電平時,電機正轉,相反則電機反轉,當P3.0和P3.1都是低電平時,使電動機被短路,提高了剎車效率,基本杜絕了由于制動慣性造成的小車的前沖現象。通過P0口進行兩個數碼管的位選,P2口進行段碼輸出,其中一個數碼管顯示行駛時間,另外一個數碼管顯示行駛路程。 如圖所示:3. L298N電動機驅動模塊部分該電路采用電動機驅動芯片L298來控制電動機的正轉與反轉,加以第二路電機電源保證了電動機啟動時有足夠的電流。在試驗中
8、控制電壓為單片機輸出的高低電平直接控制。具體電路圖連接如下:4. 電源部分由于電動機工作電流大,需要選用阻小,供電電流強,質量輕,可反復使用的經濟型電池,我們選用鎳鉻可充電電池組。為使單片機工作穩定,避免電動機開關機和其轉動時對其電源的影響,在此用兩個電池組和穩壓塊7805分別為89C52和電動機驅動顯示部分分別進行供電。保證小車工作和顯示的穩定性。5.軟件設計部分單片機控制電路主要由一片STC89C52組成,通過P3口控制小車正轉與反轉,剎車,加速減速,通過兩個四聯數碼管控制顯示時間和里程以與小車行駛的時間。其中P0口進行位選,P2口進行顯示段碼輸出。該系統采用上電復位加上手動復位聯合復位系
9、統進行初始化,單片機通過P3.0,P3.1輸出脈沖控制電機正轉反轉以與剎車,當P3.0,P3.1分別輸出01是電動機正轉,輸出10時電動機反轉,輸出00時電動機兩邊短路,小車立即剎車。流程圖如下:(1)外部中斷0車輪美轉一次,霍爾元件產生一個脈沖P3.14,通過下降沿觸發外部中斷0,并且在每進行一次外部中斷記錄圈數的變量加1.車輪每轉一圈霍爾元件產生一個脈沖圈數quanshu+開始外部中斷INT0(2)外中斷1光電檢測每檢測到一條黑帶就產生一個脈沖輸入P3.2口,通過下降沿的方式觸發外中斷1,每中斷一次記錄黑帶的變量加1,當檢測到第五條黑帶時,p1.0=1,p1.1=1,小車的電動機由于短路剎
10、車,當檢測到第九條黑帶時,小車再次剎車同時關掉所有中斷。開始黑帶數heidai+退出EA=0,剎車P3.0=1,P3.1=1heidai=5YYheidai=9(3)定時器中斷0使用定時器T0產生5ms定時中斷,每次執行該中斷前要先給定時器0賦初值,定時器中斷每執行一次,變量加1。當i=200時,即每當計時1秒時,時間變量t加1,速度等于一秒轉的圈數和小車車輪的周長相乘。定時中斷0開始產生5ms中斷控制一秒定時,i+一秒定時是否到共轉的圈數q路程=周長*圈數q(4)定時器中斷1主要用來產生不同的占空比的波型進行高低速控制,每次執行時,定時器1要賦初值(5) 主程序主程序主要用來控制兩個四聯數碼
11、管的顯示,通過循環語句不斷的調用顯示程序,使兩個四聯數碼管按位不斷循環亮點,當小車行駛時動態顯示時間和路程,小車停止時顯示小車行駛過程中的時間和路程。6.安裝與調試自動小車為玩具遙控小汽車的改裝品,在改裝的過程中最重要的是考慮設計光電檢測管的位置,檢測黑帶的光電管放在車體的中央,用遮光管將其以一定反射角度壓到跑道上。路程檢測用槽型光耦,放在小車的從動輪上。輪子的周長約為21.6厘米,在輪子上用了一個霍爾元件,每轉一圈一個脈沖。在組裝前對每一個單元電路進行測試,以保證外部硬件電路的無誤,有利于最后的統調。調整是以點到線,最后到整體調試的方法。在調整的過程中我們發現了許多問題,如響應中斷的次數的調
12、整等。并且為了小車碰到墻壁不至于停車,我們在小車的四角上都加上了導向輪,導向輪用隨身聽的壓帶輪制作即可。7.附錄元器件與程序如下:基本元器件列表一個STC89C52單片機2個四位共陽數碼管一個L298N芯片一個LM358 一個霍爾元件和小磁鋼片光點接收管一對晶振(12M)與30pf電容開關電阻 10k 100歐姆 1k 20k可調附錄程序:#include<reg52.h> /包含頭文件#define uint unsigned int /宏常量定義#define uchar unsigned char /宏常量定義sbit dianji1=P10; /P1_0設置為電機控制一sb
13、it dianji2=P11; /P1_1設置為電機控制二sbit hdjc=P32; /P3_2設置為黑帶檢測位uchar code duma=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff; /段編碼uchar code dianduma=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /帶小數點段編碼uchar code wema=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff; /位編碼uchar num,ge,shi,
14、bai,qian; /定義幾個字符型變量uint miao,lc,heidai=0; /定義幾個整形變量long int qs; /定義一個長整形變量用來記錄小車所轉的圈數void fenwei(uint); /聲明一個分位函數用來把要顯示的數分位void shuma(uchar,uchar); /聲明一個數碼上顯示函數用來在數碼管上顯示數據void shumadian(uchar,uchar); /聲明另一個數碼顯示函數用來顯示帶小數點的數據void miaoxianshi(uint); /聲明一個顯示時間的函數void lcxs(uint); /聲明一個顯示路程的函數void djkz()
15、; /聲明一個電機控制函數void delay(uchar); /聲明一個延時函數void delay10s(); /聲明另一個延時函數用來延時十秒鐘/*主函數*/void main() EA=1; /打開總中斷ET0=1; /打開定時器中斷0EX0=1; /打開外部中斷1IT0=1; /外部中斷0設置為跳變沿觸發方式EX1=1; /打開外部中斷1IT1=1; /外部中斷1設置為跳變沿觸發方式TMOD=0x01; /設置定時器0為方式1TH0=(65536-500)/256; /定時器0高八位裝初值TL0=(65536-500)%256; /定時器0低八位裝初值TR0=1; /打開定時器0wh
16、ile(1) /進入主循環 djkz(); /進入電機控制函數/*顯示分位*/函數功能: 把需要在數碼管上顯示的數據分位,/ 即把數據的個、十、百、千位分別分/ 離出來/函數入口參數:整形x,儲存需要分位的數據/函數返回值: 無void fenwei(uint x) ge=x%10; shi=(x%100)/10; bai=(x%1000)/100; qian=x/1000; /*數碼顯示*/函數功能: 將需要顯示的數據顯示在數碼管上/函數入口參數:字符型x,儲存顯示數據/ 字符型y,儲存要顯示的位置/函數返回值: 無void shuma(uchar x,uchar y) P0=wema8;P
17、2=dumax;P0=wemay;delay(5);/*帶小數點數碼顯示*/函數功能: 將需要顯示的數據顯示在數碼管上/函數入口參數:字符型x,儲存顯示數據/ 字符型y,儲存要顯示的位置/函數返回值: 無void shumadian(uchar x,uchar y) P0=wema8;P2=diandumax;P0=wemay;delay(5);/*時間顯示*/函數功能: 將定時器0輸出的時間顯示在數碼管上/函數入口參數:整型x,要顯示的時間/函數返回值: 無void miaoxianshi(uint x) fenwei(x);shuma(ge,3);shuma(shi,2);shumadia
18、n(bai,1);shuma(qian,0);/*路程顯示*/函數功能: 將外部中斷1輸出的路程顯示在數碼/ 管上/函數入口參數:整形z:要顯示的路程/函數返回值: 無void lcxs(uint z) fenwei(z);shuma(ge,7);shuma(shi,6);shumadian(bai,5);shuma(qian,4);/*電機控制*/函數功能: 控制電機運轉/函數入口參數:無/函數返回值: 無 void djkz() uchar n=20,m=60;switch(heidai)case 0:case 1:case 2:dianji1=1;dianji2=0;miaoxiansh
19、i(miao);lcxs(lc);break;case 3:while(m-)dianji1=0;dianji2=1;delay(70);dianji1=0;dianji2=0;delay(30);miaoxianshi(miao);lcxs(lc);while(heidai=3)dianji1=1;dianji2=0;delay(13);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 4:while(heidai=4)dianji1=1;dianji2=0;delay(25);dianji1=0;dianj
20、i2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 5:while(n-)dianji1=0;dianji2=1;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);dianji1=1;dianji2=1;delay10s();while(heidai=5)dianji1=0;dianji2=1;break;case 6: dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 7:while(n-)d
21、ianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);while(heidai=7)dianji1=0;dianji2=1;delay(90);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 8:dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 9:while(n-)dianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度北京市電子產品寄存與保險理賠服務合同
- 農產品購銷合同范本范文
- 2024渭南市青少年體育運動學校工作人員招聘考試及答案
- 2024濮陽市油田職業中等專業學校工作人員招聘考試及答案
- 2024湖南省瀏陽高級技工學校工作人員招聘考試及答案
- 2024河南工業貿易職業學院工作人員招聘考試及答案
- 商品銷售合同模板
- 灘涂開發合作合同協議書
- 跨境電商物流配送與退貨協議
- 股權贈送合同書
- 2024年中考語文復習:非連續性文本閱讀(含練習題及答案)
- 2024年西藏初中學業水平考試生物卷試題真題(含答案解析)
- 血液凈化護理質量控制
- 成人腦室外引流護理-中華護理學會團體 標準
- 2022-2023學年上海市徐匯中學七年級(下)期中語文試卷
- 《促進兒童個性發展之策略研究》17000字(論文)
- 創傷失血性休克中國急診專家共識(2023)解讀課件
- 高中文言文實詞虛詞總集(打印版)
- 咨詢實施顧問能力素質模型
- 2024年鐵路線路工(高級技師)技能鑒定理論考試題庫(含答案)
- 工程造價預算書
評論
0/150
提交評論