STM32的小车控制 - 图文

更新时间:2024-01-18 11:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

对于小车的控制,即是对于电机的控制。电机作为机电能量转换装置,其应用范围已遍及国民经济的各个领域以及人们的日常生活中,所以怎么更好的对电机进行控制就显得尤为重要。基于Cortex- M3内核的STM32F10x系列芯片是新型的32位嵌入式微处理器,其性能优良,移植性好,提高了对直流电机的控制效率,并对控制系统进行模块化设计,有利于智能小车的功能扩展和升级。

本论文主要分析了基于STM32F103的小车控制系统的设计过程。此系统主要包括STM32F103控制器、液晶显示电路、键盘控制电路、电机驱动电路、红外探测电路、触角检测电路等。以STM32F103主控芯片及其外围扩展电路实现系统整体功能;小车基本运动模式的选择及速度调节用按键开关式的键盘输入实现;同时液晶模块实时显示小车运动参数;用红外探测电路实现小车循迹功能;用触角传感检测模块实现小车简单避障功能。在硬件设计的基础上提出了实现电机控制功能、LCD显示功能及小车简单循迹和避障功能的软件设计方案,并在STM32集成开发环境IAR EWARM 5.3下编写了控制程序。

关键词:PWM,STM32F103,电机,传感器

I

目 录

前 言............................................................... 1 第1章 绪论......................................................... 2

1.1 STM32芯片介绍 .............................................. 2

1.1.1 STM32处理器的分类 .................................... 2 1.1.2 STM32处理器的内部结构及特点 .......................... 3 1.1.3 TIMx定时器介绍 ....................................... 4 1.2 小车及其驱动器介绍.......................................... 6

1.2.1 小车结构及功能简介.................................... 6 1.2.2 电机驱动电路简介...................................... 7

第2章 小车控制系统硬件设计......................................... 9

2.1 系统功能实现及需求分析...................................... 9 2.2 主要电路设计............................................... 10

2.2.1 STM32F103及外围电路设计 ............................. 10 2.2.2 电源电路设计......................................... 12 2.2.3 电机驱动电路设计..................................... 12 2.2.4 液晶显示电路设计..................................... 13 2.2.5 键盘扩展电路设计..................................... 14 2.2.6 触角探测电路设计..................................... 15 2.2.7 红外探测电路设计..................................... 15

第3章 小车控制系统软件设计........................................ 17

3.1 IAR开发环境介绍 ........................................... 17 3.2 程序设计思路及部分模块程序................................. 18

3.2.1 程序设计思路......................................... 18 3.2.2 按键子程序........................................... 19 3.2.3 循迹子程序........................................... 21 3.2.4 自由行走子程序....................................... 22

II

3.2.5 LCD显示子程序 ....................................... 23

第4章 结论........................................................ 24 致谢............................................................... 25 参考文献........................................................... 26 附录............................................................... 27

III

前 言

随着计算机、微电子、信息技术的快速发展,智能化技术的开发速度越来越快,程度越来越高,广泛应用于海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域。智能电动小车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科,主要由路径识别、角度控制及车速控制等功能模块组成,被应用于隧道探测、机器人、考古、娱乐等许多方面。因此,对智能小车的研究具有重要的实际意义。

嵌入式技术依靠其体积小、成本低、功能强等特点,适应了智能化发展的最新要求。单片机作为控制系统的微处理器,在数据处理和代码存储等方面都已经无法满足系统的要求,ARM微处理器资源丰富,具有良好的通用性。Cortex-M3是ARM公司最新推出的第一款基于ARMv7体系的处理器内核。它主要针对MCU领域,在存储系统、中断系统、调试接口等方面做了较大的改进,有别于过去的ARM7处理器;Cortex-M3具有高性能、低功耗、极低成本、稳定等诸多优点,非常适合汽车电子、工业控制系统、医疗器械、玩具等领域。基于Cortex-M3内核的STM32系列处理器于2007年由ST公司率先推出,它集先进Cortex-M3内核结构、出众创新的外设、良好的功耗和低成本于一体,极大的满足自动控制系统设计要求。作为先进的32位通用微控制器的领跑者,STM32以其出众的性能、丰富且灵活的外设、很高的性价比以及令人意外的功耗水准,使其自面世以来得到众多设计者的青睐,众多行业领导者纷纷选用STM32作为新一代产品的平台。因此将STM32F103应用于智能小车的控制系统是一种较好的选择。

