• 方案介紹
    • 一、前言
    • 二、系統(tǒng)設(shè)計(jì)
    • 三、硬件設(shè)計(jì)
    • 四、軟件設(shè)計(jì)
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于STM32設(shè)計(jì)的避障尋跡小車

02/12 09:27
3548
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

更多詳細(xì)資料請(qǐng)聯(lián)系.docx

共1個(gè)文件

一、前言

1.1 項(xiàng)目背景

根據(jù)美國(guó)玩具協(xié)會(huì)在一項(xiàng)研究中,過(guò)去幾年全球玩具銷售增長(zhǎng)與GDP的世界平均水平大致相同。但全球玩具市場(chǎng)的內(nèi)部結(jié)構(gòu)已經(jīng)占據(jù)了巨大的位置變化:傳統(tǒng)玩具的市場(chǎng)份額正在下降,高科技電子玩具正在蓬勃發(fā)展。全球玩具市場(chǎng)的高科技電子游戲2010年的年銷售額增長(zhǎng)了67%,但傳統(tǒng)玩具的年銷售額僅增長(zhǎng)了1%。

2001年,十大最受歡迎的圣誕玩具之一有電子玩具。智能系統(tǒng)之前在很多領(lǐng)域,如智能工程、IT、集成引擎及行業(yè)整合正在討論,就必須變得更聰明??梢?jiàn)傳統(tǒng)的控制概念不能滿足用戶的需求,并與這些傳統(tǒng)的控制相關(guān)的智能控制提高了一般的優(yōu)勢(shì)和較好滿足人的需求。人工智能計(jì)算機(jī)的不斷發(fā)展,智能控制領(lǐng)域取得了很大的創(chuàng)新。因此,找到并使用遠(yuǎn)程控制和智能技術(shù)非常重要。而且市場(chǎng)價(jià)值超群。

智能汽車是一種識(shí)別的多功能智能設(shè)備決策的自主水平的機(jī)械設(shè)計(jì),信息技術(shù)和人工智能領(lǐng)域的主動(dòng)管理的環(huán)境中。它可分為三個(gè)部分:一個(gè)驅(qū)動(dòng)部件,所述檢測(cè)傳感器和所述控制器的一部分。分別在物流運(yùn)輸方面發(fā)揮軍事,安全檢查和破壞程度進(jìn)行評(píng)估的應(yīng)用的作用。

image-20230208170226707

image-20230208170247444

1.2 小車的現(xiàn)狀

【1】國(guó)內(nèi):在上世紀(jì)80年代末,中國(guó)開(kāi)始研究智能車,幾十年的研究后,取得了一些階段性成果。7B.8智能車輛系統(tǒng)。該系統(tǒng)是由南京理工大學(xué)、北京理工大學(xué)、浙江大學(xué)、國(guó)防科技大學(xué)、清華大學(xué)等多所院校聯(lián)合硏制,屬于軍用室外智能車輛,于1995年底通過(guò)驗(yàn)收。

【2】國(guó)外:智能車輛的研發(fā)在國(guó)外的很多機(jī)構(gòu)都得到了很大的創(chuàng)新,尤其是在科學(xué)和工業(yè)設(shè)計(jì)等領(lǐng)域,獲得了更進(jìn)一步的擴(kuò)展,研發(fā)技術(shù)已經(jīng)達(dá)到了很高的水平,其中具有代表性的智能車輛包括:

美國(guó)卡內(nèi)基梅隆大學(xué)機(jī)器人研究所研制的Navlab系列智能車輛系統(tǒng), 該系統(tǒng)的車體采用 Pontiac運(yùn)動(dòng)跑車,其傳感器系統(tǒng)包括視覺(jué)、差分GPS系統(tǒng)。

德國(guó) Vamos—P智能車輛系統(tǒng)該傳感器系統(tǒng)包括兩個(gè)有源雙筒望遠(yuǎn)鏡系統(tǒng)配置PZSA相機(jī)4種顏色,三個(gè)線性加速度計(jì)和角慣性傳感器改變狀態(tài)轉(zhuǎn)速計(jì)和發(fā)動(dòng)機(jī)的測(cè)量裝置。驅(qū)動(dòng)方向包括發(fā)動(dòng)機(jī)轉(zhuǎn)矩,液壓制動(dòng)器和電子節(jié)氣門。

二、系統(tǒng)設(shè)計(jì)

2.1 主控系統(tǒng)設(shè)計(jì)

