智能車技術方案_第1頁
智能車技術方案_第2頁
智能車技術方案_第3頁
智能車技術方案_第4頁
智能車技術方案_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、智能車設計技術報告光電組成員姓名:劉文雄李政張建偉飛思卡爾智能車設計方案光電組目錄:一、緒論2二、整車設計方案22.1 整車工作原理22.2整車布局22.3 系統(tǒng)設計結構圖32.4 系統(tǒng)軟件設計思路3三、機械系統(tǒng)設計43.1紅外傳感器支架的設計安裝43.2前輪傾角的調整533底盤高度的調整63.4舵機安裝結構的調整635后輪差動機構調整73.6 車體重心的調整73.7光電編碼器的安裝8四、硬件電路設計84.1 最小系統(tǒng)板的設計84.2電源模塊的設計104.3電機驅動模塊的設計104.4速度傳感器114.5舵機驅動模塊124.6圖像采集電路 12五、軟件系統(tǒng)設計145.1 S12單片機簡介145

2、.2 系統(tǒng)模塊介紹及系統(tǒng)初始化155.3 圖像采集及黑線提取算法155.4舵機控制策略195.5 速度控制策略19一緒論為了提高大學生的動手能力和創(chuàng)新能力,教育部與飛思卡爾公司共同組辦飛思卡爾杯全國大學生智能汽車邀請賽”,這個大賽的綜合性很強,是以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識別、傳感、電子、電氣、計算機和機械等多個學科交叉的科技創(chuàng)意性比賽。通過多年的發(fā)展比賽已具有電磁組、光電組和攝像頭組三個賽組。通過對以往比賽情況以及今年比賽規(guī)則的了解,我們選擇了以紅外對管為傳感器的智能車設計。以下主要介紹了競速車模的整體框架、硬件設計、紅外對管賽道采集模塊、光電編碼器速度采集模塊、執(zhí)行模塊電

3、路設計、電源管理模塊以及系統(tǒng)軟件設計。在硬件設計方面,結合大賽選用芯片的要求,自行設計實現(xiàn)了系統(tǒng)的電路板,軟件系統(tǒng)以Freescale16 位單片MC9S12XS128作為系統(tǒng)控制處理器,采用紅外對管獲取實時賽道信息,通過紅外對管直接提取賽道黑線,采用PD控制算法對舵機轉向進行控制。通過光電編碼器實時獲取小車速度,采用P控制策略形成速度閉環(huán)控制。二整車設計方案2.1 整車工作原理智能車的總體工作原理為:以紅外對管對賽道光線不同反射提取賽道圖像并將對管坐標化進行計算塞到我位置同時輸入到S12控制核心;通過光電編碼器來檢測車速,并采用S12的輸入捕捉功能進行脈沖計數(shù)計算速度和路程;舵機轉向采用PD

4、控制;電機轉速控制采用PID控制,通過PWM控制驅動電路,調整電機的功率;而車速的目標值由默認值和運行安全監(jiān)控綜合控制。2.2 整車布局1、 整車低重心設計。通過以往幾屆比賽的經驗我們看到,往往重心低,體積小巧,布局緊湊的賽車更能取得好的成績。而重心過高的“長頸鹿”往往在高速過彎時出現(xiàn)側翻。而通過汽車理論與現(xiàn)實中的競速類比賽我們也可以看到,凡是競速類的賽車均是低重心設計。于是,我們通過合理布局電路板和各種傳感器,盡可能地降低整車重心。在不影響傳感器前瞻,或者不過度犧牲傳感器性能的情況下,盡量降低紅外對管傳感器的重量和高度,以提高賽車的側翻極限。 2、 整車電路集成化,一體化設計。模塊化設計和一

