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