极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E803】紅外遙控黑線循跡自動泊車(STM32智能車)

2021-09-05 13:48:04      索煒達電子      1681     

項目編號:E803

文件大?。?43K

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述:

整體方案結(jié)構(gòu)

1.1  總體設(shè)計方案及其論證

本設(shè)計要實現(xiàn)的功能是:實現(xiàn)紅外遙控器對智能車進行行駛控制,并能使用遙控器切換各種行駛狀態(tài)。第二個功能是實現(xiàn)智能車的自動倒車入庫功能,智能車自動檢測車庫墻壁,并且通過內(nèi)部算法,實現(xiàn)智能車的車速自動切換,完成自動泊車。第三個功能是實現(xiàn)智能車紅外循跡功能,能夠沿地面黑線自動行駛。

1、紅外遙控:實現(xiàn)智能車的遙控功能,用于模擬汽車駕駛。

2、自動泊車:利用七路紅外避障模塊,并結(jié)合調(diào)試成功的倒車算法,進行自動泊車。

3、紅外循跡:使用兩路紅外光對管傳感器,檢測地面黑線并實現(xiàn)自動行駛。

4、顯    示:TFT LCD用于模擬儀表盤,顯示當前駕駛模式、行駛速度等數(shù)據(jù)。


系統(tǒng)硬件設(shè)計

【E803】紅外遙控黑線循跡自動泊車(STM32智能車)

【E803】紅外遙控黑線循跡自動泊車(STM32智能車)


2.1  器件選定


各類汽車逐漸在現(xiàn)代家庭普及,停車場的車位設(shè)計要求越來越嚴苛,日益擁擠的泊車環(huán)境和窄小車位,要求人們泊車時對汽車的操縱必須更加嫻熟。因此,市場對于自動泊車等汽車智能化功能的要求也日益增加。目前自動泊車系統(tǒng)的設(shè)計大多是基于DSP、FPGA等的控制處理平臺,系統(tǒng)設(shè)計復雜,價格昂貴。由于STM32較于DSP、FPGA系統(tǒng)設(shè)計簡單,價格低廉,故而本文以無人駕駛智能汽車自動泊車系統(tǒng)為應用背景,以紅外線技術(shù)為依托,完成基于STM32F103控制平臺的智能車研究與應用。


將單片機用作測控系統(tǒng)時,總要有被測信號輸入通道,由計算機拾取必要的輸入信息。對于測量系統(tǒng)而言,其核心任務(wù)是怎么樣獲得準確的被測信號;而對測控系統(tǒng)來說,不可缺少的環(huán)節(jié)是對條件的監(jiān)測和對被控對象狀態(tài)的測試,傳感器是實現(xiàn)測量與控制的第一環(huán)節(jié),是測控系統(tǒng)的關(guān)鍵部分,一切準確的測量和控制都將在傳感器對原始信號的準確可靠的轉(zhuǎn)換和捕捉,工業(yè)生產(chǎn)過程的自動化測量和控制,基本主要依賴各種傳感器來控制和檢測生產(chǎn)過程中的各種量,使系統(tǒng)和設(shè)備在最佳狀態(tài)正常運行,從而保證生產(chǎn)的高質(zhì)量和高效率。


2.2 主控系統(tǒng)電路和各硬件模塊


2.1.1  STM32F103ZET6開發(fā)平臺


本研究采ARM cortex-M3內(nèi)核的32位處理器STM32F 103ZET6作為主控制器,LQFP-144封裝,該芯片內(nèi)部采用哈佛結(jié)構(gòu)、其中集成有64KB的RAM和512KB的FLASH,運算速度快,并且具有體積小和低功耗的特點,在工業(yè)控制方面具有較高的應用前景。


STM32F103ZET6芯片介紹:


1、基于ARM Cortex-M3核心的32位微控制器,LQFP-144封裝;


2、512K片內(nèi)FLASH(相當于硬盤),64K片內(nèi)RAM,片內(nèi)FLASH支持在線編程;


3、高達72M的頻率,數(shù)據(jù)、指令分別走不同的流水線,以確保CPU運行速度達到最大;


4、通過片內(nèi)BOOT區(qū),可實現(xiàn)串口下載程序(ISP);


