電氣工程及其自動化 基于單片機(jī)的智能小車
《電氣工程及其自動化 基于單片機(jī)的智能小車》由會員分享,可在線閱讀,更多相關(guān)《電氣工程及其自動化 基于單片機(jī)的智能小車(36頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 題 目 (中、英文) 基于單片機(jī)的智能小車 Intelligent Car Based on Single Chip Microcomputer 電氣工程及其自動化 專 業(yè) 名 稱 成 績 評 定 摘 要 科技文明的迅速發(fā)展和電子產(chǎn)品日新月異的革新,都有力的證明著“智能化”這一人類生活發(fā)展的必然大方向。隨著互聯(lián)網(wǎng)的大面積普及、傳感器電子技術(shù)的突破性發(fā)展,智能小車也被理所當(dāng)然的帶入了我們的生活。 本次設(shè)計(jì)是基于易于實(shí)現(xiàn)、操作簡單、貼近生活的實(shí)用性設(shè)計(jì)原則,采用STC89C52單片機(jī)作為主控核心
2、,同時(shí)還具備循跡模塊、避障模塊、驅(qū)動模塊、顯示模塊和電源模塊,各個(gè)模塊相互協(xié)調(diào)共同作用,最終呈現(xiàn)出一個(gè)可智能循跡、自動避障的智能化小車。并且小車還可以實(shí)時(shí)將車體與前方障礙物的距離顯示在液晶顯示器上,小車的驅(qū)動是采用L298電機(jī)專用驅(qū)動芯片,用于電機(jī)調(diào)速及正反轉(zhuǎn),高效的驅(qū)動循跡壁障小車的行駛。 關(guān)鍵詞:單片機(jī);傳感器;L298驅(qū)動芯片;液晶顯示屏。 Abstract The?rapid?development?of?scientific?and?technological?civilization?and?the?ever-changing?innovation?of?electron
3、ic?products?have?strongly?proved?the?inevitable?direction?of?human?life?development?of?"intellectualization".?With?the?wide?popularity?of?the?Internet?and?the?breakthrough?development?of?sensor?electronics?technology,?intelligent?cars[15]?have?also?been?brought?into?our?lives?as?a?matter?of?course.
4、 This?design?is?based?on?the?practical?design?principle?of?easy?realization,?simple?operation?and?close?to?life.?STC89C52?single?chip?computer?is?used?as?the?main?control?core.?At?the?same?time,?it?also?has?tracing?module,?obstacle?avoidance?module,?driving?module,?display?module?and?power?module.?E
5、ach?module?coordinates?with?each?other,?and?finally?presents?an?intelligent?car?with?intelligent?tracing?and?automatic?obstacle?avoidance.And the car can display the distance between the car body and the front obstacle on character LCD in real time. The car is driven by L298 special motor driver chi
6、p, which is used for motor speed regulation and forward and reverse, and can drive the car with track barrier efficiently[14]. Key words: Microcontroller; Sensor; L298 driver chip; LCD display screen. 目 錄 摘 要 I Abstract II 目 錄 III 1 引 言 1 1.1 智能小車的研究背景 1 1.2 小車發(fā)展的意義 1 1.3 研究策略與方
7、向 2 2 總體設(shè)計(jì) 3 2.1 整體功能介紹 3 2.2 系統(tǒng)設(shè)計(jì)方案 3 3 硬件模塊 4 3.1 硬件模塊的對比與選擇 4 3.1.1 主控模塊 4 3.1.2 循跡模塊 4 3.1.3 壁障模塊 4 3.1.4 驅(qū)動芯片 5 3.1.5 顯示模塊 5 3.1.6 電源模塊 5 3.2 芯片資料介紹 5 3.2.1 STC89C52型單片機(jī)簡介 5 3.2.2 RPR-220型光電對管簡介 6 3.2.3 HC-SR04簡介 7 3.2.4 L298N芯片簡介 7 3.2.5 LCD1602型顯示器簡介 9 4 電路圖
8、設(shè)計(jì) 10 4.1 主控模塊設(shè)計(jì) 10 4.2 循跡模塊設(shè)計(jì) 11 4.3 壁障模塊設(shè)計(jì) 11 4.4 驅(qū)動芯片設(shè)計(jì) 12 4.4.1 驅(qū)動原理 12 4.5 顯示模塊設(shè)計(jì) 13 4.6 電源模塊設(shè)計(jì) 13 5 軟件系統(tǒng)的設(shè)計(jì) 14 5.1 主程序 14 5.2 子程序 14 5.2.1 循跡模塊 14 5.2.2 壁障模塊 14 5.2.3 驅(qū)動模塊 15 5.2.4 顯示模塊 15 6 系統(tǒng)的調(diào)試 16 6.1 Keil μVision 4.0簡介 16 6.2 Altium Designer軟件 16 結(jié) 論 17 參考文獻(xiàn) 1
9、8 附錄 19 附錄1 硬件調(diào)試 19 附錄2 主要器件列示 20 附錄3 程序 21 謝辭 30 29 咸陽師范學(xué)院2019屆本科畢業(yè)論文(設(shè)計(jì)) 1 引 言 1.1 智能小車的研究背景 人工智能是一條關(guān)于幻想、可能性、實(shí)驗(yàn)和希望的長河。智能機(jī)械的主意早在十七世紀(jì)就已經(jīng)產(chǎn)生了。它的起始在十九世紀(jì)所提出的“思維定律”就得以驗(yàn)證。無人駕駛汽車的研究最早在于二十世紀(jì)出現(xiàn),其由剛開始的軍事用途逐步演變成為研究高速公路環(huán)境和城市環(huán)境的趨勢。 美國在上世紀(jì)80年代就提出自主地面車輛(ALV)計(jì)劃。在1995年,第一輛無人駕駛汽車就已經(jīng)被研發(fā)出來了。2005年由一個(gè)競
10、賽隊(duì)所研發(fā)的自動駕駛車,就贏得了美國國防部先進(jìn)項(xiàng)目的年度總決賽。隨后的幾年,無人駕駛車輛也得到了空前絕后的發(fā)展。 隨著智能車輛總趨勢的發(fā)展,我國從上世紀(jì)80年代也開始了深入研究,并且也取得了一定豐盛的成果。在1992年,第一輛真正的可以被稱之為無人駕駛的汽車就被我國的大學(xué)就研發(fā)成功了。2000年,又相繼研發(fā)出來了第四代無人駕駛汽車,進(jìn)行試驗(yàn)并取得成功,也同時(shí)刷新了當(dāng)時(shí)國內(nèi)最高的紀(jì)錄。2003年,國防科技大學(xué)和中國一汽攜手,共同研發(fā)出來紅旗無人駕駛轎車,進(jìn)行試驗(yàn)并取得成功,其所呈現(xiàn)出來的優(yōu)勢已經(jīng)大可以與世界水平相互接軌。2012年,谷歌宣布了一則消息,稱其研發(fā)的汽車可通過電腦控制,并且,它可以
11、安全行駛大約48萬千米。 在未來,智能汽車會對我們生活的各個(gè)方面產(chǎn)生深遠(yuǎn)的影響,給不可以自主駕駛的人帶來便利,改善生活方式。 1.2 小車發(fā)展的意義 智能小車的發(fā)展,距現(xiàn)在已經(jīng)有40多年的歷史了。隨著生產(chǎn)技術(shù)不斷更新?lián)Q代,智能車輛必然會成為必不可少的物品。即使國外的技術(shù)已慢慢的趨于成熟,但是直到今天,智能小車仍未大范圍的普及。很大一部分原因是智能小車在安全系數(shù)方面還存在很大的隱患。在條件成熟的情況下,其應(yīng)用主要分為以下三點(diǎn): 1.在日常生活中幫助人們完成貨物的搬運(yùn),也可以在玩具領(lǐng)域大力開發(fā)。 2.在工業(yè)中可應(yīng)用于各種危險(xiǎn)復(fù)雜的場合,執(zhí)行各種特殊情況下的任務(wù)。極大的保護(hù)人類安全。
12、3.在交通領(lǐng)域中,其避障功能會大力的減少交通事故的發(fā)生。方便人們自主出行。 能夠智能循跡和自動避障就成為了本次設(shè)計(jì)的主要目標(biāo)。其需要完成在復(fù)雜的情況下,能自主沿著設(shè)定顏色的道路行駛,并繞開路面遮擋物體。 我相信在不久的將來,科技發(fā)展的意義一定會在智能小車中全面體現(xiàn),一個(gè)安全、智能、高效的駕駛方式將會出現(xiàn)在我們每個(gè)人的面前。總之,智能小車的實(shí)現(xiàn),具有很強(qiáng)的現(xiàn)實(shí)需求和經(jīng)濟(jì)意義。 1.3 研究策略與方向 本次設(shè)計(jì)是一種基于單片機(jī)來控制的智能小車。按下開關(guān)按鈕,系統(tǒng)啟動后,單片機(jī)及時(shí)的接收循跡模塊的信息反饋,根據(jù)中間是否在黑線道路上,發(fā)出信號,調(diào)整運(yùn)行方向。同時(shí)在行駛過程中,避障模塊會的對小
13、車前方進(jìn)行探測,當(dāng)前方出現(xiàn)障礙物體,距離小于大約2厘米時(shí),做出自動掉頭并且繼續(xù)循跡的動作。期間,行速度和距前方物體的距離都可以顯示在顯示屏上,驅(qū)動模塊是采用驅(qū)動芯片控制其走或轉(zhuǎn)的狀態(tài)。本次設(shè)計(jì)的核心是單片機(jī)、超聲波傳感器、循跡模塊以及驅(qū)動電路的有效組合。 其中,智能小車是否能做到高效循跡和避障,是本次小車設(shè)計(jì)的關(guān)鍵。但是,由于軟件程序的運(yùn)行精度、硬件部分自身存在的視野盲區(qū)、硬件組裝焊接過程中的不太精確等因素,都極大的影響到小車的精準(zhǔn)化程度。所以,如何減少誤差,降低信號模糊程度,縮小視野盲區(qū)就成了所要重點(diǎn)解決的問題,這也是本次設(shè)計(jì)的難點(diǎn)所在。 設(shè)計(jì)目標(biāo)及特點(diǎn):采用模塊化的設(shè)計(jì)思路,進(jìn)行信息的
14、收集、傳送的方式均為數(shù)字信號,比模擬信號更為精準(zhǔn);單片機(jī)有預(yù)設(shè)值設(shè)定,檢測更加準(zhǔn)確;總體來說,材料比較便宜、原理簡單、實(shí)用性高、發(fā)展前景也很廣闊。 2 總體設(shè)計(jì) 2.1 整體功能介紹 本次的設(shè)計(jì)系統(tǒng)是以STC89C52單片機(jī)為中心展開。利用避障、循跡模塊作為道路信息感知來源,收集道路的大環(huán)境信息,再將信息傳入主控系統(tǒng),系統(tǒng)做出判斷,反饋回去進(jìn)行制動。主要動作過程主要可分為兩步: 第一:按下開關(guān)按鈕,系統(tǒng)啟動后,單片機(jī)及時(shí)的接收循跡模塊的信息反饋,根據(jù)中間是否在黑線道路上,發(fā)出信號,調(diào)整運(yùn)行方向; 第二:同時(shí)在行駛過程中,避障模塊會的對小車前方進(jìn)行探測,當(dāng)前方出現(xiàn)障礙物體,
15、距離小于大約2厘米時(shí),做出自動掉頭并且繼續(xù)循跡的動作。(被測物體面積應(yīng)大0.5平方米且盡量保持表面平坦)。 以上兩大步驟都是自動進(jìn)行檢測和調(diào)整的。在預(yù)先設(shè)定的模式下,小車智能運(yùn)行,整個(gè)過程中,并不需要過多的外界管理和控制。只要在調(diào)試好之后,按下啟動按鈕即可開始工作。智能程度較高,操作過程方便簡單。 2.2 系統(tǒng)設(shè)計(jì)方案 根據(jù)設(shè)計(jì)要求,本次智能小車主要包含六大模塊,如圖1所示。 電源部分 電機(jī) 超聲波壁障 單片機(jī) STC89C52 L298驅(qū)動 液晶顯示 循跡模塊 圖1 總控制系統(tǒng) 3 硬件模塊 該系統(tǒng)主要由六大模塊構(gòu)
16、成,下面介紹實(shí)現(xiàn)此系統(tǒng)功能的各個(gè)模塊的選擇方案。 3.1硬件模塊的對比與選擇 3.1.1主控模塊 方案1:采用CPLD 作為核心,它是一個(gè)可編程的邏輯器件。因?yàn)樗哂兄⑿械妮斎胼敵龇绞?,所以很大程度的提高了系統(tǒng)處理信息的速度。能夠?qū)崿F(xiàn)各種復(fù)雜的設(shè)定。這個(gè)優(yōu)點(diǎn)使得它作為大規(guī)模系統(tǒng)的核心更加適合。 方案2:采用單片機(jī)作為整個(gè)系統(tǒng)的中心。其中的STC89C52型單片機(jī),它不僅有更為優(yōu)秀的的位操作指令,它的輸入輸出口也可按位進(jìn)行尋址。其所具有的特點(diǎn)可以充分的滿足本次設(shè)計(jì)的要求。 考慮本次設(shè)計(jì)所預(yù)設(shè)的功能并不復(fù)雜繁瑣,并且整個(gè)系統(tǒng)對數(shù)據(jù)和信息的處理速度并沒有很苛刻的標(biāo)準(zhǔn)。從實(shí)用和經(jīng)濟(jì)的角度出
17、發(fā),我選擇了方案2。 3.1.2循跡模塊 方案1:采用光導(dǎo)管,又稱為光敏電阻作為探測器。其制作材料特殊,使得其在不同光線的照射或反射下,會相應(yīng)產(chǎn)生不同大小的阻值。 方案2:采用光電對管,又稱光電開關(guān)??紤]到循跡模塊工作時(shí),不能受光照的大范圍影響,因此我選擇了RPR-220光電對管作探測器。其內(nèi)部具有發(fā)射和接收裝置,有良好的回差性質(zhì),因此車身在行駛的小范圍晃動,對它穩(wěn)定工作的干擾也并不大。 3.1.3避障模塊 方案1:采用紅外光電開關(guān)進(jìn)行避障,它是傳感器的一種。利用物體對其發(fā)出光線的攔截和部分反射,將發(fā)出和收回光線強(qiáng)弱的不同轉(zhuǎn)化為電流的不同,通過對作出判斷,從而檢測對異物的有無做出判斷
18、。 方案2:采用超聲波傳感器[5]作為避障模塊。它一端定向發(fā)出射線的超聲波,遇到異物便反射回來,并被另一端接收。通過距離S、時(shí)間T和速度V之間的物理關(guān)系,計(jì)算異物距離,對位置做出判斷。 因?yàn)榉桨?易受太陽光線干擾,且超聲波傳感器的方向性更好,因此選擇方案2。 3.1.4 驅(qū)動芯片 方案1:采用SM6135W芯片控制電機(jī),它是一種集成電路。相對于其他來說規(guī)模比較大,主要應(yīng)用于中型汽車。但是其輸入控制方式是編碼,并非電平,這樣就給軟件程序設(shè)計(jì)帶來更多的困難。 方案2:采用功率三極管控制直流電機(jī)。因?yàn)槠渚€性驅(qū)動的方式,瞬時(shí)加速的性能更好。因此考慮了多方面原因最終選擇了利用L298N電機(jī)專用
19、驅(qū)動芯片,用它作為電機(jī)的驅(qū)動,電路結(jié)構(gòu)和原理更為簡單,操作更加快捷,穩(wěn)定性能好,滿足本次設(shè)計(jì)的要求。 3.1.5 顯示模塊 方案1:采用LED數(shù)碼管進(jìn)行顯示。它是由多個(gè)發(fā)光二極管組成。但是由于本次設(shè)計(jì)要同時(shí)顯示速度和距離,用它無法對數(shù)值很好的區(qū)別。 方案2:采用LCD液晶屏顯示。我們都知道液晶是一種有機(jī)復(fù)合物,它具有獨(dú)特的物理性質(zhì),致使其可通過電壓進(jìn)行控制。這樣圖像語言就會被很好的展示出來。本次設(shè)計(jì)我選用1602型液晶屏,它具有顯示清楚,容量大,顯示速度快的特點(diǎn),可以顯示數(shù)字、字母和字符。也滿足設(shè)計(jì)需要。 3.1.6電源模塊 方案1:采用蓄電池為整個(gè)系統(tǒng)供電。它儲存化學(xué)能,放出電能,
20、制動能力強(qiáng)。但是實(shí)際上它的體積通常很大,重量也較重,在小型車上使用極為的不方便。 方案2:采用干電池做電源。它是一種伏打電池,可以直接產(chǎn)生直流電。本次設(shè)計(jì)利用6節(jié)1.5 V的干電池做輸入,經(jīng)過三相穩(wěn)壓集成電路(7805芯片)變換后為整個(gè)系統(tǒng)提供能量。作為小車的外部輸入設(shè)備,它的安裝和更換更為的方便和迅速。 3.2 芯片資料介紹 3.2.1 STC89C52型單片機(jī)簡介 本次設(shè)計(jì)所使用主控制器件是STC89C52單片機(jī),它性能優(yōu)良而在電子領(lǐng)域大放異彩。它以傳統(tǒng)的51單片機(jī)[2]為基準(zhǔn),沿用了MCS-51內(nèi)核,指令代碼也互相兼容,但又在很多方面的做了調(diào)整,使得速度較之前快了近8-12倍。
21、可以說是青出于藍(lán)而勝于藍(lán)。它具有許多其他單片機(jī)所匱乏的優(yōu)點(diǎn):8位CPU、512字節(jié)的RAM、8k字節(jié)FLASH ROM等。 它的封裝形式采用雙列直插式,如圖2所示。 圖2 引腳圖示 所用引腳[6]簡介: (1)VCC(40腳):接電源本文中給單片機(jī)提供的電源為+5V; VSS(20腳):接地。 (2)XTAL2(18 腳):接外部時(shí)鐘電路的一端; XTAL1(19 腳):接另一端,構(gòu)成完整時(shí)鐘電路。 (3) RST/VPD(9 腳):接復(fù)位電路信號的輸入端。 (4)ALE/PROG(30 腳):地址鎖存允許信號端。 (5)PSEN(29 腳):程序存儲允許輸出信號端。
22、 (6)EA/Vpp(31 腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。(7)輸入/輸出引腳:P0口(P0.0~P0.7,39-32 腳);P1口(P1.0~P1.7,1-8 腳);P2口(P2.0~P2.7,21-28 腳);P3口(P3.0~P3.7,10-17 腳)。 3.2.2 RPR-220型光電對管簡介 本次循跡設(shè)計(jì)選用5個(gè)RPR-220型光電對管,如下圖3所示。 圖3 外觀圖 這種光電對管具有三大優(yōu)點(diǎn): (1)其頂端是塑料材質(zhì)、捕捉信息更加迅速; (2)內(nèi)部具有對可見光篩選的功能器件,大大減小其它光的不良干擾; (3)引腳單調(diào),用處
23、強(qiáng)大。 它在形式具有發(fā)射器和接收器各兩根引出腳,長腳接正極,短腳為接負(fù)極。此光電對管工作性能高效且穩(wěn)定。 3.2.3 HC-SR04簡介 本次設(shè)計(jì)采用HC-SR04超聲波模塊(如下圖5、6所示)。該模塊不用接觸具體物體,它有感應(yīng)測距能力,范圍為2cm-400cm。 圖5 超聲波模塊(正面) 圖6 超聲波模塊(反面) 其中VCC接5V 電源,GND接地,TRIG為輸入,ECHO為輸出。 其基本工作原理:輸入至少10us 的高電平信號,模塊感應(yīng)到后開始產(chǎn)生8個(gè)40khz 的方波脈沖。同時(shí)定時(shí)器啟動,檢測是否有回波信號。若檢測到有回波
24、信號,就發(fā)出一個(gè)持續(xù)不斷的高電平信號,它持續(xù)的時(shí)間T就是整個(gè)發(fā)出和回收總時(shí)間[8]。通過距離S、時(shí)間T和速聲速V之間的物理關(guān)系計(jì)算距離。 其中測試距離S=(T*(340M/S))/2。 3.2.4 L298N芯片簡介 本設(shè)計(jì)采用L298N(如圖7所示)芯片帶動直流電動機(jī)。 圖7 L298N外觀圖 L298N可以同時(shí)對兩個(gè)直流電機(jī)驅(qū)動[12]。其輸出電壓的調(diào)節(jié)方式有兩種:電源或由單片機(jī)提供信息。輸出最高為50V。 它是Multiwatt的封裝形式,如圖8所示: 圖8 引腳圖 部分引腳功能介紹: (1)
25、1、15、8引腳接地; (2) 4引腳接5V電壓,作電機(jī)運(yùn)作; (3) 9引腳接5V電壓,作芯片運(yùn)作; (4) 6、11引腳為使能端,一個(gè)控制一個(gè)電機(jī); (5) 5、7、10、12引腳是輸入引腳,與單片機(jī)相連接,控制輸入電平和電機(jī); (6) 2、3、13、14引腳為輸出引腳,且輸入的5、7引腳控制輸出的2、3引腳,輸入的10、12引腳控制輸出的13、14引腳。 L298的邏輯控制如下表1:其中0為低電平,1為高電平,A為同是低或高電平,In3、In4工作方式相當(dāng)于In1、In2。 輸入 輸出 V=H In1=1;In2=0 正轉(zhuǎn) In1=0;In2=1 反轉(zhuǎn) I
26、n1=In2 制動 V=L In1=In2=A 停止 表1 L298對直流電機(jī)控制的邏輯真值表 由表可知,電機(jī)有三種狀態(tài): (1) 當(dāng)V=0低電平時(shí),輸入無論什么電平,電機(jī)都停止; (2) 當(dāng)V=1高電平時(shí),輸入電平為一高一低,此時(shí)為正或者反轉(zhuǎn); (3) 當(dāng)V=1高電平時(shí),輸入為低/高電平時(shí),電機(jī)運(yùn)行。 In3、In4相當(dāng)于In1、In2。 3.2.5 LCD1602型顯示器簡介 本次設(shè)計(jì)采用LCD1602字符型液晶顯示器(如下圖9、10所示),它能顯示32個(gè)字符。 圖9 液晶屏正面 圖10 液晶屏反面 引腳
27、如下圖11所示 圖11 LCD1602引腳配置圖示 下面是對其內(nèi)部引腳的簡單說明: (1)1引腳:接地; (2)2引腳:接5V電源; (3)3引腳:對比度調(diào)整端,接電源時(shí)最低,接地時(shí)最高; (4)4引腳:RS為寄存器選擇引腳,高電平為數(shù)據(jù)、低電平時(shí)指令; (5)5引腳:R/W為讀寫信號線引腳,高電平時(shí)讀,低電平時(shí)寫; (6)6引腳:E端為使能端,當(dāng)高電平跳變成時(shí),模塊啟動; (7)7~14引腳:D0~D7為8位雙向數(shù)據(jù)線; (8)15/16引腳:背光源正極/負(fù)極。 4 電路圖設(shè)計(jì) 圖12 硬件總電路圖 硬件總電路
28、圖由各個(gè)模塊互相配合、相互協(xié)調(diào)。 4.1主控模塊設(shè)計(jì) 由STC89C52單片機(jī)、時(shí)鐘電路和復(fù)位電路三部分構(gòu)成主控模塊,其中單片機(jī)是核心部件。其電路如圖13所示。 圖13 單片主控電路 其各個(gè)部分作用: (1) 單片機(jī)作為本次設(shè)計(jì)的中心器件[7]。其工作電壓范圍:4V-5.5V,為了保證其能正常工作,通常接入5V的直流電源。 (2) 時(shí)鐘電路就是振蕩電路,決定頻率和速度。單片機(jī)的18引腳和19引腳分別為反向放大器的輸入和輸出。 (2)復(fù)位電路作用是使電路恢復(fù)到原始狀態(tài)。本次設(shè)計(jì)采用的是外部手動,在RST引腳和正電源
29、之間接入一個(gè)按鈕,當(dāng)按下復(fù)位按鈕時(shí),VCC端的5V電壓會直接加到RST端,從而完成復(fù)位操作。 4.2循跡模塊設(shè)計(jì) 循跡模塊采用5路RPR-220型光電對管[11]。電路如圖14所示。 圖14 循跡原理圖 4.3壁障模塊設(shè)計(jì) 避障采用HC-SR04超聲波模塊,電路如圖15所示。 圖15 避障接口電路[9] 4.4驅(qū)動模塊設(shè)計(jì) 驅(qū)動采用L298N控制直
30、流電機(jī),調(diào)節(jié)小車的速度,起停。路如圖16所示。 圖16電機(jī)驅(qū)動電路 4.4.1電機(jī)驅(qū)動原理 L298N芯片內(nèi)含H橋電路[10]。四個(gè)三極管位置在四條垂直線上,而電機(jī)位置在中間的橫線,如圖17。 圖17 H橋電路 它是一個(gè)控制電路,用于直流電機(jī)[4]。因?yàn)殡娐返男螤铑愃谱帜浮癏”從而被稱為“H橋驅(qū)動電路”。它有四個(gè)三極管和一個(gè)電機(jī)。四個(gè)三極管的位置為H橋的四條垂直線上,而電機(jī)所在位置為H中的橫線部分。 電機(jī)運(yùn)轉(zhuǎn)時(shí),對角線上的一對三極管導(dǎo)通。因而其轉(zhuǎn)向是由不同三極管自由組合導(dǎo)通,進(jìn)行控制。但在實(shí)際應(yīng)用中,通常在其基礎(chǔ)上增加了四個(gè)二極
31、管來保護(hù)電路,讓其正常工作。 4.5顯示模塊設(shè)計(jì) 顯示采用LCD1602液晶顯示器。具體電路圖如圖18所示。 圖18顯示電路 4.6電源模塊設(shè)計(jì) 電源部分的設(shè)計(jì)主要采用7805芯片(三相穩(wěn)壓集成電路),它可以輸出1安培以上的電流。本次設(shè)計(jì)選取了6節(jié)干電池作為輸入電源,如圖18所示: 圖18電源接口電路 5 軟件系統(tǒng)的設(shè)計(jì)流程 5.1 主程序 本次設(shè)計(jì)利用C語言進(jìn)行編程。主程序[13]流程如圖18所示。 圖19主程序流程圖 5.2 子程序 5.2.1 循跡模塊 系統(tǒng)啟動后,單片機(jī)及時(shí)的接收循跡模塊的
32、信息反饋,根據(jù)中間是否在黑線道路上,發(fā)出信號,調(diào)整運(yùn)行方向。 該模塊的中心指令[1]為: static bit flag = 0;→IO口定義 void che_90_180_break(uchar dat);→循環(huán)等待中間尋跡傳感器到黑線上 uchar i_z = 0;→若中間的尋跡傳感器到了黑線,小車前進(jìn) 5.2.2 避障模塊 避障模塊會的對小車前方進(jìn)行探測,當(dāng)前方出現(xiàn)障礙物體,距離小于大約2厘米時(shí),做出自動掉頭并且繼續(xù)循跡的動作。 該模塊的核心如下: sbit TX = P3^2; →超聲波發(fā)射 sbit RX = P3^3; →回波接收 距離公式為: S=(t
33、ime*1.7)/100;→計(jì)算出來是cm 5.2.3 驅(qū)動模塊 本設(shè)計(jì)采用專用驅(qū)動芯片帶動直流電動機(jī),其動作方式根據(jù)前兩個(gè)模塊提供的信息作為號令。 主要方式有以下幾種: void go( );→前進(jìn) void back( );→后退 void left( );→左轉(zhuǎn),只有一個(gè)輪子動 void left_s( );→左轉(zhuǎn),左邊輪子后退,右邊輪子前進(jìn) void stop( );→停止 void right( );→右轉(zhuǎn),只有一個(gè)輪子動 void right_s( );→右轉(zhuǎn),左邊輪子前進(jìn),右邊輪子后退 5.2.4 顯示模塊 顯示模塊的實(shí)現(xiàn)相對簡單,是將行駛過程中小車的速度
34、和與異物距離進(jìn)行跟隨顯示。 該模塊的主要指令有: LCD1602Printf(1,0,"Lcd1602 Normal");→測試顯示平功能正常 while(RX)xunnji();→當(dāng)RX為1計(jì)數(shù)并等待 return Conut();→計(jì)算單位為cm和m/s 6 應(yīng)用的軟件和調(diào)試 6.1 Keil μVision 4.0簡介 Keil μVision 4.0軟件具有編輯、連接、調(diào)試、仿真和函數(shù)庫管理等多種功能,可利用性高。在本次設(shè)計(jì)中硬件電路采用模塊化設(shè)計(jì),電路連接簡單。 使用步驟如下: (1) 創(chuàng)建工程:單擊“Project→New μV
35、ision4 Project→New”項(xiàng)目,輸入工程名; (2) 新建文件:單擊“File→New”項(xiàng)目,輸入程序并輸入工程文件名和擴(kuò)展名以后綴“.c”保存; (3)添加文件:單擊右鍵,點(diǎn)擊“Source Group1→Add File to Group‘Source Group1”,添加文件; (4)編譯連接生成目標(biāo)代碼,進(jìn)行硬件調(diào)試。 6.2 Altium Designer軟件 本次利用Altium Designer Summer09軟件[3]用作原理圖文件的繪制。它還兼容了Protel系列軟件的文件導(dǎo)入功能,滿足本次設(shè)計(jì)需要。 具體原理圖繪制使用步驟如下: (1)創(chuàng)建工程
36、:單擊左上角“File→New →Schematic”創(chuàng)建新的工程; (2)添加元器件:右側(cè)菜單欄“Labraries”項(xiàng)目,添加所用元器件,雙擊可將其拖入編輯區(qū)域; (3)線路連接:將元器件位置排版好,找到劃線標(biāo)志進(jìn)行連線; (4)保存文件:單擊“File→save”以后綴“.sch”保存。 結(jié) 論 此次畢業(yè)設(shè)計(jì),從開始找老師選題、籌備、開題、正式設(shè)計(jì)制作到基本完成歷經(jīng)大半年時(shí)間。我做的是一個(gè)智能小車,要做到軟硬件的有效結(jié)合并要能實(shí)現(xiàn)我所預(yù)期的功能,對我來說,是一個(gè)很大的困難。經(jīng)過大量的閱讀相關(guān)文獻(xiàn)資料和老師同學(xué)的建議,綜合之后,我決定采用模塊化設(shè)計(jì)思路
37、。在我個(gè)人的能力范圍之內(nèi),做一個(gè)既簡單又實(shí)用的小型智能車輛控制系統(tǒng)。 設(shè)計(jì)中,將一個(gè)較為復(fù)雜的系統(tǒng),拆分成較簡單現(xiàn)實(shí)的子系統(tǒng)。經(jīng)過實(shí)驗(yàn)驗(yàn)證智能小車基本符合設(shè)計(jì)目標(biāo),達(dá)到預(yù)期功能。雖然小車循跡和避障功能還不夠精確,在硬件組裝及焊接過程中也存在較大的誤差,但是卻實(shí)實(shí)在在的讓我體會到了只有勇于失敗的能力,創(chuàng)造才會被賦予價(jià)值。 由于費(fèi)用和時(shí)間的關(guān)系,在本次設(shè)計(jì)中所使用到的器件價(jià)格相對低廉、精度也不是很高,但是足以說明問題,并達(dá)到了智能化的要求。在現(xiàn)實(shí)應(yīng)用中,我們可以選用功能更強(qiáng)、精度更高、穩(wěn)定性更好的器件來實(shí)現(xiàn)所期望的高標(biāo)準(zhǔn)、高要求。 參考文獻(xiàn) [1]郭天祥.51單片機(jī)C程序教程[
38、M].北京:電子工業(yè)出版社,2009.1. [2]郭文川.MCS-51單片機(jī)原理、接口及應(yīng)用[M].北京:電子工業(yè)出版社,2013.1. [3]閆勝利.Altium?Designer實(shí)用寶典—原理圖與PCB設(shè)計(jì) [M].北京:電子制作,2007.8. [4]陳隆昌,閻治安,劉新正.控制電機(jī)(第四版)[M].西安:西安電子科技大學(xué)出版社,2015.4. [5]陶紅艷,余成波.傳感器與現(xiàn)代檢測技術(shù)[M].北京:清華大學(xué)出版社,2009. [6]來清民.傳感器與單片機(jī)接口及實(shí)例[M].北京:北京航空航天大學(xué)出版社,2008. [7]馬宏斌,畢建興,趙家瑩.基于單片機(jī)的智能小車避障系統(tǒng)的設(shè)
39、計(jì)與實(shí)現(xiàn)[J].信息記錄材料,2018.10.第19卷第10期:77-79. [8]鄭志聰, 超聲波測距技術(shù)[J].?福建農(nóng)機(jī),2008(2):28-29. [9]馬 鐸,黨小娟,張 慧. 超聲波智能避障小車的設(shè)計(jì)與實(shí)現(xiàn) [J].企業(yè)科技創(chuàng)新,2018.09 期(總第 443 期):87-88. [10]王晶.智能小車運(yùn)動控制技術(shù)的研究[D]. 武漢:武漢理工大學(xué) .2009. [11]余熾業(yè),宋躍,雷瑞庭.基于STC12C5A60S2 的智能循跡小車[J].實(shí)驗(yàn)室研究與探索,2014.11:46-49. [12]楊代強(qiáng).基于單片機(jī)的智能玩具電動車的設(shè)計(jì)與實(shí)現(xiàn) [J] 電子科技大學(xué)碩
40、士學(xué)位論文. [13]顧志華,戈惠梅,徐曉慧,等.基于多傳感器的智能小車避障系統(tǒng)設(shè)計(jì) [J].南京師范大學(xué)學(xué)報(bào),2014,14(1):12-17. [14]Guo-an ZHANG,Yu WANG.A Wireless Control System to Manipulate Smart Car[J].AMEME 2017.2017.10(28):156-160 [15]Ying Chen,Lei Wu.The Strategy of Electric Vehicle Fast-charging on Correcting Slope Iteratively[J].IAEAC 2017.
41、2017.03(40):222-226 附錄 附錄1硬件調(diào)試 小車外觀圖片 小車運(yùn)行中對距離和速度顯示 小車循跡系統(tǒng) 小車避障系統(tǒng) 附錄2主要器件列示 元器件類型 編號 大小 數(shù)量 電解電容 C1 10uf 1 瓷片電容 C5 0.1uf 1 瓷片電容 C2, C3 20pf 2 電解電容 C4 470uF 1 發(fā)光二極管 D1, D6, D11, D12, D13 LED 5 貼片二極管 D2, D3, D4, D5, D7, D8, D9,
42、 D10 IN4007 8 發(fā)光二極管 D14 LED 1 2排座 J1, J2 JP2 2 4排針 J3 JP4 1 電源接口 J4 Power 1 循跡接口 P1, P2 Header 7 2 超聲波接口 P3 Header 4 1 電阻 R1, R2, R4, R10 R16,R21,R23 2k 7 電阻 R5, R8, R11, R14, R17,R20 10K 6 電阻 R6, R9, R12, R15, R18 200 5 電位器 R3 10k 1 觸點(diǎn)按鍵 RST1 SW-PB 1 自
43、鎖按鍵
SW1
sw-灰色
1
驅(qū)動芯片
U1
L298
1
電壓比較器
U2
LM339
1
循跡頭
U3, U4, U5, U6, U8
ST178
5
單片機(jī)
U7
STC89c52
1
比較器
U9
lm393
1
穩(wěn)壓芯片
VR1
LM7805
1
直流電機(jī)
2
超聲波模塊
HC-SR04
1
液晶顯示
LCD1602
1
晶振
Y1
12M
1
附錄3程序
#include
44、nclude
45、 //第2個(gè) sbit xun_z = P0^2; //第3個(gè) sbit xun_r = P0^1; //第4個(gè) sbit xun_rr = P0^0; //第5個(gè) /*LN298電機(jī)驅(qū)動IO口定義*/ sbit qu_ll = P2^0; //左邊電機(jī)控制IN1 sbit qu_zl = P2^1; //左邊電機(jī)控制IN2 sbit qu_zr = P2^2; //右邊電機(jī)控制IN1 sbit qu_rr = P2^3; //右邊電機(jī)控制IN2 #define RS_H RS = 1 #define RS_L
46、 RS = 0 #define RW_H RW = 1 #define RW_L RW = 0 #define EN_H EN = 1 #define EN_L EN = 0 #define READ_DATA P1 void DelayMs(unsigned int z) //1ms延時(shí)函數(shù) { unsigned int x; for(;z>0;z--) for(x=110;x>0;x--); } void LCDWriteCom(unsigned char com) { RS_L
47、; RW_L; READ_DATA = com; EN_H; DelayMs(5); EN_L; } void LCDWriteData(unsigned char dat) { RS_H; RW_L; READ_DATA = dat; EN_H; DelayMs(5); EN_L; } void LcdWriteStr(unsigned char hang,unsigned char add,char*s) { unsigned char i; unsigned char length = 0; if(hang=
48、=1)
LCDWriteCom(0x80+add);
else
LCDWriteCom(0x80+0x40+add);
length = strlen(s);
for(i=0;i 49、0+0x40+add);
LCDWriteData(Ch);
}
void Lcd1602Printf( unsigned char x, unsigned char y, unsigned char *p,...)
{
char idata LcdBuf[17];
va_list ap;
va_start(ap, p);
vsprintf(LcdBuf,p,ap);
va_end(ap);
LcdWriteStr(x,y,LcdBuf);
}
void Init_1602(void)
{
LCDWriteCom(0x38);
LCDW 50、riteCom(0x0c);
LCDWriteCom(0x06);
LCDWriteCom(0x01);
DelayMs(2);
LCD1602Printf(1,0,"Lcd1602 Normal"); //測試液晶1602顯示
}
static void StartModule(void) //觸發(fā)一個(gè)高電平時(shí)間
{
TX=1; //啟動一次模塊
_nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_();
_nop_();_nop_(); _nop_(); _nop_() 51、; _nop_(); _nop_();_nop_();
_nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_();
TX=0;
}
static int Conut(void)
{
uint S,time;
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出來是cm
if((S>=500)||flag==1)
flag = 0;
S = 888;
}
return S;
}
int GetDis(voi 52、d)
{
StartModule(); //給一個(gè)高電平觸發(fā)脈沖
while(!RX)xunnji(); //當(dāng)RX為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(RX)xunnji(); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0;
return Conut(); //計(jì)算
}
static void Timer0Init(void); //定時(shí)器初始化
{
TMOD &= 0xf0;
TMOD |= 0x01; //設(shè)T0為方式1,
TH0=0;
TL0=0;
ET0=1; 53、 //允許T0中斷
EA=1; //開啟總中斷
}
void CsbInit(void)
{
Timer0Init();
}
// 定時(shí)器0中斷服務(wù)函數(shù)
void zd0() interrupt 1 //T0中斷用來計(jì)數(shù)器溢出,超過測距范圍
{
flag=1; //中斷溢出標(biāo)志
}
void go() //小車前進(jìn)函數(shù)
{
qu_ll = 1;
qu_zl = 0;
qu_zr = 0;
qu_rr = 1;
}
void back() //小車后退函數(shù)
{
q 54、u_ll = 0;
qu_zl = 1;
qu_zr = 1;
qu_rr = 0;
}
void left() //小車左轉(zhuǎn)函數(shù) 只有一個(gè)輪子動
{
qu_ll = 0;
qu_zl = 0;
qu_zr = 0;
qu_rr = 1;
}
void left_s() //小車左轉(zhuǎn)函數(shù) 左邊輪子后退 右邊輪子前進(jìn)
{
qu_ll = 0;
qu_zl = 1;
qu_zr = 0;
qu_rr = 1;
}
void stop() //小車停止函數(shù)
{
55、qu_ll = 0;
qu_zl = 0;
qu_zr = 0;
qu_rr = 0;
}
void right() //小車右轉(zhuǎn)函數(shù) 只有一個(gè)輪子動
{
qu_ll = 1;
qu_zl = 0;
qu_zr = 0;
qu_rr = 0;
}
void right_s() //小車右轉(zhuǎn)函數(shù) 左邊輪子前進(jìn) 右邊輪子后退
{
qu_ll = 1;
qu_zl = 0;
qu_zr = 1;
qu_rr = 0;
}
void che_90_180_break(uchar dat)
{ 56、
uchar i_z = 0;
while(1) //循環(huán)等待中間尋跡傳感器到黑線上
{
if(xun_z == 0) //若中間的尋跡傳感器到了黑線,小車前進(jìn)了
{
i_z++; //消去干擾
if(i_z >= 10) //10次后就確定中間傳感器到黑線上
{
if(dat == L) //若是左轉(zhuǎn)90度就按右轉(zhuǎn)的方法制動
right_s();
else
left_s(); //若是右轉(zhuǎn)90度就按左轉(zhuǎn)的方法制動
DelayMs(50);
57、 go();
break; //break退出while(1)這個(gè)死循環(huán)
}
}
else //沒有在黑線上就將i_z變量清零
{
i_z = 0;
}
}
}
void left_s_90_while() //小車向左轉(zhuǎn)90度
{
go(); //前進(jìn)使黑線在小車的中間
DelayMs(120);
left_s();
DelayMs(180);
che_90_180_break(L);
}
void right_s_90_while() //小車向右轉(zhuǎn)90度
58、{
go(); //前進(jìn)讓黑線在小車的中間
DelayMs(120);
right_s();
DelayMs(180);
che_90_180_break(R);
}
void xunnji() // 白線為 1 黑線為 0
{
if((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_r==1) && (xun_rr==1))
{
go(); //小車前進(jìn)
}
if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun 59、_r==0) && (xun_rr==0))
{
stop();
}
if(((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_rr==1)) ||
((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_rr==1)) ||
((xun_ll==1) && (xun_z==1) && (xun_rr==0)) ||
((xun_ll==1) && (xun_l==1) && (xun_z==1) && ( (xun_rr==0)))
60、
{
right();
}
if(((xun_ll==1) && (xun_l==0) && (xun_r==1) && (xun_rr==1)) ||
((xun_ll==0) && (xun_l==0) && (xun_z==1) && (xun_rr==1)) ||
((xun_ll==0) && (xun_l==1) && && (xun_r==1) && (xun_rr==1)))
{
left();
}
if((xun_ll==1) && (xun_z==0) && (xun_rr==0))
{
61、go();
DelayMs(1);
if((xun_ll==1) && (xun_z==0)&& (xun_rr==0))
{
right_s_90_while();
}
}
if((xun_ll==0) && (xun_l==0) && (xun_rr==1))
{
go();
DelayMs(1);
if((xun_ll==0) && (xun_l==0) && (xun_rr==1))
{
left_s_90_while();
}
}
}
void main 62、(void)
{
int Dis = 0;
InitTimer();
Init_1602();
CsbInit();
Dis = GetDis();
while(1)
{
xunnji();
if(bTime_500Ms)
{
bTime_500Ms = 0 ;
Dis = GetDis();
Lcd1602Printf(2,3,"Dis = %4.2f",Dis/100.0);
if(Dis < 24)
{
right_s();
DelayMs(500);
}
}
}
}
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案