5、體化設計是兩種互有利弊的設計思路。模塊化的好處是系統(tǒng)有良好的擴展性,可升級性,維護性好。但缺點是體積較大,接插件較多,整個系統(tǒng)有很多廢重,不利于小型化和輕量化。集成化的設計思路的好處是原件密度高,系統(tǒng)可以小型化一體化,對于布局空間非常局促的智能車來說,小型化的電路設計更為方便布局。但是缺點是系統(tǒng)升級麻煩,需要極高的可靠性的保證。我們在最終采用的方案中,通過綜合考慮各方面因素,在確定了系統(tǒng)最終硬件方案不做大的更改的情況下,在確保了系統(tǒng)可靠性的前提下,最終選擇了一體化,集成化的硬件設計思路。使車體硬件電路布局緊湊,穩(wěn)定可靠。 3 、為了讓傳感器獲得更多更遠的信息,讓傳感器向前稍微傾斜一個角度,獲得

6、更大的前瞻。 4、 輕量化設計。重量的減輕,可以帶來加速快,減速及時等一系列有點,所以在達到設計目標的情況下,應盡可能減輕車重。 2.3 系統(tǒng)設計結構圖MC9S12XS128撥碼開關舵機電機測速裝置黑線識別傳感器電機驅動電路前輪后輪圖2.1 系統(tǒng)框圖控制參數(shù)2.4 系統(tǒng)軟件設計思路系統(tǒng)的軟件方面,我們首先要考慮的因素就是要保證賽車的穩(wěn)定性。 以此目標為核心,我們的軟件包括了一下幾個子模塊: 1、系統(tǒng)初始化與硬件接口 2 、圖像處理與黑線提取 3 、起始線判別 4 、路徑識別 5 、控制算法 三機械系統(tǒng)設計3.1尋跡傳感器的布局常見的有以下幾種方案 尋跡傳感器的布局常見的有以下幾種方案 方案一:

7、一字形布局 反射式光電傳感器在小車前方一字形簡單排布。在一字形中傳感器的間隔有均勻布局和非均勻布局兩種方式,均勻布局不利于彎道信息的準確采集,通常采取的是非均勻布局??紤]到弧度信息采集的連貫性,非均勻布局的理論依據(jù)是等角度分布原則,即先確定一合適的定點,從頂點依次等角度畫射線,射線與傳感器水平線相交的位置即為傳感器的位置。這種方案信息檢測相對連貫,準確,使控制程序算法簡單,小車運行連貫,穩(wěn)定。 方案二:M形布局 傳感器呈M形排布。這種方案的優(yōu)點在于拓寬了邊沿傳感器的檢測范圍,更適合于小車快速行進中的彎道檢測,但相對一字形布局來說,M形布局不利 于信息檢測的穩(wěn)定,易于產生振蕩,不利于小車行駛的穩(wěn)

8、定。 方案三:活動式傳感器布局 前面兩種方案都是固定的布局方式,使傳感器對賽道有一定的依賴。在這個方案中,傳感器的位置是可以在一定范圍內靈活排布的。這種方案的布局思路是傳感器在安裝板上的位置是可調的,先將傳感器排布成為矩形點陣,根據(jù)不同的賽道情況而靈活地作出調整,就可以設計出不同的布局方式而適應不同的賽道。這樣對不同賽道有更強的適應性。但這種方案可調性大,臨時調節(jié)較難,其次機械設計中體積較大,增加了小車的重量,不利于加減速。 在我們的方案選擇中,我們采用的是上述第一種方案。 3.2前輪傾角的調整根據(jù)汽車理論,前輪參數(shù)的調整對智能車直線行駛的穩(wěn)定性、轉向的輕便性及輪胎磨損有很大影響。前輪是轉向輪

9、,它的安裝位置由主銷內傾、主銷后傾、前輪外傾和前輪前束等4個參數(shù)來決定。 主銷內傾是指主銷裝在前軸略向內傾斜的角度,它的作用是使前輪自動回正。內傾角度越大時前輪自動回正的作用就越強烈,但轉向時也越費力,輪胎磨損增大;反之,內傾角度越小時前輪自動回正的作用就越弱。我們沒有對此參數(shù)進行調整。主銷后傾(Caster)是指主銷裝在前軸,上端略向后傾斜的角度。它使車輛轉彎時產生的離心力所形成的力矩方向與車輪偏轉方向相反,迫使車輪偏轉后自動恢復到原來的中間位置上。由此,主銷后傾角越大,車速越高,前輪穩(wěn)定性也愈好。主銷內傾和主銷后傾都有使汽車轉向自動回正,保持直線行駛的功能。不同之處是主銷內傾的回正與車速無