5、片內(nèi)雙RC晶振,提供8M和32K的頻率;


6、支持片外高速晶振(8M),和片外低速晶振(32K)。其中片外低速晶振可用于CPU的實時時鐘,帶后備電源引腳,用于掉電后的時鐘行走;


7、42個16位的后備寄存器,利用外置的紐扣電池,和實現(xiàn)掉電數(shù)據(jù)保存功能;


8、支持JTAG,SWD調(diào)試.配合廉價的J-LINK,實現(xiàn)高速低成本的開發(fā)調(diào)試方案;


9、多達80個IO(大部分兼容5V邏輯),4個通用定時器,2個高級定時器,2個基本定時器,3路SPI接口,2路I2S接口,2路I2C接口,5路USART,一個USB從設(shè)備接口,一個CAN接口,SDIO接口,可兼容SRAM,NOR和NAND Flash接口的16位總線-FSMC;


10、3路共16通道的12位AD輸入,2路共2通道的12位DA輸出。


11、CPU操作電壓范圍:2.0-3.6V;支持片外獨立電壓基準。


2.1.2  L298N電機驅(qū)動模塊


驅(qū)動模塊使用L298N作為主驅(qū)動芯片,具有驅(qū)動能力強,發(fā)熱量低,抗干擾能力強的特點。模塊可以使用內(nèi)置的78M05通過驅(qū)動電源部分取電工作,但是為了避免穩(wěn)壓芯片損壞,當使用大于12V驅(qū)動電壓的時候,需使用外置的5V邏輯供電。使用大容量濾波電容,續(xù)流保護二極管,可以提高可靠性。


L298N是一種高電壓、大電流電機驅(qū)動芯片。該芯片采用15腳封裝。主要特點是:工作電


壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電動機和步進電動機、繼電器線圈等感性負載,采用標準邏輯電平信號控制,具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端。使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動電機,該芯片可以驅(qū)動一臺兩相步進電機或四相步進電機,也可以驅(qū)動兩臺直流電機。


2.1.3  TFT LCD顯示器


本文所研究的智能車采用以ILI9341為驅(qū)動器的TFT LCD作為顯示器,用于模擬汽車的駕駛儀表盤,顯示駕駛模式和車速等信息。


ILI9341是一個用于TFT液晶顯示的單芯片控制驅(qū)動器,具有262,144色的240RGB X 320 像素顯示解決方案。它的組成包括一個720通道的源極驅(qū)動器,一個320通道的柵極驅(qū)動器,172800字節(jié)用于圖形顯示的GRAM,以及供電電路。


ILI9341支持8/9/16/18位數(shù)據(jù)總線的MCU接口,6/16/18位數(shù)據(jù)總線的RGB接口,以及3/4線的SPI接口。移動圖像區(qū)域可以通過窗口地址功能在內(nèi)部GRAM來指定。指定的窗口區(qū)域可以選擇性地更新,因此,可以在圖像區(qū)域同時獨立地顯示移動圖像。


ILI9341可以使用1.65-3.3V的I/0接口電壓和一個對應的電壓跟隨電路來產(chǎn)生驅(qū)動LCD的電壓。ILI9341有精確的電壓控制,來支持全色,8色顯示模式和睡眠模式,這使得ILI9341成為一個理想的中小型手提產(chǎn)品的LCD驅(qū)動器,比如數(shù)字電話,智能手機,MP3和PMP。


2.1.4  紅外無線遙控套件


紅外無線遙控套件由Mini紅外遙控器和38KHz紅外接收模塊組成,Mini紅外遙控器具有17個功能鍵,發(fā)射距離遠可達8米,適合在室內(nèi)操控多種設(shè)備。紅外接收模塊可接收標準38KHz調(diào)制的遙控器信號,通過對進行編程,即可實現(xiàn)對遙控器信號的、解碼操作,從而可制作多種遙控機器人以及互動作品。


紅外線簡介:人的眼睛能看到的可見光按波長從長到短排列,依次為紅、橙、黃、綠、青、藍、紫。其中紅光的波長范圍為0.62~0.76μm;紫光的波長范圍為0.38~0.46μm。比紫光波長還短的光叫紫外線,比紅光波長還長的光叫紅外線。紅外線遙控是利用波長為0.76~1.5μm之間的近紅外線來傳送控制信號。