根據(jù)設(shè)計(jì)要求,控制器主要用在控制電機(jī),并通過(guò)有關(guān)的傳感器處理通道的軌道信息,將處理信號(hào)傳送給控制器,然后通過(guò)控制器可以進(jìn)行相應(yīng)的處理,以此用來(lái)實(shí)現(xiàn)電機(jī)的前進(jìn)和后退,確保在實(shí)驗(yàn)范圍內(nèi)能夠進(jìn)行躲避障礙和尋找痕跡還有加速減速等等動(dòng)作。

供應(yīng)鏈管理為核心的系統(tǒng),在汽車的道路的控制,以達(dá)到他們的目標(biāo)。 我們的系統(tǒng)進(jìn)行完整的分析,關(guān)鍵要實(shí)現(xiàn)自動(dòng)車輛控制,但此刻,微控制器已經(jīng)顯示出它的優(yōu)勢(shì)是簡(jiǎn)單,方便,快捷。

STM32具有低功耗,高時(shí)鐘速度和短中斷延遲的特點(diǎn)。 CORTEX-M3是一款32位ARM7系列處理器,包括處理器內(nèi)核,內(nèi)存單元,總線接口和跟蹤調(diào)試單元。本設(shè)計(jì)中使用的STM32 F103ZET6微控制器直接用于最小的開(kāi)發(fā)板,便于學(xué)習(xí)和使用。STM32F103功能及特點(diǎn)。

功能包含內(nèi)核(ARM 32位的Cortex?-M3 CPU)、儲(chǔ)存器、時(shí)鐘、復(fù)位和電源管理、 低功耗、 2個(gè)12位模數(shù)轉(zhuǎn)換器, 1μs轉(zhuǎn)換時(shí)間(多達(dá)16個(gè)輸入通道)、 DMA、多達(dá)80個(gè)快速I/O端口、 調(diào)試模式、多達(dá)7個(gè)定時(shí)器、多達(dá)9個(gè)通信接口、CRC計(jì)算單元, 96位的芯片唯一代碼。

特點(diǎn)是集成了強(qiáng)大的硬件系統(tǒng),使其在工作中消耗更少的電力。它是一個(gè)16/32位混合編碼指令,可以與拇指指令兼容。NVIC是CORTEX-M3的緊密耦合部分,可配置240個(gè)中斷并分為256個(gè)優(yōu)先級(jí),CORTEX-M3還使用尾鏈技術(shù),使得背對(duì)背中斷響應(yīng)僅6個(gè)時(shí)鐘周期,因此中斷響應(yīng)更迅速。

MPU是處理器中的存儲(chǔ)模塊,通過(guò)定義和檢查存儲(chǔ)區(qū)域的屬性來(lái)實(shí)現(xiàn)存儲(chǔ)功能。調(diào)試訪問(wèn)接口可以用作串口或串行JTAG調(diào)試端口。串口調(diào)試端口只能通過(guò)時(shí)鐘和數(shù)據(jù)兩個(gè)引腳進(jìn)行調(diào)試,以保證低成本。

STM32處理器分為標(biāo)準(zhǔn)化、增強(qiáng)型和最新產(chǎn)品。STM32 F101為標(biāo)準(zhǔn)型,頻率為36兆赫 ;STM32 F103是增強(qiáng)型,頻率為72兆赫,STM32 F105和STM32 F107是最新的系列產(chǎn)品,增加了USB和以太網(wǎng)接口。

依據(jù)如上的分析,選擇P89C51 RAM單片機(jī)為這個(gè)設(shè)計(jì)的主要控制裝備,使用STM32芯片作為設(shè)計(jì)的開(kāi)發(fā)芯片。由于其存儲(chǔ)性能強(qiáng),功耗小,能滿足復(fù)雜編程功能的要求,且成本較低,對(duì)于這種設(shè)計(jì)來(lái)說(shuō)是綽綽有余。

2.2 電機(jī)驅(qū)動(dòng)模塊

2.2.1 供電方式

方案一:采用單電源同時(shí)提供單片機(jī)和直流電機(jī)。該方案的優(yōu)點(diǎn)是減小了機(jī)身的重量,操作簡(jiǎn)單。這會(huì)讓單片機(jī)的波動(dòng)變得很大,影響到單片機(jī)的性能,穩(wěn)定性變得不高。