10、關,主銷后傾的回正與車速有關,因此高速時后傾的回正作用大,低速時內傾的回正作用大。由于智能車比賽賽道逐漸向復雜型,多彎的賽道發(fā)展,所以我們更多的要求提升賽車彎道性能,故此處我們保持了賽車原裝的前2后2的墊片設計。前輪外傾角(Camber)對賽車的轉彎性能有直接影響,它的作用是提高前輪的轉向安全性和轉向操縱的輕便性。前輪外傾角俗稱“外八字”,如果車輪垂直地面一旦滿載就易產生變形,可能引起車輪上部向內傾側,導致車輪聯(lián)接件損壞。此處可根據(jù)實際情況,調整5°左右的外傾角。所謂前束(Toe-out)是指兩輪之間的后距離數(shù)值與前距離數(shù)值之差,也指前輪中心線與縱向中心線的夾角。前輪前束的作用是保證

11、汽車的行駛性能,減少輪胎的磨損。前輪在滾動時,其慣性力會自然將輪胎向內偏斜,如果前束適當,輪胎滾動時的偏斜方向就會抵消,輪胎內外側磨損的現(xiàn)象會減少。此處一般調整為0°前束。 33底盤高度的調整底盤適當降低,在可以過坡道的情況下,盡量降低底盤,從整體上降低車的重心,使車在轉彎時可以更加穩(wěn)定、快速??紤]到車上坡時重心后傾,應將底盤前端低于底盤后端,增加前輪上坡時的抓地力。3.4舵機安裝結構的調整舵機是整車延時比較大的一個環(huán)節(jié),如何在保證舵機轉向的正確性的前提下進一步減小其動作延時,以提高系統(tǒng)的響應速度,是舵機性能優(yōu)化的目標。增加攝像頭的前瞻能力可以在一定程度上彌補舵機的時延。舵機反應速度

12、是彎道處車速提高的主要瓶頸之一。提高智能車的過彎速度可有效地提高平均速度。為加快舵機的響應速度,我們參考了上兩屆的做法將舵機架高。舵機按立式反裝,使舵機軸處于中間位置,即舵機軸與兩前輪間連桿長度相等。因左右轉向時的力臂相同,故左右轉向角度、速度均相同。架高舵機,加長舵機連桿長度,這樣舵機轉過一個很小的角度,前輪就能轉過很大角度,從而加快了響應速度。但舵機轉動時受到的阻力矩也變大,會導致轉向變慢。這是兩個相互矛盾的因素,需在實驗中尋找最優(yōu)解。增加前輪下壓力,從而提高了前輪的抓地力,當然這樣也加重了舵機負載,不過因為轉向連桿連接點和舵機軸心距離適中,所以不會燒毀舵機。 35后輪差動機構調整當賽車在

13、正常過彎時 (假設無轉向不足亦無轉向過度),4個輪子的轉速皆不相同,依序為:外側前輪外側后輪內側前輪內側后輪。此次所使用車模配備的是后輪差速機構。差速器的特性是:阻力越大的一側,驅動齒輪的轉速越低;而阻力越小的一側,驅動齒輪的轉速越高。以后輪差速器為例,在過彎時,因外側后輪輪胎所遇的阻力較小,輪速便較高;而內側后輪輪胎所遇的阻力較大,輪速便較低。差速機構的作用是在車模轉彎的時候,降低后輪與地面之間的滑動;并且還可以保證在輪胎抱死的情況下不會損害到電機。差速器的調整中要注意滾珠輪盤間的間隙,過松過緊都會使差速器性能降低,轉彎時阻力小的車輪會打滑,從而影響車模的過彎性能。好的差速機構,在電機不轉的