通常紅外遙控為了提高抗干擾性能和降低電源消耗,紅外遙控器常用載波的方式傳送二進制編碼,常用的載波頻率為38kHz,這是由發(fā)射端所使用的455kHz晶振來決定的。在發(fā)射端要對晶振進行整數(shù)分頻,分頻系數(shù)一般取12,所以455kHz÷12≈37.9kHz≈38kHz。也有一些遙控系統(tǒng)采用36kHz、40kHz、56kHz等,一般由發(fā)射端晶振的振蕩頻率來決定。所以,通常的紅外遙控器是將遙控信號(二進制脈沖碼)調(diào)制在38KHz的載波上,經(jīng)緩沖放大后送至紅外發(fā)光二極管,轉(zhuǎn)化為紅外信號發(fā)射出去的。二進制脈沖碼的形式有多種,其中最為常用的是NEC Protocol的PWM碼(脈沖寬度調(diào)制)和Philips RC-5 Protocol的PPM碼(脈沖位置調(diào)制碼,脈沖串之間的時間間隔來實現(xiàn)信號調(diào)制)。若需要開發(fā)紅外接收設(shè)備,一定要了解紅外遙控器的編碼方式和載波頻率,才能選取一體化紅外接收頭和制定解碼方案。


NEC碼的位定義:一個脈沖對應560us的連續(xù)載波,一個邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個邏輯0的傳輸需要1.125ms(560us脈沖 + 560us低電平)。而紅外接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到的信號為:邏輯1應該是560us低 + 1680us高,邏輯0應該是560us低 + 560us高。所以可以通過計算高電平時間判斷接收到的數(shù)據(jù)是0還是1。

NEC遙控指令的數(shù)據(jù)格式為:引導碼、地址碼、地址反碼、控制碼、控制反碼。引導碼由一個 9ms 的低電平和一個 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕捎糜谛r灒?shù)據(jù)格式如下圖

NEC碼還規(guī)定了連發(fā)碼(由 9ms 低電平 +2.5ms 高電平 +0.56ms 低電平 +97.94ms 高電平組成),如果在一幀數(shù)據(jù)發(fā)送完畢之后,紅外遙控器按鍵仍然沒有放開,則發(fā)射連發(fā)碼,可以通過統(tǒng)計連發(fā)碼的次數(shù)來標記按鍵按下的長短或次數(shù)。


2.1.5  紅外避障與循跡模塊


本設(shè)計采用了七路紅外避障模塊和兩路TCRT5000紅外反射傳感器。七路紅外避障模塊主要用作自動泊車功能的探測傳感器,兩路TCRT5000紅外反射傳感器則是應用于黑線循跡功能。


紅外避障傳感器模塊對環(huán)境光線適應能力強,其具有一對紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,綠色指示燈會亮起,同時信號輸出接口輸出數(shù)字信號(一個低電平信號),可通過電位器旋鈕調(diào)節(jié)檢測距離,有效距離范圍2~30cm,工作電壓為3.3V-5V。該傳感器的探測距離可以通過電位器調(diào)整、具有干擾小、便于裝配、使用方便等特點,可以廣泛應用于機器人避障、避障小車、流水線計數(shù)及黑白線循跡等眾多場合。


模塊參數(shù)說明:


1、當模塊檢測到前方障礙物信號時,電路板上綠色指示燈點亮電平,同時OUT端口持續(xù)輸出低電平信號,該模塊檢測距離2~30cm,檢測角度35°,檢測距離可以通過電位器進行調(diào)節(jié),順時針調(diào)電位器,檢測距離增加;逆時針調(diào)電位器,檢測距離減少。


2、傳感器主動紅外線反射探測,因此目標的反射率和形狀是探測距離的關(guān)鍵。其中黑色探測距離最小,白色最大;小面積物體距離小,大面積距離大。


3、傳感器模塊輸出端口OUT可直接與單片機IO口連接即可,也可以直接驅(qū)動一個5V繼電器;連接方式:VCC-VCC;GND-GND;OUT-IO;


