版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要本次试验主要分析了基于STM32F103微处理器的智能小车控制系统的系统 设计过程。此智能系统的组成主要包括STM32F103控制器、电机驱动电路、红外 探测电路、超声波避障电路。本次试验采用STM32F103微处理器为核心芯片,利 用PWM技术对速度以及舵机转向进行控制,循迹模块进行黑白检测,避障模块进 行障碍物检测并避障功能,其他外围扩展电路实现系统整体功能。小车在运动时, 避障程序优先于循迹程序,用超声波避障电路进行测距并避障,在超声波模块下 我们使用舵机来控制超声波的发射方向,用红外探测电路实现小车循迹功能。在 硬件设计的基础上提出了实现电机控制功能、智能小车简单循迹和避障功能的软
2、 件设计方案,并在STM32集成开发环境Keil下编写了相应的控制程序,并使用 mcuisp软件进行程序下载。关键词:stm32;红外探测;超声波避障;PWM;电机控制AbstractThis experiment mainly analyzes the control system of smart car based on microprocessor STM32F103 system design process The composition of the intelligent system mainly including STM32F103 controller, motor d
3、rive 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 o
4、bstacle detection and obstacle avoidance function, other peripheral extended circuit to realize the whole system function. When the car is moving, obstaele avoidance program prior to tracking, using ultrasonic ranging and obstacle avoidance obstaele avoidance circuit, we use steering gear under ultr
5、asonic 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 obstaele avoidance function of software design, an
6、d in the STM32 integrated development environment under the Kei 1. Write the corresponding control program, and use McUisp program download softwareKeywords :STM32 ; Infrared detection ;Ultrasonic obstacle avoidance ;PWM ;Motor control目录1. 绪论1.1研究概况-4-1.2研究思路-4-2. 软硬件设计-5-2.1中央处理模块-5-2.1.1 stm32fl03
7、 部结构-6-2.1.2 stm32最小系统电路设计-7-2.1. 3 stm32软件设计的基本思路-9-2.1.4 stm32 中斷介绍-9-2.1. 5 stm32定时/计数器介绍-11 -2.1.6主程序设计流程图- 12 -2.2电机驱动模块-13 -2. 2.1驱动模块结构及其原理-13 -2. 2.2驱动模块电路设计-13-2. 2.3驱动软件程序设计-14-2.3避障模块设计-18-2. 3.1避障模块器件结构及其原理-19-2. 3. 2 HC-SR04模块硬件电路设计-21-2. 3.3 HC-SR04模块程序设计-21-2.4循迹模块设计-28-2. 4.1循迹模块结构及其
8、原理-28-2.4.2循迹模块电路设计-30-2. 4.3红外循迹模块程序设计-30-3. 软件调试-33-3.1 程序仿真-33-3.2程序下载-34-4. 系统測试一35-5. 总结一37-致-39-参考文献一40一-41 -附录1 绪论智能小车通过各种感应器获得外部环境信息和部运动状态,实现在复杂环境背 景下的自主运动,从而完成具有特定功能的机器人系统。而随着智能化电器时代 的到来,它们在为人们提供的舒适的生活环境的同时,也提高了制造智能化电器 对于人才要求的门槛。智能小车是集成了多种高新技术,它不仅融合了电子、传 感器、计算机硬件、软件等许多学科的知识,而且还涉及到当今许多前沿领域的
9、技术,它是一个国家高科技技术水平的重要体现。通过建立起简易智能小车的设 计,引导学生从理论走向实践,培养同学们的动手能力,使同学们在了解智能化 电器的工作原理的基础上,还使同学们获得完成整体项目的能力,并掌握了 Stm32开发板的编程原理,为同学们进入ARM领域提供了基础。另外,本次课程 设计,使同学们了解自己的不足之处,从而使同学们有目标的提升自己的能力。11研究概况国外研究概况:上世纪50年代初,国外就有智能车辆的研究,从90年代开始, 智能车辆的研究就进入了系统化、大规模的研究阶段。尤其突出的是美国卡基- 梅陇大学机器人研究所已经完成了 Navlab系列的自主车辆的研究,这一研究成 果代
10、表了国外智能车辆的主要研究方向。国研究概况:我国对于智能车辆的研究 较晚,始于上世纪80年代,而且现在大部分还是使用入门级别的51单片机进行 设计与研究的,为了弥补与国外研究的差距,开设了全国大学生电子设计竞赛。1.2研究思路系统将采集的传感器信号送入stm32微控制器中,stin32微控制器根据采集的信号做出不同的判斷,从而控制电机运动方向和运动速度。系统以stm32微控制 器为核心,通过传感器采集不同的信号做出判斷,继而改变电机的运动方向和运动速度。实验系统结构如图1.1所示:传感器传感器 采样图11实验系统结构图2.软硬件设计智能小车控制系统具备了障碍物检测、自主避障、自主循迹等功能。相
11、应的控 制系统主要由以下四个模块组成:避障模块、循迹模块、电机驱动模块、中央处 理模块四个模決组成,系统总体框架如图2.1所示:图2.1系统框架图我们本节主要任务是了解各个模块的功能,掌握各个模块所使用的器件的使用方法,并能够编写相应的程序代码0掌握各个模块的功能。2.1中央处理模块在人类身体结构中,大脑可以根据各个器官所传输的信息做出相应的行为动作用以保证人体所必须的生理原料,而stm32处理器之于智能小车就相当于大脑之 于人类,它可以从各个模块之间获得数据,并对所传输的数据进行实时处理,来 驱使电机模块做出相应的行为动作。由ARM公司设计的基于ARMv7架构的Cortex系列的标准体系结构
12、在2006年推 出,此结构是用来满足日渐复杂的不同性能要求的软件设计,根据所面向的领域, Cortex系列可以分为A、R、M三个分工明确的系列。Stm32处理器的出现为微 控制系统、工业控制系统、汽车车身系统和无线网络等对功耗和成本敏感的嵌入 式应用领域实现高系统性能系统提供了基础,使编程的复杂性,集高性能、低功 耗、低成本大大简化,并使它们融为于一体以。意法半导体ST公司作为一个半 导体制造厂商,是ARM公司Cortex-M3核开发项目一个主要合作方。2007年6 月11日由ST公司率先推出的基于Cortex-M3核的STM32系列微控处理器研发而 出。此中小系列是面向复杂的尖端应用程序,用
13、于运行开放式的复杂操作系统; R是Real的首字母缩写,是面向实时系统开发的;M是Mirco的首字母缩写,专 门面向低成本的微控制领域开发研究。因此,Cortex-M3处理器是由ARM公司设 计的首款基于ARMv7-M体系结构的32位标准处理器,它不仅具有低功耗、少门 数等优点,而且还具有短中斷延迟、低调试成本等众多优点,使它在众多的处理 器中脱颖而出。目前为止,STM32系列处理器暂分为2个系列。其中STM32F101 系列是标准型系列,工作频率设定在36MHZ ; STM32F103系列是增强型系列,工 作频率设定在72MHZ,其带有更多片RAM和更丰富的外设资源。这两个系列的产 品在软件
14、和引脚封装方面具有兼容性,并且拥有相同的片Flash资源,使软件的 开发和升级更加方便。本次试验,我们使用的是stm32flO3处理器。2.1.1 stm32fl03 部结构STM32F103系列微处理器是首款基于ARMv7-M体系结构的32位标准RISC(精简指令集)处理器,具有执行代码效率高,外设资源丰富等众多优点。该系列微处理器工作频率设定在72MHz,高达128K字节的置Flash存储器和20K字 节的SRAM,方便程序编写,而且具有丰富的通用I/O端口。其部结构图如图2.2所示:DMA:HS77W 访问RTC:实时时钟AWUATClfl5 个串口,1 个 USB 1 个 CAN,3
15、个 12 位的 ADC, 1 个 12 位 DAC、1 个 SDI0 接口,1个FSMC接口以及112个通用I/O 口 -2.1.2 stm32最小系统电路设计Stm32的最小系统电路主要由系统时钟电路、实时时钟电路JTAG调试接口电路,复位电路和启动模式选择电路组成。最小系统电路原理图如图2-1-3所示:23HU TDI曲:一.35皿、厂詢T3VOTC14UK02930.CX iTXlf 3OOTC MP.$T8C_XMosc.oirrT-4UHHS4勒64:873;PAO-WWrSART.CTSADCJNC.TBe_CHlJR PAl/USARTTjm ADCJNi UMZ_CH? ”2U
16、?IAR72 TC ADC W7M_CH3 ?AS USART2 RXADC DIATIXQ CH4 ?A4SPll_X$VSARTX_a:ADClDi4PA-沖H.SCHADCJKW pmsfu Aso ADJNnMjq 1 PA3SOUlU.WC_IN7mG_CH2 ”gJSARTl CK/HMl CW1XKO PA:13XC1_ CHPAI mni_CTXAXRXBBDM;2ynMLCH, PA l2UARTl-KTCANIX*U8DPG),n&UC1X?A1STH1PBOADCqmNG.gPB1 ADCftTTXB CH4 PBaooiiPByJTDOPB5rCl_SMBAl PrCl
17、_$CVTOH_CH I PB7KC1 SDAmU CW PB&TIXSLCHj ?ETD_CH4 PBKK化SCLgRTLTX PB)11X;2LSDA 5ART3一PX PBH SPn_I.IX2_GA! VSA8LT3 CXTIin 3KIN pbbpk scxuiAkn ctstou cmin ?3Hn_S$OVSAXT3_R7S7d_C?E*T ?B 15 yn_XXUTfl_OEKPCOADCQG XI ADC LSI! K-.WCJNl: X5DC_m3 POADJCNW PCWADCQS C6PCI xw X。PCX? ?cn pen PCUAKIVIAMF ?C14OSC3i
18、_DT PC15TB_aRPEIPE2PESPE4PESPE4 PETPE2PK PS30 PEH PE12 PEB PU P15TOOX)1MW VDSPD5 PDe ?D?PD8 QPD)0 POUPO1: POBPOUPO15VDD.lVDD 2 vroH TO_4 VDD_5 VDDA VREF*VBATVSS LV55.2VSS 3 V&S 4 vsCs VSSA VREF-TCK9TOOR1GK3T15R1H100rv曲0114L-Jkc图2.3最小系统电路原理图主要电路原理图的设计及功能如下所示:1. 系统时钟电路系统时钟电路主要作用是提供节拍,就相当于人类的心脏跳动,随着心脏的
19、跳动,血液就会到达全身部位,所以系统时钟的重要性就不言而喻啦。系统时钟的电路设计如图2.4所示:图2.4系统时钟电路图在时钟电路中,我们选用8M的晶振。2. 复位电路复位电路的设计如图2.5所示VCC33CBRR=0x0011。(x 可以是 A, B, C, I), E比如 GPIOA 就是端口 A)但是,对于stm32这种级别的处理器,几百个寄存器记起来谈何容易。所以, ST(意法半导体)提出了固件库的概念,利用固件库进行编程。固件库的本质就是 函数的集合,固件库将那些寄存器的底层操作都封装起来,提供一整套API供开 发者使用。比如,上面通过控制BRR寄存器来控制电平的变化,官方库封装了一
20、个函数:Void GPIO_ResetBits(GPIO_TypeDef * GPIOx, uintl6_t GPIO.Pin)(GPIOx-BRR = GPI0_Pin; (x 可以是 A,B,C,D,E比如 GPIO_A 就是端 口 A)通过使用GPIO.ResetBits ()函数就可以直接对寄存器进行操作啦。2.1.4 stm32中斷介绍本方案中,我们要使用stm32的中斷,在程序设计中,我们要开启各个管道的 中斷,打开各个中斷通道,配置中斷方式,我们先来讲述下stni32单月机的中斷 机制。结构图如下所示:AMBA APB AttPCLK2 4外设轶AM】19J, 严 小19图2.
21、32 stm32外部中斷/事件控制器结构图图中的实线箭头,为外部中斷信号的传输路径。首先外部信号从编号为1的输入线进入。其次这个外部信号通过编号2的边沿检测电路,这个边沿检测电路受到“上升 沿选择寄存器”、“下降沿选择寄存器”的控制,我们可以控制这两个寄存器来选 择中斷的触发方式。我们可以在程序中进行设置,比如EXTLInitStructure. EXTI_Trigger = EXTLTriggeraising ;设置为上升沿触发中斷然后该外部信号进入编号为3或门,或门另一端是软件中断寄存器,如果,软 件中斷/事件寄存器的对应位置1,编号3的输出总是为有效信号1。之后进入“中 斷挂起请求寄存器
22、”,该寄存器记录了外部信号的电平变化。最后经过编号为4的与门进入NVIC中斷控制器,如果“中斷屏蔽寄存器”的 对应位置0,外部的中断请求信号不能传输到NVIC中断控制器,从而实现中断 的屏蔽。由于我们采用的是外部信号触发中斷,所以我们只需了解外部中斷的请 求机制,对于事件的中斷请求机制,我们在这里不做介绍。我们以PE1为例,介绍下外部中斷的一般步骤。步骤如下:开启I/O的复用时钟RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_GPIOEIRCC_APB2Periph_AFI0,ENABLE);初始化I/O为输入GP10_In i tStructure. GP10_P
23、 i n = GPIO_Pin_l;GPIO_InitStructure. GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOE, &GP10_Ini tStrueture); 初始化线上中斷,设置触发条件GPIO_EXTILineConfig(GPI0_PortSourceGPIOE, GPI0_PinSource1);EXTI InitStructure.EXTI Line=EXTI Linel;EXTI_InitStructure. EXTI_Mode = EXTI_Mode_Interrupt;EXT I _ I n i tStructure. EXT I
24、 _Tr i gger = EXT I _Tr i gger_R i s i ng_Failing;EXTI_In i tSt rueture. EXTI_L i neCmd = ENABLE;EXTLI nit(fiEXTLInitStructure); 配置中断分组NVIC、并使能中斷NVIC_InitStrueture. NVIC_IRQChanne1 = EXTII_IRQn;NVIC_Ini tStrueture. NVIC_IRQChanne1Preempt ionPriori ty = 0x00;NVIC_Ini tStrueture. NVIC_IRQChanne1SubPri
25、ori ty = 0x06;NVIC_InitStrueture. NVIC_IRQChanne1Cmd = ENABLE;NVIC_Init(&NVIC_InitStructure);编写中断服务函数void EXTIl_IRQHandler(void)主要代码详见附录 2.2.1.5 stm32定时/计数器介绍Stm32系列的单片机一般包含8个计数/定时器,TIM1、TIM8分别为高级控制 定时器,TIM2-TIM5为通用定时器,TIM6以及TIM7为基本定时器。对于定时器 的详细容,我们不在这里介绍。然后我们介绍一下本实验采用了那些定时器,以及这些定时器所要完成的功能 有哪些。本实验所采
26、用的定时器以及功能如下表所示:表2-2定时器介绍表定时器名称定时器配置模式主要功能TIM2定时器中斷模式通过定时器中断,控制超声波的扫描周期TIM3PWM复用输出模式控制小车速度及舵机转向TIM5输入捕获模式采集超声波发射到接受的高电平持续时间t2.1.6主程序设计流程图在本节实验中,循迹模块以及避障模块都是采用中斷方式进行工作的,因此其主程序流程图如下图所示:系统初始化 冃IJ进图1.2主程序流程图根据程序设计图,主程序设计如下:int main(void)u8 TIM5CH1_CAPTURESTA=O;/输入捕获状态ul6 TIM5CHl_CAPTUREJrAL; /输入捕获值delay_
27、init();/延时函数初始化NVIC.Con仃gurationO; /设置NVIC中斷分组2:2位抢占优先级2位响应 优先级LED_Init();GP10_Conf i gurat i on();/端口 初始化EXTIX_Init();扫描轨迹TIM2_Int_I nit(4999,7199); /控制超声波扫描周期TIM3_PW_Init( 1999,719); /控制舵机方向TIM5_Cap_Init(0XFFFF, 72-1); /以 IMhz 的频率计数while(l) farward_Low() : delay_ms(10);)2.2电机驱动模块Stm32对小车的控制,就是对电机的
28、控制,通过控制电机的转向,小车的运动 状态就会发生改变。电机驱动模块的主要器件为LM293N 我们下面就详细讲解 下电机驱动模块。2.2.1驱动模块结构及其原理电机驱动模块的实物图如图2. 8所示:图2.8驱动电路实物图电机驱动模块的主要器件是芯片LM293I) *部原理图如图2.9所示:全桥式驱动电路的4只开关管都工作在斩波状态 如图1.2所示,KI、K2 为一组,K3、K4为另一组,两组的状态互补,一组导通则另一组必定关断-当 KI、K2导通时,K3、K4关断,电机两端加正向电压,电机实现正转或反转制动; 当K3、K4导通时,KI、K2关斷,电机两端为反向电压,电机实现反转或正转制 动。2
29、.2.2驱动模块电路设计电机驱动模块的电路原理如图2.10所示:表2-2是各个端口状态与运动方向的关系,其关系如下表所示:表2-2端口与运动方向关系表电机MlIN1IN2电机M2IN3IN4停止00停止00正转10正转10反转01反转0111112. 2.3驱动软件程序设计车轮电机的动作由GPIO 口的输出实现,本节主要配置运动方向和运动速度, 对于运动速度的控制,我们必须使用PWM,通过改变PWH的占空比来调节速度的 大小,其主要代码设计如下所示: void TIM3_PW_Init(ul6 arr, ul6 psc) . 要想使stm32的通用定时器TIMx A生PWM输出,需要用到的寄存
30、器有:预分 频寄存器(TIMx_PSC)、自动重装载寄存器(TIMx_ARR)、捕获/比较模式寄存器 (TIMx_CCMRl/2) 捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器 (TIMx_CCRl4)。我们先介绍这几个寄存器,然后介绍如何使用库函数产生PWM 输出。下面我们就简单介绍下这些寄存器:首先是预分频寄存器(TIMx_PSC),该寄存器可以用设置对时钟进行分频,然 后在提供给计数器作为计数器的时钟。该寄存器的各位功能如图所示:15131211 1Q 987 E 543210PSC15:OrTrrrwnriurunrivTVTvrvririririri&15:0PSC1
31、5:OJ:覆分務的& (Prescaler value)计数器券时针或率(CK_CNT筈mcx.Psc/lTSCgO沖).psc包含了冬次兰更新弓仁产生号;奈入当弟找弁翹莽左存辖的任更葫丰辞包至计数卷後 TIM EGR%UG,2;TD荻祓二乍在良乜楔云的从控期畐有S3 2.11 TIMx PSC寄存器各位描述接下来介绍自动重装载寄存器(TIUx ARR),该寄存器的冬位描述如下图所示:W 14131211 ID g 876$!$210ARR15:0S15:0ARR15:0J:(Prescaler/alue)ARR齢了顧装執实賊 晡空輛鹫繼 详影刼33.用 吉胡RR療補貓.当誌裂發曲为空峦计嫦不
32、二作图2. 12 TlMxRR寄存器各位描述通过设置这两个寄存器,我们就可以算出PWM的输出周期,计算公式为:Tout=(arr+1 )*(psc+l)/Tclk。其中 Tclk 为系统时钟周期。其次我们介绍捕获/比较模式寄存器(TIlx_CCMRl/2),总共有两个,TIlx_CCMRl和 TIMx CCMR2,TIMx_CCMRl 控制通道 CH1 和 CH2,TIMx CCMR2 控制 CH3 和 CH4。因为这 2 个寄 存器差不多,我们仅以通道CH1为例,介绍其中的TIMx CCMR1为例,该寄存器的各位描述 如下图所示:15 U 13121110987654321CC2CE0C2M
33、2:00C2PS0C2FECC2Sl:0IC2F3:0IC2PSCl:0:OCICEOC1M:2:OCC1?E0C1FECC1S1:OIC1F:3:O:C1?SC:1:OrvnrrvnrrTiKrwrvrwrvrwrvrwr7nrrw,图2. 13 TIMx_CCMRl/2寄存器各位描述这里我们只介绍该寄存器的OCxM位 我们就以TIMx.CCMRl中的0C1M (控制 通道CH1)为例,该位功能如下图所示:位64OC1M2:0:輸出比较模或(Output Compare 1 mode)该3垃定义了輪出参考信号OC1REF为为作,而OC1REF诀定了OC仁 OC4N的值OC4REF 是高电平有
34、效,而OC仁O01N3有效电平取决于CC1P. CC1NP垃300:冻结.豹出比较奇存話TIMX_CCR1与计数菇TIMK_CNT闾的比较刃OC1REF不起作用; 301:匹配时设逶通道1为有效电平.刍计数#TIMx_CNT的直与擁兹/比软夺存器1 仃IMx_CCR1相同讨,强WC1REF为言.310:匹配时设置通道1为无效电平.刍计数#TIMx_CNT的直与擁获/比软吝存器1 (TIMx_CCR1相同时.强粼OC1REF为低.311=翱垓.当TIMx_CCR1=TIMx_CNTpf, SOC1REF的电平.100:强制为无效电平5SWOC1REF为低.101:强制为有效电平.强WC1REF为
35、高.110: PWIV1模弍1 一在向上计数时,一旦TIMx CNTTIMx_CCR1 道1为元效电平(OC1REF=0),否 则为有效电(OC1REF=1).111: PWMS式2在白上计数时.一旦TIMx_CNTTIMx_CCR1有效电平.否則为壬皴电平.注仁 一旦LOCK级别没为3(TIMxBDTR京存磊中的LOCK也)并且CC1S-00(该達道壬童成卷 出)则该色不能谀修改注2:在撲戒1或PWM模式2中,只有当比较结果改变丁茨在箸出比较模欢申从冻结棋戒 切换到RWM摸弍时,OC1REF电平才改变.图2.14 0C1M功能描述我们使用的是PWM输出模式,所以OC1M必须设置为110/11
36、1 o OC2M (控制通 道CH2)各位描述与OC1M相同,我们这要不在叙述。然后我们介绍捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入/输出通道 的开关,对于该寄存器,冬位描述如下图所示:15141312111098765432|保目CC4PCC4ECC3NPCC3VE CC3?CC3ECC21JPCC2NECCQPCC2E |CC1NP|CC1OTCCI?CC1E图2. 15 TIMx CCER寄存器描述该寄存器比较简单,因为我们只介绍通道1,所以我们只讲CC1E位。如果我 们想使能输入/捕获1,我们只需使用CC1E位。要想使PWM从I/O 口输出,此位 必须设置为1
37、。最后介绍捕获/比较寄存器(TIMx_CCRl4),总共有4个,分别对应CH卜4, 因为这4个寄存器相似,我们仅以TIMx.CCRl为例,该寄存器的给位介绍如下图 所示:CCR1L1d:0)rTrvnrrvirrviTrvTTrvrrvrarrvrzrT&150CCR115:0涯抑比较通道1的( (C即tu佗JCompa但归Sue)CCR1色g 了装入当士抽去/比敦1游存誌关虫(预芸卓這).乂杲在TIMX_CCMR1密寧爾(CC1PE住)中来送羿预荥馥才韭.写人岀签價今二即住藏至岁亦命 SS+.否则貝有骂更新車件发生也Jtti鉴鍛值才删溼窘前捕劄比较倚存器中兰諭8刃比昙咅克舷抒同计克总TIIV
38、bjCNT的比较.并左0C1%匚上产主发出信壬CC1fl道既改为输入:CCR1包含丁由上一这蜡入対床“件QC1淞的计或證史图2. 16 TIMx.CCRl寄存器各位描述在输出模式下,该寄存器的值与CNT中的值进行比较,根据结果,实现电平的 翻转。至此,我们把用到的几个寄存器都介绍完毕,下面我们就介绍如何通过库 函数来配置实现PWM三路输出。 开启TIM3时钟以及复用功能输出。使能GPIO和端口复用功能时钟。库函 数使能TIM3 GPI0以及复用功能时钟的方法是:RCC_APB1PeriphC1ockCmd(RCC_APB1Periph_TIM3, ENABLE);RCC_APB2PeriphC
39、lockCmd(RCC_APB2Peri ph_GPIOA I RCC_APB2Periph_AF10,ENABLE); 初始化TIM3,设置TIM3的PSC和ARR。在开启了 TIM3的时钟之后,我们 要设置PSC和ARR寄存器的值来控制PWH的输出周期。调用的格式如下:TIM_TimeBaseStructure. TIM_Period=arr;TIM_TimeBaseStructure. TIM_Prescaler=psc;TIM_TimeBaseStructure. TIM_C 1 ockl)ivision=0;TIM_TimeBaseStructure. TIM_CounterMode
40、=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 设置 TIM3_CH1、CH2、CH3 的 PWM 模式,使能 TIM3 的 CHI、CH2、CH3 输出。在库函数中PWM通道设置是通过TIM_0ClInitTIM_0C4Init来设置的,这里我们需要3路PWM输出,所以我们需要使用函数TIM_OClInit、TIM_0C2Init TIM_0C3Init。库函数的调用格式如下:TIM_OCIn i tStructure. TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStruc
41、ture. TIM_OutputState=TIM_OutputState_Enab1e;TIM_OCIn i tStructure. TIM_Pu1se = 0;TIM_OCIn i tStructure. TIM_OCPo1ari ty = TIM_OCPo1ari ty_H i gh;TIM_OC2Init(TIM3, &TIM_OCInitStructure);TIM_OClInit(TIM3, &TIM_OCInitStructure);TIM_OC3Init(TIM3, &TIM_OCInitStructure); 使能TIM3。完成以上配置后,我们要使能定时器TIM3。库函数调用
42、格式 如下:TIM_Cmd(TIM3, ENABLE);A 通过修改TIM3_CCRx(x为1,2,3)来控制占空比。库函数格式如下:Void TIM_SetComparex(TIM3, uint16_t Compare2);我们可以知道,通过定时器3控制PWM波的占空比,从而实现速度方面的控制。 其中arr和psc可以控制PWM波的周期,TIM3_CCRx可以控制PWM波的占空比。 我们只需要调用此函数就可以实现不同的速度控制。对于运动方向控制的代码我们就以后退为例,由于端口寄存器过于简单,我们 不在此介绍端口的寄存器。我们仅介绍如何通过库函数进行端口配置。对各个 I/O端口配置的过程相似,
43、我们仅以PD8为例:主要过程如下所示: 使能I/O 口时钟调用格式如下所示:RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_GPIODIRCC_APB2Periph_GPI0C, ENABLE); 初始化I/O参数,调用格式如下所示:GPIO_InitStructure. GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure. GP10_Mode=GP10_Mode_0ut_PP;GPIO_InitStructure. GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD, &GPIO_InitStruc
44、ture);操作I/O 口GPIO_SetBits(GPIOD, GPI0_Pin_8) ;PD8 置 1GPIO_ResetBits(GPIOD, GPIO_Pin_8);PD8 置 0我们知道了如何对端口进行操作之后就可以随意的控制小车的运动啦,运动方向 的程序设计,其基本函数单元如下所示:void Left_Low(void);-我们调用这些函数,就可以实现不同运动方向的控制。主要代码详见附录3.2.3避障模块设计在人类身体构造系统中,眼睛可以使我们非常方便的采集到外界环境的信息, 然后把信息及时的传输到大脑,并对外界环境信息的变化做出相应的处理。而对 智能小车来说,避障模块之于小车就相
45、当于眼睛之于人类。避障模块可以采集外 部地形数据,然后把所采集的地形数据传输到中央处理模块,从而实现躲避障碍 的功能。避障模块所采用的器件在市场中有许多类型,比如红外检测,光位移检 測,超声波检测等。本次试验我们使用的是HC-SRO4超声波检测,超声波由于具 有检测能力强,传播路径宽,因此我们决定使用HC-SRO4器件。在使用HC-SRO4模块进行超声波测距的同时,我们可以使用舵机进行辅助。舵 机的主要作用是改变HC-SRO4模块的照射方向,从而控制超声波的发射方向。在 程序编写过程中,如果小车前方遇见障碍时,我们可以直接控制舵机的转向,而 小车的车身可以保持不变,在测量结束后,小车再做相应的
46、动作。2.3.1避障模块器件结构及其原理HC-SR04超声波测距模块测量围在2cm-400cm之间,可以实现无接触式测距功 能。HC-SR04超声波测距模块由一个超声波发射器、一个超声波接收器和控制电 路组成,避障模块的实物结构图如图2.17所示:5VOND图2. 17实物正反面结构图如结构图所示VCC提供5电源,GNI)为接地线TRIG为触发信号线,ECHO为 回向信号输出线。基本原理如下:采用10 口 TRIG触发测距,给至少10us的高 电平信号,在TRIG触发沿到来后,超声波发射器会自动发出8个40KHz的方波, 并且检测是否有信号返回,当超声波接收器接收到超声波时,表明有信号返回,
47、通过10 口 ECHO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。因此测量距离二(高电平持续时间*340m/s)/2。测量时序图如图2.18所示:IOuS 的 TTL慰发信号 |_iVR发岀8 40KHs穌冲模块内部 I 发H1估号後岀创响回响电平镐出 信号与担测距离咸比例图2.18超声波时序图我们根据时序图,可以编写相应的程序代码。为了防止发射信号对回向信号的 影响,我们的测量周期不易过小。并且由于HC-SRO4的感应角度不大于15,所 以測距时,为了防止发射信号丢失,我们要求被测物体的面积不应小于0.5平方 米,否则可能导致测量结果不准确。舵机在避障模块的主要作用前面已经提
48、到,本节主要讲解舵机的工作特性。舵 机的实物图如图2.19所示:图2.19舵机实物图舵机的工作工作原理是stm32微处理器发出数据给舵机,舵机部有一个基准电 路,它会产生周期为20ms 宽度为1.5ms的基准信号,它将微处理器传输的直 流偏置电压与电位器的电压数据进行比较,获得电压差输出。经由电路板上的 IC判斷转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检測器送回反馈信号。舵机的转动角度与stm32所提供的PWM信号相关。标准信号PWM周期为20ms,理论上来讲脉宽为 卜加s、实际我们的脉宽为0. 5-2. 5ms、脉宽与所转的角度一一对应。角度与脉宽的对应图如
49、图2.20所示:0 degrees45 degreeslow L-1250微秒180 degreesinuu 2000微秒图2. 20舵机角度与脉宽对应图2. 3. 2 HC-SR04棋块硬件电路设计超声波模块硬件原理图如下图所示:图2.21超声波硬件原理图HC-SRO4模块主要由发射器、接收器和部分电路组成。在此试验中,我们只需简单了解电路的设计寸于其基本原理可以不用过多涉猎,我们只需明白它们的 工作原理,并且能够简单运用即可。2. 3.3 HC-SR04模块程序设计根据硬件电路的设计,我们对避障子程序进行设计,程序流程图如图2.22所示:舵机知令“小4、左传 小4 A /足竹ft绰何舵机右
50、转汽 小4、盲力足许倒- 小小肩啊小4、后转邀障种疔绅图2. 22避障程序流程图避障模块在程序设计中,我们的工作主要是:1、控制超声波的扫描周期2、采集超声波发射到接受的高电平持续时间t3、对采集的高电平持续时间t进行处理,判斷前方是否有障碍下面我们就详细介绍我们是怎么通过软件设计来完成这几个步骤的:1、控制超声波的扫描周期根据表2-2,我们采用的是TIM2来控制超声波的扫描周期。首先我们把TIM2 设置为定时器中斷模式,代码格式为voidTIM2_Int_Init(ul6 arr, ul6 psc);由 于配置定时器中斷模式十分简单,我们就不在详细介绍,其详细代码见附录4. 定时器TIM2的
51、中斷周期计算公式为T=(arr+l)*(psc+l)/Tclk Tclk为系统周 期,一般为72Mhz.我们在中断服务程序中控制超声波的发射,我们采用PC7作 为触发信号,根据超声波时序图,我们需要在中斷程序中给PC7 一个持续10ms 的高电平,中斷服务程序如下:void TIM2RQHandler(void) /TIM2 中斷if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)TIM_C1earITPendingBit(TIM2, TIM_IT_Update );GPI0_SetBits(GPIOC, GPI0_Pin_7);delay_ms(10);GP10_ResetBits(GPI0C, GPI0_Pin_7);2、采集超声波发射到接受的持续时间t在本节试验中,我们使用了通用定时器TIM5的输入捕获功能,输入捕获模式 具有测量频率或者测量脉冲的宽度的功能。我们开启TIM5通道CH1 (定时器5) 的输入捕获模式,采集ECHO端口的高电平持续时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《语言程序设计》2021-2022学年期末试卷
- 石河子大学《双碳概论》2023-2024学年第一学期期末试卷
- 石河子大学《工程项目管理》2022-2023学年第一学期期末试卷
- 石河子大学《材料力学》2023-2024学年第一学期期末试卷
- 九年级数学专题总复习(含答案)
- 沈阳理工大学《力学》2021-2022学年第一学期期末试卷
- 沈阳理工大学《机电传动控制》2022-2023学年期末试卷
- 四史2023-2024-2学期学习通超星期末考试答案章节答案2024年
- 沈阳理工大学《动态网络广告》2022-2023学年期末试卷
- 关于合同法的专著
- Access数据库课程标准
- 幼儿园中班语言:《两只蚊子吹牛皮》 课件
- 临时用电漏电保护器运行检测记录表
- 头痛的国际分类(第三版)中文
- 音乐ppt课件《小小的船》
- 幼儿园教学课件语言教育《雪地里的小画家》
- 结构化面试经典100题及答案
- ESG引领下的西部城市再出发-新型城市竞争力策略研究白皮书
- 小学生班干部竞选自我介绍PPT模板公开课一等奖市赛课获奖课件
- 万科物业岗位说明书2
- 音乐教学说课
评论
0/150
提交评论