14、情況下,右輪向前轉過的角度與左輪向后轉過的角度之間誤差很小,不會有遲滯或者過轉動情況發(fā)生。36車體重心的調整車體重心位置對賽車加減速性能、轉向性能和穩(wěn)定性都有較大影響。重心調整主要包括重心高度和前后位置的調整。理論上,賽車重心越低穩(wěn)定性越好。因此除了攝像頭裝得稍高以外,其他各個部件的安裝高度都很低。除此之外,車輛重心前后方向的調整,對賽車行駛性能也有很大的影響。根據(jù)車輛運動學理論,車身重心前移,會增加轉向,但降低轉向的靈敏度(因為大部分重量壓在前輪,轉向負載增大),同時降低后輪的抓地力,影響加減速性能;重心后移,會減少轉向,但增大轉向靈敏度,后輪抓地力也會增加,提高加減速性能。因此,確定合適的

15、車體重心,讓車模更加適應比賽賽道是很關鍵的。將攝像頭安裝在車體靠后位置,這樣使得賽車的重心后移,極大地增加了賽車的轉向靈活度。3.7光電編碼器的安裝光電編碼器安裝主要考慮的問題是與齒輪的咬合,太緊會使電機轉動吃力并且會發(fā)出很大的噪聲,太松有時候會丟齒。因此最好使得安裝的編碼器松緊程度能夠調整最好。四硬件電路設計4.1 最小系統(tǒng)板的設計所謂單片機最小系統(tǒng),是指在單片機外部增加盡可能少的元件電路,組成一個讓單片機可獨立工作的系統(tǒng)。MC9S12DG128芯片是全國智能汽車競賽組委會指定各參賽隊使用的Freescale HCS12系列中的一款芯片,本節(jié)介紹以MC9S12DG128芯片為核心的最小系統(tǒng)的

16、組成,如圖5.9所示。該最小系統(tǒng)主要包括以下幾個部分:時鐘電路、串口電路、BDM接口、供電電路、復位電路和調試用LED燈。各個部分的功能分別如下:(1)時鐘電路為單片機提供一個外接的16 Hz的石英晶振。(2)串口的RS-232驅動電路可實現(xiàn)TTL電平與RS-232之間的轉換。(3)BDM接口允許用戶通過該接口向單片機下載和調試程序。(4)供電電路主要是給單片機提供+5 V的電源。(5)復位電路是通過一個復位芯片給單片機一個復位信號。(6)調試用LED燈和單片機的PORTB口相連,供程序調試使用。4.2 電源模塊的設計智能車系統(tǒng)采用配發(fā)的標準車模用 7.2V 2000mAh Ni-Cd 充電電

17、池進行供電,但各個模塊所需要的電壓不同,因此需要進行電壓調節(jié),并且由于電機運行會產生干擾噪聲,需要將控制電源和電機驅動電源了分開。電源LM2941LM2940舵機單片機傳感器編碼器7.2VV7.2V5V5V5V6V直流電機7.2VV4.3電機驅動模塊的設計4.5舵機驅動模塊智能車采用的舵機是大賽組委會統(tǒng)一規(guī)定使用的 Futaba S3010。該舵機標稱使用的輸入供電電壓為4.8-6V,硬件連線上,由單片機輸出一路16 位精度的PWM 信號接舵機控制線,即能使舵機在正負45 度范圍內轉動。4.6圖像采集電路五軟件系統(tǒng)設計5.1 S12單片機簡介根據(jù)大賽規(guī)則要求,核心控制模塊可以采用組委會提供的

18、HCS12 模塊,也可以選用飛思卡爾公司8 位、16 位系列微控制器(單核,例如不允許使用MC9S12X 系列)芯片自制控制電路板。每臺模型車的電路板中只允許使用一種型號微控制器。8 位微控制器最多可以使用 2 片,16 位微控制器限制使用 1 片;不得同時使用 8 位和 16 位微控制器。我們最終決定采用飛思卡爾公司的MC9S12XS128芯片作為智能車的主控芯片。MC9S12XS128是以CPU12內核為核心的16位單片機,片內存儲器有512KB的Flash、14KB的RAM和4KB的EEPROM。片內包含2路SCI、3路SPI、5路CAN1路I2C等通訊模塊,有16路10位ADC模塊,8

