基于STM32的小车控制.docx

上传人:b****4 文档编号:3775041 上传时间:2023-05-06 格式:DOCX 页数:30 大小:634.07KB
下载 相关 举报
基于STM32的小车控制.docx_第1页
第1页 / 共30页
基于STM32的小车控制.docx_第2页
第2页 / 共30页
基于STM32的小车控制.docx_第3页
第3页 / 共30页
基于STM32的小车控制.docx_第4页
第4页 / 共30页
基于STM32的小车控制.docx_第5页
第5页 / 共30页
基于STM32的小车控制.docx_第6页
第6页 / 共30页
基于STM32的小车控制.docx_第7页
第7页 / 共30页
基于STM32的小车控制.docx_第8页
第8页 / 共30页
基于STM32的小车控制.docx_第9页
第9页 / 共30页
基于STM32的小车控制.docx_第10页
第10页 / 共30页
基于STM32的小车控制.docx_第11页
第11页 / 共30页
基于STM32的小车控制.docx_第12页
第12页 / 共30页
基于STM32的小车控制.docx_第13页
第13页 / 共30页
基于STM32的小车控制.docx_第14页
第14页 / 共30页
基于STM32的小车控制.docx_第15页
第15页 / 共30页
基于STM32的小车控制.docx_第16页
第16页 / 共30页
基于STM32的小车控制.docx_第17页
第17页 / 共30页
基于STM32的小车控制.docx_第18页
第18页 / 共30页
基于STM32的小车控制.docx_第19页
第19页 / 共30页
基于STM32的小车控制.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于STM32的小车控制.docx

《基于STM32的小车控制.docx》由会员分享,可在线阅读,更多相关《基于STM32的小车控制.docx(30页珍藏版)》请在冰点文库上搜索。

基于STM32的小车控制.docx

基于STM32的小车控制

摘要

对于小车的控制,即是对于电机的控制。

电机作为机电能量转换装置,其应用范围已遍及国民经济的各个领域以及人们的日常生活中,所以怎么更好的对电机进行控制就显得尤为重要。

基于Cortex-M3内核的STM32F10x系列芯片是新型的32位嵌入式微处理器,其性能优良,移植性好,提高了对直流电机的控制效率,并对控制系统进行模块化设计,有利于智能小车的功能扩展和升级。

本论文主要分析了基于STM32F103的小车控制系统的设计过程。

此系统主要包括STM32F103控制器、液晶显示电路、键盘控制电路、电机驱动电路、红外探测电路、触角检测电路等。

以STM32F103主控芯片及其外围扩展电路实现系统整体功能;小车基本运动模式的选择及速度调节用按键开关式的键盘输入实现;同时液晶模块实时显示小车运动参数;用红外探测电路实现小车循迹功能;用触角传感检测模块实现小车简单避障功能。

在硬件设计的基础上提出了实现电机控制功能、LCD显示功能及小车简单循迹和避障功能的软件设计方案,并在STM32集成开发环境IAREWARM5.3下编写了控制程序。

关键词:

PWM,STM32F103,电机,传感器

ABSTRACT

Thecontrollingtothecaristhecontrollingtothemotor.Asamechanicalandelectricalenergyconversiondevices,motorhasbeenappliedineveryfieldofnationaleconomyandpeople'sdailylife,therefore,howtocontrolthemotorbetterisparticularlyimportant.TheSTM32F10xserieschipbasedonCortex-M3kernelisthenew32-bitembeddedMCU,whichhavethegoodperformanceandportability,andtheSTM32F10xhaveimprovedtheefficiencyofDCmotorcontrol,furthermore,themodulardesignofcontrolsystemishelpfulforfunctionexpansionandupgrades.

Thispapermainlyanalyzesthedesignprocessofthecar’scontrolsystem,whichusestheSTM32F103asamasterchip.ThissystemprimarilycontainstheSTM32F103controller,LCDcircuit,thecontrolcircuitofkeyboard,thecircuitofmotor-driven,theinfrareddetectioncircuit,thecircuitoftentaclessensoretc.Inthisdesign,thewholesystemiscontrolledbythechipSTM32F103anditsperipheralextendedcircuit;thebasicmodel’sselectionandspeedaccommodationcanrealizebytheinputofkeyboard;atthemoment,LCDmoduledisplaythecar’smovingparametersreal-timely;theinfrareddetectionrealizecar’stracingfunction;tentaclessensormodulecompletethecar’ssimpleobstacle-avoidancefunction.BasedonHardwaredesign,thepaperputsforwardasoftwaredesignschemetorealizethemotorcontrolling,LCDdisplayfunction,thecar’ssimpletraceandobstacleavoidancefunction.ThenthecontrolcodeiswrittenonIAREWARM5.3whichisanIDEofSTM32F103.

KEYWORDS:

PWM,STM32F103,motor,sensor

目录

前言1

第1章绪论2

1.1STM32芯片介绍2

1.1.1STM32处理器的分类2

1.1.2STM32处理器的内部结构及特点3

1.1.3TIMx定时器介绍4

1.2小车及其驱动器介绍6

1.2.1小车结构及功能简介6

1.2.2电机驱动电路简介7

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

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

2.2主要电路设计10

2.2.1STM32F103及外围电路设计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.1IAR开发环境介绍17

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

3.2.1程序设计思路18

3.2.2按键子程序19

3.2.3循迹子程序21

3.2.4自由行走子程序22

3.2.5LCD显示子程序23

第4章结论24

致谢25

参考文献26

附录27

 

前言