方案二:采用雙電源供電,通過(guò)兩個(gè)外界移動(dòng)電源進(jìn)行供電,該方案的優(yōu)點(diǎn)是減小了波動(dòng),穩(wěn)定性更好,可以更好地操作汽車。

方案三:多電池串聯(lián)供電。由于單片機(jī)的工作電壓在5V左右,直流電壓也小,可以通過(guò)電池供電,使電池串聯(lián)連接,保證了系統(tǒng)的正常運(yùn)行。

綜合考慮,使用第二方案。

2.2.2 驅(qū)動(dòng)電機(jī)方式

功率晶體管用作功率放大器輸出信號(hào)以驅(qū)動(dòng)DC電動(dòng)機(jī)。 線性控制電路的結(jié)構(gòu)比較簡(jiǎn)單,原理簡(jiǎn)單,加速度強(qiáng)。 方案H橋達(dá)林頓配置。 達(dá)林頓微處理器控制,可調(diào)孔隙率操作狀態(tài)切換時(shí),電機(jī)速度的更精確的控制。

從電路的管道飽和效率關(guān)模式是非常高的。H型橋式電路確保了速度和方向的簡(jiǎn)單控制。電子管的開(kāi)關(guān)速度非??欤€(wěn)定性很強(qiáng)。它是一種廣泛應(yīng)用的PWM調(diào)速技術(shù)?,F(xiàn)在市場(chǎng)上有很多芯片。我選擇了L298N。該實(shí)施例具有優(yōu)異的特性的頭速度,平滑控制,一個(gè)寬的速度范圍,大的過(guò)載可承受頻繁的沖擊載荷也可以實(shí)現(xiàn)無(wú)級(jí)地頻繁很快開(kāi)始,制動(dòng)和扭轉(zhuǎn)等。 因此,我們決定使用的功率晶體管作為發(fā)動(dòng)機(jī)功率放大器DC的輸出控制。

img

圖2.1.1 H橋式電路

img

圖2.2.2 L298N

2.2.3 電機(jī)驅(qū)動(dòng)選擇

方案一:DC電機(jī)的使用具有硬件電路設(shè)計(jì)簡(jiǎn)單的優(yōu)點(diǎn)。當(dāng)使用額定的直流電壓時(shí),速度變化不大,調(diào)速性能很好,性價(jià)比很高。對(duì)于小車,它可以很好地控制。

方案二:步進(jìn)電機(jī),步進(jìn)電機(jī)可實(shí)現(xiàn)精確的轉(zhuǎn)角輸出,只要應(yīng)用合適的脈沖序列,電機(jī)就可以按照人們預(yù)定的速度或方向連續(xù)旋轉(zhuǎn),控制速度很慢,但軟件程序的編程是一個(gè)比直流電機(jī)更復(fù)雜。

所以我選擇方案一,好控制且性價(jià)比高。

2.3 循跡模塊

方案一:這個(gè)模塊使用了兩個(gè)紅外對(duì)管(如圖2.3),分別放在小車車前左右兩邊,由光電開(kāi)關(guān)的檢測(cè)情況可知,來(lái)控制小車的行駛和轉(zhuǎn)向,通過(guò)測(cè)試表明,只要合理的安排兩個(gè)光電開(kāi)關(guān)的位置,就可以達(dá)到循跡的功能。

方案二:使用三對(duì)紅外管,其中的兩個(gè)紅對(duì)外管可以檢測(cè)到黑線。 在黑線軌道之后,汽車將立即調(diào)整到中心燈開(kāi)關(guān)的方向,再次檢測(cè)黑線,即返回軌道。那么它就會(huì)再次沿著黑線行駛。但是,現(xiàn)場(chǎng)的觀察表明,小車在尋機(jī)的過(guò)程中會(huì)左右搖擺,雖然可以正確的尋跡,但是成本和穩(wěn)定性都無(wú)法和第二方案相比較。

通過(guò)比較,我選取第二種方案來(lái)實(shí)現(xiàn)循跡

img

圖2.3 紅外對(duì)管

2.4 避障模塊

2.4.1 紅外線避障

方案一:在小車的中央使用紅外線管。安裝容易,可以檢測(cè)障礙物的存在,但很難確定汽車是否會(huì)在水平方向上與障礙物碰撞,不容易使汽車做出準(zhǔn)確的轉(zhuǎn)向反應(yīng)。最終沒(méi)有采納這個(gè)方案。