19、路8位PWM模塊和8路16位定時器模塊。5.2 系統(tǒng)模塊介紹及系統(tǒng)初始化由于比賽水平的不斷提高及判斷坡道,判斷起始線等新的比賽元素的加入,導致智能車系統(tǒng)不論從硬件上還是軟件上都逐漸趨向復雜。體現(xiàn)到單片機上,就是系統(tǒng)被使用的模塊越來越多,融合性越來越強。我們在最終就使用了MC9S12XS128單片機的PWM模塊來驅動電機與舵機,ECT模塊來測速和捕捉終端,AD模塊來采集加速度傳感器信號和進行電壓監(jiān)測。SPI模塊與無線監(jiān)控調試模塊通信,SCI模塊做有線通信,I2C模塊與 圖像傳感器通信,再加上并行圖像數(shù)據(jù)的數(shù)據(jù)線,鍵盤掃描控制線,最終幾乎占用了單片機的大多數(shù)引腳和常用功能。5.3圖像采集我們采取直

20、接黑線提取地方法,我們將每個傳感器進行坐標化,當傳感器位于黑線上方時,用此傳感器的坐標進行小車的位置判斷,通過程序計算控制小車舵機,速度等一些參數(shù) 起始線的判別 由于比賽新增了賽車必須在起始線后三米內停下的規(guī)則,這就要求賽車必須具有穩(wěn)定可靠提取起始線作為停車標志的功能。提取起始線的難點在于隨著比賽水平的不斷提高,車速越來越快,并且起始線一般在較長的直道上,賽車駛過時的速度一般都比較高甚至非常高,這就進一步增加了起始線提取的難度。同時,賽車通過起始線時的角度余量也是一個需要考慮和解決的問題。所謂的角度余量就是要考慮賽車在以一定角度通過起始線而不是垂直通過起始線時,也應能穩(wěn)定檢測到起始線,而不是出

21、現(xiàn)誤檢或漏檢。這種情況包括車剛從彎道進入直道斜對起始線或者在直道上因未知情況并不是正對起始線的情況。受到光電傳感器限制,我們最終選擇用撥碼開關控制起始線。當車每經過一個十字線或經過起跑線一次,我們就記錄一次,最終通過控制記錄個數(shù)控制小車請停止。5.4 舵機控制策略在舵機控制策略方面,我們最終還是采用了最為經典的PD控制策略,具體的策略是通過前面所述的路徑判別算法,判斷賽車前進方向上的路況,對賽道類型進行分類,進而選擇相應的控制參數(shù)與策略。5.5 速度控制策略智能車的速度控制策略我們仍舊是選擇了的P控制策略。此種方法簡單實用,瞬態(tài)響應快而又兼顧了穩(wěn)態(tài)無差調整。在實際比賽種也為許多隊伍所采用。在實

22、際智能車速度控制系統(tǒng)中,由于控制周期不可能足夠短,并且電機延遲較大,該方式實際效果不佳,為了獲得良好的動態(tài)性能的同時又兼顧穩(wěn)態(tài)性能,我們采用了改進的控制算法以獲得更快地響應速度,而在速度誤差較小或者速度接近設定值時,則將控制器切換為PI控制,進行細調,進而獲得精確穩(wěn)定的控制效果。 六控制程序#include <hidef.h> #include <mc9s12xs128.h> #pragma LINK_INFO DERIVATIVE "mc9s12xs128b"/=public variable=#define ideal_speed 180#def

23、ine kp 24 #define ki 0 #define kd 0 #define Angel_Center 1380 /舵機中心位置#define lose_limit 300 /丟失黑線后 滑翔時間/-function- void crg_init(void); / 鎖相環(huán)初始化 void atd_init(void); / AD轉換初始化 void pwm_init(void); / PWM信號初始化 void ect_init(void); void sam_position(void); /讀adc結果 void car_position(void); /計算car_positn