基于此,本文提出了一个比较合理的智能小车系统设计方案。整个小车系统以STM32F103芯片为控制核心,附以外围电路,利用红外探测器、触角传感器采集外界信息和检测障碍物;充分利用STM32F103的串口、并口资源和高速的运算、处理能力,来实现小车自动识别路线按迹行走、躲避障碍物,并且通过LCD显示器实时显示小车运动参数;配置STM32F103通用定时器为PWM输出模式产生PWM波,通过步进调节PWM波占空比参数控制电机的转速;设计简便的按键式键盘输入来切换小车运行模式,以及调节小车速度。

1

第1章 绪论

1.1 STM32芯片介绍

2006年ARM公司推出了基于ARMv7架构的Cortex系列的标准体系结构,以满足各种技术的不同性能要求,包含A、R、M三个分工明确的系列[1]。其中,A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列适合实时系统;M系列则专门针对低成本的微控制领域。Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器,具有低功耗、少门数、短中断延迟、低调试成本等众多优点。它是专门为在微控制系统、汽车车身系统、工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体[2]。半导体制造厂商意法半导体ST公司是ARM公司Cortex-M3内核开发项目一个主要合作方,2007年6月11日ST公司率先推出了基于Cortex-M3内核的STM32系列MCU。本章将简要介绍STM32系列处理器的分类、内部结构及特点,并对本设计中重点应用的通用定时器做进一步分析。 1.1.1 STM32处理器的分类

STM32系列处理器目前分为2个系列。STM32F101是标准型系列,工作在36MHZ;STM32F103是增强型系列,工作在72MHZ,带有更多片内RAM和更丰富的外设。这两个系列的产品拥有相同的片内Flash选项,在软件和引脚封装方面是兼容[3]。

标准型系列是STM32处理器入门产品,其价格仅相同于16位MCU却拥有32位MCU的性能,其外设的配置能提供优秀的控制和联接能力。增强型系列产品则将32位MCU的性能和功效引向一个新的级别。内含的Cortex-M3内核工作在72MHZ,能实现高端运算,其外设的配置能提供极好的控制和联接能力。 STM32全系列处理器拥有的脚对脚、外设及软件的高度兼容性,这给其应用带来全方位的灵活性,可以在不必修改原始框架及软件的条件下,将应用升级到需要更多的存储空间,或精简到使用更少的存储空间,或改用不同的封装规格。

2

对于使用同一平台进行多个项目的开发而言,STM32更是一种非常好的选择。因为在STM32全系列产品中,既有适合仅需少量的存储空间和引脚,也有满足需要更多的存储空间和引脚;既有适于高性能应用的,又有满足低功耗要求的;既有适合低成本简单应用,也有满足高端复杂应用的。全系列兼容,使得项目之间的代码重用和代码移植变得非常方便。 1.1.2 STM32处理器的内部结构及特点

STM32F103系列微处理器是首款基于ARMv7-M体系结构的32位标准RISC (精简指令集)处理器,提供很高的代码效率,在通常8位和16位系统的存储空间上发挥了ARM 内核的高性能。该系列微处理器工作频率为72MHz,内置高达128K 字节的Flash存储器和20K 字节的SRAM,具有丰富的通用I/O 端口。其内部结构图如图1.1所示。

图1.1 STM32F10x内部结构图[4]

STM32F103系列微处理器主要资源和特点如下[5]:

1. 多达51个快速I /O 端口,所有I/O口均可以映像到16个外部中断, 几乎所有端口都允许5V 信号输入。每个端口都可以由软件配置成输出(推挽或开

3

漏)、输入(带或不带上拉或下拉)或其它的外设功能口。

2. 2个12位模数转换器,多达16个外部输入通道,转换速率可达1MHz,转换范围为0~ 36V;具有双采样和保持功能;内部嵌入温度传感器。

