https://v.youku.com/v_show/id_XMzg5MTc4NzE2NA==.html
2 系統(tǒng)硬件設(shè)計(jì)
2.1 器件選定
各類汽車逐漸在現(xiàn)代家庭普及,停車場(chǎng)的車位設(shè)計(jì)要求越來越嚴(yán)苛,日益擁擠的泊車環(huán)境和窄小車位,要求人們泊車時(shí)對(duì)汽車的操縱必須更加?jì)故臁R虼耍袌?chǎng)對(duì)于自動(dòng)泊車等汽車智能化功能的要求也日益增加。目前自動(dòng)泊車系統(tǒng)的設(shè)計(jì)大多是基于DSP、FPGA等的控制處理平臺(tái),系統(tǒng)設(shè)計(jì)復(fù)雜,價(jià)格昂貴。由于STM32較于DSP、FPGA系統(tǒng)設(shè)計(jì)簡(jiǎn)單,價(jià)格低廉,故而本文以無人駕駛智能汽車自動(dòng)泊車系統(tǒng)為應(yīng)用背景,以紅外線技術(shù)為依托,完成基于STM32F103控制平臺(tái)的智能車研究與應(yīng)用。
將單片機(jī)用作測(cè)控系統(tǒng)時(shí),總要有被測(cè)信號(hào)輸入通道,由計(jì)算機(jī)拾取必要的輸入信息。對(duì)于測(cè)量系統(tǒng)而言,其核心任務(wù)是怎么樣獲得準(zhǔn)確的被測(cè)信號(hào);而對(duì)測(cè)控系統(tǒng)來說,不可缺少的環(huán)節(jié)是對(duì)條件的監(jiān)測(cè)和對(duì)被控對(duì)象狀態(tài)的測(cè)試,傳感器是實(shí)現(xiàn)測(cè)量與控制的第一環(huán)節(jié),是測(cè)控系統(tǒng)的關(guān)鍵部分,一切準(zhǔn)確的測(cè)量和控制都將在傳感器對(duì)原始信號(hào)的準(zhǔn)確可靠的轉(zhuǎn)換和捕捉,工業(yè)生產(chǎn)過程的自動(dòng)化測(cè)量和控制,基本主要依賴各種傳感器來控制和檢測(cè)生產(chǎn)過程中的各種量,使系統(tǒng)和設(shè)備在最佳狀態(tài)正常運(yùn)行,從而保證生產(chǎn)的高質(zhì)量和高效率。
2.2 主控系統(tǒng)電路和各硬件模塊
2.1.1 STM32F103ZET6開發(fā)平臺(tái)
本研究采ARM cortex-M3內(nèi)核的32位處理器STM32F 103ZET6作為主控制器,LQFP-144封裝,該芯片內(nèi)部采用哈佛結(jié)構(gòu)、其中集成有64KB的RAM和512KB的FLASH,運(yùn)算速度快,并且具有體積小和低功耗的特點(diǎn),在工業(yè)控制方面具有較高的應(yīng)用前景。
STM32F103ZET6芯片介紹:
1、基于ARM Cortex-M3核心的32位微控制器,LQFP-144封裝;
2、512K片內(nèi)FLASH(相當(dāng)于硬盤),64K片內(nèi)RAM,片內(nèi)FLASH支持在線編程;
3、高達(dá)72M的頻率,數(shù)據(jù)、指令分別走不同的流水線,以確保CPU運(yùn)行速度達(dá)到最大;
4、通過片內(nèi)BOOT區(qū),可實(shí)現(xiàn)串口下載程序(ISP);
5、片內(nèi)雙RC晶振,提供8M和32K的頻率;
6、支持片外高速晶振(8M),和片外低速晶振(32K)。其中片外低速晶振可用于CPU的實(shí)時(shí)時(shí)鐘,帶后備電源引腳,用于掉電后的時(shí)鐘行走;
7、42個(gè)16位的后備寄存器,利用外置的紐扣電池,和實(shí)現(xiàn)掉電數(shù)據(jù)保存功能;
8、支持JTAG,SWD調(diào)試.配合廉價(jià)的J-LINK,實(shí)現(xiàn)高速低成本的開發(fā)調(diào)試方案;
9、多達(dá)80個(gè)IO(大部分兼容5V邏輯),4個(gè)通用定時(shí)器,2個(gè)高級(jí)定時(shí)器,2個(gè)基本定時(shí)器,3路SPI接口,2路I2S接口,2路I2C接口,5路USART,一個(gè)USB從設(shè)備接口,一個(gè)CAN接口,SDIO接口,可兼容SRAM,NOR和NAND Flash接口的16位總線-FSMC;
10、3路共16通道的12位AD輸入,2路共2通道的12位DA輸出。
11、CPU操作電壓范圍:2.0-3.6V;支持片外獨(dú)立電壓基準(zhǔn)。
2.1.2 L298N電機(jī)驅(qū)動(dòng)模塊
驅(qū)動(dòng)模塊使用L298N作為主驅(qū)動(dòng)芯片,具有驅(qū)動(dòng)能力強(qiáng),發(fā)熱量低,抗干擾能力強(qiáng)的特點(diǎn)。模塊可以使用內(nèi)置的78M05通過驅(qū)動(dòng)電源部分取電工作,但是為了避免穩(wěn)壓芯片損壞,當(dāng)使用大于12V驅(qū)動(dòng)電壓的時(shí)候,需使用外置的5V邏輯供電。使用大容量濾波電容,續(xù)流保護(hù)二極管,可以提高可靠性。
L298N是一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電
壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載,采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制,具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端。使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)一臺(tái)兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。
2.1.3 TFT LCD顯示器
本文所研究的智能車采用以ILI9341為驅(qū)動(dòng)器的TFT LCD作為顯示器,用于模擬汽車的駕駛儀表盤,顯示駕駛模式和車速等信息。
ILI9341是一個(gè)用于TFT液晶顯示的單芯片控制驅(qū)動(dòng)器,具有262,144色的240RGB X 320 像素顯示解決方案。它的組成包括一個(gè)720通道的源極驅(qū)動(dòng)器,一個(gè)320通道的柵極驅(qū)動(dòng)器,172800字節(jié)用于圖形顯示的GRAM,以及供電電路。
ILI9341支持8/9/16/18位數(shù)據(jù)總線的MCU接口,6/16/18位數(shù)據(jù)總線的RGB接口,以及3/4線的SPI接口。移動(dòng)圖像區(qū)域可以通過窗口地址功能在內(nèi)部GRAM來指定。指定的窗口區(qū)域可以選擇性地更新,因此,可以在圖像區(qū)域同時(shí)獨(dú)立地顯示移動(dòng)圖像。
ILI9341可以使用1.65-3.3V的I/0接口電壓和一個(gè)對(duì)應(yīng)的電壓跟隨電路來產(chǎn)生驅(qū)動(dòng)LCD的電壓。ILI9341有精確的電壓控制,來支持全色,8色顯示模式和睡眠模式,這使得ILI9341成為一個(gè)理想的中小型手提產(chǎn)品的LCD驅(qū)動(dòng)器,比如數(shù)字電話,智能手機(jī),MP3和PMP。
2.1.4 紅外無線遙控套件
紅外無線遙控套件由Mini紅外遙控器和38KHz紅外接收模塊組成,Mini紅外遙控器具有17個(gè)功能鍵,發(fā)射距離遠(yuǎn)可達(dá)8米,適合在室內(nèi)操控多種設(shè)備。紅外接收模塊可接收標(biāo)準(zhǔn)38KHz調(diào)制的遙控器信號(hào),通過對(duì)進(jìn)行編程,即可實(shí)現(xiàn)對(duì)遙控器信號(hào)的、解碼操作,從而可制作多種遙控機(jī)器人以及互動(dòng)作品。
紅外線簡(jiǎn)介:人的眼睛能看到的可見光按波長(zhǎng)從長(zhǎng)到短排列,依次為紅、橙、黃、綠、青、藍(lán)、紫。其中紅光的波長(zhǎng)范圍為0.62~0.76μm;紫光的波長(zhǎng)范圍為0.38~0.46μm。比紫光波長(zhǎng)還短的光叫紫外線,比紅光波長(zhǎng)還長(zhǎng)的光叫紅外線。紅外線遙控是利用波長(zhǎng)為0.76~1.5μm之間的近紅外線來傳送控制信號(hào)。
通常紅外遙控為了提高抗干擾性能和降低電源消耗,紅外遙控器常用載波的方式傳送二進(jìn)制編碼,常用的載波頻率為38kHz,這是由發(fā)射端所使用的455kHz晶振來決定的。在發(fā)射端要對(duì)晶振進(jìn)行整數(shù)分頻,分頻系數(shù)一般取12,所以455kHz÷12≈37.9kHz≈38kHz。也有一些遙控系統(tǒng)采用36kHz、40kHz、56kHz等,一般由發(fā)射端晶振的振蕩頻率來決定。所以,通常的紅外遙控器是將遙控信號(hào)(二進(jìn)制脈沖碼)調(diào)制在38KHz的載波上,經(jīng)緩沖放大后送至紅外發(fā)光二極管,轉(zhuǎn)化為紅外信號(hào)發(fā)射出去的。二進(jìn)制脈沖碼的形式有多種,其中最為常用的是NEC Protocol的PWM碼(脈沖寬度調(diào)制)和Philips RC-5 Protocol的PPM碼(脈沖位置調(diào)制碼,脈沖串之間的時(shí)間間隔來實(shí)現(xiàn)信號(hào)調(diào)制)。若需要開發(fā)紅外接收設(shè)備,一定要了解紅外遙控器的編碼方式和載波頻率,才能選取一體化紅外接收頭和制定解碼方案。
NEC碼的位定義:一個(gè)脈沖對(duì)應(yīng)560us的連續(xù)載波,一個(gè)邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個(gè)邏輯0的傳輸需要1.125ms(560us脈沖 + 560us低電平)。而紅外接收頭在收到脈沖的時(shí)候?yàn)榈碗娖剑跊]有脈沖的時(shí)候?yàn)楦唠娖剑@樣,我們?cè)诮邮疹^端收到的信號(hào)為:邏輯1應(yīng)該是560us低 + 1680us高,邏輯0應(yīng)該是560us低 + 560us高。所以可以通過計(jì)算高電平時(shí)間判斷接收到的數(shù)據(jù)是0還是1。
NEC遙控指令的數(shù)據(jù)格式為:引導(dǎo)碼、地址碼、地址反碼、控制碼、控制反碼。引導(dǎo)碼由一個(gè) 9ms 的低電平和一個(gè) 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕ǹ捎糜谛r?yàn))。數(shù)據(jù)格式如下圖
NEC碼還規(guī)定了連發(fā)碼(由 9ms 低電平 +2.5ms 高電平 +0.56ms 低電平 +97.94ms 高電平組成),如果在一幀數(shù)據(jù)發(fā)送完畢之后,紅外遙控器按鍵仍然沒有放開,則發(fā)射連發(fā)碼,可以通過統(tǒng)計(jì)連發(fā)碼的次數(shù)來標(biāo)記按鍵按下的長(zhǎng)短或次數(shù)。
2.1.5 紅外避障與循跡模塊
本設(shè)計(jì)采用了七路紅外避障模塊和兩路TCRT5000紅外反射傳感器。七路紅外避障模塊主要用作自動(dòng)泊車功能的探測(cè)傳感器,兩路TCRT5000紅外反射傳感器則是應(yīng)用于黑線循跡功能。
紅外避障傳感器模塊對(duì)環(huán)境光線適應(yīng)能力強(qiáng),其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物(反射面)時(shí),紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,綠色指示燈會(huì)亮起,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào)(一個(gè)低電平信號(hào)),可通過電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離范圍2~30cm,工作電壓為3.3V-5V。該傳感器的探測(cè)距離可以通過電位器調(diào)整、具有干擾小、便于裝配、使用方便等特點(diǎn),可以廣泛應(yīng)用于機(jī)器人避障、避障小車、流水線計(jì)數(shù)及黑白線循跡等眾多場(chǎng)合。
模塊參數(shù)說明:
1、當(dāng)模塊檢測(cè)到前方障礙物信號(hào)時(shí),電路板上綠色指示燈點(diǎn)亮電平,同時(shí)OUT端口持續(xù)輸出低電平信號(hào),該模塊檢測(cè)距離2~30cm,檢測(cè)角度35°,檢測(cè)距離可以通過電位器進(jìn)行調(diào)節(jié),順時(shí)針調(diào)電位器,檢測(cè)距離增加;逆時(shí)針調(diào)電位器,檢測(cè)距離減少。
2、傳感器主動(dòng)紅外線反射探測(cè),因此目標(biāo)的反射率和形狀是探測(cè)距離的關(guān)鍵。其中黑色探測(cè)距離最小,白色最大;小面積物體距離小,大面積距離大。
3、傳感器模塊輸出端口OUT可直接與單片機(jī)IO口連接即可,也可以直接驅(qū)動(dòng)一個(gè)5V繼電器;連接方式:VCC-VCC;GND-GND;OUT-IO;
4、比較器采用LM393,工作穩(wěn)定;
5、可采用3-5V直流電源對(duì)模塊進(jìn)行供電。當(dāng)電源接通時(shí),紅色電源指示燈點(diǎn)亮;
6、具有3mm的螺絲孔,便于固定和安裝;
7、電路板尺寸:3.2cm*1.4cm。
智能車使用12V 18650鋰電池組作為電源,為MCU及各個(gè)模塊進(jìn)行供電。采用LM2596S DC-DC可調(diào)降壓穩(wěn)壓電源模塊和AMS1117-3.3V 降壓穩(wěn)壓模塊對(duì)驅(qū)動(dòng)電路及控制電路進(jìn)行降壓穩(wěn)壓保護(hù)。在實(shí)驗(yàn)過程中,多次使用萬用表對(duì)各個(gè)模塊的電壓進(jìn)行測(cè)量,以防燒毀元器件。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 軟件設(shè)計(jì)思路
在軟件設(shè)計(jì)部分,本設(shè)計(jì)主要分成了五大部分,其中包括LED控制程序、TFT LCD驅(qū)動(dòng)程序、按鍵驅(qū)動(dòng)程序、電機(jī)控制程序、紅外遙控程序。在電機(jī)控制程序部分,包括了PWM配置函數(shù)、紅外傳感器輸入信號(hào)配置函數(shù)、TIM3初始化程序、自動(dòng)泊車程序、黑線循跡程序、測(cè)速程序,并且編寫了13種不同占空比的小車前進(jìn)、后退、轉(zhuǎn)向函數(shù)。在紅外遙控程序部分,先用紅外解碼獲得遙控器鍵值的編碼數(shù)據(jù),再對(duì)所需要的鍵值進(jìn)行定義,從而實(shí)現(xiàn)固定按鍵控制相應(yīng)的功能。TFT LCD顯示的數(shù)據(jù)依次為:設(shè)計(jì)名稱、車速、遙控器鍵值、按鍵連續(xù)按下次數(shù)、智能車行駛狀態(tài)。
3.2 系統(tǒng)調(diào)試
若要實(shí)現(xiàn)本設(shè)計(jì)中的自動(dòng)泊車及黑線循跡兩大功能,除了傳感器的選用及調(diào)試外,更為重要的是如何在不同的路況下改變智能車的行駛速度。本設(shè)計(jì)使用PWM輸出實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)動(dòng)速度的控制。PWM是Pulse Width Modulation的縮寫,中文意思是脈沖寬度調(diào)制,簡(jiǎn)稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),其控制簡(jiǎn)單、靈活和動(dòng)態(tài)響應(yīng)好等優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,其應(yīng)用領(lǐng)域包括測(cè)量,通信,功率控制與變換,電動(dòng)機(jī)控制、伺服控制、調(diào)光、開關(guān)電源,甚至某些音頻放大器,因此學(xué)習(xí)PWM具有十分重要的現(xiàn)實(shí)意義。也可以這樣理解,PWM是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法。通過高分辨率計(jì)數(shù)器的使用,方波的占空比被調(diào)制用來對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM 信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電為完全有(ON),或完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上。通(ON)的時(shí)候即是直流供電被加到負(fù)載上的時(shí)候,斷(OFF)的時(shí)候即是供電被斷開的時(shí)候。若帶寬足夠,任何模擬值都可以使用 PWM 進(jìn)行編碼。
為了實(shí)現(xiàn)智能車正常倒入車庫(kù)和自動(dòng)循跡的功能,筆者在制作小車時(shí)進(jìn)行了多次試驗(yàn),詳細(xì)記錄各類情況,淘汰掉不合適的數(shù)據(jù),最終獲得較為穩(wěn)定的車速變化數(shù)據(jù),并對(duì)自動(dòng)泊車的算法進(jìn)行了多次優(yōu)化,觀察到了較為理想的實(shí)驗(yàn)現(xiàn)象。
黑線循跡功能采用反射式光電開關(guān)來識(shí)別軌跡上的黑線標(biāo)記信號(hào),這種光電開關(guān)的紅外發(fā)射管和接收管位于同一側(cè),光敏三極管只能接收反射回的紅外光。當(dāng)車身下面是黑線時(shí),由于黑線吸收部分光,光敏三極管接收到的紅外光不能使光敏三極管導(dǎo)通,光電開關(guān)輸出高電平,經(jīng)非門輸出低電平。反之,當(dāng)車身下面是白色的地面時(shí),紅外發(fā)射管發(fā)射的光經(jīng)其反射后,被接收管接受,光電開關(guān)輸出低電平,經(jīng)非門整形后輸出高電平。將非門的輸出接至單片機(jī)IO口。車在前進(jìn)和后退過程中,小車每過一道黑線,便產(chǎn)生一次電平變化,主程序從而調(diào)用相應(yīng)的子程序,隨著小車的不斷行駛,相應(yīng)的程序依次被調(diào)用執(zhí)行,使小車在跑道上按設(shè)計(jì)要求時(shí)快、時(shí)慢、時(shí)前進(jìn)、時(shí)轉(zhuǎn)向。
單片機(jī)源程序如下:
- #include "led.h"
- #include "key.h"
- #include "delay.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "remote.h"
- #include "beep.h"
- #include "motor_control.h"
- int main(void)
- {
- u8 key;
- u8 t=0;
- u8 *str=0;
- delay_init(); //延時(shí)函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uart_init(115200); //串口初始化為115200
- LED_Init(); //LED端口初始化
- LCD_Init();
- Beep_Init();
- Remote_Init(); //紅外接收初始化
- GPIO_Configuration();//電機(jī)
- Control_GPIOC_Config();//傳感器
-
- POINT_COLOR=RED; //設(shè)置字體為紅色
- LCD_ShowString(30,50,200,16,16,"STM32 CAR");
- LCD_ShowString(30,70,200,16,16,"REMOTE CAR");
- LCD_ShowString(30,90,200,16,16,"SPEED: ");
- LCD_ShowString(30,130,200,16,16,"KEYVAL:");
- LCD_ShowString(30,150,200,16,16,"KEYCNT:");
- LCD_ShowString(30,170,200,16,16,"SYMBOL:");
- while(1)
- {
- key=Remote_Scan();
- if(key)
- {
- LCD_ShowNum(86,130,key,3,16); //顯示鍵值
- LCD_ShowNum(86,150,RmtCnt,3,16); //顯示按鍵次數(shù)
- switch(key)
- {
- case 24: Forward_run();str="UP";break; //UP
- case 74: Backward_run();str="DOWN";break; //DOWN
- case 16: LEFT();str="LEFT";break; //LEFT
- case 90: RIGHT();str="RIGHT";break; //RIGHT
- case 56: Stop();str="STOP";break; //STOP
-
- case 162: LED_L();str="1";break; //"1"
- case 98: LED_M();str="2";break; //"2"
- case 226: Left_Back();str="AUTO_PARKING";break; //"3"
- case 34: X_J();str="TRACKING";break; //"4"
- }
- LCD_Fill(86,170,116+8*8,170+16,WHITE); //清楚之前的顯示
- LCD_ShowString(86,170,200,16,16,str); //顯示SYMBOL
- }else delay_ms(10);
-
- t++;
- if(t==50)
- {
- t=0;
- LED0=!LED0;
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
紅外遙控循跡自動(dòng)泊車智能車程序.rar
(343.4 KB, 下載次數(shù): 258)
2018-10-31 15:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5