方案二:車輛的前部的兩側(cè)布置了兩個(gè)紅外線管,平行于機(jī)器方向。 它可以精確地確定車輛和障礙,和及時(shí)響應(yīng)的相對(duì)距離和方向。缺點(diǎn)是對(duì)硬件要求較高,且成本比較大。

方案三:在小車的右側(cè)使用紅外線管。通過(guò)對(duì)該方案的測(cè)試,可以避免障礙物,充分利用資源而不浪費(fèi)。但是在右側(cè)會(huì)有部分死角,不利于小車完美避障。最終沒(méi)有采納這個(gè)方案。

方案四:把一個(gè)包括有舵機(jī)的紅外線管裝置在小車的頭部。借助旋轉(zhuǎn)的功能可以全方位的了解四周的情況并及時(shí)作出反應(yīng),缺點(diǎn)就是我們需要安裝舵機(jī),并編寫多個(gè)程序使它運(yùn)行,這就加大了工作負(fù)擔(dān)。并且需要制作不宜過(guò)重的舵機(jī),還要是其旋轉(zhuǎn)角度為最佳,工作過(guò)程過(guò)于麻煩,故未選擇該方案。

所以采用第二種。

2.4.2 超聲波避障

方案一:串聯(lián)電阻轉(zhuǎn)速控制系統(tǒng)。

方案二:靜態(tài)可控整流器。V-M系統(tǒng)簡(jiǎn)稱。

方案三:脈寬調(diào)制系統(tǒng)。

旋轉(zhuǎn)式交流轉(zhuǎn)換系統(tǒng)由交流發(fā)電機(jī)驅(qū)動(dòng),交流發(fā)電機(jī)改變直流電動(dòng)機(jī),并由需要速度控制的直流電動(dòng)機(jī)發(fā)電機(jī)供電。發(fā)電機(jī)的輸出電壓可以通過(guò)調(diào)整發(fā)電機(jī)勵(lì)磁電流和通過(guò)調(diào)節(jié)電機(jī)的速度被改變。

如果激勵(lì)變化的側(cè)電流 輸出電壓的極性是從電機(jī)的極性不同。因此,G-M系的可逆操作可以是相對(duì)簡(jiǎn)單的。 該系統(tǒng)需要一個(gè)可變旋轉(zhuǎn)速度旋轉(zhuǎn)單元,其包括具有相同容量的電動(dòng)機(jī)速度控制的至少兩個(gè)旋轉(zhuǎn)機(jī)械。它還需要一個(gè)激勵(lì)發(fā)生器。但他的裝備很笨重。成本高,效率低,維護(hù)不實(shí)用。而且由于技術(shù)落后,因此不需要擱置。

V-M系統(tǒng)是直流調(diào)速系統(tǒng)的主要形式。 有許多類型,例如:?jiǎn)蜗啵?a class="article-link" target="_blank" href="/baike/1572836.html">三相或更多,相位,半波,交替,半控制,總控制等,它們可以實(shí)現(xiàn)平穩(wěn)的速度控制。 V-M系統(tǒng)的缺點(diǎn)是晶閘管的單向?qū)щ娦浴K辉试S反向電流引起系統(tǒng)的可逆操作。另一個(gè)缺點(diǎn)是高操作和維護(hù)條件。最后,如果系統(tǒng)以低速運(yùn)行,其功率將非常低,此時(shí)產(chǎn)生的高諧波電流將損壞附近的電氣設(shè)備。

晶閘管與相位無(wú)關(guān)。當(dāng)晶閘管跳閘時(shí),電源電壓會(huì)施加到電機(jī)上。當(dāng)晶閘管斷開(kāi)時(shí),直流電源與電動(dòng)機(jī)斷開(kāi)。電動(dòng)機(jī)繼續(xù)在二極管中流動(dòng),并且通過(guò)它的電壓接近零。脈沖寬度調(diào)制(PWM)。脈沖具有恒定的周期,并且僅改變?yōu)榫чl管指定的時(shí)間,即通過(guò)改變脈沖的寬度來(lái)調(diào)節(jié)連續(xù)速度。

與V-M系統(tǒng)相比,PWM調(diào)速系統(tǒng)具有以下優(yōu)點(diǎn):

(1)由于PWM速度控制系統(tǒng)的高頻開(kāi)關(guān),只能通過(guò)發(fā)動(dòng)機(jī)電感濾波器獲得小的DC紋波電流。由于上述現(xiàn)有的信號(hào)系統(tǒng),V-M的系統(tǒng),具有相同的平均電流相對(duì)小的熱機(jī)。