3. 灵活的7路通用DMA 可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输,无须CPU 任何干预。通过DMA可以使数据快速地移动,这就节省了 CPU 的资源来进行其他操作。DMA 控制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。它支持的外设包括:定时器、ADC、SPI、I2C和USART 等。

4. 调试模式:支持标准的20脚JTAG 仿真调试以及针对Cortex- M3内核的串行单线调试(SWD)功能。通常默认的调试接口是JTAG 接口。

5. 含有丰富的通信接口:三个USART异步串行通信接口、两个I2C 接口、两个SPI接口、一个CAN 接口和一个USB接口,为实现数据通信提供了保证。

6. 内部包含8个定时器。在本设计中电机调速通过定时器的PWM功能实现。这将在下一节做进一步介绍。 1.1.3 TIMx定时器介绍

STM32F10x系列处理器内部有8个定时器,其中TIM1和TIM8为高级控制定时器,TIM2、TIM3、TIM4和TIM5为4个独立的通用定时器,TIM6和TIM7为基本定时器。这8个定时器各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。其中基本定时器可以为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟,实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。通用定时器TIMx,它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。通过对定时器预分频器和RCC时钟控制器预分频器的编程,可将脉冲长度和波形周期在几个微秒到几个毫秒间进行调整。每个定时器都是完全独立的,没有互相共享任何资源,它们也可以一起同步操作。

STM32F103主控芯片的8个定时器中,高级控制定时器TIM1和TIM8及4个通用定时器均可生成PWM波。高级控制定时器与通用定时器相比较,它们有非常多的相似之处,虽然前者功能要强大些,但鉴于后者已能够满足设计要求,因此选用通用定时器作为PWM生成模块。下面简要介绍通用定时器的特性及功能。

4

通用定时器TIMx (TIM2、TIM3、TIM4和TIM5)主要特性如下[6]: 1. 16位向上、向下、向上/向下自动装载计数器。

2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值。

3. 4个独立通道:输入捕获、输出比较、PWM生成(边缘或中间对齐模式)、单脉冲模式输出。

4. 使用外部信号控制定时器和定时器互连的同步电路。

5. 如下事件发生时产生中断/DMA:更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发);触发事件(计数器启动、停止、初始化或者由内部/外部触发计数);输入捕获;输出比较。

6. 支持针对定位的增量(正交)编码器和霍尔传感器电路。 7. 触发输入作为外部时钟或者按周期的电流管理。 对通用定时器TIMx功能简要描述如下[7]:

时基单元可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数 、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。时基单元包含计数器寄存器(TIMx_CNT)、预分频器寄存器 (TIMx_PSC)和自动装载寄存器 (TIMx_ARR),它们都可以由软件读写,在计数器运行时仍可以读写。预分频寄存器用于设定计数器的时钟频率;自动装载寄存器的内容是预先装载的,其内容被永久的保存在影子寄存器,或每次更新事件UEA发生时传送到影子寄存器;当计数器达到溢出条件且当TIMx_CR1寄存器中的UDIS位为0时,产生更新事件。更新事件也可由软件产生。

定时器工作模式有计数器模式、输入捕获模式、PWM输入模式、强制输出模式、PWM模式等,根据设计要求,定时器应配置成PWM模式生成不同占空比的PWM波。以下对PWM模式做简要介绍。

脉冲宽度调制(PWM)模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。在TIMx_CCMRx寄存器中的OCxM位写入‘110’(PWM模式1)或‘111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。使用PWM模式,必须通过设置TIMx_CCMRx寄存器的OCxPE位使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计

5

数或中心对称模式中)使能自动重装载的预装载寄存器。因为仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIMx_EGR寄存器中的UG位来初始化所有的寄存器。OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或低电平有效。OCx的输出使能通过(TIMx_CCER和TIMx_BDTR寄存器中)CCxE、CCxNE、MOE、OSSI和OSSR位的组合控制。在PWM模式(模式1或模式2)下,TIMx_CNT和TIMx_CCRx始终在进行比较,依据计数器的计数方向以确定是否符合TIMx_CCRx≤TIMx_CNT或者TIMx_CNT≤TIMx_CCRx。 根据TIMx_CR1寄存器中CMS位的状态,定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号[8]。

