【正文】
基于stm32的智能小車設(shè)計摘要本次試驗主要分析了基于STM32F103微處理器的智能小車控制系統(tǒng)的系統(tǒng)設(shè)計過程。此智能系統(tǒng)的組成主要包括STM32F103控制器、電機驅(qū)動電路、紅外探測電路、超聲波避障電路。本次試驗采用STM32F103微處理器為核心芯片,利用PWM技術(shù)對速度以及舵機轉(zhuǎn)向進行控制,循跡模塊進行黑白檢測,避障模塊進行障礙物檢測并避障功能,其他外圍擴展電路實現(xiàn)系統(tǒng)整體功能。小車在運動時,避障程序優(yōu)先于循跡程序,用超聲波避障電路進行測距并避障,在超聲波模塊下我們使用舵機來控制超聲波的發(fā)射方向,用紅外探測電路實現(xiàn)小車循跡功能。在硬件設(shè)計的基礎(chǔ)上提出了實現(xiàn)電機控制功能、智能小車簡單循跡和避障功能的軟件設(shè)計方案,并在STM32集成開發(fā)環(huán)境Keil下編寫了相應(yīng)的控制程序,并使用mcuisp軟件進行程序下載。關(guān)鍵詞:stm32。紅外探測。超聲波避障。PWM。電機控制AbstractThis experiment mainly analyzes the control system of smart car based on microprocessor STM32F103 system design process. The position of the intelligent system mainly including STM32F103 controller, motor drive circuit, infrared detection circuit, circuit of ultrasonic obstacle avoidance. This experiment adopts STM32F103 microprocessor as the core chip, using PWM technique to control speed and steering gear steering, tracking module is used to detect the black and white, obstacle avoidance module for obstacle detection and obstacle avoidance function, other peripheral extended circuit to realize the whole system function. When the car is moving, obstacle avoidance program prior to tracking, using ultrasonic ranging and obstacle avoidance obstacle avoidance circuit, we use steering gear under ultrasonic module to control the emission direction of ultrasonic, infrared detection circuit is used to implement the car tracking function. On the basis of the hardware design is proposed for motor control function, simple intelligent car tracking and obstacle avoidance function of software design, and in the STM32 integrated development environment under the Keil. Write the corresponding control program, and use McUisp program download software.Keywords:STM32;Infrared detection;Ultrasonic obstacle avoidance;PWM;Motor control目錄 4 4 4 5 5 stm32f103內(nèi)部結(jié)構(gòu) 6 stm32最小系統(tǒng)電路設(shè)計 7 stm32軟件設(shè)計的基本思路 9 stm32中斷介紹 9 stm32定時/計數(shù)器介紹 11 主程序設(shè)計流程圖 12 電機驅(qū)動模塊 13 驅(qū)動模塊結(jié)構(gòu)及其原理 13 驅(qū)動模塊電路設(shè)計 13 14 避障模塊設(shè)計 18 避障模塊器件結(jié)構(gòu)及其原理 19 HCSR04模塊硬件電路設(shè)計 21 HCSR04模塊程序設(shè)計 21 28 循跡模塊結(jié)構(gòu)及其原理 28 循跡模塊電路設(shè)計 30 紅外循跡模塊程序設(shè)計 30 33 程序仿真 33 程序下載 34 35 37 致謝 39 參考文獻 40 附錄 41 智能小車通過各種感應(yīng)器獲得外部環(huán)境信息和內(nèi)部運動狀態(tài),實現(xiàn)在復雜環(huán)境背景下的自主運動,從而完成具有特定功能的機器人系統(tǒng)。而隨著智能化電器時代的到來,它們在為人們提供的舒適的生活環(huán)境的同時,也提高了制造智能化電器對于人才要求的門檻。智能小車是集成了多種高新技術(shù),它不僅融合了電子、傳感器、計算機硬件、軟件等許多學科的知識,而且還涉及到當今許多前沿領(lǐng)域的技術(shù),它是一個國家高科技技術(shù)水平的重要體現(xiàn)。通過建立起簡易智能小車的設(shè)計,引導學生從理論走向?qū)嵺`,培養(yǎng)同學們的動手能力,使同學們在了解智能化電器的工作原理的基礎(chǔ)上,還使同學們獲得完成整體項目的能力,并掌握了Stm32開發(fā)板的編程原理,為同學們進入ARM領(lǐng)域提供了基礎(chǔ)。另外,本次課程設(shè)計,使同學們了解自己的不足之處,從而使同學們有目標的提升自己的能力。國外研究概況:上世紀50年代初,國外就有智能車輛的研究,從90年代開始,智能車輛的研究就進入了系統(tǒng)化、大規(guī)模的研究階段。尤其突出的是美國卡內(nèi)基梅隴大學機器人研究所已經(jīng)完成了Navlab系列的自主車輛的研究,這一研究成果代表了國外智能車輛的主要研究方向。國內(nèi)研究概況:我國對于智能車輛的研究較晚,始于上世紀80年代,而且現(xiàn)在大部分還是使用入門級別的51單片機進行設(shè)計與研究的,為了彌補與國外研究的差距,開設(shè)了全國大學生電子設(shè)計競賽。系統(tǒng)將采集的傳感器信號送入stm32微控制器中,stm32微控制器根據(jù)采集的信號做出不同的判斷,從而控制電機運動方向和運動速度。系統(tǒng)以stm32微控制器為核心,通過傳感器采集不同的信號做出判斷,繼而改變電機的運動方向和運動速度。: 實驗系統(tǒng)結(jié)構(gòu)圖智能小車控制系統(tǒng)具備了障礙物檢測、自主避障、自主循跡等功能。相應(yīng)的控制系統(tǒng)主要由以下四個模塊組成:避障模塊、循跡模塊、電機驅(qū)動模塊、中央處理模塊四個模塊組成,:這個圖調(diào)整下,和下面的編號看起來位置不協(xié)調(diào) 系統(tǒng)框架圖我們本節(jié)主要任務(wù)是了解各個模塊的功能,掌握各個模塊所使用的器件的使用方法,并能夠編寫相應(yīng)的程序代碼。掌握各個模塊的功能。在人類身體結(jié)構(gòu)中,大腦可以根據(jù)各個器官所傳輸?shù)男畔⒆龀鱿鄳?yīng)的行為動作用以保證人體所必須的生理原料,而stm32處理器之于智能小車就相當于大腦之于人類,它可以從各個模塊之間獲得數(shù)據(jù),并對所傳輸?shù)臄?shù)據(jù)進行實時處理,來驅(qū)使電機模塊做出相應(yīng)的行為動作。由ARM公司設(shè)計的基于ARMv7架構(gòu)的Cortex系列的標準體系結(jié)構(gòu)在2006年推出,此結(jié)構(gòu)是用來滿足日漸復雜的不同性能要求的軟件設(shè)計,根據(jù)所面向的領(lǐng)域,Cortex系列可以分為A、R、M三個分工明確的系列[1]。Stm32處理器的出現(xiàn)為微控制系統(tǒng)、工業(yè)控制系統(tǒng)、汽車車身系統(tǒng)和無線網(wǎng)絡(luò)等對功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域?qū)崿F(xiàn)高系統(tǒng)性能系統(tǒng)提供了基礎(chǔ),使編程的復雜性,集高性能、低功耗、低成本大大簡化,并使它們?nèi)跒橛谝惑w[2]。意法半導體ST公司作為一個半導體制造廠商,是ARM公司CortexM3內(nèi)核開發(fā)項目一個主要合作方。2007年6月11日由ST公司率先推出的基于CortexM3內(nèi)核的STM32系列微控處理器研發(fā)而出。此中,A系列是面向復雜的尖端應(yīng)用程序,用于運行開放式的復雜操作系統(tǒng);R是Real的首字母縮寫,是面向?qū)崟r系統(tǒng)開發(fā)的;M是Mirco的首字母縮寫,專門面向低成本的微控制領(lǐng)域開發(fā)研究。因此,CortexM3處理器是由ARM公司設(shè)計的首款基于ARMv7M體系結(jié)構(gòu)的32位標準處理器,它不僅具有低功耗、少門數(shù)等優(yōu)點,而且還具有短中斷延遲、低調(diào)試成本等眾多優(yōu)點,使它在眾多的處理器中脫穎而出。目前為止,STM32系列處理器暫分為2個系列。其中,STM32F101系列是標準型系列,工作頻率設(shè)定在36MHZ;STM32F103系列是增強型系列,工作頻率設(shè)定在72MHZ,其帶有更多片內(nèi)RAM和更豐富的外設(shè)資源。這兩個系列的產(chǎn)品在軟件和引腳封裝方面具有兼容性,并且擁有相同的片內(nèi)Flash資源,使軟件的開發(fā)和升級更加方便。本次試驗,我們使用的是stm32f103處理器。 stm32f103內(nèi)部結(jié)構(gòu)STM32F103系列微處理器是首款基于ARMv7M體系結(jié)構(gòu)的32位標準RISC (精簡指令集)處理器,具有執(zhí)行代碼效率高,外設(shè)資源豐富等眾多優(yōu)點。該系列微處理器工作頻率設(shè)定在72MHz,高達128K 字節(jié)的內(nèi)置Flash存儲器存儲器 存儲器是用來存儲程序和數(shù)據(jù)的部件,有了存儲器,計算機才有記憶功能,才能保證正常工作。它根據(jù)控制器指定的位置存進和取出信息。 [全文]和20K 字節(jié)的SRAM,方便程序編寫,而且具有豐富的通用I/O 端口。: 內(nèi)部結(jié)構(gòu)圖Stm32處理器主系統(tǒng)主要由4個被動單元和4個驅(qū)動單元構(gòu)成。4個驅(qū)動單元是:通用DMA1,通用DMA2,內(nèi)核DCode總線和系統(tǒng)總線。4個被動單元由APB橋,APB設(shè)備,內(nèi)部Flash閃存,內(nèi)部SRAM、FSMC。我們實驗所采用的芯片具有64KBSRAM、512KBFLASH、2個基本定時器,4個通用定時器,2個高級定時器,3個SPI,2個IIC,5個串口,1個USB,1個CAN,3個12位的ADC,1個12位DAC、1個SDIO接口,1個FSMC接口以及112個通用I/O口。 stm32最小系統(tǒng)電路設(shè)計Stm32的最小系統(tǒng)電路主要由系統(tǒng)時鐘電路、實時時鐘電路、JTAG調(diào)試接口電路,復位電路和啟動模式選擇電路組成。最小系統(tǒng)電路原理圖如圖213所示: 最小系統(tǒng)電路原理圖主要電路原理圖的設(shè)計及功能如下所示: 系統(tǒng)時鐘電路主要作用是提供節(jié)拍,就相當于人類的心臟跳動,隨著心臟的跳動,血液就會到達全身部位,所以系統(tǒng)時鐘的重要性就不言而喻啦。: 系統(tǒng)時鐘電路圖在時鐘電路中,我們選用8M的晶振。 : 復位電路圖本次試驗所采用的開發(fā)板為低電平復位。如圖所示,當按鍵懸空時RST輸入為高電平,當按鍵按下時,RST腳輸入為低電平,從而電路復位。 : JAG電路原理圖JTAG的主要功能是使目標文件燒到核處理器中。 : 啟動模式電路原理圖通過設(shè)置BOOT[1:0]引腳可以選擇三種不同啟動模式,啟動模式如表21所示:表21 啟動模式表啟動模式選擇引腳啟動模式說明BOOT1BOOT0X0主閃存存儲器主閃存存儲器被選為啟動區(qū)域01系統(tǒng)存儲器系統(tǒng)存儲器被選為啟動區(qū)域11內(nèi)置SRAM內(nèi)置SRAM被選為啟動區(qū)域 stm32軟件設(shè)計的基本思路在對其他模塊設(shè)計之前,我們必須了解stm32的編程規(guī)則。任何處理器,包括stm32處理器,想要處理器完成某項相應(yīng)的動作,就必須對處理器的寄存器進行操作。比如,我們在單片機C51中,同樣,我們在stmM32的開發(fā)中過程中,我們同樣可以對寄存器直接操作:GPIOxBRR=0x0011。 (x可以是A,B,C,D,E…比如GPIOA就是端口A)但是,對于stm32這種級別的處理器,幾百個寄存器記起來談何容易。所以,ST(意法半導體)提出了固件庫的概念,利用固件庫進行編程。固件庫的本質(zhì)就是函數(shù)的集合,固件庫將那些寄存器的底層操作都封裝起來,提供一整套API供開發(fā)者使用。比如,上面通過控制BRR寄存器來控制電平的變化,官方庫封裝了一個函數(shù):Void GPIO_ResetBits(GPIO_TypeDef * GPIOx,uint16_t GPIO_Pin)