(2)由于開(kāi)關(guān)頻率高,如果快速響應(yīng)匹配到發(fā)動(dòng)機(jī),該系統(tǒng)能夠是寬帶,響應(yīng)速度快,因此,良好的性能,動(dòng)感較強(qiáng)的抗干擾能力。

根據(jù)上述的綜合比較,和發(fā)動(dòng)機(jī)控制能力,并在這種設(shè)計(jì)中的DC馬達(dá)的速度調(diào)節(jié)的發(fā)展方向,該設(shè)計(jì)依賴于調(diào)節(jié)PWM輸出的速度,以一個(gè)小的計(jì)算機(jī)芯片的單MEGA16,從而可以實(shí)現(xiàn)更好的控制EF。FECT與LM29芯片相結(jié)合。在避開(kāi)障礙物的過(guò)程中,電機(jī)也可以通過(guò)直接控制LM29 8芯片來(lái)控制。操作方便,易于翻轉(zhuǎn)和倒退功能。

所以我選擇了方案三。

2.5 遙控變速系統(tǒng)

本課題要求智能小車可以遙控可變速,所以加上遙控系統(tǒng)。

在本課題中利用按鍵和LCD1602結(jié)合進(jìn)而改變小車的速度問(wèn)題。這樣可以減輕負(fù)擔(dān)且更加直接的改變小車的速度。

2.6 LCD1602液晶顯示模塊

在日常生活中,我們對(duì)液晶顯示器并不陌生。我使用的液晶的顯示部,許多電子產(chǎn)品,如計(jì)算器,萬(wàn)用表,數(shù)字時(shí)鐘,和許多消費(fèi)電子產(chǎn)品,數(shù)碼屏幕基材以及特殊字符和圖形的通道。 人與機(jī)器在單芯片微型計(jì)算機(jī)之間的通信接口, 一般輸出模式如下:管發(fā)光管,LED數(shù)字顯示,屏幕流體。

液晶顯示器的好處如下:顯示質(zhì)量高,由于每個(gè)點(diǎn)都保持液晶彩色LCD,在接收到信號(hào)亮度后,產(chǎn)生耐用性,不像陰極射線管供電(CRT),需要不斷更新新的亮點(diǎn)。因此,液晶顯示器畫(huà)質(zhì)高且不會(huì)閃爍。而且其數(shù)字式接口體積小、重量輕功耗低 。

另一方面,LCD的功耗主要在其內(nèi)部電極驅(qū)動(dòng)器的IC器件上消耗,因此比其他監(jiān)視器消耗更少的能量。

2.6.1 液晶顯示簡(jiǎn)介

  1. 液晶顯示原理

液晶顯示器的原理依賴于液晶的物理特性。通過(guò)控制其顯示區(qū)域中的電壓,存在電子顯示器,即可以顯示圖像。其中,適用于LSI直接控制且易于操作的低厚度液晶顯示器廣泛用于移動(dòng)通信設(shè)備的許多領(lǐng)域,例如筆記本電腦,數(shù)碼相機(jī)和個(gè)人數(shù)字助理。

  1. 液晶顯示器的分類

LCD的分類方法有很多種,根據(jù)顯示的不同,可以分為段類型,字符類型,點(diǎn)陣類型等。除了黑白顯示外,LCD還具有多級(jí)彩色顯示屏。如果按行為方式劃分,則可分為靜態(tài)(靜態(tài)),簡(jiǎn)單矩陣(簡(jiǎn)單矩陣)和有源矩陣(有源矩陣)。

字符的顯示用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。

1602字符型LCD簡(jiǎn)介

液晶顯示單元是專門用于顯示字母,數(shù)字,符號(hào)等的點(diǎn)陣LCD顯示器。目前常用161,162,202和402行等的模塊。一般1602字符型液晶顯示器實(shí)物如圖2.6.1和2.6.2:

img

圖2.6.1

img

圖2.6.2 1602字符型液晶顯示器實(shí)物圖

2.6.2 1602LCD的基本參數(shù)及引腳功能

1602LCD主要技術(shù)參數(shù):

顯示容量:16×2個(gè)字符

芯片工作電壓:4.5—5.5V

工作電流:2.0mA(5.0V)

模塊最佳工作電壓:5.0V

字符尺寸:2.95×4.35(W×H)mm

引腳功能說(shuō)明:

各引腳接口說(shuō)明如表1所示:

編號(hào) 符號(hào) 引腳說(shuō)明 編號(hào) 符號(hào) 引腳說(shuō)明
1 VSS 電源地 9 D2 數(shù)據(jù)
2 VDD 電源正極 10 D3 數(shù)據(jù)
3 VL 液晶顯示偏壓 11 D4 數(shù)據(jù)
4 RS 數(shù)據(jù)/命令選擇 12 D5 數(shù)據(jù)
5 R/W 讀/寫選擇 13 D6 數(shù)據(jù)
6 E 使能信號(hào) 14 D7 數(shù)據(jù)
7 D0 數(shù)據(jù) 15 BLA 背光源正極
8 D1 數(shù)據(jù) 16 BLK 背光源負(fù)極

表2.6.1 引腳接口說(shuō)明表

2.6.3 1602LCD的指令說(shuō)明

1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2所示:

序號(hào) 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清顯示 0 0 0 0 0 0 0 0 0 1
2 光標(biāo)返回 0 0 0 0 0 0 0 0 1 *
3 置輸入模式 0 0 0 0 0 0 0 1 I/D S
4 顯示開(kāi)/關(guān)控制 0 0 0 0 0 0 1 D C B
5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * *
6 置功能 0 0 0 0 1 DL N F * *
7 置字符發(fā)生存貯器地址 0 0 0 1 字符發(fā)生存貯器地址
8 置數(shù)據(jù)存貯器地址 0 0 1 顯示數(shù)據(jù)存貯器地址
9 讀忙標(biāo)志或地址 0 1 BF 計(jì)數(shù)器地址
10 寫數(shù)到CGRAM或DDRAM) 1 0 要寫的數(shù)據(jù)內(nèi)容
11 從CGRAM或DDRAM讀數(shù) 1 1 讀出的數(shù)據(jù)內(nèi)容

表2.6.2 控制命令表

1602液晶模塊通過(guò)指令編程來(lái)實(shí)現(xiàn)讀寫操作、屏幕和光標(biāo)的操作。(說(shuō)明:1為高電平、0為低電平)

2.6.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表

LCD模塊運(yùn)行緩慢,因此在執(zhí)行每條命令前檢查模塊的忙標(biāo)志,將其設(shè)置為低電平表示它不忙,否則命令無(wú)效。要顯示其指示器模塊,字符顯示的第一個(gè)字符輸入字符顯示地址,圖2.6.3是1602的內(nèi)部顯示地址。

img

圖2.6.3 1602LCD內(nèi)部顯示地址

當(dāng)初始化設(shè)置在液晶模塊,其中所述第一顯示模式時(shí),光標(biāo)自動(dòng)地移動(dòng)到右側(cè),如果液晶顯示單元的符號(hào),無(wú)需人工干預(yù)。 前每個(gè)命令輸入被定義為液晶模塊處于繁忙狀態(tài)。

1602 LCD模塊在字符生成存儲(chǔ)器(CGROM)中存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符,如圖2.6.4所示。這些字符是:日語(yǔ)假名等,每一個(gè)字符具有固定的代碼,如英文大寫字母“代碼”是01000001b(41H)時(shí),模塊顯示在41H的圖矩陣字符。我們就能看到字母“A”。

img

圖2.6.4 字符代碼與圖形對(duì)應(yīng)圖

2.6.5 1602LCD的一般復(fù)位過(guò)程

延時(shí)15mS

寫指令38H(不檢測(cè)忙信號(hào))

延時(shí)5mS

寫指令38H(不檢測(cè)忙信號(hào))

延時(shí)5mS

寫指令38H(不檢測(cè)忙信號(hào))

以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)

寫指令38H:顯示模式設(shè)置

寫指令08H:顯示關(guān)閉

寫指令01H:顯示清屏

寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置

寫指令0CH:顯示開(kāi)及光標(biāo)設(shè)置

2.7 機(jī)械系統(tǒng)

本設(shè)計(jì)要求汽車的機(jī)械系統(tǒng)穩(wěn)定、靈活、簡(jiǎn)單,三輪運(yùn)動(dòng)系統(tǒng)具有上述特點(diǎn)。

驅(qū)動(dòng)部分:由于玩具車的直流電機(jī)功率小,車內(nèi)裝有電池、電機(jī)和電子設(shè)備,使電機(jī)負(fù)荷較重。為了使汽車平穩(wěn)地起動(dòng)和平穩(wěn)地行駛,在直流電動(dòng)機(jī)和輪軸之間安裝了三個(gè)減速齒輪。