PWM输出信号的占空比由TIMx_CRRx寄存器确定的。其公式为“占空比=(TIMx_CRRx/TIMx_ARR)*100%”,因此,可以通过向CRR中填入适当的数来输出自己所需的频率和占空比的方波信号,进而实现本设计中调速功能。

1.2 小车及其驱动器介绍

1.2.1 小车结构及功能简介

所谓小车控制实际上就是电机控制,本论文所设计的小车分为电机系统、显示系统、控制系统、避障和循迹系统五大结构。

电机系统使用两个电机(A和B),设定正转、反转和停止三种状态,分别控制左轮和右轮,通过两个电机的转动状态切换控制小车的行驶方向,例如前进、后退、左转、右转,实现小车的基本运动功能;通过对电机转速的调节控制小车的运动速度。根据实际情况,假设两个电机相对安装,则表1-1是电机转动状态与小车运动方向的关系表。

表1-1 电机转动状态与小车运动方向关系表

运动状态 前进 后退 右转 左转 电机A(右轮) 正转 反转 停止 正转 6

电机B(左轮) 反转 正转 正转 停止

小车的显示系统,即小车装有液晶显示器(128×64),初始化由编程设定,小车运动过程中实时显示小车的运动参数,并可在以后予以扩展,根据实际运用的需要显示更多内容。

小车的控制系统为按键开关式的键盘,设定小车启动/停止、自由行走模式/循迹模式、加速/减速六种状态,最初都赋以高电平,当按键被按下时,即触发低电平,使小车按相应状态运动。

小车避障系统,即在自由行走模式下通过触角传感器对障碍物检测,使小车实现自动避障功能。

小车循迹系统,即在循迹模式下通过红外探测器对黑迹不断进行检测,自动识别路线,使小车按指定的路线行驶。 1.2.2 电机驱动电路简介

电机驱动电路采用L298芯片控制,其内部原理图如图1.2。L298是恒压恒流双H桥集成电机芯片,可同时控制两个电机,且输出电流可达到2A。直流电机驱动电路使用最广泛的就是H型全桥式电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。

S1 S4

S3 S2

图1.2 L298内部原理图

全桥式驱动电路的4只开关管都工作在斩波状态,如图1.2所示,S1、S2为一组,S3、S4 为另一组,两组的状态互补,一组导通则另一组必须关断。当S1、S2导通时,S3、S4关断,电机两端加正向电压,可以实现电机的正转或反转制动;当S3、S4导通时,S1、S2关断,电机两端为反向电压,电机反转或正转制动。

7

在小车动作的过程中,我们要不断地使电机在四个象限之间切换,即在正转和反转之间切换,也就是在S1、S2导通且S3、S4关断,到S1、S2关断且S3、S4导通,这两种状态之间转换。在这种情况下,理论上要求两组控制信号完全互补,但是,由于实际的开关器件都存在开通和关断时间,绝对的互补控制逻辑必然导致上下桥臂直通短路,比如在上桥臂关断的过程中,下桥臂导通了。这个过程可用图1.3说明。

图1.3上下桥臂导通图

因此,为了避免直通短路且保证各个开关管动作之间的协同性和同步性,两组控制信号在理论上要求互为倒相的逻辑关系,而实际上却必须相差一个足够的死区时间,这个矫正过程既可以通过硬件实现,即在上下桥臂的两组控制信号之间增加延时,也可以通过软件实现。

对于PWM(脉冲宽度调制)控制,通常配合桥式驱动电路实现直流电机调速,非常简单,且调速范围大,它的原理就是直流斩波原理。若S3、S4 关断,S1、S2受PWM控制,假设高电平导通,忽略开关管损耗,则在一个周期内的导通时间为t,周期为T,则电机两端的平均电压为:U=Vcc*t/ T=α*Vcc ,其中α=t/T称为占空比,Vcc为电源电压(电源电压减去两个开关管的饱和压降)[9]。PWM的占空比α决定输出到直流电机电枢电压的平均电压,进而决定了直流电机的转速。

L298的EN A(第6引脚)、EN B(第11引脚)分别与两路PWM波输出端相连,控制电机是否转动。IN1-IN4两对I/O输入,控制电机转动方向。SENSE A、SENSE B为电流反馈引脚。Vss电压最小为4.5V,最大可达36V;Vs电压最大值也是36V。但经过实验,Vs电压应该比Vss电压高,否则有时会出现失控现象。