24、 void angle(void); /計算轉角 void dirver(void); void delay(void); void DelayNS(int dly); void slow(void); void port(void); void check_start(void); void found_start(void); void begin_delay(void); void pid(); unsigned int absolute(int); word sam_atd_g15; int adc_limit=150; int c=0; unsigned char sd=0,b,y;

25、 static unsigned char a; int black_sensor_number; int pre_positn=0; int car_positn; int angle_data; int flag=0; int pulse_count; int pre_error=0; int pre_d_error=0; int NOP; int pk=40; int start_acc=0; int finish_flag=0; int ff=0; int x,z; /=main loop= void main(void) DelayNS(3500); PORTB=0x00; DDRB

26、=0x00; crg_init(); /鎖向環(huán)初始化 atd_init(); /初始化AD轉化 pwm_init(); port(); PWMDTY01=1380; for(;) /port(); /ATD0CTL5=0x10; /while(!ATD0STAT0_SCF); sam_position(); /讀采樣值 car_position(); /計算car_positn check_start(); angle(); slow(); dirver(); /計算轉角 _FEED_COP(); /=system ini()= /-crg_init- void crg_init(void)

27、CLKSEL=0X00; /disengage PLL to system PLLCTL_PLLON=1; /turn on PLL SYNR =0xc0 | 0x05; REFDV=0x80 | 0x01; POSTDIV=0x00; /pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz; _asm(nop); /BUS CLOCK=48M _asm(nop); while(!(CRGFLG_LOCK=1); /when pll is steady ,then use it; CLKSEL_PLLSEL =1; /engage PLL to system;/-pw

28、m_init-void pwm_init(void) PWME=0x00; PWMPRCLK=0x33; /8分頻為6M PWMSCLA=0x03; /1M PWMSCLB=0x02; / PWMSCLB=0x06;0.5M PWMPOL=0xff; PWMCLK=0X2b; PWMCAE=0x00; PWMCTL=0X10; /01級聯(lián) PWMDTY01=1365; /PWMDTY3=130; PWMPER01=13000; PWMPER3=250; PWME_PWME1=1; PWME_PWME3=1;/-atd_init-void atd_init(void) ATD0CTL1=0x00

29、; /選擇AD 通道為外部觸發(fā),8 位精度,采樣前不放電 ATD0CTL2=0x40; /標志位自動清零,禁止外部觸發(fā), 禁止中斷 ATD0CTL3=0xf0; /右對齊無符號,每次轉換4 個序列, No FIFO, Freeze 模式下繼續(xù)轉 ATD0CTL4=0x81; /采樣時間為4 個AD 時鐘周期,PRS=1,ATDClock=6MHz ATD0CTL5=0x30; /特殊通道禁止,連續(xù)轉換,多通道轉換,起始通道為0 轉換14個通道 ATD0DIEN=0x00; /禁 /-check_start-void check_start(void) if(black_sensor_numbe

30、r>=5) do sam_position(); car_position(); while(black_sensor_number>=2); start_acc+; if(start_acc=z) finish_flag=1; /-sam_position-void sam_position(void) unsigned char i; sam_atd_g1=ATD0DR0L; sam_atd_g2=ATD0DR1L; sam_atd_g3=ATD0DR2L; sam_atd_g4=ATD0DR3L; sam_atd_g5=ATD0DR4L; sam_atd_g6=ATD0DR5

31、L; sam_atd_g7=ATD0DR6L; sam_atd_g8=ATD0DR7L; sam_atd_g9=ATD0DR8L; sam_atd_g10=ATD0DR9L; sam_atd_g11=ATD0DR10L; sam_atd_g12=ATD0DR11L; sam_atd_g13=ATD0DR12L; for(i=1;i<14;i+) if(sam_atd_gi>adc_limit) sam_atd_gi=1; else sam_atd_gi=0; ATD0DR0L=0; ATD0DR1L=0; /-car_position-void car_position(void)

32、 unsigned int i,k=0;black_sensor_number=0;for (i=1;i<14;i+) if(sam_atd_gi) black_sensor_number+; k=k+i; if(black_sensor_number<=4) if(k>0) /有傳感器檢測到黑線,則計算car_positn k=(2*k)/black_sensor_number)-14; if(absolute(k-pre_positn)<9) car_positn=k; /軟件限幅濾波 else /傳感器全檢測到白線,則保持滑行一會兒 car_positn=pre_