4、比較器采用LM393,工作穩(wěn)定;


5、可采用3-5V直流電源對模塊進行供電。當電源接通時,紅色電源指示燈點亮;


6、具有3mm的螺絲孔,便于固定和安裝;

    7、電路板尺寸:3.2cm*1.4cm。


智能車使用12V 18650鋰電池組作為電源,為MCU及各個模塊進行供電。采用LM2596S DC-DC可調(diào)降壓穩(wěn)壓電源模塊和AMS1117-3.3V 降壓穩(wěn)壓模塊對驅(qū)動電路及控制電路進行降壓穩(wěn)壓保護。在實驗過程中,多次使用萬用表對各個模塊的電壓進行測量,以防燒毀元器件。


3 系統(tǒng)軟件設(shè)計


3.1  軟件設(shè)計思路


在軟件設(shè)計部分,本設(shè)計主要分成了五大部分,其中包括LED控制程序、TFT LCD驅(qū)動程序、按鍵驅(qū)動程序、電機控制程序、紅外遙控程序。在電機控制程序部分,包括了PWM配置函數(shù)、紅外傳感器輸入信號配置函數(shù)、TIM3初始化程序、自動泊車程序、黑線循跡程序、測速程序,并且編寫了13種不同占空比的小車前進、后退、轉(zhuǎn)向函數(shù)。在紅外遙控程序部分,先用紅外解碼獲得遙控器鍵值的編碼數(shù)據(jù),再對所需要的鍵值進行定義,從而實現(xiàn)固定按鍵控制相應的功能。TFT LCD顯示的數(shù)據(jù)依次為:設(shè)計名稱、車速、遙控器鍵值、按鍵連續(xù)按下次數(shù)、智能車行駛狀態(tài)。


3.2  系統(tǒng)調(diào)試


若要實現(xiàn)本設(shè)計中的自動泊車及黑線循跡兩大功能,除了傳感器的選用及調(diào)試外,更為重要的是如何在不同的路況下改變智能車的行駛速度。本設(shè)計使用PWM輸出實現(xiàn)對電機轉(zhuǎn)動速度的控制。PWM是Pulse Width Modulation的縮寫,中文意思是脈沖寬度調(diào)制,簡稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),其控制簡單、靈活和動態(tài)響應好等優(yōu)點而成為電力電子技術(shù)最廣泛應用的控制方式,其應用領(lǐng)域包括測量,通信,功率控制與變換,電動機控制、伺服控制、調(diào)光、開關(guān)電源,甚至某些音頻放大器,因此學習PWM具有十分重要的現(xiàn)實意義。也可以這樣理解,PWM是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。PWM 信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電為完全有(ON),或完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上。通(ON)的時候即是直流供電被加到負載上的時候,斷(OFF)的時候即是供電被斷開的時候。若帶寬足夠,任何模擬值都可以使用 PWM 進行編碼。


為了實現(xiàn)智能車正常倒入車庫和自動循跡的功能,筆者在制作小車時進行了多次試驗,詳細記錄各類情況,淘汰掉不合適的數(shù)據(jù),最終獲得較為穩(wěn)定的車速變化數(shù)據(jù),并對自動泊車的算法進行了多次優(yōu)化,觀察到了較為理想的實驗現(xiàn)象。


    黑線循跡功能采用反射式光電開關(guān)來識別軌跡上的黑線標記信號,這種光電開關(guān)的紅外發(fā)射管和接收管位于同一側(cè),光敏三極管只能接收反射回的紅外光。當車身下面是黑線時,由于黑線吸收部分光,光敏三極管接收到的紅外光不能使光敏三極管導通,光電開關(guān)輸出高電平,經(jīng)非門輸出低電平。反之,當車身下面是白色的地面時,紅外發(fā)射管發(fā)射的光經(jīng)其反射后,被接收管接受,光電開關(guān)輸出低電平,經(jīng)非門整形后輸出高電平。將非門的輸出接至單片機IO口。車在前進和后退過程中,小車每過一道黑線,便產(chǎn)生一次電平變化,主程序從而調(diào)用相應的子程序,隨著小車的不斷行駛,相應的程序依次被調(diào)用執(zhí)行,使小車在跑道上按設(shè)計要求時快、時慢、時前進、時轉(zhuǎn)向。