8

第2章 小车控制系统硬件设计

2.1 系统功能实现及需求分析

本设计采用STM32F103芯片作为控制器来实现对小车电机、液晶显示模块、外置键盘、传感器探测等外设的控制是一个合理的解决方案。STM32F103具有丰富的外设接口、实时性强等优点,采用模块化设计,满足实际需要及扩展;用液晶显示模块可以实时显示小车的工作状态,比如显示小车是处在自由行走模式还是在循迹模式等;利用键盘的外部输入实现对小车行走模式的选择和速度的步进调节;利用传感器检测外界信息,实现小车简单的避障和循迹功能。基于设计功能需求,本设计采用的是低电平触发的按键开关式键盘,这样可以合理地利用硬件资源,操作简便,并且编程灵活。本论文设计的小车控制系统框图如图2.1所示。

图2.1 电机控制系统框图

由系统框图可看出,小车整个控制系统设计主要包括电机驱动、液晶显示、键盘扩展电路、触角传感电路、红外收发检测电路等模块。整个系统的硬件电路设计原理图见附录,下面分别介绍各部分模块的设计。

9

2.2 主要电路设计

2.2.1 STM32F103及外围电路设计

本设计采用STM32F103为主控芯片,则STM32F103芯片的最小系统设计如图2.2、2.3所示。

图2.2 STM32F103芯片最小系统图

10

图2.3 STM32F103芯片最小系统图续

如图2.2、2.3,此部分电路包括系统时钟电路、实时时钟电路、JTAG调试接口电路,复位电路和启动模式选择电路。下面对部分电路设计做简要说明。

1.时钟电路

系统时钟电路选用8MHZ的HSE晶体作为振荡器晶振。如图2.2所示,由R113、Y100(HSE晶振)、C108及C109构成系统时钟电路。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。实时时钟电路选择LSE时钟模式,如图2.2所示,由Y101(LSE晶振)、C112及C113构成LSE旁路,提供一个32.768kHz频率的外部时钟源。LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。

2.启动模式选择电路

如图2.3所示,通过BOOT[1:0]引脚可以选择三种不同启动模式。如下表2-1所示。

表2-1 启动模式

启动模式选择引脚 启动模式 BOOT1 X 0 1 BOOT0 0 1 1 主闪存存储器 系统存储器 内置SRAM 11

说明 主闪存存储器被选为启动区域 系统存储器被选为启动区域 内置SRAM被选为启动区域

在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。此时可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 2.2.2 电源电路设计

由于各电路模块所需电压不同,本设计需多种电源供电。STM32F103主控芯片采用3.3V供电,电机驱动采用5V与12V,红外收发检测电路采用5V与3.3V,液晶显示与触角传感电路均采用3.3V供电。外部电源采用12V的直流电压,因此根据设计要求,本设计进行了电源转换设计。

1. 采用KA7805芯片实现12V到5V的转换。KA7805的作用是输入大于5V的直流电压,输出5V的直流电压,且管脚较少,易于连接和实现,稳定性高。图2.4为KA7805芯片引脚接线图。

图2.4 KA7805引脚接线图

2.本设计采用LM1117-3.3芯片将5V转换为3.3V,具体电路设计如图2.5 所示。

图2.5 LM1117-3.3引脚接线图

2.2.3 电机驱动电路设计

STM32F103芯片外部扩展的电机驱动电路采用L298芯片控制,其基本电路图如图2.6。

12

图2.6 电机驱动电路基本电路原理图

如图2.6所示,小车运动状态通过电机A和B的不同方向转动来实现,电机有正转、反转和停止三种状态,每个电机由一对I/O口进行控制。表2-2是I/O端口状态与电机制动对照表。

表2-2 I/O端口状态与电机制动对照表

电机A 停止 正转 反转 - IN1 0 1 0 1 IN2 0 0 1 1 电机B 停止 正转 反转 - IN3 0 1 0 1 IN4 0 0 1 1

