版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、/* 小車運行主程序 簡介: 模塊組成:紅外對管檢測模塊 五組對管,五個信號采集端口 直流電機驅(qū)動模塊 驅(qū)動兩個直流電機,另一個輪子用萬向輪 單片機最小系統(tǒng) 用于燒寫程序,控制智能小車運動 功能簡介:在白色地面或皮質(zhì)上用黑色膠帶粘貼出路線路徑寬度微大于相鄰檢測管間 距。 這樣小車便可在其上循跡運行。 補充說明:該程序采取“右優(yōu)先”的原則: 即右邊有黑線向右轉(zhuǎn), 若無,前方有黑線,向前走, 若無,左邊有黑線,向左轉(zhuǎn), 若全無,從右方向后轉(zhuǎn)。 程序開頭定義的變量的取值是根據(jù)我的小車所調(diào)試選擇好的, 如果采用本程序,請自行調(diào)試適合自己小車的合適參數(shù)值。 編者:陳堯,黃永剛(江蘇大學(xué)電氣學(xué)院二年級,三
2、年級) 1. 假定:IN仁1,IN3=1時電機正向轉(zhuǎn)動,必須保證本條件 2. 假定: 遇到白線輸出 0,遇到黑線輸出 1; 如果實際電路是:遇到白線輸出1,遇到黑線輸出 0, 這種情況下只需要將第四,第五句改成: #define m0 1 #define m1 0 即可。 3. 說明 1:直行 速度 full_speed_left,full_speed_right. 轉(zhuǎn)彎 , 調(diào)頭速度 correct_speed_left,correct_speed_right. 微小校正時 高速輪 full_speed_left,full_speed_right; 低速輪 correct_speed. 可以
3、通過調(diào)節(jié)第六,七,八,九,十條程序,改變各個狀態(tài) 下的占空比( Duty cycle ) , 以求達到合適的轉(zhuǎn)彎,直行速度 4.lenthlength檢測到黑線到啟動轉(zhuǎn)動的時間間隔 5. widthmid3 在黑線上到脫離黑線的時間差 6. mid3 作為判斷中心位置是否進入黑線的標志,由于運行的粗糙性和慣性, 常取其他對管的輸出信號作為判斷條件 7. check_right 若先檢測到左邊黑線, 并且左邊已出黑線, 判斷右端是否壓黑線時間拖延 */ #include #define uchar unsigned char #define uint unsigned int #define m
4、0 1 黑線 ml,白線 m0 #define m1 0 #define full_speed_left 40 / 方 便 調(diào) 節(jié) 各 個 狀 態(tài) 的 占 空 比 , 可 用 參 數(shù) 組 : (30,35,6,25,30,68000,27000,500 ); #define full_speed_right 45 / (40,45,6,25,30,68000,27000,500); #define correct_speed 6 / 校正時的低速輪的占空比 #define turn_speed_left 25 #define turn_speed_right 30 #define lenth
5、68000/ 測試數(shù)據(jù):10000- 100- 500- 2000-80000-76000-68000 #define width 27000 /500- 10-2000- 60000-30000- 27000 #define check_right 500 /2000- #define midl left1 20- 200- 500 #define midr right5 uchar Duty_left,Duty_right,i=0,j=0; / 左右占空比標志,取 1-100 sbit IN仁 P2A0; sbit IN2=P2A1; sbit IN3=P2A2; sbit IN4=P2A
6、3; sbit ENA=P1A0; sbit ENB=P1A1; / 循跡口 五組紅外對管,依次對應(yīng)從左往右第 1,2,3,4,5 五組 sbit left1 =P1A6; sbit left2 =P1A5; sbit mid3 =P1A4; sbit right4=P1A3; sbit right5=P1A2; void line_left(); void line_right(); void line_straight()reentrant; / uint t=Delay_time; while(t-); / void init() / 定時器初始化 left1=m0; / 初始化 lef
7、t2=m0; / 白線位置 mid3 =m1; / 黑線位置 right4=m0; right5=m0; TMOD|=0 x01; TH0=(65536-66)/256; TL0=(65536-66)%256; EA=1; ET0=1; TR0=1; ENA=1; / 使能端口,初始化 ENB=1; / void time0(void)interrupt 1 /中斷程序 i+; / 調(diào)速在中斷中執(zhí)行 j+; if(i100) ENA=1;i=0; if(j100) ENB=1;j=0; TH0=(65536-66)/256; /取約 150HZ, 12M 晶振,每次定時 66us, 分 100
8、 次,這樣開頭定 義的變量正好直接表示占空比的數(shù)值 TL0=(65536-66)%256; / void correct_left()/ 向左校正,賦值 Duty_left =correct_speed; Duty_right=full_speed_right; IN1=1; IN2=0; IN3=1; IN4=0; / void correct_right()/向右校正,賦值 Duty_left =full_speed_left; Duty_right=correct_speed; IN1=1; IN2=0; IN3=1; IN4=0; / void turn_left()/ 左轉(zhuǎn),賦值 D
9、uty_left =turn_speed_left; Duty_right=turn_speed_right; IN1=0; / 轉(zhuǎn)彎時一個正轉(zhuǎn),一個反轉(zhuǎn), IN2=1; IN3=1; IN4=0; / void turn_right()/ 右轉(zhuǎn),賦值 Duty_left =turn_speed_left; Duty_right=turn_speed_right; IN1=1; / 轉(zhuǎn)彎時一個正轉(zhuǎn),一個反轉(zhuǎn), IN2=0; IN3=0; IN4=1; / void straight() / 直走,賦值 Duty_left =full_speed_left;/ 左右電機占空比初始化,調(diào)節(jié)直線運動
10、速度 Duty_right=full_speed_right;/ 鑒于左右輪電機內(nèi)部阻力不同,故占空比取不同值, 這組值需要單獨寫程序取值 IN1=1; IN2=0; IN3=1; IN4=0; / void line_straight()reentrant / 函數(shù)名后加 reentrant 可以遞歸調(diào)用, / 一直走黑直線 時 straight(); if(right5=m1)line_right(); else if(left1=m1)line_left(); else if(left2=m1) / 防止校正時,小車沖出過大,導(dǎo)致 2,4 號檢測管屏蔽了 兩端檢測管的檢測,避免其走直線時
11、出軌 while(left2=m1) correct_left(); if(right5=m1) line_right(); goto label3; else if(left1=m1) line_left(); goto label3; else if(right4=m1) / 防止校正時, 小車沖出過大, 導(dǎo)致 2,4 號檢測管屏蔽了 兩端檢測管的檢測,避免其走直線時出軌 while(right4=m1) correct_right(); if(right5=m1) line_right(); goto label3; else if(left1=m1) line_left();goto
12、label3; else if(left1=m0) /delay(lenth); while(right4=m0) /本來應(yīng)該是用 mid3, 但是為了提高靈敏度,選擇 right4 ;向左 時,可取 left2 對管 turn_right(); if(mid3=m1) line_straight(); label3: ; /什么都不做 / void line_right() / 右邊有黑線時 straight();/ 這里的直走是在不管紅外檢測結(jié)果的直行 delay(lenth); if(mid3=m1) turn_right();/ 執(zhí)行向右轉(zhuǎn)的賦值 label:delay(width);
13、 / 由 width 值決定轉(zhuǎn)彎時 mid3 經(jīng)過黑線寬度時所需要的時間 if(mid3=m0) while(right4=m0) else goto label; else if(mid3=m0) turn_right(); while(right4=m0) if(midr=m1) line_straight(); / void line_left() /左邊出現(xiàn)黑線時 while(left1=m1) if(right5=m1) line_right(); goto label2; delay(check_right);/ 左邊遇到黑線時,左邊出了黑線之后,繼續(xù)延時一段時間,判斷 右邊是否遇到黑線, / 若遇到黑線,執(zhí)行 line_right() 函數(shù) if(right5=m1) line_right(); goto label2; if(mid3=m1)|(left2=m1)|(right4=m1)line_straight(); else while(left2=m0) turn_left(); if(midl=m1) line_straight(); label2: ; / void detect_infrared() /循跡,紅外檢測 if(right
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶大學(xué)課程設(shè)計仿真圖
- 二零二五年度橘子種植基地承包與農(nóng)產(chǎn)品出口協(xié)議3篇
- 二零二五年度美發(fā)店設(shè)備更新?lián)Q代及技術(shù)升級合同4篇
- 2025年度新型節(jié)能門窗安裝承攬合同范本3篇
- 2025年項目咨詢管理合作協(xié)議范本詳解3篇
- 二零二五年度酒店客房門鎖更換與升級服務(wù)合同4篇
- 2025年校車照管員崗位責(zé)任與風(fēng)險防控合同2篇
- 二零二五年度民用航空運輸合同服務(wù)質(zhì)量提升方案4篇
- 二零二五年度模板木枋行業(yè)創(chuàng)新發(fā)展基金合作合同4篇
- 2025年度高校教學(xué)樓租賃合同及智能化教學(xué)系統(tǒng)建設(shè)3篇
- 軌道工程-第三章-有砟軌道
- 泌尿:膀胱腫瘤病人的護理查房王雪-課件
- 標點符號的研究報告
- 服務(wù)器報價表
- 2025年高考化學(xué)試題分析及復(fù)習(xí)策略講座
- 2024-2029年中國制漿系統(tǒng)行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 大門封條模板
- ppr管件注塑工藝
- 液化氣站其他危險和有害因素辨識及分析
- 高中語文教學(xué)課例《勸學(xué)》課程思政核心素養(yǎng)教學(xué)設(shè)計及總結(jié)反思
- 中國農(nóng)業(yè)銀行小微企業(yè)信貸業(yè)務(wù)貸后管理辦法規(guī)定
評論
0/150
提交評論