小車循跡控制程序設計_第1頁
小車循跡控制程序設計_第2頁
小車循跡控制程序設計_第3頁
小車循跡控制程序設計_第4頁
小車循跡控制程序設計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、武漢理工大學華夏學院課外自主實驗分析報告實驗名稱 小車循跡控制程序設計 專 業(yè) 軟件工程 班 級 學 號 姓 名 第1章 實驗分析31.1 實驗設計題目31.2 實驗設計任務31.2.1 總體任務31.2.2 詳細任務31.2.3 設計要求31.3軟硬件運行環(huán)境及開發(fā)工具3第2章 概要設計42.1 小車軟硬件設計原理42.1.1 小車硬件設計原理42.1.2小車軟件設計原理42.2 功能設計原理及實現(xiàn)方法42.2.1小車前進功能實現(xiàn)42.2.2 小車旋轉功能實現(xiàn)42.2.3 小車偏移修正功能設計4第3章 詳細設計93.1 硬件設計與實現(xiàn)93.2 系統(tǒng)主程序流程103.3功能模塊詳細設計103.

2、3.1 起始點到中心點路線模塊設計103.3.2 中心點到d點路線模塊設計103.3.3 d點到黑色點路線模塊設計113.3.4 白色點到中心點模塊設計123.3.5 中心點到起始點路線模塊設計13第4章 系統(tǒng)調試與操作說明154.1 系統(tǒng)調試154.1.1 直線調試154.1.2 達到黑色終點點調試154.3 操作說明15第5章 總結和體會16第6章 參考文獻16附錄:11課外實驗設計計劃學生姓名: 萬志雄 專業(yè)班級: 軟件1111 實驗題目:小車循跡控制系統(tǒng)設計(路線3)實驗器材:1、硬件設備:mcs-51單片機最小系統(tǒng)板、四個qti傳感器、兩個舵機、兩個車輪、鋰電池、isp下載線、面包板

3、;2、軟件環(huán)境:keil c51、progisp下載器。實驗任務:(在規(guī)定的時間內完成下列任務)1完成硬件設計并連線,以mcs-51單片機為控制核心,根據4個qti傳感器采集到的數(shù)據控制舵機的運轉,進而控制車輪的速度和方向,并畫出硬件原理圖和實驗連線圖;2用c語言編程實現(xiàn)以下小車行駛線路(地圖見下頁):起始點中心點d點,旋轉360度黑色點,旋轉180度原路返回。時間安排:各時間段的任務可以交替進行時間設計內容第一天設計題目,實物演示、規(guī)劃任務、查找相關資料第二天進行需求分析,完成總體設計第三天硬件詳細設計,連接實驗電路,軟件詳細設計,編寫程序;第四天調試程序、測試系統(tǒng)、總結;第五天總結后完成設

4、計報告。指 導 教 師 簽 名: 2014 年 6 月 30 日教研室主任(或責任教師)簽名: 2014年 6 月 30 日起始點 目 錄第1章 實驗分析1.1 實驗設計題目 小車循跡控制系統(tǒng)設計(路線3)1.2 實驗設計任務及要求1.2.1 實驗總體任務(1)硬件部分:完成硬件設計并連線,以mcs-51單片機為控制核心,隨時采集4個qti傳感器的數(shù)據控制舵機的運轉,進而控制車輪的速度和方向。 (2)軟件部分:用c語言編程實現(xiàn)小車行駛線路:起始點中心點d點(旋轉360度)黑色點然后旋轉180度原路返回。1.2.2任務 使用keilc51編程軟件采用c語言編程實現(xiàn)小車路線3的總體調試,同時不斷修

5、正小車的路線。1.2.3 實驗設計要求 完成硬件原理圖設計、小車模型構建、軟件編程、調試、運行等一整套工作任務。控制軟件使用c語言編程;系統(tǒng)聯(lián)調,提交一個滿足要求的小車循跡控制系統(tǒng)設計。1.3軟硬件運行環(huán)境及開發(fā)工具 以mcs-51單片機為控制核心,根據4個qti傳感器采集的數(shù)據控制舵機的運轉,windows xp操作系統(tǒng)pc機一臺。keilc51編程軟件、progisp下載器、串口調試小助手等軟件。第2章 概要設計2.1 小車軟硬件設計原理2.1.1 小車硬件設計原理小車前面有4個qti感應器來隨時采集數(shù)據,當探測為黑線的時候,返回值為1,當探測為白線的時候,返回值是0,只有當中間那個qti