L298芯片采用5V(VSS)与12V(VS)直压供电,EN A和EN B分别用STM32F103主控芯片的TIM3_CH3和PB1/ADC_IN9/TIM3_CH4控制,产生PWM1和PWM2两路PWM波输出,IN1-IN4分别用PE3-PE6实现I/O输出控制电机转动方向。在L298与电机之间加入二极管,以保护电路。 2.2.4 液晶显示电路设计

显示模块采用LCD12864与STM32F103主控芯片串行通信方式,即LCD12864的15引脚(并/串行接口选择)接地。液晶显示模块LCD12864的外部引脚连接关系如图2.7。

13

图2.7 LCD12864的外部引脚连接图

2.2.5 键盘扩展电路设计

键盘扩展电路与STM32F103的5个I/O引脚相连,实现对按键检测。键盘扩展电路与STM32F103引脚连接图如图2.8。

图2.8 键盘扩展电路引脚连接图

键盘扩展电路采用按键开关式电路,,添加上拉电阻以保持按键检测默认为高电平,采用低电平触发方式,只要有按键按下,即触发相应电机转动状态。详细对照见表2-3。

14

表2-3 小车状态与各按键高低电平对照表

启动/停止 循迹模式 自由行走模式 加速 减速 按键1 低电平 高 高 高 高 按键2 高 高 高 高 高 按键3 高 低电平 高 高 高 按键4 高 高 低电平 低电平 高 按键5 高 高 高 高 低电平

2.2.6 触角探测电路设计

触角传感器由两条胡须构成,每条胡须都可简化为一个机械式的、接地常开的单刀单掷开关,当胡须没有被触动,连接胡须的I/O管脚的电压是3.3V;当胡须被触动时,I/O短接到地,所以I/O管脚的电压是0V。通过低电平触发方式,使小车实现简单的避障功能。

触角探测电路与主控芯片STM32F103的2个I/O口相连,接收检测信号。触角传感电路与STM32F103引脚连接图如图2.9。

图2.9 触角传感电路

2.2.7 红外探测电路设计

直流驱动红外探测器电路的设计如图2.10所示,R401和V1构成简单直流发光二极管驱动电路,NE555及其外围元件构成施密特触发器,其出发电平可通过W2控制,接收管V2和电阻R406构成光电检测电路,通过NE555输出的TTL

15

电平可直接驱动主控芯片I/O口。

根据不同地面对红外光不同的反射状况,红外探测器接收管接收不同反射,当寻到黑迹时,红外光被吸收,输出高电平;在光滑地面时则红外光被大部分反射接收,输出低电平。

本次设计中,红外发射与接收都由主控芯片STM32F103控制,STM32F103的PE1、PE2实现对发射电路的控制;PD5、PD6与红外接收相连,实现红外接收信号的检测。为方便对小车的控制,采用两个红外探测器分别对左右侧进行探测,根据左右两侧接收到的信号可方便对小车的运动方向进行快速调整。具体电路设计如图2.10所示。

图2.10 红外收发检测电路

16

第3章 小车控制系统软件设计

3.1 IAR开发环境介绍

IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。IAR软件是嵌入式设计软件产品中优质的开发工具。它最著名的产品是C编译器IAR Embedded Workbench,支持众多知名半导体公司的微处理器。许多全球著名的公司都在使用IAR SYSTEMS提供的开发工具,用以开发他们的前沿产品,从消费电子、工业控制、汽车应用、医疗、航空航天到手机应用系统。

IAR Embedded Workbench for ARM 是IAR Systems公司为ARM微处理器开发的一个集成开发环境。比较其他的ARM开发环境,IAR EWARM具有入门容易、使用方便和代码紧凑等特点。IAR EWARM中包含一个全软件的模拟程序(simulator),用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境,从中可以了解和评估IAR EWARM的功能和使用用法。IAR EWARM包含项目管理器、编辑器、编译连接工具和支持RTOS的调试工具,在该环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序。IAR EWARM主界面如图3.1所示。

17

图3.1 IAR EWARM主界面

3.2 程序设计思路及部分模块程序

3.2.1 程序设计思路

整个小车控制系统的程序设计采用模块化的编程思想,整个主程序的流程图如图3.2。

18

