版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 瑞薩MCU模型車,是在搭載有瑞薩MCU主板的模型車上自行設(shè)計并編制獨立的控制程序,組裝制作成具有自動識別功能的MCU汽車模型。MCU模型車在跑道中央行駛時讀取跑道中央的白線作為輸入信息以控制行駛路線,其構(gòu)造分兩大部分:程控部分和機械部分。程控部分為傳感器,當模型車行駛時車體前方的傳感器迅速讀取路面信息,并傳達至主控制器,以控制行
2、駛方向。機械部分為馬達、齒輪、輪胎、舵機等。動力源為8節(jié)AA型電池。</p><p> 對模型車的深入研究,不僅可以加強我們對機電一體化產(chǎn)品的理解,還能使我們從中領(lǐng)悟到一些有關(guān)電動汽車理論的真諦。</p><p> 本文主要研究:MCU模型車的結(jié)構(gòu)組成與工作原理;建立MCU模型車的幾何模型,運動學模型及動力學模型,并對其進行理論分析和研究;調(diào)試MCU模型車的基本性能;通過實驗研究MCU
3、模型車在指定軌道上穩(wěn)定運行的程序及對模型車運行造成影響的因素。</p><p> 關(guān)鍵詞:MCU模型車、原理、模型、程序。</p><p><b> Abstract</b></p><p> The Micom car of Renesas is a model of car which has the CPU board of Ren
4、esas with which you can design and input independent program, and it has the function of distinguishing the course automaticly. The Micom car reads the white central line when it runs in the middle of the course. The con
5、struction of the Micom car consists of two parts: One part which is controlled by the program is made up by the sensors in front of the Micom car which read the information of the course and convey it to the</p>&
6、lt;p> The research of the Micom car not only can enhance our understanding with the products of mechatronics, but also can make us grasp some theories about the motor car.</p><p> This article mainly di
7、scusses the composition and the principle of the Micom car; establishes the geometric model, dynamic model and kinematic model of the Micom car; debugs the basical capabilities of the Micom car; writes the program which
8、makes the Micom car run stabily on the course and analyses the factors that affect the process of running.</p><p> Keywords: Micom Car, principle, model, procedures</p><p><b> 目錄</
9、b></p><p><b> 摘要Ⅰ</b></p><p> AbstractⅠ</p><p><b> 1 引言1</b></p><p> 2 MCU模型車的結(jié)構(gòu)組成及工作原理2</p><p> 2.1 傳感器基板2</p>
10、;<p> 2.2 傳感器子基板3</p><p> 2.3 CPU主板4</p><p> 2.4馬達驅(qū)動電路5</p><p> 2.5伺服舵機控制電路8</p><p> 2.6發(fā)光二極管電路9</p><p> 2.7開/關(guān)電路10</p><p>
11、<b> 2.8電源10</b></p><p> 3 MCU模型車的幾何模型、運動學模型和動力學模型分析11</p><p> 3.1 模型車幾何模型的建立與分析:11</p><p> 3.2 模型車動力學模型的建立與分析:12</p><p> 3.3 模型車運動學模型的建立與分析:16<
12、;/p><p> 4 MCU模型車在指定軌道上運行的程序設(shè)計18</p><p> 5 影響MCU模型車穩(wěn)定運行的因素32</p><p><b> 6 結(jié)論34</b></p><p><b> 致謝35</b></p><p><b> 參考
13、文獻36</b></p><p><b> 1 引言</b></p><p> MCU模型車的設(shè)計與制作起源于由日本社團法人全國高中協(xié)會等主辦的“JAPAN MCU 模型車大賽(英文:Japan Micom Car Rally)”,目前這項賽事已經(jīng)在日本成功舉辦了十余屆。由于這項大賽的科技層次較高,并且具有很強的競爭性和觀賞性,如今“JAPAN M
14、CU 模型車大賽”已經(jīng)成為日本國內(nèi)的全國性重大賽事。</p><p> 2007年,由瑞薩科技冠名贊助的“瑞薩超級MCU模型車大賽”首次在北京舉行,并被教育部列為“全國大學生IT&AT就業(yè)技能大賽”系列賽事之一。這個活動的目的是提高學生的制作能力和編程技巧水平,并培養(yǎng)業(yè)界相關(guān)人才。該項賽事首次舉辦就吸引了四十多所高校的六十多支參賽隊伍,其中不乏許多知名高校。此次大賽的成功舉辦,不僅在于高校和大學生們對此
15、項賽事的關(guān)注,更在于對大家對專業(yè)人才培養(yǎng)和鍛煉的重視。</p><p> 該項賽事還將繼續(xù)在我國舉辦。在高興的同時,我們也應(yīng)該清楚地看到,我國選手的MCU模型車在科技含量與創(chuàng)新層次上與國外高水平選手還有一定的差距。因此,為提高我國MCU模型車賽事的觀賞性和賽事水平的競爭力,同時也為了提高我國高校大學生的科研能力、制作能力及創(chuàng)新層次,加強對MCU模型車的理論研究和科技創(chuàng)新具有一定的實際意義。</p>
16、<p> 2 MCU模型車的結(jié)構(gòu)組成及工作原理</p><p> MCU模型車基本上由以下幾部分組成:傳感器基板,傳感器子基板,H8/3048F-ONE型號的CPU主板,馬達驅(qū)動基板等。其整體結(jié)構(gòu)如圖1所示。</p><p><b> 圖1</b></p><p> 傳感器基板位于模型車的最前方,用于檢測賽道信息。而傳感器
17、子基板則被固定在模型車車身上,對傳感器輸出的信號進行初步的預處理。安裝在中心位置的CPU主板是整個模型車的核心部件,可以對模型車的各控制電路發(fā)出控制指令。位于車身最后的馬達驅(qū)動基板是模型車驅(qū)動電路的集合體,在CPU的控制下它可以完成對左右馬達和伺服舵機的驅(qū)動。</p><p><b> 2.1 傳感器基板</b></p><p> 如圖2所示,傳感器基板主要由8個
18、一字等距排開的傳感器組成。每個傳感器都可以識別賽道上的黑白顏色,通過發(fā)光二極管顯示傳感器檢測到的狀態(tài),并能將其轉(zhuǎn)化為數(shù)字信號“0”或“1”輸出。傳感器基板作為整個模型車控制系統(tǒng)的起始端,就好比人的眼睛,能讀取賽道路面信息,為模型車要產(chǎn)生的相應(yīng)動作提供必要依據(jù),其作用不可忽視。同時,其識別精度及響應(yīng)時間都將對整個控制過程造成較大的影響。</p><p><b> 圖2</b></p&g
19、t;<p> 傳感器主要由兩部分組成,利用“白色反射光線,黑色吸收光線”的原理,一部分發(fā)射光線,另一部分接收光線。發(fā)射光線部分為發(fā)光二極管,其發(fā)射到賽道上的光線為紅外線,并不能被肉眼察覺。接受光線部分為光傳感器S7136,它能判斷出是否有光線被反射到其接受面上,并能將其轉(zhuǎn)化為數(shù)字信號“0”或“1”輸出。</p><p> 傳感器的工作原理為:如果賽道上光線集中的地方是白色(光線由傳感器的發(fā)光部分
20、射出),光線將會被反射,并且被傳感器的光線接收部分接收。這樣,傳感器輸出數(shù)字信號“0”, 賽道上的該處被認為是“白色”,同時,具有指示作用的發(fā)光二極管工作。同理,如果賽道上光線集中的地方是黑色,光線將會被吸收,不能被光線接收部分接收,傳感器輸出數(shù)字信號“1”, 該處將會被認為是“黑色”,具有指示作用的發(fā)光二極管不工作。</p><p> 傳感器基板上的藍色方形旋鈕為可調(diào)電阻,可以調(diào)節(jié)傳感器的靈敏度。當傳感器在賽
21、道上的白線處正常工作,黑線處不工作時,傳感器靈敏度的調(diào)節(jié)工作就可以結(jié)束了。如果賽道上有灰色,要通過調(diào)節(jié)旋鈕使發(fā)光二極管在灰色處也能正常工作,模型車才能夠在整個賽道上順利運行。</p><p> 光傳感器S7136主要由震蕩電路、時鐘信號發(fā)生電路、發(fā)光二極管驅(qū)動電路、緩沖放大電路、標準電壓發(fā)生電路、比較電路、信號處理電路、輸出電路等組成。它屬于標準元件,共有四個引腳,此處不對其內(nèi)部結(jié)構(gòu)做過多介紹。</p&g
22、t;<p> 傳感器基板的電路如圖3所示:發(fā)射紅外線的發(fā)光二極管(LED2)的陰極與光傳感器S7136(接收光線部分)的引腳1連接,陽極通過旋鈕調(diào)節(jié)電阻(該電阻可以調(diào)節(jié)LDE2的輸出)與電源相連。S7136的引腳3是輸出端,并與發(fā)光二極管(LED1)相連。因為在數(shù)字電路中“0”通常表示0V,“1”通常表示“5”V,因此,當S7136接收到光線時,引腳3輸出“0”,LED1工作。反之,當S7136沒有接收到光線時,引腳3輸
23、出“1”,LED1不工作。為了將每個光傳感器引腳3的輸出值送到CPU做后續(xù)處理,引腳3還與接口CN1的引腳2-9分別相連。另外,光傳感器S7136的引腳2和引腳4還要分別與電源和地相連,這樣就構(gòu)成了完整的傳感器基板電路。</p><p><b> 圖3</b></p><p> 要注意:此時由傳感器基板輸出的信號為:“1”代表“黑色”,“0”代表“白色”。這與人們
24、通常的思維習慣相矛盾。為了便于在設(shè)計程序時理解起來更方便,還需要對傳感器基板的輸出信號做進一步的處理。這就是下面要介紹的傳感器子基板的作用。</p><p> 2.2 傳感器子基板</p><p> 傳感器子基板的作用是將來自傳感器的輸入信號取反,使輸出信號滿足:當賽道顏色為白色時輸出值為“1”,當賽道顏色為黑色時輸出值為“0”。從而符合人們的思維習慣。又因為來自傳感器的輸入信號并不是
25、非常清楚,因此傳感器子基板同時還具有波形成型和防止信號抖動的功能。傳感器子基板的外觀如圖4所示。</p><p><b> 圖4</b></p><p> 由上述內(nèi)容可知:傳感器基板與傳感器子基板間的關(guān)系密切,理論上可以將二者合為一體,放到一塊板子上。但是,考慮到傳感器基板的重量會影響到伺服舵機轉(zhuǎn)向的快速性,因此將傳感器子基板固定在車身上以減輕傳感器基板的重量。&
26、lt;/p><p> 圖5為傳感器子基板的電路圖:電路中,利用非門電路(輸入和輸出是反的,輸入是高的,輸出就是低的</p><p> )將輸入信號取反,并采用元件74HC04實現(xiàn)該功能。圖中電阻起到限流的作用。經(jīng)過轉(zhuǎn)化后的信號分別與接口CN12的引腳2-9連接,作為控制信號準備輸出到CPU中。</p><p><b> 圖5</b></
27、p><p><b> 2.3 CPU主板</b></p><p><b> 圖6</b></p><p> 圖示即為模型車的CPU主板。該主板采用由日本瑞薩科技生產(chǎn)的H8/3048F-ONE芯片。它是整個模型車的核心,也是提高模型車性能的關(guān)鍵所在。它的主要作用是利用控制程序?qū)δP蛙嚨母黩?qū)動部分發(fā)出控制指令,從而實現(xiàn)對整個
28、MCU模型車系統(tǒng)的程序控制。</p><p> CPU主板的結(jié)構(gòu)較復雜。共有11個接口,分別為接口1至B,其中大部分為8位接口(8個I/O接口),還有4個是少于8位的接口。另外,主板上還有一個4位的DIP開關(guān),可以調(diào)節(jié)控制馬達轉(zhuǎn)速的PWM(來實現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導通時間的改變)輸出值。CPU主板的核心部分為H8/3048F-ONE芯片,該芯片共有100個引腳,可以實現(xiàn)對整個模型車的程序控制。而控制
29、程序的輸入還需要通過一個導入開關(guān)才能實現(xiàn)。然而,雖然主板上有11個接口,但是整個模型車系統(tǒng)只用到了接口7和接口B兩個接口,使整個系統(tǒng)并未變得特別復雜。</p><p> 模型車開始工作后,該CPU主板從接口7讀取傳感器數(shù)值,經(jīng)過執(zhí)行芯片中定義的接口程序和創(chuàng)建的主控制程序得出左、右馬達和伺服 的響應(yīng)動作及其輸出值,并將其通過接口B輸出到馬達驅(qū)動基板,以達到對模型車驅(qū)動系統(tǒng)控制的目的。</p><
30、;p><b> 2.4馬達驅(qū)動電路</b></p><p> 馬達驅(qū)動電路位于馬達驅(qū)動基板上(馬達驅(qū)動基板整體外觀如圖7所示),其作用是根據(jù)微處理器的指令來控制馬達。但是來自微處理器的信號非常微弱,即使把馬達直接與信號線相連,也不會產(chǎn)生任何響應(yīng)。為了能控制馬達,這個微弱的控制信號必須轉(zhuǎn)化成可以誘發(fā)數(shù)百至數(shù)千毫安電流的信號。</p><p><b>
31、 圖7</b></p><p> 要使馬達旋轉(zhuǎn),只需施加相應(yīng)的電壓。而要使馬達停止,只需撤掉電壓即可。但是,要如何才能實現(xiàn)速度的精確控制呢?下面將對這個問題進行詳述的討論。</p><p> 采用調(diào)節(jié)電阻可以改變電壓。但是,這個調(diào)節(jié)電阻必須具有很大的熱容量,因為馬達工作時,將有大量的電流流向馬達。對于沒有施加到馬達上的過剩電壓,將會在電阻上以熱輻射的形勢被消耗掉。而此處采
32、用的方法是不斷重復高速的開、關(guān)操作來進行電壓控制,其最終的結(jié)果就好像是高低電平間的某個電壓值被輸出。在固定的周期內(nèi),重復的開、關(guān)操作可以控制開、關(guān)比率的改變。這種控制方法稱為“脈寬調(diào)制”,簡稱為PWM控制。脈寬的開通比率稱為工作比率。當在一個周期內(nèi)開通寬度被設(shè)定為50%時,可以稱作工作比率為50%。還可以簡稱為PWM50%。</p><p> 下圖即為脈寬調(diào)制(PWM)的示意圖。</p><
33、p><b> 圖8</b></p><p> 不過“PWM”聽起來有些難以理解。其實手動“接通”、“斷開”馬達與電池線的連接也被稱為PWM。當接通時間較長時,馬達旋轉(zhuǎn)速度快。當斷開時間較長時,馬達旋轉(zhuǎn)速度慢。手動“接通”、“斷開”操作的執(zhí)行可以在數(shù)秒內(nèi)完成,但是,如果采用微處理器的話,這個過程只需要數(shù)毫秒。</p><p> 當這個PWM信號與馬達相連時,
34、馬達的旋轉(zhuǎn)速度就可以按照程序的設(shè)定來工作,哪怕只發(fā)生微小的變化。這樣一來,精細的速度控制就能夠?qū)崿F(xiàn)了。當電路中連有發(fā)光二極管時,發(fā)光二極管的明亮程度可以通過PWM來改變。如果用CPU進行PWM控制,這項工作可以在數(shù)毫秒,甚至數(shù)微秒內(nèi)完成。一個平穩(wěn)的馬達控制就可以實現(xiàn)了。這里,之所以采用脈寬控制,而不采用電壓控制,是因為CPU非常善于處理數(shù)字值“0”和“1”,對于類似于xV這樣的值處理起來則非常困難。雖然通過改變“0”、“1”的寬度表現(xiàn)的
35、就像是電壓控制一樣,但實際上卻是PWM控制。</p><p> 馬達正、反轉(zhuǎn)以及剎車的控制是通過H橋電路來實現(xiàn)的。H橋電路的原理圖如圖9所示,馬達位于中心位置,4個開關(guān)分別位于兩側(cè),共同構(gòu)成一個H形。改變4個開關(guān)的狀態(tài)就可以實現(xiàn)馬達正、反轉(zhuǎn)以及剎車的控制。</p><p> 此處的開關(guān),是由FET(場效應(yīng)晶體管)組成的控制開關(guān)。P溝型FET用在電源正極,N溝型FET被用在負極。對于P溝
36、型FET而言,當G端電壓<S端電壓時,導通電流。而對于N溝型FET而言,當G端電壓>S端電壓時,導通電流。也就是說,無論是P溝型還是N溝型的FET,只要D端與S端有電壓,就會有電流從其中導通。</p><p><b> 圖9</b></p><p> 必須注意:左側(cè)或右側(cè)的兩個FET不能同時接通。因為,如果那樣的話,10V的電源與接地之間就沒有任何負載
37、存在了,就好像短路一樣。它將會燒毀FET或者導線。</p><p> 馬達在實現(xiàn)正、反轉(zhuǎn)以及剎車的控制過程中,H橋電路的左側(cè)和右側(cè)兩個FET的G端電壓總是相同的。因此,可將左右兩側(cè)的上下兩個FET的G端分別相連,以簡化電路。</p><p> 當H橋電路被連接到整個控制電路中,并且執(zhí)行PWM控制時,F(xiàn)ET將會變得很熱。這是因為,當信號從FET的門輸入,并且PWM控制在FET的D端與S端
38、執(zhí)行時,根據(jù)圖10中的“理想波形”圖可知,由于P溝型FET和N溝型FET反應(yīng)迅速,正轉(zhuǎn)與剎車之間可以實現(xiàn)平穩(wěn)的轉(zhuǎn)換。然而實際波形中卻存在延時,并不能立即執(zhí)行。事實上,F(xiàn)ET由開變關(guān)時的延時要比由關(guān)變開時的延時長。正如圖10中的“實際波形”所示。雖然延時很小,但是同側(cè)的兩個FET都將會因延時造成短時間導通,引起電路短路,并產(chǎn)生大量的熱能。</p><p> 理想波形
39、 實際波形</p><p><b> 圖10</b></p><p> 從接通到實際開始產(chǎn)生反應(yīng)的延時的持續(xù)時間稱為“接通延時”,第一次打開到實際接通的時間稱為“上升時間”。從斷開到實際開始產(chǎn)生反應(yīng)的延時的持續(xù)時間稱為“斷開時間”,第一次斷開到實際斷開的時間稱為“下降時間”。</p><p> 實際上,由斷開到接通的時間是“接
40、通延時+上升時間”,由接通到斷開的時間為“斷開時間+下降時間”。</p><p> 由于延時的作用,馬達驅(qū)動電路會產(chǎn)生短路的現(xiàn)象。防止短路的方法是利用電路及FET的開關(guān)特性來產(chǎn)生特定的延時,從而使同側(cè)的P通道和N通道的FET不同時接通或斷開。馬達驅(qū)動基板中用來產(chǎn)生延時的部分是積分電路(圖11所示)。因為有許多有關(guān)于積分電路的專業(yè)書籍,此處不對其作過多敘述。積分電路圖如下,并可通過下式計算延時T=CR[s]。其中
41、,電阻值為9.1千歐姆,電容大小為4700皮法,因此,延時T=42.77[us].</p><p><b> 圖11</b></p><p> 該電路中采用了74HC14。對于74HC系列產(chǎn)品而言,當輸入電壓為3.5V或者更高時,電信號將會被轉(zhuǎn)換為數(shù)字信號“1”。在74HC14的實際波形中,電壓達到3.5V所需要的時間大約為50us。這個50us的延時是由上面積分
42、電路產(chǎn)生的。因為,除了FET,數(shù)字晶體管對于電壓轉(zhuǎn)換的延時取決于FET門的容量。</p><p> 綜上所述,我們可以得到較完整的馬達驅(qū)動電路。下圖即為左馬達的驅(qū)動電路圖。它除了包含積分電路和由FET組成的H橋電路外,還包含了正、反轉(zhuǎn)變換電路。電路圖中,PB1是PWM的終端,PB2可以改變馬達的正、反轉(zhuǎn)。當接口PB1信號為“0”時,可以實現(xiàn)馬達制動;為“1”時,執(zhí)行接口PB2能夠?qū)崿F(xiàn)的操作。而對于PB2的信號而
43、言,為“0”時,馬達正轉(zhuǎn);為“1”時,馬達反轉(zhuǎn)。電路中還采用了分別由74HC08和74HC32實現(xiàn)的與門電路和或門電路。</p><p><b> 圖12</b></p><p> 電路分析:晶體管元件TR5、TR6、TR7、TR8可以分別將0V—5V的電壓信號轉(zhuǎn)換為10V—0V的電壓信號。當PB1的信號由“0”變?yōu)椤?”時,F(xiàn)ET2的門電壓由10V變?yōu)?V,F(xiàn)E
44、T2斷開。然而,由于FET2自身延時的作用,F(xiàn)ET2的斷開將會被拖延。此時,由于FET1和FET2均斷開,馬達將進入自由狀態(tài)。由于積分電路也會產(chǎn)生延時,F(xiàn)ET1的門電壓將會在自身延時和積分電路產(chǎn)生的50us延時后由10V變?yōu)?V,F(xiàn)ET1接通。相反,當PB1的信號由“1”變?yōu)椤?”時,F(xiàn)ET1的門電壓由0V變?yōu)?0V,F(xiàn)ET1斷開。同樣由于FET1自身的延時作用,F(xiàn)ET1的斷開將也將會被拖延。此時,由于FET1和FET2均斷開,馬達也會
45、進入自由狀態(tài)。由于積分電路也會產(chǎn)生延時,F(xiàn)ET2的門電壓將會在自身延時和積分電路產(chǎn)生的50us延時后由0V變?yōu)?0V,F(xiàn)ET2接通。對FET3和FET4的分析與FET1和FET2類似。</p><p> 雖然馬達驅(qū)動電路能很好的滿足控制要求,可是,在過程中卻去出現(xiàn)了暫時無法控制的自由狀態(tài)。自由狀態(tài)是為了避免短路,而由積分電路產(chǎn)生的。因此,在程序中無法控制這個自由狀態(tài)。改變積分電路中電阻和電容的值,就可以改變自由
46、狀態(tài)存在的時間。</p><p> 2.5伺服舵機控制電路</p><p> 伺服舵機(如圖13所示)為模型車的前輪轉(zhuǎn)向機構(gòu),是模型車不可或缺的重要組成部分。其轉(zhuǎn)動范圍、響應(yīng)速度及動作準確性均會對模型車的運行狀態(tài)產(chǎn)生較大影響。伺服舵機的控制方法仍采用PWM控制,這樣不僅能夠保證動作的準確性,而且便于實現(xiàn)。</p><p><b> 圖13</b
47、></p><p> 加載到伺服舵機的脈沖周期為16ms,并且伺服舵機的轉(zhuǎn)角大小取決于脈沖的接通寬度。伺服舵機的旋轉(zhuǎn)角度與接通脈寬之間的關(guān)系為:當接通脈寬為0.7ms時,伺服舵機向左旋轉(zhuǎn)90度;當接通脈寬為1.5ms時,伺服舵機位于中心位置;當接通脈寬為2.3ms時,伺服舵機向右旋轉(zhuǎn)90度。</p><p> 控制該伺服舵機的PWM信號由H8微處理器的復位同步脈寬調(diào)制模式產(chǎn)生。并
48、且由接口B的第5位輸出。改變控制程序中的ITU4_BRB(ITU4寄存器中的緩沖寄存器)的值就可以實現(xiàn)對接通脈寬的調(diào)節(jié)。</p><p><b> 圖14</b></p><p> 伺服舵機的控制電路圖如圖14所示。雖然接口可以與伺服舵機的引腳1直接相連,但是或門電路仍然作為一個緩沖器而存在于電路中。因為,當電源線錯誤的與引腳1相連或者有噪聲混入且使端腳毀壞時,如
49、果采用直接相連的方法,微處理器的接口將被燒毀,那將是致命的。相比之下,如果采用74HC32作為緩沖器,由于它的結(jié)構(gòu)更簡單、價格更便宜,即使毀壞,也不會造成太大的麻煩。伺服舵機的引腳2是電源供應(yīng)接口。當為馬達提供電源的電池少于4節(jié)時,JP1的上部短接,直接與電源連接。當電池數(shù)多于4節(jié)時,為了避免電壓過高,供給給伺服舵機的電壓被3端調(diào)節(jié)器限定為6V,并且JP1的下部短接。</p><p> 2.6發(fā)光二極管電路&l
50、t;/p><p> 馬達驅(qū)動基板上連有3個發(fā)光二極管。其中,兩個(LED3和LED2)可以通過微處理器中的控制程序來控制其開/關(guān)狀態(tài)。這兩個發(fā)光二極管的負極分別直接與微處理器的接口6和接口7相連,正極與電源相連。限流電阻為1千歐姆。顯而易見,該電路中的導通電流I=(電源電壓—發(fā)光二極管的端電壓)/限流電阻。如果數(shù)字信號“0”從PB7輸出,發(fā)光二極管LED2負極電勢為0V,電流導通,發(fā)光二極管工作。如果數(shù)字信號“1”
51、從PB7輸出,發(fā)光二極管LED2負極電勢為5V,兩端電壓為0V,電流不導通,發(fā)光二極管不工作。發(fā)光二極管LED3的工作原理與上述相同,不同之處是與接口6相連。</p><p><b> 圖15</b></p><p><b> 2.7開/關(guān)電路</b></p><p> 馬達驅(qū)動基板上還有一個按鈕開關(guān),其作用是使模型
52、車由無限等待狀態(tài)躍變?yōu)殚_始執(zhí)行主控制程序。該按鈕開關(guān)通過10千歐姆的限流電阻與接口B的第0位(即PB0)相連。如果按鈕沒被按下,數(shù)字信號“1”將通過限流電阻輸入到PB0。相反,如果按鈕被按下,數(shù)字信號“0”將會通過接地端輸入到PB0。</p><p><b> 圖16</b></p><p><b> 2.8電源</b></p>
53、<p> 眾所周知,提升驅(qū)動系統(tǒng)的電壓可以提高馬達的旋轉(zhuǎn)速度。整個模型車系統(tǒng)系統(tǒng)采用8節(jié)AA型電池作為動力源,電壓可以達到9.6V。而這8節(jié)電池為控制系統(tǒng)和驅(qū)動系統(tǒng)所共享。對于馬達,即使加載9.6V的電壓也不會出現(xiàn)故障。然而,由于CPU能夠保證正常工作的電壓僅在4.5V-5.5V之間,如果電壓高于5.5V,CPU將會損壞,如果電壓低于4.5V,CPU將會復位。因此,需要三端調(diào)節(jié)器(LM2940-5)將CPU控制系統(tǒng)電壓限定
54、為5V。而LM350及其附件部分,將會產(chǎn)生供給給伺服舵機的6V恒定電壓。</p><p> 3 MCU模型車的幾何模型、運動學模型和動力學模型分析</p><p> 對MCU模型車的研究,除了要編寫并調(diào)試相關(guān)的控制程序外,還要對其運動過程作深入的分析。模型車在賽道上的運行過程包括較多種情況,其中最典型的為彎道制動過程。對這些運行情況的綜合分析,有利于我們更好地了解模型車的整個運行過程
55、,并為程序的編寫提供充足的理論依據(jù)和科學的運行參數(shù)。本文以轉(zhuǎn)彎過程為例,對模型車建立了相關(guān)的幾何模型、運動學模型及動力學模型,并做了較詳細的分析。</p><p> 3.1 模型車幾何模型的建立與分析:</p><p> 模型車的幾何模型如下:其左右后輪的中心距離T=0.14m,前后輪軸心距W=0.175m。</p><p><b> 圖17<
56、/b></p><p> 當模型車轉(zhuǎn)彎時,伺服舵機轉(zhuǎn)角與左右馬達PWM值之間應(yīng)保持一個確定的比例關(guān)系,使三者之間相互協(xié)調(diào),才能保證模型車在彎道以最佳狀態(tài)通過,其關(guān)系可通過下面的推導方法得出。在轉(zhuǎn)彎過程中,左后輪、后輪軸中心、右后輪以及伺服舵機中心的軌跡為同心圓,并設(shè)其軌跡半徑分別為r1、r2、r3和r。同時,設(shè)伺服舵機的轉(zhuǎn)角為。根據(jù)圖18所示幾何關(guān)系,可得出r2與轉(zhuǎn)角的關(guān)系為:</p>&l
57、t;p><b> tan=W/r2</b></p><p> 而由r2又可得出半徑r1與r3的值:</p><p> r1 = r2 - T/2; r3 = r2 + T/2</p><p> 若假設(shè)右馬達的速度比率為100,則可以求得舵機轉(zhuǎn)向時與之相匹配的左馬達的速度比率,其值為:r1/r3100。</p>
58、<p> 利用上述方法,可以求出右馬達速度比率為100,舵機轉(zhuǎn)角從1度變至45度時,左馬達相應(yīng)的速度比率值。并以表格形式列出(參見附件)。</p><p> 若右馬達的速度比率不是100,此時設(shè)為x,則左馬達的速度比率為:x/100( r1/r3100)。</p><p><b> 圖18</b></p><p> 當在程序
59、中涉及到伺服舵機轉(zhuǎn)角時,除了降低馬達轉(zhuǎn)速以外,還要盡可能使左右后輪滿足上述關(guān)系,以使伺服舵機和左右馬達在模型車運行過程中達到相互協(xié)調(diào)的效果。</p><p> 上面討論的是舵機左轉(zhuǎn)時,左右馬達的速度比率情況。對于舵機右轉(zhuǎn)的情況分析,與上述思想相同。如果舵機的中心值調(diào)節(jié)合適,因為其具有對稱性,可以通過將左轉(zhuǎn)時左右馬達的速度比率對換,即可得到右轉(zhuǎn)時與舵機轉(zhuǎn)角相對應(yīng)的速度比率值。</p><p&g
60、t; 3.2 模型車動力學模型的建立與分析:</p><p> 在模型車的整個運動過程中,其彎道的動力學分析最具有代表性,難度也最大。本文以模型車彎道制動過程為例,來建立其動力學模型,并作簡要分析。為了使對模型車的分析與汽車更接近,從而具有更深刻的實際意義,此處假設(shè)不存在舵機,模型車的轉(zhuǎn)向依靠左前輪和右前輪的自身轉(zhuǎn)向來實現(xiàn)。由于模型車的重量較實際汽車的重量輕許多倍,這樣的假設(shè)并不會對模型車的理論分析造成太大的
61、誤差。</p><p> 當模型車在水平的彎道上等速行駛時,擬作如下的假設(shè):</p><p> 1)模型車是做平行于路面的平面運動,即只有前進運動、側(cè)向運動和繞垂直軸的橫擺運動。不考慮其俯仰運動和側(cè)傾運動,及制動時負荷的前后轉(zhuǎn)移。但計及了做圓周運動時由于向心加速度引起的左右負荷轉(zhuǎn)移。</p><p> 2)不考慮制動過程中賽道摩擦系數(shù)的變化,即認為附著系數(shù)為常
62、數(shù)。</p><p> 3)只考慮滾動阻力。</p><p> 4)在制動過程中,當某一車輪(i輪)達到附著極限工況時,認為該車輪所受的縱向力、側(cè)向力和垂直力滿足下面的關(guān)系:</p><p> 式中 、、分別表示作用于車輪上的縱向力、側(cè)向力和垂直力,單位N;</p><p> 表示縱向道路附著系數(shù);</p><p&
63、gt;<b> m表示輪胎系數(shù)。</b></p><p> 下圖為模型車彎道制動動力學模型。oxyz為固結(jié)于模型車上的動坐標,o為模型車的重心;x軸、z軸處于模型車縱向垂直于地面的中平分面內(nèi),z軸過模型車垂心垂直于地面,指向下放為正;x軸過重心平行于地面,指向模型車前進方向為正;y軸過重心,面對模型車前進方向時,指向右側(cè)為正。根據(jù)右手定則確定模型車繞z軸的橫擺角速度的正方向為順時針方向。
64、</p><p><b> 圖19</b></p><p> 該動力學模型中,模型車具有三個自由度:沿x軸的縱向運動V;沿y軸的側(cè)向運動v;繞z軸的轉(zhuǎn)動。根據(jù)達朗貝爾原理,可得到三自由度的模型車運動方程:</p><p> 式中 M——模型車總質(zhì)量,單位kg;</p><p> V——模型車質(zhì)心處速度在動坐標系中
65、沿x軸方向的速度分量,單位m/s;</p><p> v——模型車質(zhì)心處速度在動坐標系中沿y軸方向的速度分量,單位m/s;</p><p> ——模型車繞z軸的橫擺角速度,單位rad/s;</p><p> ——模型車對z軸的慣性矩,單位kg。</p><p> 設(shè)(i=1,2,3,4)為作用于各輪上的地面制動力(N),其值為:<
66、;/p><p> ——制動器制動力,N;</p><p> ——各輪所受的垂直負荷,N。</p><p> 由于模型車前輪無制動,即和均為0,因此前輪的地面制動力為0。而模型車的后輪轉(zhuǎn)速是靠PWM值控制的。改變驅(qū)動后輪的PWM值,就可以改變后輪的轉(zhuǎn)速。模型車后輪速度改變的過程,即為模型車的制動過程。其制動力的大小與PWM值的改變程度、齒輪嚙合的緊密性及馬達的響應(yīng)速
67、度密切相關(guān)。</p><p> 設(shè)車輪的滾動阻力為,其值為:,式中為滾動阻力系數(shù)。</p><p> 設(shè)(i=1,2,3,4)為各輪所受的側(cè)向力,取輪胎系數(shù)m=1,其計算公式為:</p><p> = </p><p> 式中為各輪的側(cè)偏角剛度,N/rad;</p><p> 為各輪的側(cè)偏
68、角,rad。</p><p> 而各側(cè)偏角的計算公式如下:</p><p> 、分別表示前后軸輪距,單位為m。而代表前輪平均轉(zhuǎn)角,單位為rad。a、b分別表示前輪軸心到重心的距離和后輪軸心到重心的距離,單位為m。</p><p> 其中,模型車各輪垂直負荷的確定方法如下:</p><p> 當模型車處于靜平衡狀態(tài)時,各輪的靜載荷為:&
69、lt;/p><p> 當模型車轉(zhuǎn)彎行駛時(右側(cè)),左側(cè)車輪負荷增大,右側(cè)車輪負荷減小,左右各輪負荷轉(zhuǎn)移量為:</p><p> 其中,、——前后懸架側(cè)傾角剛度,Nm/rad;</p><p> ——模型車懸掛質(zhì)量質(zhì)心至側(cè)傾軸線的距離,m;</p><p> 、——前后側(cè)傾中心離地高度,m;</p><p> 、—
70、—前后非懸掛質(zhì)量,kg;</p><p> 、——前后非懸掛質(zhì)量質(zhì)心至側(cè)傾軸線的距離,m;</p><p> ——模型車的懸掛質(zhì)量,kg;</p><p> L——模型車前后輪軸的中心距離,m。</p><p> 因此,可知在模型車轉(zhuǎn)彎制動過程中,各輪所受的垂直動負荷為:</p><p> ?。╥=1,2,3,
71、4)</p><p><b> 也就是說:</b></p><p> 綜上所述,我們可以得到模型車在彎道制動過程中的動力學模型方程:</p><p> 通常情況下,模型車是由直道進入彎道的,因此模型車進入彎道時的初始條件為:,,,,,??衫盟碾A龍格——庫塔法求解有關(guān)初值的問題,此處不作介紹。</p><p>
72、模型車在彎道的行駛過程為先做彎道制動運動,穩(wěn)定后再做勻速圓周運動。上面已經(jīng)對彎道減速制動過程的動力學模型做了詳盡敘述,隨后的勻速圓周運動過程與彎道減速制動過程的分析方法相似,且比較簡單,此處同樣不做過多分析。</p><p> 3.3 模型車運動學模型的建立與分析:</p><p> 此處同樣以模型車在彎道的運動過程為例,進行建模分析。不考慮模型車的彎道制動過程,只分析其做勻速圓周運動
73、的過程。</p><p> 模型車在彎道的理想運動狀態(tài)是模型車舵機產(chǎn)生擺角后的運動軌跡與圓弧賽道為一組同心圓。設(shè)傳感器基板中心運動軌跡半徑為R,舵機中心運動軌跡半徑為r,圓弧賽道中心半徑為,傳感器基板中心至圓弧賽道中心的距離為d,舵機中心至傳感器基板中心的距離為l。假設(shè)模型車在彎道運行過程中,傳感器的狀態(tài)保持不變,也就是說,舵機以恒定的擺角通過彎道,則其運動學模型簡圖如下:</p><p&g
74、t;<b> 圖20</b></p><p> 由于賽道為指定的賽道,則其彎角中心軌道的半徑已知。而l和d的值可以通過測量獲得。又根據(jù)幾何關(guān)系得出:R-=d,r=且W/r=sin。將上式聯(lián)立,可得到模型車在理想狀態(tài)下彎道運行的最佳舵機擺角值:</p><p> 并且,可以根據(jù)舵機擺角值求出與之相關(guān)的左右馬達的速度之比。</p><p>
75、 然而,模型車在賽道上的運行情況受到諸如:進入彎道前的直道速度、彎道制動過程、輪胎與賽道表面的摩擦系數(shù)、舵機的響應(yīng)速度等一系列因素的影響,其理論值并不能很好的滿足其運行狀態(tài)。因此,必須通過大量的實驗對其理論值進行修改和校正,才能的到滿意的運行結(jié)果。</p><p> 至此,我們已經(jīng)完成了對模型車在賽道上運行的典型過程(即:彎道運行過程)的幾何模型分析、動力學模型分析和運動學模型分析。而根據(jù)對彎道運行過程的建模與
76、分析,我們又可以很容易得到模型車在任何運行情況下的模型,并能對其做出科學的理論分析。這對于模型車運行狀態(tài)的研究有著至關(guān)重要的作用,并能依此對各運行狀態(tài)編寫相關(guān)的控制程序,最后經(jīng)過綜合得到能使模型車在指定賽道上順利運行的主控制程序。</p><p> 4 MCU模型車在指定軌道上運行的程序設(shè)計</p><p> MCU模型車是在預先設(shè)定好的具有明顯黑白條紋的賽道上運行的,具有自動識別功
77、能的MCU汽車模型。它的自動識別控制主要靠輸入到瑞薩科技所生產(chǎn)的單片機芯片中的控制程序來實現(xiàn)。由于模型車組件較多,結(jié)構(gòu)較復雜,且功能多樣,其中任何一部分出現(xiàn)問題都將會影響模型車的正常運行。為了保證各部分均能按指定的要求工作,我們還需要對每個部分分別進行調(diào)試。因此,特為其編寫了兩組程序,分別為測試程序kit05test.c和主程序kit05.c。由于單片機不能直接執(zhí)行C/C++程序,必須將編好的測試程序kit05test.c和主程序kit
78、05.c進行轉(zhuǎn)換后才能夠輸入到單片機中。以主程序的轉(zhuǎn)換過程為例:已經(jīng)編好的程序kit05start.src與kit05.c分別經(jīng)過匯編和編譯后,生成的文件kit05start.obj和kit05.obj再與文件kit05.sub進行連接,生成kit05.abs,然后再將其進行編譯就可以得到瑞薩單片機所能執(zhí)行的kit05.mot文件。</p><p> 首先,介紹一下程序中定義的一些變量的意義及其計算方法。<
79、;/p><p> #define TIMER_CYCLE 3071 </p><p> #define PWM_CYCLE 49151</p><p> #define SERVO_CENTER 4585 </p><p> #define
80、 HANDLE_STEP 26 </p><p> #define MASK2_2 0x66 </p><p> #define MASK2_0 0x60 </p><p> #define MASK0_2 0x06 </p&g
81、t;<p> #define MASK3_3 0xe7 </p><p> #define MASK0_3 0x07 </p><p> #define MASK3_0 0xe0 </p><p> #define M
82、ASK4_0 0xf0 </p><p> #define MASK0_4 0x0f </p><p> #define MASK1_1 0x81 </p><p> ITU標志著CPU操作時鐘的時間。而TIMER_CYCLE是在ITU0寄存器中設(shè)置一毫秒時間所需要的
83、值,它將會被存放到變量ITU0_GRA(通用寄存器A)中,通過與ITU0_CNT(定時器計數(shù)器)進行比較來設(shè)定這1ms的時鐘周期。ITU0_CNT好比時鐘的秒針,每隔一段確定的時間間隔,其值就會增加1。它是一個標準值。此處,我們需要讓它循環(huán)一次的時間為一毫秒。單片機上石英晶體的固有頻率為,我們?nèi)∑漕l率的1/8,則每一次計數(shù)的時間間隔T=1/f=325.52ns。由于我們要設(shè)置的時間為1ms,因此,需要3072次計數(shù),即ITU0_CNT=
84、3072時,結(jié)束一個循環(huán)周期。但是,根據(jù)ITU的標準執(zhí)行程序,知道只有當“ITU0_CNT=ITU0_GRA+1”時,才產(chǎn)生一次中斷,即經(jīng)過一個時鐘周期。因此,需要使ITU0_GRA=3071,也就是說TIMER_CYCLE=3071。</p><p> PWM_CYCLE是控制PWM周期大小的變量,它被存放到ITU3_GRA(通用寄存器A)中,由于要加載到左馬達、右馬達和伺服舵機的PWM周期為16ms,而定時
85、計數(shù)器ITU3_CNT與ITU3_GRA的標準關(guān)系為:當滿足ITU3_CNT=ITU3_GRA+1的條件時,產(chǎn)生一次中斷,ITU3_CNT(ITU3寄存器的定時計數(shù)器)循環(huán)一個周期,該周期即為PWM的周期值。而又知ITU3_CNT==49152。因此,需要使ITU3_GRA=49151,也就是說PWM_CYCLE=49151。</p><p> 變量SERVO_CENTER是在程序中控制伺服舵機面向前方(即:轉(zhuǎn)
86、角為0)的值。而上面提到,伺服舵機的PWM周期為16ms,當接通脈寬大約為1.5ms時,舵機面向正前方,所以變量SERVO_CENTER的值應(yīng)該為。然而,由于伺服舵機在生產(chǎn)過程中受各種因素的影響,不可能使每一個舵機的中心值均與理想值相同。因此,要使舵機在轉(zhuǎn)角值恰為中心值SERVO_CENTER時,面向正前方,還需要對理論值進行調(diào)試校正。經(jīng)過調(diào)試后,將該值取為4585。</p><p> HANDLE_STEP是
87、舵機旋轉(zhuǎn)1度時,程序中與之對應(yīng)的舵機轉(zhuǎn)角值應(yīng)增大或減小的幅度。對于伺服舵機而言,PWM的接通脈寬為2.3ms時舵機向右旋轉(zhuǎn)90度,程序中與之對應(yīng)的轉(zhuǎn)角值為;PWM的接通脈寬為0.7ms時舵機向左旋轉(zhuǎn)90度,程序中與之對應(yīng)的轉(zhuǎn)角值為。兩值之差4915即為舵機旋轉(zhuǎn)180度時要改變的程控值。因此,舵機旋轉(zhuǎn)1度要改變的程控值為27。然而此處變量HANDLE_STEP的值定義為26,是為了保持其兼容性。</p><p>
88、 MASK2_0是一個十六進制的值,它標志著對傳感器輸入狀態(tài)的限制。其意義為:傳感器基板上的左側(cè)4個傳感器中的兩個傳感器輸出值和右側(cè)4個傳感器中的0個傳感器輸出值可以被正常使用,其余的全部被掩蓋,值為0。MASK2_0定義為:傳感器基板上除了第6、5位的輸出值可以正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> 同理,MASK2_2定義為:傳感器基板上除了第6、5、2、1位的輸出值可以被正常使用外
89、,其余各位的輸出值均被“0”覆蓋。</p><p> MASK0_2定義為:傳感器基板上除了第2、1位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK3_3定義為:傳感器基板上除了第7、6、5、2、1、0位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK0_3定義為:傳感器基板上除了第
90、2、1、0位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK3_0定義為:傳感器基板上除了第7、6、5位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK4_0定義為:傳感器基板上除了第7、6、5、4位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK
91、0_4定義為:傳感器基板上除了第3、2、1、0位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> MASK1_1定義為:傳感器基板上除第7、0位的輸出值可以被正常使用外,其余各位的輸出值均被“0”覆蓋。</p><p> 為簡化程序的設(shè)計結(jié)構(gòu),程序中還用到一些函數(shù)。這里,對這些函數(shù)的具體內(nèi)容及作用作簡單介紹。</p><p><
92、b> 位轉(zhuǎn)換函數(shù)</b></p><p> char unsigned bit_change( char unsigned in )</p><p><b> {</b></p><p> unsigned char ret;</p><p><b> int i;</b>
93、;</p><p> for( i=0; i<8; i++ ) {</p><p><b> ret>>=1;</b></p><p> ret|=in&0x80;</p><p> in<<=1; }</p><p> return ret;
94、}</p><p> 函數(shù)中,變量“in”是位轉(zhuǎn)換前的8位二進制數(shù)值,變量ret是經(jīng)過位轉(zhuǎn)換后函數(shù)的返回值。該函數(shù)的功能是將8位二進制數(shù)的前后對稱的二進制位兩兩互換。其實現(xiàn)過程如下:先將變量ret右移一位,使第7位為0,第0位消失。隨后,對變量ret的第7位與輸入變量in的第7位進行或操作,并將取或后的值存到前者中。由于ret的第7位通常為“0”。因此,或操作后,變量ret的第7位中存放的值就是輸入?yún)?shù)in的第
95、7位的值。最后,將變量in左移一位,結(jié)束一次循環(huán)。如此循環(huán)8次后,就能實現(xiàn)函數(shù)預定的位轉(zhuǎn)換功能。</p><p><b> 傳感器狀態(tài)讀取函數(shù)</b></p><p> unsigned char sensor_inp( unsigned char mask )</p><p><b> {</b></p>
96、;<p> unsigned char sensor;</p><p> sensor=P7DR;</p><p> sensor=bit_change( sensor );</p><p> sensor&=mask;</p><p> return sensor; </p><p>
97、;<b> }</b></p><p> 因為傳感器子基板的輸出端與CPU主板的接口7相連,所以傳感器值由接口7輸入并將該值存放到變量sensor中。函數(shù)的輸入?yún)?shù)mask可以限制傳感器的輸入狀態(tài),將制定的傳感器位覆蓋為“0”。由于如今的傳感器基板的第0位在最左側(cè),第7位在最右側(cè)(與之前的傳感器基板相反),為了保持其兼容性,變量sensor中的值經(jīng)過位轉(zhuǎn)換后再次存儲到sensor中。經(jīng)過
98、位轉(zhuǎn)換后的傳感器值與函數(shù)的輸入?yún)?shù)mask進行與操作,最終就可得到需要的傳感器狀態(tài)值,并存放到變量sensor中,作為返回值。</p><p> interrupt_timer0函數(shù)</p><p> void interrupt_timer0( void )</p><p><b> {</b></p><p>
99、 ITU0_TSR &= 0xfe;</p><p><b> cnt0++;</b></p><p><b> cnt1++;</b></p><p><b> }</b></p><p> 該函數(shù)通過中斷產(chǎn)生1ms的時間間隔來執(zhí)行,變量cnt0和cnt1的
100、值分別增加1。由于interrupt_timer0函數(shù)執(zhí)行一次需要1ms,因此可以通過檢測主程序中cnt0或cnt1的值來測量所持續(xù)的時間。變量ITU0_TSR表示計時器狀態(tài)寄存器,它與0xfe執(zhí)行與操作,并將結(jié)果保存到前者中,相當于將ITU0_TSR的第0位置“0”。之所以要在函數(shù)中編寫這一句,是因為當中斷產(chǎn)生時ITU0_TSR的第0位可以自動地變?yōu)椤?”,但是卻不會再自動的由“1”變?yōu)椤?”。因此要利用與操作使第0位置“0”,為下一
101、次操作做準備。</p><p><b> 等待計時器函數(shù)</b></p><p> void timer( unsigned long timer_set )</p><p><b> {</b></p><p><b> cnt0=0;</b></p>
102、<p> While( cnt0<timer_set );</p><p><b> }</b></p><p> 改變函數(shù)輸入?yún)?shù)timer_set的值,可以改變等待計時器的工作時間。例如:取輸入?yún)?shù)timer_set的值為1000,全局變量cnt0首先被初始化為0,接著執(zhí)行while語句,程序轉(zhuǎn)到cnt0被操作的地方,由于執(zhí)行interrup
103、t_timer0函數(shù)而產(chǎn)生的1ms中斷將使cnt0的值增加1。然后,再次執(zhí)行while語句,如此往復循環(huán),直至cnt0的值為1000時終止,最后可以得出等待計時器函數(shù)的工作時間為1000毫秒,即1s。</p><p><b> 橫白線檢測函數(shù)</b></p><p> int check_crossline( void )</p><p>
104、<b> {</b></p><p> unsignde char b;</p><p><b> int ret;</b></p><p><b> ret=0;</b></p><p> b=sensor_inp( MASK2_2 );</p>&l
105、t;p> if( b==0x66||b=0x64||b=0x26||b=0x62||b=0x46 ){</p><p><b> ret=1; }</b></p><p> return ret;</p><p><b> }</b></p><p> 該函數(shù)為無參數(shù)函數(shù),主要用來
106、判斷是否已經(jīng)檢測到直角彎道前具有提示作用的第一條橫白線。如果檢測到橫白線,返回值為1。相反,如果沒有檢測到橫白線,則返回值為0。函數(shù)中,首先將作為返回值的變量ret置0,認為沒有檢測到橫白線。然后,讀取經(jīng)MASK2_2掩蓋后的傳感器狀態(tài),并將該狀態(tài)值存入變量b中。也就是說,除了左側(cè)中間兩個和右側(cè)中間兩個傳感器的數(shù)據(jù)能正常使用外,其余各位傳感器輸出值均被置為“0”。當變量b中傳感器的輸入狀態(tài)滿足if語句中列舉的幾種狀態(tài)中的一種時,就可以認
107、為已經(jīng)檢測到橫白線,變量ret置為1。否則,變量ret仍為0,認為沒有檢測到橫白線。</p><p> DIP開關(guān)狀態(tài)讀取函數(shù)</p><p> unsigned char dipsw_get( void )</p><p><b> {</b></p><p> unsigned char sw;</p&
108、gt;<p> sw = ~P6DR;</p><p> sw &= 0x0f;</p><p> return sw;</p><p><b> }</b></p><p> 由于DIP開關(guān)與接口6相連,故從接口6讀取數(shù)據(jù)。如果DIP開關(guān)關(guān)閉,則接口數(shù)據(jù)為“1”。如果DIP開關(guān)打開,則接
109、口數(shù)據(jù)為“0”。因為關(guān)閉與“0”對應(yīng),而打開與“1”對應(yīng),更容易理解。因此這里采用符號“~”對DIP開關(guān)的狀態(tài)值進行取反,并將其存放到變量sw中。“~”稱為“邏輯否定”。由于DIP開關(guān)只有4位,所以這里采用sw與0cf0的與操作將變量sw的前4位屏蔽。最后,將變量sw作為函數(shù)的返回值。</p><p> 按鈕開關(guān)狀態(tài)讀取函數(shù)</p><p> unsigned char pushsw_
110、get( void )</p><p><b> {</b></p><p> unsigned char sw;</p><p> sw = ~PBDR;</p><p> sw &= 0x01;</p><p> return sw;</p><p>
111、<b> }</b></p><p> 接口B的第0位用來讀取按鈕開關(guān)的狀態(tài)數(shù)據(jù)。如果按鈕沒被按下,數(shù)據(jù)為“1”。相反,如果按鈕被按下,則數(shù)據(jù)為“0”。這里同樣采用符號“~”對按鈕開關(guān)的狀態(tài)值取反,以便符合人們的思維習慣,容易理解。由于按鈕開關(guān)的狀態(tài)值只有一位,因此需要使用語句“sw &= 0x01”對第0位以外的其余各位進行屏蔽。最后,將變量sw作為函數(shù)的返回值輸出。</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于瑞薩MCU高速智能車模的設(shè)計與實現(xiàn).pdf
- 四驅(qū)智能模型車的速度控制系統(tǒng)【畢業(yè)設(shè)計】
- 四驅(qū)智能模型車的速度控制系統(tǒng)【畢業(yè)設(shè)計】
- 消防智能電動車設(shè)計與制作畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計208消防智能電動車設(shè)計與制作資料
- 畢業(yè)設(shè)計208消防智能電動車設(shè)計與制作資料
- 網(wǎng)頁設(shè)計與制作畢業(yè)設(shè)計
- [畢業(yè)設(shè)計資料]畢業(yè)設(shè)計__廣告設(shè)計與制作
- 畢業(yè)設(shè)計208消防智能電動車設(shè)計與制作資料.doc
- 畢業(yè)設(shè)計208消防智能電動車設(shè)計與制作資料.doc
- flash課件設(shè)計與制作畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---mv的設(shè)計與制作
- 基于STM32的自動行駛模型車的設(shè)計.pdf
- 公司網(wǎng)頁設(shè)計與制作畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)機械手模型設(shè)計及制作
- 畢業(yè)設(shè)計the design of modbus communicator based on mcu
- 畢業(yè)設(shè)計--定向通信裝置設(shè)計與制作
- 畢業(yè)設(shè)計論文flash的設(shè)計與制作
- 畢業(yè)設(shè)計--“網(wǎng)上花店”的設(shè)計與制作
- 書城的設(shè)計制作與實現(xiàn)畢業(yè)設(shè)計
評論
0/150
提交評論