6、返回值全為1的時候,才走在黑線上,根據返回的狀態(tài)來控制小車舵機的速度。2.1.2小車軟件設計原理將整個過程分為五部分來實現(xiàn),分別為起點到中心點,中心點到d點,d點到黑色點,黑色點到中心點,中心點到起始點。在運動過程中還需設計旋轉45度和180度和360度的旋轉子模塊,當小車偏離軌跡候后,需設計修正子模塊。2.2 功能設計原理及實現(xiàn)方法2.2.1小車前進功能實現(xiàn)此模塊原理是向伺服電機輸出若干個pwm波,波形的占空比可控制小車移動,通過時間寬度和延時產生信號,作用于電機,從而控制其運動。在本次設計中,向伺服電機pwm波過程已經被模塊化在頭文件中,即motion()函數(shù)中,通過對motion()函數(shù)

7、的三個參數(shù)進行設置來實現(xiàn)控制電機轉動從而控制小車前進。motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count)例:其中參數(shù)left_val:左邊電機的高電平時間寬度;right_val:右邊電機的高電平時間寬度;count:脈沖數(shù)目 2.2.2 小車旋轉功能實現(xiàn)小車旋轉的原理是調整兩輪的移動方式、速度及移動步數(shù)。當需旋轉360度時,將左輪設置為快速后退狀態(tài),右輪為快速前進狀態(tài),多次調試測出旋轉所需的步數(shù). 2.2.3 小車偏移修正功能設計 小車偏移修正功能即對小車傳感器信號狀態(tài)進行檢測并作出相應的處理的過程,在修正過程