33、positn; else car_positn=0; /如果檢測到黑線傳感器個數(shù)超過5,則認為是交叉路口pre_positn=car_positn;if(absolute(car_positn)<=4) flag=0;if(absolute(car_positn)>=10) flag=1;/-angle-void angle(void) if(car_positn>=0) if(car_positn<=4&&car_positn>=0) angle_data=Angel_Center+(17+(absolute(car_positn)-1)*3)*

34、absolute(car_positn)/2; /原來12 if(car_positn>=5&&car_positn<=6) angle_data=Angel_Center+(26+(absolute(car_positn)-1)*3)*absolute(car_positn)/2; /原來26 if(car_positn>=7) angle_data=Angel_Center+(40+(absolute(car_positn)-1)*3)*absolute(car_positn)/2; /原來26 else if(car_positn>=-4&

35、&car_positn<0) angle_data=Angel_Center-(18+(absolute(car_positn)-1)*3)*absolute(car_positn)/2; /原來14 if(car_positn<=-5&&car_positn>=-6) angle_data=Angel_Center-(26+(absolute(car_positn)-1)*3)*absolute(car_positn)/2; /原來26 if(car_positn<=-7) angle_data=Angel_Center-(40+(absolu

36、te(car_positn)-1)*3)*absolute(car_positn)/2; /原來26 /-dirver-void dirver(void) if(finish_flag=1) sd=0; PWME_PWME3=0; z=0; if(car_positn=12&&black_sensor_number=0) sd=y; if(pre_positn=-12&&black_sensor_number=0) sd=y; if(angle_data>=1720) angle_data=1720; if(angle_data<=1040) ang

37、le_data=1040; PWMDTY3=sd; PWMDTY01=angle_data; /-absolute-unsigned int absolute(int q) if (q<0) q=-q; return(q);/-found_start-void found_start(void) start_acc+; delay(); ff=0;/-delay-void delay(void) unsigned int i,j; for(i=0;i<65535;i+) for(j=0;j<3;j+);/-延時-void DelayNS(int dly) /輸入是1000時大

38、概延時0.75sint i;for(;dly>0;dly-)for(i=0;i<1000;i+);/-減速-void slow(void) int i,j=1,k; if(car_positn=6&&flag=0) sd=180; if(car_positn=-6&&flag=0) sd=180; if(absolute(car_positn)=7&&flag=0) for(i=0;i<=80;i+) for(k=0;k<=3;k+) sd=b-j; if(car_positn>7) sd=x+2*absolute(

39、car_positn); angle_data=angle_data+40; if(car_positn<-7 ) sd=x+2*absolute(car_positn); angle_data=angle_data-40; if(absolute(car_positn)<=5) sd=a;/-撥碼開關調速-void port(void) if(PORTB_PB7=0&&PORTB_PB5=0&&PORTB_PB3=0&&PORTB_PB1=1) z=4;a=136;b=200;x=95;y=155; if(PORTB_PB7=0&&PORTB_PB5=0&&PORTB_PB3=1&&PORTB_PB1=0) z=6;a=136;b=200;x=95;y=155; if(PORTB_PB7=0&&PORTB_PB5=0&&PORTB_PB3=1&&PORTB_PB1=1) z=4;a=120;b=200;x=95;y=175; if(PORTB_PB7=0&&PORTB_PB5=1&&PORTB_PB3=0&&PORTB_PB1=0) z=6;a=120

溫馨提示

  • 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

提交評論