【E803】紅外遙控黑線循跡自動泊車(STM32智能車)

目錄│文件列表:

 └ 紅外遙控循跡自動泊車智能車程序

    │ keilkilll.bat

    │ README.TXT

    │ REMOTE.lnk

    ├ CORE

    │  │ core_cm3.c

    │  │ core_cm3.h

    │  └ startup_stm32f10x_hd.s

    ├ HARDWARE

    │  │ motor_control.c

    │  │ motor_control.h

    │  ├ 24CXX

    │  │  │ 24cxx.c

    │  │  └ 24cxx.h

    │  ├ BEEP

    │  │  │ beep.c

    │  │  └ beep.h

    │  ├ KEY

    │  │  │ key.c

    │  │  └ key.h

    │  ├ LCD

    │  │  │ font.h

    │  │  │ lcd.c

    │  │  └ lcd.h

    │  ├ LED

    │  │  │ led.c

    │  │  └ led.h

    │  └ REMOTE

    │     │ remote.c

    │     └ remote.h

    ├ OBJ

    │  └ REMOTE.hex

    ├ STM32F10x_FWLib

    │  ├ inc

    │  │  │ misc.h

    │  │  │ stm32f10x_adc.h

    │  │  │ stm32f10x_bkp.h

    │  │  │ stm32f10x_can.h

    │  │  │ stm32f10x_cec.h

    │  │  │ stm32f10x_crc.h

    │  │  │ stm32f10x_dac.h

    │  │  │ stm32f10x_dbgmcu.h

    │  │  │ stm32f10x_dma.h

    │  │  │ stm32f10x_exti.h

    │  │  │ stm32f10x_flash.h

    │  │  │ stm32f10x_fsmc.h

    │  │  │ stm32f10x_gpio.h

    │  │  │ stm32f10x_i2c.h

    │  │  │ stm32f10x_iwdg.h

    │  │  │ stm32f10x_pwr.h

    │  │  │ stm32f10x_rcc.h

    │  │  │ stm32f10x_rtc.h

    │  │  │ stm32f10x_sdio.h

    │  │  │ stm32f10x_spi.h

    │  │  │ stm32f10x_tim.h

    │  │  │ stm32f10x_usart.h

    │  │  └ stm32f10x_wwdg.h

    │  └ src

    │     │ misc.c

    │     │ stm32f10x_adc.c

    │     │ stm32f10x_bkp.c

    │     │ stm32f10x_can.c

    │     │ stm32f10x_cec.c

    │     │ stm32f10x_crc.c

    │     │ stm32f10x_dac.c

    │     │ stm32f10x_dbgmcu.c

    │     │ stm32f10x_dma.c

    │     │ stm32f10x_exti.c

    │     │ stm32f10x_flash.c

    │     │ stm32f10x_fsmc.c

    │     │ stm32f10x_gpio.c

    │     │ stm32f10x_i2c.c

    │     │ stm32f10x_iwdg.c

    │     │ stm32f10x_pwr.c

    │     │ stm32f10x_rcc.c

    │     │ stm32f10x_rtc.c

    │     │ stm32f10x_sdio.c

    │     │ stm32f10x_spi.c

    │     │ stm32f10x_tim.c

    │     │ stm32f10x_usart.c

    │     └ stm32f10x_wwdg.c

    ├ SYSTEM

    │  ├ delay

    │  │  │ delay.c

    │  │  └ delay.h

    │  ├ sys

    │  │  │ sys.c

    │  │  └ sys.h

    │  └ usart

    │     │ usart.c

    │     └ usart.h

    └ USER

       │ JLinkSettings.ini

       │ main.c

       │ REMOTE.uvguix.Administrator

       │ REMOTE.uvguix.VULCAN

       │ REMOTE.uvoptx

       │ REMOTE.uvprojx

       │ stm32f10x.h

       │ stm32f10x_conf.h

       │ stm32f10x_it.c

       │ stm32f10x_it.h

       │ system_stm32f10x.c

       └ system_stm32f10x.h

TAG自動泊車
  • 16 次
  • 1 分