電源部分:利用兩個(gè)外接電源。

電機(jī)驅(qū)動(dòng)部分主要由單芯片L29 8N和ATMEGA16芯片連接,ATMGA16芯片直接與驅(qū)動(dòng)電路相連。M軸承電壓,7和805,電機(jī)電壓,選擇12V電源)電源電壓輸入端子。L29 8N可同時(shí)驅(qū)動(dòng)兩臺(tái)電機(jī),最大輸出電流為2A,以其性能和價(jià)格好,選用L29 8N作為電機(jī)驅(qū)動(dòng)芯片,L29 8N芯片如圖2-3所示,為了達(dá)到控制停止電機(jī)的目的。ATMEGA16的兩個(gè)PB4和PB5端口直接連接到L29 8N的兩個(gè)啟用的ENA和ENB端子。L29 8N的四個(gè)輸出端子直接連接到兩個(gè)電機(jī)以驅(qū)動(dòng)電機(jī)。

三、硬件設(shè)計(jì)

3.1 總體設(shè)計(jì)

智能車由后輪驅(qū)動(dòng),后輪由兩側(cè)的電機(jī)驅(qū)動(dòng)。前兩個(gè)輪子的速度被制作和停止以控制轉(zhuǎn)向。前輪是萬(wàn)象車輪,起支撐作用。跟蹤光電管分別安裝在車身的左右兩側(cè)。如果左傳感器從黑線,主命令中心接收信息左側(cè)晶圓控制輪上的電機(jī)停止工作,同時(shí)右側(cè)電機(jī)繼續(xù)運(yùn)行這樣使小車左向左行使。當(dāng)右側(cè)右側(cè)的傳感器感受到黑線時(shí),主控制芯片控制和左側(cè)相同原理,這使小車向右行駛就和向左相同。

避障原理與直線相同。小車按尋跡路線行走,3個(gè)超聲波傳感器檢測(cè),檢測(cè)前方是否有障礙物,當(dāng)有障礙物,停止,沒(méi)有障礙物,前進(jìn);前方有障礙,左右兩邊檢測(cè),哪邊檢測(cè)距離大,往那邊走,按鍵設(shè)置前方障礙的最小距離;在避障模式下,按鍵設(shè)置最小轉(zhuǎn)彎半徑,小于轉(zhuǎn)彎半徑視為不能轉(zhuǎn)彎,小車原地后退,然后停車由此來(lái)避免障礙物做到避障功能。

3.2 驅(qū)動(dòng)電路

H橋發(fā)動(dòng)機(jī)電路集成在L298上面 ,因此我們可以借助該集成電路來(lái) 驅(qū)使發(fā)動(dòng)機(jī),該發(fā)動(dòng)機(jī)引擎通常使用H橋發(fā)動(dòng)機(jī)電路,因此L298N能夠用于驅(qū)動(dòng)發(fā)動(dòng)機(jī)。

imgimg

圖3.2.1 L298N引腳圖

img

圖3.2.2原理圖

3.3 主控制電路

這個(gè)模塊主要針對(duì)采集到的信號(hào)進(jìn)行了分析,并給出PWM波形來(lái)控制電機(jī)啟動(dòng)、旋轉(zhuǎn)速度和停下。并重新檢測(cè)障礙物報(bào)警等功能。

img

圖3.5.1原理圖

四、軟件設(shè)計(jì)

4.1 電機(jī)驅(qū)動(dòng)程序

#include "stm32f10x.h"
#include "SZ_STM32F103C8_LIB.h"
#include "LCD1602.h"
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "ultrasonic.h"
u16 count = 0; //定時(shí)器計(jì)數(shù)

u32 juli_up = 200; //最小距離
u16 juli_Q = 0;
u16 juli_Z = 0;
u16 juli_Y = 0;
u16 juli = 0; //距離設(shè)定
u32 temp;

u8 start = 0; //0手動(dòng) 1自動(dòng)

//停止
void stop()
{
	GPIO_SetBits(GPIOA,GPIO_Pin_4);	
	GPIO_SetBits(GPIOA,GPIO_Pin_5); 
	GPIO_SetBits(GPIOA,GPIO_Pin_6);
	GPIO_SetBits(GPIOA,GPIO_Pin_7);
}