随着计算机、微电子、信息技术的快速发展,智能化技术的开发速度越来越快,程度越来越高,广泛应用于海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域。

智能电动小车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科,主要由路径识别、角度控制及车速控制等功能模块组成,被应用于隧道探测、机器人、考古、娱乐等许多方面。

因此,对智能小车的研究具有重要的实际意义。

嵌入式技术依靠其体积小、成本低、功能强等特点,适应了智能化发展的最新要求。

单片机作为控制系统的微处理器,在数据处理和代码存储等方面都已经无法满足系统的要求,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.1STM32芯片介绍

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.1STM32处理器的分类

STM32系列处理器目前分为2个系列。

STM32F101是标准型系列,工作在36MHZ;STM32F103是增强型系列,工作在72MHZ,带有更多片内RAM和更丰富的外设。

这两个系列的产品拥有相同的片内Flash选项,在软件和引脚封装方面是兼容[3]。

标准型系列是STM32处理器入门产品,其价格仅相同于16位MCU却拥有32位MCU的性能,其外设的配置能提供优秀的控制和联接能力。

增强型系列产品则将32位MCU的性能和功效引向一个新的级别。

内含的Cortex-M3内核工作在72MHZ,能实现高端运算,其外设的配置能提供极好的控制和联接能力。

STM32全系列处理器拥有的脚对脚、外设及软件的高度兼容性,这给其应用带来全方位的灵活性,可以在不必修改原始框架及软件的条件下,将应用升级到需要更多的存储空间,或精简到使用更少的存储空间,或改用不同的封装规格。

对于使用同一平台进行多个项目的开发而言,STM32更是一种非常好的选择。

因为在STM32全系列产品中,既有适合仅需少量的存储空间和引脚,也有满足需要更多的存储空间和引脚;既有适于高性能应用的,又有满足低功耗要求的;既有适合低成本简单应用,也有满足高端复杂应用的。

全系列兼容,使得项目之间的代码重用和代码移植变得非常方便。

1.1.2STM32处理器的内部结构及特点

STM32F103系列微处理器是首款基于ARMv7-M体系结构的32位标准RISC(精简指令集)处理器,提供很高的代码效率,在通常8位和16位系统的存储空间上发挥了ARM内核的高性能。

该系列微处理器工作频率为72MHz,内置高达128K字节的Flash存储器存储器

存储器是用来存储程序和数据的部件,有了存储器,计算机才有记忆功能,才能保证正常工作。

它根据控制器指定的位置存进和取出信息。

[全文]和20K字节的SRAM,具有丰富的通用I/O端口。

其内部结构图如图1.1所示。

图1.1STM32F10x内部结构图[4]

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

1.多达51个快速I/O端口,所有I/O口均可以映像到16个外部中断,几乎所有端口都允许5V信号输入。

每个端口都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或其它的外设功能口。

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.3TIMx定时器介绍

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生成模块。

下面简要介绍通用定时器的特性及功能。

通用定时器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位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。

因为仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置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(右轮)

电机B(左轮)

前进

正转

反转

后退

反转

正转

右转

停止

正转

左转

正转

停止

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

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

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

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

1.2.2电机驱动电路简介

电机驱动电路采用L298芯片控制,其内部原理图如图1.2。

L298是恒压恒流双H桥集成电机芯片,可同时控制两个电机,且输出电流可达到2A。

直流电机驱动电路使用最广泛的就是H型全桥式电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。

S2

S4

S3

S1

图1.2L298内部原理图

全桥式驱动电路的4只开关管都工作在斩波状态,如图1.2所示,S1、S2为一组,S3、S4为另一组,两组的状态互补,一组导通则另一组必须关断。

当S1、S2导通时,S3、S4关断,电机两端加正向电压,可以实现电机的正转或反转制动;当S3、S4导通时,S1、S2关断,电机两端为反向电压,电机反转或正转制动。

在小车动作的过程中,我们要不断地使电机在四个象限之间切换,即在正转和反转之间切换,也就是在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的ENA(第6引脚)、ENB(第11引脚)分别与两路PWM波输出端相连,控制电机是否转动。

IN1-IN4两对I/O输入,控制电机转动方向。

SENSEA、SENSEB为电流反馈引脚。

Vss电压最小为4.5V,最大可达36V;Vs电压最大值也是36V。

但经过实验,Vs电压应该比Vss电压高,否则有时会出现失控现象。

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

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

本设计采用STM32F103芯片作为控制器来实现对小车电机、液晶显示模块、外置键盘、传感器探测等外设的控制是一个合理的解决方案。

STM32F103具有丰富的外设接口、实时性强等优点,采用模块化设计,满足实际需要及扩展;用液晶显示模块可以实时显示小车的工作状态,比如显示小车是处在自由行走模式还是在循迹模式等;利用键盘的外部输入实现对小车行走模式的选择和速度的步进调节;利用传感器检测外界信息,实现小车简单的避障和循迹功能。

基于设计功能需求,本设计采用的是低电平触发的按键开关式键盘,这样可以合理地利用硬件资源,操作简便,并且编程灵活。

本论文设计的小车控制系统框图如图2.1所示。

图2.1电机控制系统框图

由系统框图可看出,小车整个控制系统设计主要包括电机驱动、液晶显示、键盘扩展电路、触角传感电路、红外收发检测电路等模块。

整个系统的硬件电路设计原理图见附录,下面分别介绍各部分模块的设计。

2.2主要电路设计

2.2.1STM32F103及外围电路设计

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

图2.2STM32F103芯片最小系统图

图2.3STM32F103芯片最小系统图续

如图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频率的外部时钟源。

LS

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2