基于單片機(jī)的多功能智能小車設(shè)計論文
基于單片機(jī)的多功能智能小車設(shè)計論文,基于,單片機(jī),多功能,智能,小車,設(shè)計,論文
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 摘要
畢 業(yè) 設(shè) 計 [論 文]
題 目:基于單片機(jī)的智能電動小車控制系統(tǒng)
學(xué) 院: 電氣與信息工程學(xué)院
專 業(yè):
姓 名:
學(xué) 號:
指導(dǎo)老師:
完成時間:
21
摘 要
基于單片機(jī)的智能電動小車作為實現(xiàn)無人駕駛小汽車的方案之一,以其智能、靈活、便攜、智能等優(yōu)點滿足了玩具小汽車發(fā)展的需要。本文設(shè)計的智能電動小車控制系統(tǒng)有自動循跡的功能,能滿足按預(yù)設(shè)軌道行走并完成給定任務(wù)的要求,單片機(jī)是實現(xiàn)電動智能小車控制系統(tǒng)的核心,其軟硬件設(shè)計是實現(xiàn)循跡功能的基本要求和關(guān)鍵環(huán)節(jié)。
本智能電動小車在循跡方面做了相對系統(tǒng)化的設(shè)計,本文主要工作包括兩個個方面:
1.硬件設(shè)計:用紅外光電傳感器檢測路面的黑色軌跡物,確定小車的位置和運(yùn)動狀態(tài)并再將檢測信號反饋給單片機(jī),單片機(jī)對采集到的信號予以分析判斷,及時控制直流電機(jī)調(diào)整小車轉(zhuǎn)向與行車速度。
2.軟件設(shè)計:通過對AD轉(zhuǎn)換、電機(jī)和循跡等模塊的編程,控制硬件電路工作,實現(xiàn)軟硬件結(jié)合,完成判斷控制功能。
本設(shè)計以STC12C5A60S2單片機(jī)為核心,通過合理軟硬件設(shè)計、調(diào)試,獲得了較好的測試效果,樣品實際工作穩(wěn)定,滿足實際要求。
關(guān)鍵詞 : 循跡小車,單片機(jī),紅外傳感器
I
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) Abstract
2
Abstract
MCU based electric car of smart program as one scheme of driverless cars with its advantages like smart ,flexible and portable made intelligent toys meeting the needs of car development. This design of smart electric car with automatic tracking control system functions is to meet the preset orbit by walking and complete the given tasks. STC89C52 MCU is a core of electric smart car control system's ,its hardware and software design is to achieve the tracking function of the basic requirements and key links .
The smart electric tracking car has done some thing in a relatively systematic design, this paper includes two aspects:
1. Hardware design : Using infrared sensors to detect the black track pavement materials , determine the location and movement of the car and then the state detection signal feedback to the MCU, the MCU of the collected signals are analyzed to determine , in a timely manner to control a DC motor to adjust the car steering and driving speed .
2. Software design : By programming the AD converter , motor and tracking modules , can control the hardware circuit, to achieve a combination of hardware and software to complete the judgment control.
STC12C5A60S2 MCU is a core of the design , through reasonable hardware and software design , debugging , testing to get a better effect , sample real job stability, to meet the actual requirements.
Keywords: tracking car , MCU , infrared sensors
II
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 目錄
目錄
摘 要 I
Abstract II
第一章 緒論 1
1.1引言 1
1.2智能小車的研究現(xiàn)狀 1
1.2.1國外概況 1
1.2.2國內(nèi)概況 2
第二章 方案設(shè)計與論證 5
2.1 控制系統(tǒng) 5
2.2 電機(jī)驅(qū)動模塊 6
2.3 循跡模塊 6
2.4 機(jī)械系統(tǒng) 7
第三章 硬件設(shè)計 8
3.1總體設(shè)計 8
3.2 STC12C5A60S2單片機(jī)控制電路 9
3.2.1 STC12C5A60S2單片機(jī)的介紹 9
3.2.2 時鐘電路 12
3.2.3 復(fù)位電路 13
3.2.4 P0口外接上拉電阻 14
3.3 TCRT5000黑色軌跡識別電路 14
3.3.1 TCRT5000的介紹 16
3.4 TB6612FNG電機(jī)驅(qū)動電路 16
3.4.1 TB6612FNG的介紹 17
3.5 升降壓模塊 19
3.5.1 LM2577的介紹 19
第四章 軟件設(shè)計 21
4.1主程序流程 21
4.2循跡子程序流程圖 23
第五章 設(shè)計安裝與調(diào)試 28
65.1 PCB的設(shè)計制作與安裝 28
5.2 小車調(diào)試 31
結(jié)論 32
參考文獻(xiàn) 33
致謝 34
附錄1:主程序 35
附錄2:PCB走線圖 49
附錄3:小車實物圖 50
總原理圖 51
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 1緒論
第一章 緒論
1.1引言
21世紀(jì)是高速發(fā)展的社會,是智能現(xiàn)代化的社會。智能機(jī)器人是一個多種高新技術(shù)的集成體,它融合了機(jī)械、電子、傳感器、計算機(jī)硬件、軟件、人工智能等許多學(xué)科的知識,涉及到當(dāng)今許多前沿領(lǐng)域的技術(shù)。智能小車即輪式移動機(jī)器人,是一種集環(huán)境感知、決策規(guī)劃、自動行駛等功能于一體的綜合智能系統(tǒng),智能小車集中地運(yùn)用了自動控制、模式識別、傳感器技術(shù)、汽車電子、電氣、計算機(jī)、機(jī)械等多個學(xué)科的知識。隨著控制技術(shù)、計算機(jī)技術(shù)和信息技術(shù)的發(fā)展,智能小車在工業(yè)生產(chǎn)和日常生活中已經(jīng)扮演了非常重要的角色,近年來,智能車在野外、道路、現(xiàn)代物流及柔性制造系統(tǒng)中都有廣泛運(yùn)用,已成為人工智能領(lǐng)域研究和發(fā)展的熱點。
目前,智能小車領(lǐng)域的研究已經(jīng)能夠在具有一定標(biāo)記的道路上為司機(jī)提供輔助駕駛系統(tǒng)甚至實現(xiàn)無人駕駛,這些智能小車的設(shè)計通常依靠特定道路標(biāo)記完成識別,通過推理判斷模仿人工駕駛進(jìn)行操作。本文所述智能車就是一種自動導(dǎo)引小車,能夠在給定的區(qū)域內(nèi)沿著軌跡自動進(jìn)行行進(jìn)。小車運(yùn)行過程由方向檢測和電機(jī)驅(qū)動兩個部分控制,采用與白色地面顏色有較大差別的黑色線條作引導(dǎo)。智能車尋跡系統(tǒng)采用紅外反射式光電管識別路徑上的黑線,并以最短的時間完成尋跡,用單片機(jī)STC12C5A60S2控制光電傳感器組,對采集到的信號進(jìn)行分析處理并做出邏輯判斷后,得到行進(jìn)方向,再通過直流電機(jī)驅(qū)動前輪轉(zhuǎn)向,實現(xiàn)智能小車的循跡行進(jìn)。智能車的驅(qū)動采用直流電機(jī),并采用PWM實現(xiàn)直流電機(jī)的調(diào)速,為了使智能車快速、平穩(wěn)地行駛,系統(tǒng)必須把路徑識別、相應(yīng)的轉(zhuǎn)向伺服電機(jī)控制以及直流驅(qū)動電機(jī)控制準(zhǔn)確地結(jié)合在一起。本文對智能電動小車的尋跡及速度控制等進(jìn)行了研究[1]。
1.2智能小車的研究現(xiàn)狀
1.2.1國外概況
對智能汽車最為重視的國家當(dāng)屬美國了,美國交通部2000年投資 3500 萬美元與通用公司進(jìn)行長達(dá)五年的合作,開始籌劃開發(fā)汽車的前后防撞系統(tǒng)。幾乎同一時刻,美國的知名高校也開始了研發(fā)全自動汽車,并不斷完善改進(jìn),很多研發(fā)團(tuán)體也都陸續(xù)加入開展這項工作。
歐洲開發(fā)基金投入大量資金支持智能系統(tǒng)的研發(fā),研究方向為駕駛?cè)诵袨榉治觥⒃鰪?qiáng)行駛中的視覺效果、合理控制汽車的前后車距、自動感應(yīng)道路和其他物體的等周邊環(huán)境,以及感應(yīng)紅綠燈及其他方面的信號等等,通過GPRS或者汽車周邊的環(huán)境以及導(dǎo)航系統(tǒng)對汽車進(jìn)行導(dǎo)航,同時智能操控其方向與速度。多組數(shù)據(jù)證明,這種智能系統(tǒng)可以有效降低交通事故,減少接近 20%的事故發(fā)生。
視覺系統(tǒng)是智能車的一個重要的組成部分,道路和障礙物是視覺提取的最重要信息,需要對這兩個目標(biāo)體進(jìn)行提取計算與跟蹤處理,對此,德國慕尼黑聯(lián)邦國防大學(xué)與奔馳公司進(jìn)行了合作研制,將一輛500SEL的奔馳車改裝成的一輛 VaMP 試驗車,并進(jìn)行多次試驗。每一次的試驗,改裝后的試驗車都行使了接近 2500公里,其中將近95%的路程是由智能控制系統(tǒng)自動完成的,試驗的成功也促進(jìn)了智能控制的進(jìn)一步發(fā)展。
在智能車控制系統(tǒng)中,防撞警示系統(tǒng)也是不可或缺的一部分。歐洲調(diào)查發(fā)現(xiàn):提前0.5s得到“預(yù)知警示”,那么汽車駕駛員就可以避免至少60%的碰撞危險的,減少追尾撞車的事故;“預(yù)知警示”時間提高到1s,則90%的碰撞事故將不會再發(fā)生。研究智能汽車不僅是對汽車的本身進(jìn)行研究,還包括智能運(yùn)輸系統(tǒng)和智能交通系統(tǒng)的研究,這些研究的倘若成功可以促進(jìn)國家經(jīng)濟(jì)的發(fā)展。美國一項研究表明,這種影響可能會超過覆蓋全美的洲際高速公路。研究的目的與意義在于:可以大量降低公路交通擁擠、堵塞,甚至是汽車油耗,使城市減少 25%~40%左右的損失,這些損失都是由于交通擁擠和堵塞造成的。這樣就可以大幅度提高公路的通行能力,至少使現(xiàn)有高速公路的交通量增加一倍,道路暢通也在很大程度上提高了公路交通的安全性。除此之外,智能系統(tǒng)不但提高運(yùn)輸效率還能帶動交通運(yùn)輸行業(yè)的健康發(fā)展與繁榮。
在對智能汽車的研究中,日本和美國目前處在比較領(lǐng)先的地位,現(xiàn)在他們用高性能的專家控制系統(tǒng)開發(fā)智能車控制系統(tǒng)的推進(jìn)器驅(qū)動,這種產(chǎn)品如果實現(xiàn)將幫助駕駛員對道路信息有一個更為全面的了解,使行車更為方便安全,例如對于搶道、超車等等危險行為作出提醒或者警告,告知司機(jī)現(xiàn)在的前后車的安全距離,提醒司機(jī)是否疲勞駕駛,監(jiān)查駕駛員的精神面貌等等,這些技術(shù)的完善對智能車控制系統(tǒng)的進(jìn)一步提高作下了鋪墊[2]。
1.2.2國內(nèi)概況
早在 1986 年,清華大學(xué)就開始了關(guān)于我國智能汽車的研究(圖1.1),一直發(fā)展至今天。其中,目前最先進(jìn)的智能無人駕駛汽車由清華大學(xué)自主研制,它可以在各種復(fù)雜的路面上行駛,這個高端科技的無人駕駛汽車采用激光雷達(dá)和攝像頭
圖1.1無人駕駛小車研究[3]
作為外部傳感器,運(yùn)用現(xiàn)階段最先進(jìn)的圖像處理技術(shù)對道路信息進(jìn)行識別判斷,來實現(xiàn)智能車的自動駕駛功能。為了不斷地提高技術(shù)性能和完善該車的智能控制系統(tǒng),工程師們一直都在不斷地刻苦研究,以便該控制系統(tǒng)可以早日的運(yùn)用到我們?nèi)粘J褂玫男∑嚿?。另外,對智能車系統(tǒng)控制的研究在其他高校科研機(jī)構(gòu)中也相繼的展開了。如:由香港城市大學(xué)自主研發(fā)的自動導(dǎo)航車和服務(wù)機(jī)器人,“智能先鋒號”由中科院合肥物質(zhì)科學(xué)研究院主導(dǎo)研究開發(fā),還有北京理工大學(xué)也不斷地參與研發(fā)關(guān)于智能汽車控制系統(tǒng)等等,這些都極具現(xiàn)實意義。
要不斷的完善汽車的動力性和各方面的控制性能,保證汽車在行駛的時候可以平穩(wěn)、安全并且低功耗,那么通過不斷地對智能控制的研究可以使其成為可能。通過不斷開發(fā)新技術(shù)和完善車載控制系統(tǒng),可以使行車更為方便、安全,使人類的生活更為舒適。智能汽車可以減少人為因素的失誤,即使在復(fù)雜的路面上行駛也可以自動的避開阻擋物,尋求最佳路線行駛,平穩(wěn)、安全的通過各種復(fù)雜的路面,能夠輕易地做到人類手工操作很難做到的事情。
58
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 第二章 方案設(shè)計與論證
第二章 方案設(shè)計與論證
基于單片機(jī)的智能電動小車控制系統(tǒng)主要實現(xiàn)循跡功能,為實現(xiàn)對小車的運(yùn)動狀態(tài)進(jìn)行實時控制,需要對小車設(shè)計進(jìn)行軟硬件方案的設(shè)計與論證,以使其滿足控制靈活、可靠,精度高等性能。據(jù)此,確定如下方案:畫出要設(shè)計小車的PCB原理圖打成印制板,把印制板合理規(guī)劃作為小車的底板,在底板上加裝光電傳感器和單片機(jī)控制系統(tǒng)以實現(xiàn)對小車的位置、運(yùn)行狀況等進(jìn)行實時測量,并將測量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,以便單片機(jī)根據(jù)所檢測的各種數(shù)據(jù)實現(xiàn)對小車的智能控制。
2.1 控制系統(tǒng)
控制系統(tǒng)是智能電動小車控制系統(tǒng)的核心,主要功能是對傳感器采集到的光電信息進(jìn)行實時分析、判斷,控制智能小車的驅(qū)動系統(tǒng),隨時調(diào)整小車的速度和位置。針對智能小車控制系統(tǒng)的特點,制定如下備選方案:
方案一:
選用一片CPLD(如EPM7128LC84-15)作為系統(tǒng)的核心部件,實現(xiàn)控制與處理的功能。CPLD具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點,可利用VHDL語言進(jìn)行編寫開發(fā)。但CPLD在控制上較單片機(jī)有較大的劣勢。同時,CPLD的處理速度非??欤≤嚨男羞M(jìn)速度不可能太高,相對緩慢,那么對系統(tǒng)處理信息的要求也就不會太高,在這一點上,MCU就已經(jīng)可以勝任了。若采用該方案,必將在控制上遇到許多不必要增加的難題,進(jìn)而提出了第二種方案。
方案二:
采用單片機(jī)作為整個系統(tǒng)的核心,用其控制行進(jìn)中的小車,以實現(xiàn)其既定的性能指標(biāo)。充分分析設(shè)計的系統(tǒng),其關(guān)鍵在于實現(xiàn)小車的自動控制,而在這一點上,單片機(jī)就顯現(xiàn)出了它的優(yōu)勢——控制簡單、方便、快捷。這樣一來,單片機(jī)就可以充分發(fā)揮其資源豐富、有較為強(qiáng)大的控制功能、可位尋址操作功能以及價格低廉等優(yōu)點。本設(shè)計采用方案二來完成智能小車的控制系統(tǒng)的設(shè)計。
針對本設(shè)計特點——多開關(guān)量輸入的復(fù)雜程序控制系統(tǒng),需要擅長處理多開關(guān)量的標(biāo)準(zhǔn)單片機(jī),在小車運(yùn)行過程中需實時控制小車的運(yùn)動狀態(tài),控制智能小車運(yùn)行程序比較復(fù)雜,因而所需的內(nèi)存空間比較大。根據(jù)這些分析,我選定了STC12C5A60S2單片機(jī)作為本設(shè)計的主控裝置。STC12C5A60S2單片機(jī)有內(nèi)存空間大、高速、高可靠、寬電壓、超強(qiáng)抗干擾等功能;具有功能強(qiáng)大的位操作指令;I/O口均可按位尋址,程序空間多達(dá)60K;有8路8位高速A/D轉(zhuǎn)換器,速度可達(dá)到300KHz,且STC12C5A60S2單片機(jī)具有A/D轉(zhuǎn)換和PWM功能[4]。
2.2 電機(jī)驅(qū)動模塊
電機(jī)驅(qū)動模塊是智能電動小車前行的直接動力源,智能電動小車驅(qū)動電機(jī)的控制效果直接影響小車的速度以及前行的穩(wěn)定性。針對小車的電機(jī)驅(qū)動模塊確定如下方案:
方案一:
采用繼電器對電動機(jī)的開或關(guān)進(jìn)行控制,通過開關(guān)的切換對小車的方向進(jìn)行調(diào)整。此方案的優(yōu)點是電路較為簡單,缺點是繼電器的響應(yīng)時間慢,易損壞,壽命較短,可靠性不高。
方案二:
采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)節(jié)電動機(jī)的分壓,從而達(dá)到分壓的目的。但電阻網(wǎng)絡(luò)只能實現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格比較昂貴。更主要的問題在于一般的電動機(jī)電阻很小,但電流很大,分壓不僅會降低效率,而且實現(xiàn)很困難。
方案三:
采用TB6612FNG電機(jī)驅(qū)動芯片輸出控制直流電機(jī)。H型驅(qū)動的電路結(jié)構(gòu)和原理簡單,加速能力強(qiáng)。用單片機(jī)控制MOS管使之工作在占空比可調(diào)的開關(guān)狀態(tài)下,精確調(diào)整電動機(jī)轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,效率非常高,H型橋式電路保證了簡單的實現(xiàn)轉(zhuǎn)速和方向的控制,電子管的開關(guān)速度很快,穩(wěn)定性也極強(qiáng),是一種廣泛采用的PWM調(diào)速技術(shù)。本設(shè)計采用方案三,用TB6612FNG作為整個系統(tǒng)的驅(qū)動器件。
TB6612FNG是一種直流電機(jī)驅(qū)動器件,具有點電流MOSFET-H橋結(jié)構(gòu),雙通道電路輸出,可同時驅(qū)動2個電機(jī)。設(shè)計使用TB6612FNG直流電機(jī)可以很好地實現(xiàn)對智能小車速度和位置的控制[4]。
2.3 循跡模塊
循跡模塊主要實現(xiàn)光電檢測,即利用各種傳感器對智能電動小車的位置和行車狀態(tài)等進(jìn)行實時測量。智能小車在給定的道路上能夠自主識別道路并行使的關(guān)鍵問題是如何識別標(biāo)志(探尋黑線)。因此,準(zhǔn)確的尋線系統(tǒng)是智能小車設(shè)計的最重要的環(huán)節(jié)?,F(xiàn)為循跡模塊制定如下備選方案:
方案一:
采用簡易光電傳感器結(jié)合外圍電路探測,但實際效果并不理想,對行駛過程中的穩(wěn)定性要求很高,且誤測幾率較大、易受光線環(huán)境和路面介質(zhì)影響。在使用過程中極易出現(xiàn)問題,而且容易因為該部件造成整個系統(tǒng)的不穩(wěn)定。故最終未采用該方案[5]。
方案二:
采用五只紅外對管,置于小車車頭前端,根據(jù)光電開關(guān)接受到白線與黑線的情況來控制小車轉(zhuǎn)向來調(diào)整車向。若中間的光電傳感器檢測到黑線,則表明智能小車未偏離軌跡,單片機(jī)控制驅(qū)動電機(jī)使轉(zhuǎn)向輪不偏轉(zhuǎn);若左(右)邊的光電傳感器檢測到黑線,則表明智能車的右(左)邊偏離軌跡,越靠近左(右)邊的傳感器檢測到黑線,表示智能小車向右(左)偏離軌跡的程度越大,單片機(jī)控制驅(qū)動電機(jī)使轉(zhuǎn)向輪向左(右)偏轉(zhuǎn),偏離程度越大,則偏轉(zhuǎn)角度越大。若光電傳感器沒有檢測到黑線或是其他的檢測結(jié)果,則表明智能車已脫離軌跡,這時單片機(jī)應(yīng)控制驅(qū)動電機(jī)使轉(zhuǎn)向輪保持原有的角度不變,同時控制直流電機(jī)使速度下降。測試表明,只要合理安裝好光電開關(guān)的位置就可以很好的實現(xiàn)循跡的功能。智能電動小車的設(shè)計采用方案二,用紅外光電傳感器來實現(xiàn)小車的循跡功能[6]。這種方案誤差較小且不易受路面狀況的限制,是比較理想的選擇。
2.4 機(jī)械系統(tǒng)
智能電動小車的機(jī)械系統(tǒng)穩(wěn)定、靈活、簡單,可選用三輪和四輪式,基于單片機(jī)的智能電動小車要求小車具有較好的靈活性,采用三輪式設(shè)計可使智能電動小車在滿足靈活性的同時又使設(shè)計簡單、方便。小車的機(jī)械系統(tǒng)包括電源和驅(qū)動兩部分。
驅(qū)動部分:采用TB6612FNG電機(jī)驅(qū)動芯片驅(qū)動直流電機(jī),由TB6612FNG雙通道馬達(dá)驅(qū)動模塊驅(qū)動兩個電機(jī),保證基于單片機(jī)的智能電動小車的驅(qū)動能較好的實現(xiàn)。
電源模塊:將電池放置在車體的上面,可增加驅(qū)動輪的抓地力,減小輪子空轉(zhuǎn)所引起的誤差。用LM2577升壓芯片將四節(jié)電池電壓先升壓到9V給直流電機(jī)的驅(qū)動模塊,直流電機(jī)驅(qū)動芯片通過單片機(jī)的控制來驅(qū)動直流電機(jī)的前輪從而控制小車的運(yùn)動狀態(tài),然后由AMS1117-5V降壓芯片將電壓降到5V給智能小車的控制系統(tǒng)。
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 第三章 硬件設(shè)計
第三章 硬件設(shè)計
基于單片機(jī)的智能電動小車控制系統(tǒng)具備自動循跡的功能,滿足按預(yù)設(shè)軌道行走并完成給定任務(wù)的要求,其硬件設(shè)計是實現(xiàn)循跡功能的基本要求和關(guān)鍵環(huán)節(jié),主要包括單片機(jī)控制電路、直流電機(jī)驅(qū)動電路、軌跡識別電路等。
3.1總體設(shè)計
智能電動小車實現(xiàn)循跡功能主要依靠軌跡識別模塊、單片機(jī)控制模塊和電機(jī)驅(qū)動模塊完成。智能電動小車采用前輪驅(qū)動,后輪轉(zhuǎn)換方向。循跡紅外發(fā)射與接收管分別裝在車頭下的左中右。當(dāng)車身下左邊的傳感器檢測到超出黑線時,后輪右轉(zhuǎn),當(dāng)車身下右邊傳感器檢測到超出黑線時,后輪左轉(zhuǎn),直到小車完全回到黑線。如果轉(zhuǎn)向過程中中間傳感器也檢測到超出黑線則說明小車以這個轉(zhuǎn)向角度不能回到黑線,則改變后輪方向并后退。同樣可以起到轉(zhuǎn)向的作用,避免小車離線太遠(yuǎn)最終回不到黑線上。當(dāng)小車完全回到黑線再繼續(xù)向前,在檢測到下一次出線后再進(jìn)行同樣的調(diào)整。整個過程實現(xiàn)數(shù)據(jù)的實時采集、判斷、信號流程如圖3.1所示。
紅外軌跡識別模塊
單片機(jī)控制系統(tǒng)
圖3.1 整體設(shè)計框圖
馬達(dá)驅(qū)動模塊
圖3.1 整體設(shè)計框圖
3.2 STC12C5A60S2單片機(jī)控制電路
單片機(jī)控制電路由單片機(jī)最小系統(tǒng)組成,主要作用是接受紅外光電傳感器探頭傳來的電壓信號,再通過程序設(shè)定的邏輯算法給出驅(qū)動電路指令驅(qū)動電機(jī)控制小車的運(yùn)動狀態(tài)。單片機(jī)最小系統(tǒng)包括主控STC12C5A60S2單片機(jī),外部時鐘電路,復(fù)位電路和電源組成[7]。
STC12C5A60S2單片機(jī)是增強(qiáng)型的8051單片機(jī),即8051單片機(jī)的升級版,與8051單片機(jī)的管腳完全兼容。STC12C5A60S2單片機(jī)具有60K的超大內(nèi)存,超強(qiáng)抗干擾性,整個芯片的抗靜電能力較強(qiáng);在系統(tǒng)可編程,無需編程器,無需仿真器,可遠(yuǎn)程升級;內(nèi)部集成高可靠復(fù)位電路,外部復(fù)位電路可徹底省掉,超低功耗超快速度等優(yōu)點。
本設(shè)計采用如圖3.2所示的單片機(jī)最小系統(tǒng)[8]。
圖3.2單片機(jī)主控電路
3.2.1 STC12C5A60S2單片機(jī)的介紹
STC12C5A60S2單片機(jī)的主要功能:
u 高速:1個時鐘/機(jī)器周期,增強(qiáng)型8051內(nèi)核,速度比普通8051快8~12倍
u 寬電壓:5.5—3.3V,2.2—3.6V的寬電壓
u 增加第二引腳功能(高可靠復(fù)位,可調(diào)整復(fù)位門檻電壓。頻率小于12MHz時,無需此功能)
u 增加外部掉電檢測電路,可在掉電時及時將數(shù)據(jù)保存進(jìn)EEPORM,正常工作時無需操作EEPORM
u 低功耗設(shè)計:空閑模式(可由任意鍵喚醒),掉電模式(可由外部中斷喚醒,可支持下降沿/上升沿遠(yuǎn)程喚醒)
u 時鐘:外部晶體或RC振蕩器可選,在ISP下載用戶程序時設(shè)置
u 60K字節(jié)在系統(tǒng)可編程Flash存儲器、 10萬次以上擦寫周期
u 1028字節(jié)片內(nèi)RAM數(shù)據(jù)存儲器
u ISP/IAP,在系統(tǒng)可編程/在應(yīng)用可編程,無需編程器/仿真器
u 芯片內(nèi)EEPORM功能,擦寫次數(shù)十萬次以上
u 8通道,10位高速ADC,速度可達(dá)25萬次/秒,2路PWM還可當(dāng)2路D/A使用
u 2通道捕獲/比較單元,也可用來再實現(xiàn)2個定時器或2個外部中斷(支持下降沿/上升沿中斷)
u 4個16位定時器,兼容8051的定時器T0/T1,2路PAC實現(xiàn)2個定時器
u 可編程時鐘輸出功能,T0在P3.4輸出時鐘,T1在P3.5輸出時鐘,BRT在P1.0輸出時鐘
u 硬件看門狗(WDT)
u 高速SPI串行通信端口
u 全雙工異步串行口(UART),兼容普通8051的串口
u 先進(jìn)的指令集結(jié)結(jié)構(gòu),兼容8051指令集,有硬件乘法/除法指令
u 通用I/O口,復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口)
u 可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推免/強(qiáng)上拉,僅為輸入/高阻,開漏
u A/D轉(zhuǎn)換, 10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘25萬次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時器或PCA軟件實現(xiàn)多串口
u 每個I/O口驅(qū)動能力均可達(dá)到20mA,但整個芯片最大不超過10mA
u 可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推免/強(qiáng)上拉,僅為輸入/高阻,開漏
u 時鐘源:外部高精度晶體/時鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi))1用戶在下載用戶程序時,可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz~15.5MHz,3.3V單片機(jī)為:8MHz~12MHz,精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準(zhǔn)
u 時鐘源:外部高精度晶體/時鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi))1用戶在下載用戶程序時,可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz~15.5MHz,3.3V單片機(jī)為:8MHz~12MHz,精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準(zhǔn)
u A/D轉(zhuǎn)換, 10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘25萬次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時器或PCA軟件實現(xiàn)多串口
u 每個I/O口驅(qū)動能力均可達(dá)到20mA,但整個芯片最大不超過10mA
STC12C5A60S2單片機(jī)的引腳介紹:
STC12C5A60S2單片機(jī)有40個引腳,包括第二串口,A/D轉(zhuǎn)換,PWM功能和內(nèi)部EEPROM. STC12C5A60S2是一種低功耗、高性能CMOS 8位微控制器,使用高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得STC12C5A60S2為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。另外,STC12C5A60S2可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。
圖3.3為STC12C5A60S2的引腳圖。
圖3.3 STC12C5A60S2引腳示意圖
各引腳功能簡單介紹如下:
VCC:供電電壓;
GND:接地;
P0口:P0口為一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。當(dāng)P1口的管腳寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗時,P0輸出原碼,此時P0外部電位必須被拉高;
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收;
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳電位被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉的優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號;
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入時,由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 INT0(外部中斷0)
P3.3 INT1(外部中斷1)
P3.4 T0(記時器0外部輸入)
P3.5 T1(記時器1外部輸入)
P3.6 WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 RD(外部數(shù)據(jù)存儲器讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號;
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高平時間;
ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令時ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效;
PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個機(jī)器周期PSEN兩次有效;
EA/VPP:當(dāng)EA保持低電平時,訪問外部ROM;注意加密方式1時,EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時,訪問內(nèi)部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP);
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入;
XTAL2:來自反向振蕩器的輸出;
3.2.2 時鐘電路
STC12C5A60S2單片機(jī)各功能部件的運(yùn)行都以時鐘控制信號為基準(zhǔn),有條不紊的工作,時鐘頻率直接影響單片機(jī)的速度,時鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。XTAL1和XTAL2是獨立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內(nèi)振蕩器,或者是器件直接由外部時鐘驅(qū)動。圖中采用的是內(nèi)時鐘模式,即采用利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2的引腳上外接定時元件(一個石英晶體和兩個電容),內(nèi)部振蕩器便能產(chǎn)生自激振蕩。一般來說晶振可以在1.2~12MHz之間任選,甚至可以達(dá)到24MHz或者更高,但是頻率越高功耗也就越大,在本設(shè)計中采用的11.0592M的石英晶振。和晶振并聯(lián)的兩個電容的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。當(dāng)采用石英晶振時,電容可以在20~40pF之間選擇;當(dāng)采用陶瓷諧振器件時,電容要適當(dāng)?shù)卦龃笠恍?,?0~50pF之間。通常選取33pF的陶瓷電容就可以了。另外,如果在設(shè)計單片機(jī)系統(tǒng)的印刷電路板(PCB)時,晶體和電容應(yīng)盡可能與單片機(jī)芯片靠近,以減少引線的寄生電容,保證振蕩器可靠工作。單片機(jī)的時鐘電路如下所示:
圖3.4時鐘電路 圖3.5 復(fù)位電路
3.2.3 復(fù)位電路
在單片機(jī)系統(tǒng)中,復(fù)位電路(圖3.5)是非常關(guān)鍵的,當(dāng)程序跑飛(運(yùn)行不正常)或死機(jī)(停止運(yùn)行)時,就需要進(jìn)行復(fù)位。STC12C5A60S2系列單片機(jī)的復(fù)位引腳RST出現(xiàn)2個機(jī)器周期以上的高電平時,單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位操作通常有兩種基本形式:上電自動復(fù)位和開關(guān)復(fù)位。上電瞬間,電容兩端電壓不能突變,此時電容的負(fù)極和RESET相連,電壓全部加在了電阻上,RESET的輸入為高,芯片被復(fù)位。隨之+5V電源給電容充電,電阻上的電壓逐漸減小,最后約等于0,芯片正常工作。一般來說,只要RST管腳上保持10ms以上的高電平,就能使單片機(jī)有效的復(fù)位。
3.2.4 P0口外接上拉電阻
STC12C5A60S2單片機(jī)的P0端口為開漏輸出,內(nèi)部無上拉電阻。所以在當(dāng)做普通I/O輸出數(shù)據(jù)時,由于V2截止,輸出級是漏極開路電路,要使“1”信號(即高電平)正常輸出,必須外接上拉電阻。另外,避免輸入時讀取數(shù)據(jù)出錯,也需外接上拉電阻[5]。電路圖如下所示:
圖3.4 6 P0端口的1位結(jié)構(gòu)
3.3 TCRT5000黑色軌跡識別電路
小車循跡原理是小車在貼有黑色膠布作為黑線的白紙“路面”上行駛,由于黑線和白紙對光線的反射系數(shù)不同,可根據(jù)接收到的反射光的強(qiáng)弱來判斷“道路”—黑線。本次設(shè)計規(guī)定正常行駛時五個紅外探頭都在黑色軌跡之內(nèi),如果有探頭檢測到車體開始偏離軌道則由控制系統(tǒng)做出相應(yīng)響應(yīng)使車體回到軌道上。此電路模塊就是用于檢測車體是否超出軌道并反饋給單片機(jī)控制電路,這一方法經(jīng)常被叫做紅外探測法。紅外探測法,即利用紅外線在不同顏色的物理表面具有不同的反射性質(zhì)的特點。
圖3.5 7 TCRT5000黑色軌跡識別電路
在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色地面時發(fā)生漫發(fā)射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,則小車上的接收管接收不到信號。循跡模塊電路(如圖3.57所示),發(fā)射管不斷地發(fā)射紅外線,接收管與阻值為220歐姆的電阻串聯(lián)。在沒有接收到反射光線時接收管截止呈高阻態(tài),TX輸出高電平。當(dāng)接收管接收到反射光線時,接收管被導(dǎo)通,并且電阻遠(yuǎn)小于47K,TX輸出低電平。
3.3.1 TCRT5000的介紹
TCRT5000探測器(如圖3.68)由光電晶體管組成,具有結(jié)構(gòu)緊湊建設(shè)發(fā)光光源和探測器排列在同一方向,以感知對象的存在,從對象使用反射紅外線光束。TCRT5000作為智能電動小車的控制系統(tǒng)的紅外光電傳感器,實時監(jiān)測小車的運(yùn)動的路況信息,它的工作波長為950毫米。工作時由藍(lán)色發(fā)射管發(fā)射紅外線,紅外線由遮擋物反射回來被接收管接收。接收反射光線后的接收管呈導(dǎo)通狀態(tài),與電阻串聯(lián)即可組成一個由發(fā)射管控制的分壓電路,由此可實現(xiàn)對遮擋物反射光線強(qiáng)度的檢測。我們經(jīng)常利用這一特性去實現(xiàn)顏色識別。引腳圖如圖3.79所示。
圖3.6 8TCRT5000實物圖 圖3.7 9 TCRT5000引腳圖
傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時,光敏三極管一直處于關(guān)斷狀態(tài),此時模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被檢測物體出現(xiàn)在檢測范圍內(nèi)時,紅外線被反射回來且強(qiáng)度足夠大,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。
3.4 TB6612FNG電機(jī)驅(qū)動電路
電機(jī)驅(qū)動電路(原理圖如圖3.810)是智能電動小車控制系統(tǒng)的主要動力來源,采用內(nèi)部集成了H橋的TB6612FNG的電機(jī)驅(qū)動芯片組成直流電機(jī)驅(qū)動電路,通過單片機(jī)給予TB6612FNG芯片PWM信號來控制直流電機(jī)從而控制小車的速度和起停。TB6612FNG直流驅(qū)動模塊效率高,工作狀態(tài)穩(wěn)定,由一個TB6612FNG驅(qū)動芯片驅(qū)動兩個電機(jī)控制小車的運(yùn)動狀態(tài)。
圖3.8 10 電機(jī)驅(qū)動模塊原理圖
3.4.1 TB6612FNG的介紹
TB6612FNG是一種高電壓、大電流電機(jī)驅(qū)動芯片。在集成化、小型化的電動機(jī)控制系統(tǒng)中,它可以作為理想的驅(qū)動器件。TB6612FNG在智能電動小車的控制系統(tǒng)中作為直流電機(jī)的驅(qū)動芯片,它的每通道輸出最高1.2A的連續(xù)驅(qū)動電流,啟動峰值電流達(dá)2A/3.2A(連續(xù)脈沖/單脈沖);4種電機(jī)控制模式:正轉(zhuǎn)/反轉(zhuǎn)/制動/停止,PWM支持頻率高達(dá)100KHZ;待機(jī)狀態(tài);片內(nèi)低壓檢測電路與熱停機(jī)保護(hù)電路;它是一種直流電機(jī)驅(qū)動器件,具有點電流MOSFET-H橋(如圖3.911)結(jié)構(gòu),雙通道電路輸出,可同時驅(qū)動2個電機(jī)。
圖3.9 11 H橋式電路
TB6612FNG芯片的引腳圖如下圖,其邏輯功能表見表3.1。
圖3.10 12 TB6612FNG芯片的引腳圖
TB6612FNG芯片的引腳圖如圖3.412所示,TB6612FNG的主要引腳功能:AIN1/AIN2、BIN1/BIN2、PWMA/PWMB為控制信號輸入端;AO1/AO2、BO1/BO2為2路電機(jī)控制輸出端;STBY為正常工作/待機(jī)狀態(tài)控制引腳;VM(4.5—15V)和VCC(2.7—5.5V)分別為電機(jī)驅(qū)動電壓輸入和邏輯電平輸入端[7]。
表3.1 邏輯功能表
Input
Output
IN1
IN2
PWM
STBY
OUT1
OUT2
Mode
H
H
H/L
H
L
L
Short brake
L
H
H
H
L
H
CCW
L
H
L
L
Short brake
H
L
H
H
H
L
CW
L
H
L
L
Short brake
L
L
H
H
OFF
(High impedance)
Stop
H/L
H/L
H/L
L
OFF
(High impedance)
Standby
脈寬調(diào)制方式產(chǎn)生的占空比變化的PWM信號,通過對驅(qū)動器輸出狀態(tài)的快速切換,實現(xiàn)電機(jī)的速度控制。PWM占空比的大小決定輸出電壓平均值,進(jìn)而決定電機(jī)的轉(zhuǎn)速。TB6612FNG芯片的邏輯真值表如表3.1所示,該器件工作時STBY引腳為高電平,IN1和IN2不變,調(diào)整PWM引腳的輸入信號可進(jìn)行電機(jī)單向速度控制,置PWM引腳為高電平,并調(diào)整IN1和IN2的輸入信號可進(jìn)行電機(jī)雙向速度控制。表中A、B兩通道的控制邏輯相同。
3.5 升降壓模塊
基于單片機(jī)的智能電動小車DE控制系統(tǒng)和驅(qū)動模塊需要的電壓不同,這要求整個設(shè)計要有電壓轉(zhuǎn)換電路[9]。本系統(tǒng)采用LM2577S升壓芯片將四節(jié)電池電壓先升壓到9V給直流電機(jī),直流電機(jī)通過單片機(jī)的控制來驅(qū)動前輪從而控制小車的運(yùn)動狀態(tài),然后AMS1117-5V降壓芯片將電壓降到5V給智能小車的控制系統(tǒng)[10]。電壓轉(zhuǎn)換電路如圖3.1113所示。
圖3.11 13 電壓轉(zhuǎn)換電路
3.5.1 LM2577的介紹
本設(shè)計用到的LM2577芯片主要是升壓的作用[11],用LM2577組成的升壓電路來把電壓升到9V供給電機(jī)用。該LM2577是單片集成電路的升壓提供所有的電源和控制功能(升壓),反激式和正激轉(zhuǎn)換器的開關(guān)穩(wěn)壓器[12]。該器件有三種不同的輸出電壓版本:12V、15V和可調(diào)式。它需要的外部元件數(shù)量最少,這些監(jiān)管機(jī)構(gòu)的成本效益和簡單易用。本設(shè)計包括在芯片上是一個3.0ANPN開關(guān)及其相關(guān)保護(hù)電路,它有電流、熱限制和欠壓閉鎖等功能。其他功能還包括一個52千赫固定頻率振蕩器,無需外部元件,軟啟動模式,以降低浪涌電流啟動時,以及電流模式控制的改進(jìn)的排斥反應(yīng)輸入電壓和輸出負(fù)載瞬變。LM2577的典型應(yīng)用有:簡單的升壓穩(wěn)壓器、反激和正向調(diào)節(jié)器和多輸出穩(wěn)壓器等。它的典型應(yīng)用原理圖如下圖所示:
圖3.1214典型升壓電路
LM2577的特性:
1)需要很少的外部元件;
2)NPN輸出開關(guān)3.0A,可以站開65V;
3)寬輸入電壓范圍:3.5V至40V;
4)對于改善瞬態(tài)電流模式操作響應(yīng),線路調(diào)節(jié)和限流;
5)52 kHz內(nèi)部振蕩器;
6)軟啟動功能降低了啟動期間的浪涌電流;
7)輸出通過開關(guān)電流限制保護(hù),欠壓鎖定和熱關(guān)斷;
LM2577的引腳圖如下所示:
圖3.13 15 LM2577引腳圖
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 第三章 硬件設(shè)計
<河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 設(shè)計安裝與調(diào)試
3.6液晶屏模塊
智能電動小車采用1602液晶屏實時的顯示小車的速度和運(yùn)動的路況,便于觀察小車的位置和運(yùn)動狀態(tài)。
1602液晶也叫1602字符型液晶(如圖3.13),是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,目前常用16*1、16*2、20*2和40*2行等的模塊。市面上字符型液晶大多是基于HD44780液晶芯片的,其控制原理完全相同,因此基于HD44780寫的控制程序可以很方便的應(yīng)用于市面上的大部分字符型液晶。
圖3.13 1602液晶顯示實物
圖3.9 1602液晶顯示引腳圖
第四章 軟件設(shè)計
基于單片機(jī)的智能電動小車控制系統(tǒng)具備自動循跡的功能,能滿足按預(yù)設(shè)軌道行走并完成給定任務(wù)的要求,其中單片機(jī)是實現(xiàn)電動智能小車控制系統(tǒng)的核心,其軟件設(shè)計是實現(xiàn)循跡功能的基本要求和關(guān)鍵環(huán)節(jié)。下面主要對主程序和循跡部分程序作簡要的介紹。
4.1主程序流程
開始
主程序運(yùn)行時部分包括先初始化(A/D采樣初始化和電機(jī)初始化)再根據(jù)單片機(jī)I/O口的輸出情況分析判斷并調(diào)用循跡函數(shù)和電機(jī)控制函數(shù)來調(diào)整小車的運(yùn)動[13]。
主程序流程圖如圖4.1所示。
A/D采樣初始化
電機(jī)初始化
根據(jù)A/D轉(zhuǎn)換結(jié)果分析黑線位置
左轉(zhuǎn)
直走
右轉(zhuǎn)
結(jié)束
圖4.1 主程序流程圖
圖5.1 主程序流程圖
主函數(shù):
void main()
{
Uart_init();
//LCD_Init();
//LCD_Clear();
InitADC();
TMOD|=0x02; /* timer 0 mode 2: 8-Bit reload */
TH0=0xff;
TR0=1;
STBY=1;
OPT_EN=1;
//LCD_Write_String(0,0,temp);//顯示第一行
//Uart_Printf(temp);
//LCD_Write_String(0,1,"Car Is Running..");
BUZZER=1;
PWM_clock(1); // PCA/PWM時鐘源為 定時器0的溢出(用方式2)做為PCA計數(shù)累加的標(biāo)志
PWM_start(0,0); // 模塊0,設(shè)置為PWM輸出,無中斷,初始占空因素為模塊0為25%模塊1為50%
PWM_start(1,0); /// 模塊1,設(shè)置為PWM輸出,無中斷,初始占空因素為模塊0為25%模塊1為50%
setSpeeds(50, 50);
while(1)
{
if(UART_flag==1)
{
Uart_Printf(str);
check(str);
i=0;
ES=1;
UART_flag=0;
}
adc_hc[0]=GetADCResult(0);
DelayMs(1);
adc_hc[1]=GetADCResult(1);
DelayMs(1);
adc_hc[2]=GetADCResult(2);
DelayMs(1);
adc_hc[3]=GetADCResult(3);
DelayMs(1);
adc_hc[3]=GetADCResult(4);
/////急停
if(RESET_KEY==0)
STBY=~STBY;
check_sensor(&adc_hc[5]);
if(START_KEY==0) ;
///////////////串口測試
Vin=GetADCResult(6);
Vin=Vin*19*2;
sprintf(temp,"Vin=%dmV\n", Vin);
Uart_Printf(temp);
}
}
4.2循跡子程序流程圖
小車進(jìn)入尋跡模式后,即開始不停地掃描與探測器連接的單片I/O口,一旦檢測到某個I/O口有信號變化,就執(zhí)行相應(yīng)的判斷程序,把相應(yīng)的信號發(fā)送給電動機(jī)從而糾正小車的狀態(tài)[14]。
循跡子程序流程圖如圖4.2所示,表4.1顯示出了小車運(yùn)動狀態(tài)和傳感器檢測結(jié)果的情況。
開始
前進(jìn)
是
掃描I/O口,判斷是否檢測黑線
否
轉(zhuǎn)向
圖4.2 循跡子程序流程圖
圖5.2 循跡子程序流程圖
表4.1 傳感器檢測結(jié)果和小車運(yùn)動狀態(tài)表
光電傳感器輸出引腳檢測狀態(tài)(1/0)
小車執(zhí)行狀態(tài)
PC0
PC1
PC2
PC3
PC4
0
0
1
0
0
高速直行
0
1
0
0
0
低速左轉(zhuǎn)
1
0
0
0
0
高速左轉(zhuǎn)
0
0
0
1
0
低速右轉(zhuǎn)
0
0
0
0
1
高速右轉(zhuǎn)
0
1
1
0
0
低速左轉(zhuǎn)
1
1
0
0
0
高速左轉(zhuǎn)
0
0
1
1
0
低速右轉(zhuǎn)
0
0
0
1
1
高速右轉(zhuǎn)
1
1
1
0
0
高速左轉(zhuǎn)
0
0
1
1
1
高速右轉(zhuǎn)
0
1
1
1
0
高速直行
1
1
1
1
1
高速直行
0
0
0
0
0
高速停車
循跡函數(shù)
void check_sensor(unsigned char adc_da[]) //將得到的AD轉(zhuǎn)換值導(dǎo)入
{
unsigned char lukou=0; //lukou變量用于路口判斷
//單個傳感器檢測到信號的情況
//2號傳感器檢測到信號,其余沒有檢測到信號
if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]>=high)&&(adc_da[3]<=low)&&(adc_da[4]<=low))
{
zhuanx(6); //調(diào)用高速前行函數(shù)
}
// 1號傳感器檢測到信號,其余沒有檢測到信號
if((adc_da[0]<=low)&&(adc_da[1]>=high)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))
{
zhuanx(3);//調(diào)用低速左轉(zhuǎn)函數(shù)
}
// 0號傳感器檢測到信號,其余沒有檢測到
if((adc_da[0]>=high)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))
{
zhuanx(1); //調(diào)用高速左轉(zhuǎn)函數(shù)
}
//3號傳感器檢測到信號,其余沒有檢測到信號
if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2
收藏