图3.2 主程序流程图

根据图3.2,程序主要包括程序初始化、按键扫描子程序、自由行走模式子程序、循迹模式子程序、LCD显示子程序。

程序初始化,包括对STM32F103系统模块、液晶显示模块、PWM波输出模块、电机驱动模块的初始化,然后编写各子模块的实现程序。 3.2.2 按键子程序

系统初始化完成后,进入键盘扫描子程序,其程序流程图如图3.3。

19

开 始 是否自由行走模式 N0 转换为循迹模式 YES 自由行走模式 N0 是否开始执行 YES 设置执行标志 PWM波占空比YES 是否加速 N0 增10/300 YES 是否减速 PWM波占空比减10/300 N0 占空比是否超出范围 YES N0 PWM波输出调节 维持原始PWM波输出 退出 图3.3 键盘扫描子程序流程图

20

由上章键盘扩展电路设计可知,启动/停止由1键控制切换,在程序中通过判断标志变量值来切换;自由行走模式和循迹模式单独按键控制;按小车加速和减速键,对小车速度进行相应调节。

本设计中小车运动方向转变时,速度未做单独处理,因此要求小车的运动速度不宜过快,否则方向不易控制。通过对PWM波占空比范围的控制限定小车的速度范围,占空比一般在150/300以下,因此本次设计中占空比范围设定为40/300-160/300。通过对定时器配置,产生时钟频率为10KHZ,周期为2.99ms的PWM波,由加速/减速键步进调节占空比参数TIM4_CCRx值,实现对小车运行速度的控制。具体定时器配置[10]以TIM3通道3为例程序如下:

void PWM_Channel _ configuration(u16 CCR_Val) {

u16 CCR3_Val=CCR_Val;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能 TIM_OCInitStructure.TIM_Pulse = CCR3_Val; //设置占空比=CCR_Val/(TIM_Period +1) TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //比较输出极性 TIM_OC3Init(TIM3, &TIM_OCInitStructure); //配置通道3

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能 TIM3在 CCR3上的预装载寄存器

TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIM3在 ARR 上的预装载寄存器 TIM_Cmd(TIM3, ENABLE); }

3.2.3 循迹子程序

循迹模式键按下,小车进入循迹模式,其流程图如图3.4。

21

图3.4 循迹子流程图

将小车置于黑迹上,进入循迹模式,主控芯片控制红外探测器使能,此时左右红外探测器均未检测到出界,小车开始向前行走,此后根据左右探测器的检测信号对小车的运动状态进行相应调整,使小车按设定的轨迹行走,实现简单的循迹功能。

3.2.4 自由行走子程序

自由行走模式键按下,小车进入自由行走模式,其子程序流程图如图3.5。

22

图3.5 自由行走子流程图

如图3.5所示,在自由行走模式下,由触角传感器检测障碍物,低电平触发来控制小车的运动方向。 3.2.5 LCD显示子程序

显示模块实时显示三个小车运动参数,小车行走模式、小车运动方向及速度级数,为满足显示要求,显示子程序主要调用了三个函数:

(1)写字节函数void LCD_Write(u32 inst,u8 ddata)

(2)写字符串函数void LCD_Dis_Str(u8 row,u8 col,u8 *str)

(3) 写十进制数函数void LCD_Dis_Digital(u8 row,u8 col,u32 Dig_Data) 利用这3个主要函数实现了状态参数的实时更新。

23

第4章 结论

本文根据设计内容和要求,制定了设计方案,并逐步完成了硬件和软件部分的设计。整个系统以STM32为主控芯片,实现对小车简单运动的控制,其中硬件部分包括STM32F103及外围电路、电平转换电路、电机驱动电路、液晶显示电路、红外循迹检测电路、触角传感避障电路、键盘扩展电路,完成各部分电路设计并使用PROTEL画出电路设计原理图;软件部分在STM32集成开发环境IAR EWARM 5.3下编写各模块程序,包括PWM波输出模块、液晶显示模块、键盘扫描模块、自由行走避障模块和红外循迹模块,并通过主控制程序将各模块融合一起。整个设计将硬件与软件相结合,实现对小车的控制,使小车能够做出前进、后退、左转、右转等动作,并通过液晶显示器实时显示小车的运动参数,同时可通过键盘输入对小车行走模式进行切换及对小车速度进行调节,并且能够在不同模式下通过传感检测电路实现简单的避障和循迹功能。论文基本完成了硬件和软件的设计,并使之符合设计要求。