//前進(jìn)
void qianjin()
{
	GPIO_SetBits(GPIOA,GPIO_Pin_4);	
	GPIO_ResetBits(GPIOA,GPIO_Pin_5); 
	GPIO_SetBits(GPIOA,GPIO_Pin_6);
	GPIO_ResetBits(GPIOA,GPIO_Pin_7);
}

//后退
void houtui()
{
	GPIO_ResetBits(GPIOA,GPIO_Pin_4);	
	GPIO_SetBits(GPIOA,GPIO_Pin_5); 
	GPIO_ResetBits(GPIOA,GPIO_Pin_6);
	GPIO_SetBits(GPIOA,GPIO_Pin_7);
}

//左轉(zhuǎn)
void  zuozhuan()
{
	GPIO_ResetBits(GPIOA,GPIO_Pin_4);	
	GPIO_SetBits(GPIOA,GPIO_Pin_5); 
	GPIO_SetBits(GPIOA,GPIO_Pin_6);
	GPIO_ResetBits(GPIOA,GPIO_Pin_7);
}

//右轉(zhuǎn)
void youzhuan()
{
	GPIO_SetBits(GPIOA,GPIO_Pin_4);	
	GPIO_ResetBits(GPIOA,GPIO_Pin_5); 
	GPIO_ResetBits(GPIOA,GPIO_Pin_6);
	GPIO_SetBits(GPIOA,GPIO_Pin_7);
}

4.2 尋跡程序

void TIM3_IRQHandler(void)   //TIM3
{
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) 
	{
			TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  
			if(start==1)
			{
				count++;
				//超聲波距離判斷 低于最小距離
				if(juli<juli_up)
				{
						stop(); //停止
				}
				else 
				{
						if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==0)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==0))
						{
								if(count%2==0)
									qianjin();//前進(jìn)
								else
									stop(); //停止
						}
						else if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==1)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==0))
						{						
								if(count%2==0)
									zuozhuan();	//左轉(zhuǎn)
								else
									stop(); //停止
						}
						else if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==0)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==1))
						{					
								if(count%2==0)
									youzhuan(); //右轉(zhuǎn)
								else
									stop(); //停止
						}
						else
						{
									stop(); //停止
						}
							
				}
			}
	}
}


int main(void)
{
	  delay_init();	 //初始化定時(shí)器

	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    LCD_1602Init();  //初始化lcd1602 

	  GPIO_Configuration();  //GPIO初始化
	
	  Ultran_Init(); //超聲波初始化
		
		delay_ms(500);
	
		TIM3_Int_Init(20,35999); //10ms
	
		while (1)
		{	   
			 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3)==0)
			 {
			 	   while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3)==0);//等待按鍵抬起
					 set_juli(); //設(shè)置距離
			 }
			 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==0)
			 {
			 	   while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==0);//等待按鍵抬起
					 start = 1; //循跡模式
			 }			
			 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)
			 {
			 	   while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0);//等待按鍵抬起
					 start = 2; //行走
			 }						 
			 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)
			 {
			 	   while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0);//等待按鍵抬起
					 start = 0; 
			 }	
			 
				Ultra_Ranging1(&temp); //獲取距離
				
				juli_Q = temp;
		
				if(start==2)
				{
						Ultra_Ranging2(&temp); //獲取距離
						
						juli_Z = temp;

						Ultra_Ranging3(&temp); //獲取距離
						
						juli_Y = temp;			 
				}
				
				display();	 //顯示界面

				delay_ms(100);
			
		}
}	

4.3 避障程序

void TIM3_IRQHandler(void)   //TIM3
{
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) 
	{
			TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  
			if(start==1)
			{
				count++;
				//超聲波距離判斷 低于最小距離
				if(juli<juli_up)
				{
						stop(); //停止
				}
				else 
				{
						if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==0)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==0))
						{
								if(count%2==0)
									qianjin();//前進(jìn)
								else
									stop(); //停止
						}
						else if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==1)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==0))
						{						
								if(count%2==0)
									zuozhuan();	//左轉(zhuǎn)
								else
									stop(); //停止
						}
						else if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15)==0)&&(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)==1))
						{					
								if(count%2==0)
									youzhuan(); //右轉(zhuǎn)
								else
									stop(); //停止
						}
						else
						{
									stop(); //停止
						}
							
				}
			}
	}
}
  • 更多詳細(xì)資料請(qǐng)聯(lián)系.docx
    下載
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦

方案定制

去合作
方案開(kāi)發(fā)定制化,2000+方案商即時(shí)響應(yīng)!