8、中偏移情況及其代碼和信號狀態(tài)如下:void modify()if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state() motor_motion(1470, 1700,1); /左轉修正 else if(!p22_state()&p23_state()|(!p21_state()& (!p22_state()&(!p23_state()&p24_state() motor_motion(1300, 1550,1); /右轉修正 else motor_motion(1700,1300,1)

9、; (1) 當小車發(fā)生右偏移時,各傳感器狀態(tài)信號如下:100000001100 通過判斷語句:if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state()判斷小車是否向左偏移,若發(fā)生偏移此時通過調節(jié)左右輪的速度來實現(xiàn),左偏時調用motor_motion(1770, 1740,1)實現(xiàn)左輪前進速度大于右輪前進速度來實現(xiàn)向右偏移來對偏移進行修正。 (2 ) 當小車發(fā)生右偏移時,各傳感器狀態(tài)信號如下:100000001100通過判斷語句:if(!p22_state()&p23_state()|(

10、!p21_state()& (!p22_state()&(!p23_state()&p24_state() 判斷小車是否向右偏移。若發(fā)生偏移,此時通過調節(jié)坐游輪的速度來實現(xiàn),右偏時調用motor_motion(1550, 1300,1),通過調節(jié)左右輪的速度,當右輪速度大于左輪速度進行修正。2.3.1編程頭文件 (1)各個頭文件如下圖圖2.1 (2)delay.h頭文件實現(xiàn)延時功能,幫助系統(tǒng)更加理性化,易于操作。例如小車開始部分延時3秒。delay.h頭文件詳細代碼如下:void delay_nus(unsigned int i) i=i/10; while(-i); void delay_n

11、ms(unsigned int n) n=n+1; while(-n) delay_nus(900); /進行時間補償 (3)qti.h頭文件其作用是獲取4個qti傳感器采集的信號。為51單片機提供判斷的輸入數(shù)據。qti.h頭文件p21口實例詳細代碼如下:/*函數(shù)名稱:p21_state()功能: 獲得左邊第一個qti的返回信號參數(shù):無參數(shù)返回值:1:高電平,看到黑線;0:低電平,看到白線*/int p21_state() return (p2&0x02)?1:0;(4)global.h頭文件其作用是定義用到的數(shù)據類型、變量。方便程序設計,簡化程序結構。詳細代碼如下:#ifndef globa

12、l_h#define global_htypedef unsigned int uint16_t;typedef unsigned char uint8_t;typedef unsigned char bool;#define true 1#define false 0#endif (5)motion.h頭文件其作用是控制兩個舵機運轉 。詳細代碼如下:#include global.hsbit left_motor = p10; /左電機接口sbit right_motor = p11; /右電機接口#define left_fwd 1700 /高電平時間定義,單位微秒#define left

13、_bwd 1300#define left_small_fwd1530#define left_small_bwd 1450#define right_fwd 1300#define right_bwd 1700#define right_small_fwd 1450#define right_small_bwd 1530函數(shù)名稱:motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count)作用:向伺服電機輸出若干個pwm波,波形的占空比可控制參數(shù):left_val:左邊電機的高電平時間寬度;right_val:右邊電機的

14、高電平時間寬度;count:脈沖數(shù)目返回值:無返回值void motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count) uint8_t i; for(i=0; icount; i+) left_motor = 1; delay_nus(left_val); left_motor = 0 right_motor = 1; delay_nus( right_val ); right_motor = 0; delay_nms(20); /輸出一定數(shù)量的pwm波形 第3章 詳細設計3.1 硬件設計與實現(xiàn)小車是由多個硬件零件組裝

15、而成,每個零件負責不同的功能,根據設計任務和要實現(xiàn)的主要功能,來進行硬件設計。硬件設計原理圖如下: 圖3.1 總體電路圖圖3.3灰度qti傳感器3.2 系統(tǒng)主程序流程小本系統(tǒng)設計了五個個模塊,分別為起點到中心點路線模塊、中心點到d點、d點黑色點、黑色點到中心點、中心點返回到起始點路線模塊。通過對每個功能模塊的調用實現(xiàn)系統(tǒng)要求的功能。3.3功能模塊詳細設計3.3.1 起始點到中心點路線模塊設計起點到中心點,主要是從開始就前進,在前進過程中不停檢測傳感器傳過來的信號,通過判斷小車是否偏離路線后決定是否修正。程序代碼如下while(1) motor_motion(1700,1300,1); modi

16、fy(); if(p22_state()&p23_state()&p21_state()&!p24_state() /motor_motion(1500,1500,0); /中心點停 motor_motion(1500,1300,18); /右轉45度 break; 3.3.2 中心點到d點路線模塊設計中心點到b點,主要是從開始就前進,在前進過程中不停檢測傳感器傳過來的信號,通過判斷小車是否偏離路線后決定是否修正。如果檢測到0000信號,則執(zhí)行旋轉360度程序。設計函數(shù)centertod()來實現(xiàn)此模塊功能。程序代碼如下:while(1)motor_motion(1700,1300,1); m

17、odify(); if(!p21_state()&!p22_state()&!p23_state()&!p24_state()/motor_motion(1500,1500,0); /d點停 motor_motion(1300,1300,150); /轉360度 break; 程序流程圖如下: 開始前進偏移?前進修正是否全為1?否旋轉360度是退出循環(huán) 圖3.3中心點到d點模塊流程圖3.3.3 d點到黑色點路線模塊設計d點到黑色點前進過程中也要進行檢測修正,當遇到1111信號時,執(zhí)行旋轉180度,其代碼為:while(1) motor_motion(1700,1300,1); modify()

18、; if(p21_state()&p22_state()&p23_state()&p24_state() motor_motion(1300,1300,75); /轉180度 break; 程序流程圖如下: 開始前進偏移?前進修正是否全為1?否旋轉180度是退出循環(huán) 圖3.4 d點到黑點模塊流程圖3.3.4 白色點到中心點模塊設計白色點到中心點循跡過程中,不斷地通過傳感器檢測信號,進行路線修正。當?shù)谝淮螜z測到1111信號時,這表示已經到達中心點。采用的函數(shù)和剛開始去中心點的一樣,模塊程序代碼如下:while(1) motor_motion(1700,1300,1); modify(); if(

19、p21_state()&p22_state()&p23_state()&p24_state() /motor_motion(1500,1500,0); /回到中心點停 motor_motion(1700,1500,18); /向左轉45度 break; 程序流程圖如下: 開始前進偏移?前進修正是否全為1?否左旋轉45度是退出循環(huán) 圖3.5黑點到中心點模塊流程圖3.3.5 中心點到起始點路線模塊設計 while(1) motor_motion(1700,1300,1); modify(); if(p21_state()&p22_state()&p23_state()&p24_state() mo

20、tor_motion(1500,1500,0); /回到起始點 break; 程序流程圖如下: 開始前進偏移?前進修正是否全為1?否停止是退出循環(huán) 圖3.6中心點到d點出發(fā)點模塊流程圖第4章 系統(tǒng)調試與操作說明4.1 系統(tǒng)調試4.1.1 直線調試 主要是判斷小車是否能沿著黑線向前走,方法:讓程序只有函數(shù)modify(),main()函數(shù)中只有motor_motion(1700,1300,1)這條語句;并燒寫到小車中,把小車放在一條黑線上,看它是否能一直在黑線上前進,若不能,再qti是否連接正確,直至小車能一直走在直線上。4.1.2 達到黑色終點點調試主要判斷小車能否到黑色終點,并原地旋轉180

21、度,方法:將自己模塊程序燒寫到小車中,放在黑點上面,觀察小車能否到黑色終點旋轉前進到中心點并并原地旋轉180度,注意看其角度是否正常。 4.2 調試中遇到的問題 調試的時候,是在黑色終點處的時候,旋轉度數(shù)不足。多次調試后為motor_motion(1300,1300,75)。4.3 操作說明在keilc51中寫好的程序進行編譯生成.hex文件,然后通過isp下載線和progisp軟件將已生成的.hex文件燒寫到單片機中。當燒寫成功后,拔掉下載線,然后在已設定好的路徑上,擺正小車的位置,打開小車上的開關。觀察小車是否按照預定的路徑進行行駛。 第5章 總結和體會整個過程中,從需求分析到設計、編碼、

22、測試,我都力求規(guī)范化和文檔化,努力讓自己以前學的知識運用到本系統(tǒng)的開發(fā)中,盡量保證整個系統(tǒng)的開發(fā)進度和質量,順利完成這次的課程設計。不過,在實驗過程中,好多知識都是隨學隨用,就增加了很多不必要的麻煩。雖說這些都會消耗系統(tǒng)開發(fā)的時間,但在同學以及自己的不斷努力下,不怕麻煩,不怕重復,當克服了這些問題之后,我會感覺到自己的知識在一點一滴地積累,不知不覺中增加。我相信,只要肯鉆研,只要擠時間,一切自己想要的知識都可以掌握。通過本次課程設計,我對小車循跡系統(tǒng)經典問題有了進一步的了解,尤其是在軟件與硬件的結合方面有了新的認識。在這次課程設計中,由于沒有掌握好進程同步中的一些關鍵知識,導致在實際操作中遇到

23、了很多問題,比如說對單片機借口的不熟悉。此次課程設計使我明白,在程序設計中,我們需要有一個清晰的整體結構,然后針對每個模塊逐步實現(xiàn)其功能,在設計中也需要有嚴謹和認真的態(tài)度,才會更好的完成一項任務。第6章 參考文獻1 尹志宇、郭晴,單片機入門,北京:清華大學出版社,2011.072黃維通、王曉英,萬能的51單片機 ,北京:清華大學出版社,2011.013 龐婭娟、房大偉51單片機簡明教程,北京:人民郵電出版社,2009.104王小科、王軍、趙會東,單片機開發(fā)案例全程實錄(第二版),北京:清華大學出版社2011.01 附錄:#includereg52.h#includedelay.h#includeqti.h#includemotion.h#includeglobal.hvoid modify()if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state() motor_motion(1470, 1700,1); /左轉修正 else if(!p22_state()&p23_state()|(!p21_state()& (!p22_state()&(!p23_state()&p24_state() motor_motio

溫馨提示

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

評論

0/150

提交評論