本设计与实际应用相结合,利用高性能的STM32F103芯片,辅以各种传感器来检测路面、障碍物等周围环境,通过高可靠性的软件设计,来实现小型电动车的智能控制,具有很强的现实意义。随着智能控制技术与传感检测技术的飞速发展,作为智能机器人雏形的智能小车在探测、考古、娱乐各领域得到广泛应用,尤其在足球机器人研究方面有很好的发展前景。在智能机器人发展如火如荼之期,智能小车控制系统的研制为其提供了更有利的研制手段和方法,将有助于推动智能机器人的发展。由于初次接触STM32F10x系列芯片,对其先进的中断响应系统未能很好掌握,传感信号的接收选择了一般I/O口,不过基于STM32F103的高性能,其反应速度还是可以满足设计要求,但要充分利用芯片资源及更好的实时控制在这部分还有待改进;另外,对于小车转弯过程的车速未做区别对待,在本次设计中将PWM波占空比控制在1/2以下,使小车不会因速度过高而导致转弯过程中其方向不易控制。总的来说,设计方案是比较完善的,基本上达到了设计要求。

24

致谢

经过三个月的学习和锻炼,我的毕业设计已经基本完成。在这期间,我结合所学基础知识去接触新的芯片,在提出设计方案的过程中,反复的提出问题,解决问题,不断的进步,整个的设计过程中,在巩固已学知识的基础上,我的自学能力、和解决问题的能力有了很大提高,同时对嵌入式这方面知识与技术有了更进一步的了解,为以后更深层次的发展奠定了基础。

当然以上所有成绩的取得离不开各位老师和同学的热情指导和真诚帮助。首先我要感谢我的母校给我提供了一个良好的学习环境,感谢学院对我们毕业设计相关工作精心合理的安排,当然,对我的指导老师王辛杰老师表达我最真诚的谢意,感谢他在我毕业设计的整个过程中始终予以的热情指导和督促,对我提出的疑惑耐心地指点,他的指点是我克服困难、完成设计的重要因素,对我一个月的实习也产生了鼓励和支持的作用。同时我还要感谢李勇同学、曹煜涛同学的真诚指点,以及其他各位老师和同学的不吝指教,使我度过了紧张而又充实的三个月。毕业设计的三个月,我收获了知识、能力,也深刻体会到了师情和友情的可贵,这段时光将成为我人生中少有的甘甜回忆,我会以此激励自己继续努力,争取使自己的人生对社会产生些许积极的价值!

25

参考文献

[1] 杜春雷.ARM体系结构与编程.北京:清华大学出版社,2003-02-01 [2] 姚文详,宋岩.ARM Cortex-M3权威指南.北京:北京航空航天大学出版社,

2009-07

[3] 范书瑞.Cortex-M3嵌入式处理器原理与应用.北京:电子工业出版社,

2011-01-01

[4] 李宁.基于MDK的STM32处理器开发利用.北京:北京航空航天大学出版社,

2008-10

[5] 彭刚,春志强.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用.北京:

电子工业出版社,2011-01-01

[6] 刘同法,肖志刚,彭继卫.ARM Cortex-M3内核微控制器快带入门与应用.北

京:北京航空航天大学出版社,2009-08-01

[7] ST Microelectronics.RM0008 Reference manual(Medium-and Hight-desitity

STM32F101xx and STM32F103xx advanced ARM-based 32-bit MCUs).2008 [8] 王永虹,徐炜,郝立平.STM32系列ARM Cortex-M3微控制器原理与实践.北

京:北京航空航天大学出版社,2008-07-01 [9] 杨渝钦.控制电机.北京:机械工业出版社,2005-8-1

[10] ST Microelectronics.UM0427 User manual(ARM-based 32-bit MCU

STM32F101xx and STM32F103xx Firmware Library).2007

26

附录

27

本文来源:https://www.bwwdw.com/article/xs5o.html

Top