基于STM32的智能避障循迹小车系统设计.docx
《基于STM32的智能避障循迹小车系统设计.docx》由会员分享,可在线阅读,更多相关《基于STM32的智能避障循迹小车系统设计.docx(33页珍藏版)》请在冰点文库上搜索。
基于STM32的智能避障循迹小车系统设计
基于STM32的智能避障循迹小车系统设计
摘要:
随着机器人行业及计算机技术的快速发展,日常生活及工业成产正在向智能化方向发展,自动循迹小车是一种智能行走机器人,能够适应各种不同的环境,能够克服磁场,温度,湿度等因素的影响,在人类无法生存或者无法进入的环境下仍然可以很好的完成运输,勘测,救援等方面的非常任务。
本设计
“基于STM32的智能避障循迹小车”使用四个灵敏电机作为动力进行差速控制,所有系统采用模块化设计i红外避障。
系统包括:
目前市场上性价比较高的STM32作为控制核心,使用抗干扰能力强的红外对管作为路径探测传感器,利用红外
避障传感器进行避障,LM298N作为电机驱动,使用PID算法控制小车速度。
此外,本设计使用常用的蓝牙与用户手机通信,可以用来作为工厂AGV货物运输小车提高生产效率,或者作为餐厅的自动送餐车,方便我们的日常生活
关键字:
自动循迹;避障;STM32;红外对管;红外避障;PID
第1页第1页第1页
DesignofintelligentcarwithobstacleavoidanceandtrackingdevicebasedonSTM32
Abstract:
Withtherapiddevelopmentofrobotindustryandcomputertechnology,oftenlifeandtheindustryistoproducetotheintelligentdirectionautomatictrackingthecarisakindofintelligentrobot,thecarcanadapttovariousenvironment,thecarhasabilitytoovercomethemagneticfield,temperature,humidityetcfactors,inhumanscannotsurviveorinaccessibleenvironmentcanstillbeverygoodfinishsuchastransportationreconnaissance,rescuetasksetc.ThisdesignUSESfoursensitivedifferentialcontrolmotoraspower,allsystemadoptsmodulardesign.Thisdesignsystemincludes:
highcostperformanceonthemarketatpresenttheSTM32ascontrolcore,usingstronganti-jammingcapabilityofinfraredtubeasthepathdetectionsensors,usingultrasonicsensorsforobstacleavoidance,usingLM298Nastheamotordrive,usingPIDalgorithmtocontrolthecarspeed.Inaddition,thisdesignusesthecommonlyusedBluetoothphonecommunicationwithusers.ThisdesignercanbeusedasafactoryAGVcarsimprovetheefficiencyofproduction,orastherestaurant’sautomaticcar,convenientourdailylife.
Keywords:
Automatictracking;Obstacleavoidance;STM32;InfraredtotubeInfraredavoidance;PID
第2页第2页第2页
目 录
1绪 论 1
1.1引 言 1
1.2国内外研究现状 2
2智能小车系统器件选择 3
2.1系统整体方案设计 3
2.2系统器件选型方案论证 4
2.2.1主控制器 4
2.2.2循迹硬件系统设计 5
2.2.3避障硬件系统设计 6
3智能小车硬件电路设计 7
3.1硬件电路设计开发工具 7
3.2硬件电路设计 7
3.2.1主控最小系统电路 7
3.2.2电机驱动电路 9
3.2.3循迹模块电路 10
3.2.4测速模块电路 11
3.2.5电源电路 11
4智能小车软件设计 13
4.1软件开发平台 13
4.2功能程序设计 14
4.2.1循迹程序设计 14
4.2.2避障程序设计 15
4.2.3测速程序设计 16
4.2.4速度控制程序设计 17
5智能小车系统实物图 18
6总结与展望 19
6.1论文工作总结 19
6.2论文工作展望 20
[参考文献] 21
附 录
(一) 22
附 录
(二) 24
致 谢 28
第1页第1页第1页
1绪 论
1.1引 言
随着汽车行业的迅速发展,汽车数量越来越多,速度也越来越快,造成诸多例如交通拥挤,交通事故增加等事故的现象,智能化汽车也逐渐受到越来越多人的关注。
智能循迹小车属于行走机器人的一种,涉及到计算机、通讯、自动控制。
微控原理等诸多技术,能够自主感应外部环境并能根据环境要求对自身运动状态进行控制。
智能机器人技术的出现不仅影响了人类日常生活,同样也对工业生产方式发生了改变。
智能车在许多方面具有广泛的应用前景。
例如在日常生活中智能车可以做为智能道路清洁车帮助清洁人员对道路进行清扫;在工业生产中能够为生产线搬运货物;军事方面可以代替士兵执行危险任务等。
智能车辆是汽车行业今后发展趋势,随着科学技术的发展,特别是近年来计算机科学,电子技术,自动控制技术的飞速发展,为智能车辆的研究提供了坚实的技术基础。
目前国内对于这方面的研究投入了很大的财力、物力。
最为典型的就是今年来各个大学举办的各类大型的创新型电子设计大赛,例如飞思卡尔,电子设计大赛,全国机器人设计大赛等,国内无论是电子设计还是机械方面,与国外都有一定的差距,加强智能车辆的研究力度可以看出我国对这方面技术的重视,同时也可以看出我国追赶发达国家科学技术的决心。
该设计主要分为三个模块:
传感器检测模块、主控模块、电机及电机驱动模块,智能小车通过多种传感器,感知提前规划好的路径及道路上的障碍物,通过信息的方式发送给主控芯片,通过这些信息,主控模块发出动作指令,控制小车的运动状态,从而可以脱离人为控制进行自主行走。
1.2国内外研究现状
国外智能车辆的研究的历史较长,起源于上世纪50年代美国开发出世界上第一台能够自主引导的车辆,虽然该系统只是一个运行在固定线路上的平台,但已经有了无人驾驶的特征,可以认为是第一款智能车辆,智能车辆的发展大致经历了一下三个阶段。
第一阶段为示教在再现型智能小车,这种系统没有应用传感器,所以无法感知外部环境,不能根据外界环境对自身运动状态进行调整。
第二阶段的智能车辆开始出现了一些具有特定功能的传感器,并且具有自适应能力,这种小车通过外部连接简单传感器,确定自身大体位置和状态,然后通过算法对车身进行调整。
第三阶段的智能车辆具有非常强的感知能力。
由于传感器技术以及微控技术的发展,使得智能车辆能够获得非常丰富的道路信息,并且微控技术的提升也使能智能车辆具有自主决策能力,能够根据环境快速、准确的调整自身状态。
相比于国外智能车辆研究历史,我国开展智能车辆的研究时间较晚,大致始于20世纪80年代,并且大多数研究主要针对某些单项技术,清华大学汽车
研究所是我国国内最早从事智能车辆的机构之一。
近30年来,我国许多研究所、高校、企业都在致力于智能汽车的研究,并且取得了很好的成绩。
例如,中国
一汽集团与中国国防科技大学联合研制的CITAVT型自主导航车,长沙进行自主实验,其最高时速可达75.6千米,其性能指标已经达到国际先进水平;新松机器人公司研制的智能机器人“亮亮”,具有教育、娱乐、安全等多项功能,能够联网查询资料,预报天气,并能进行语音对话,做出相应的反馈;2006年,我国开始举办全国“飞思卡尔”智能小车的比赛,该比赛由国家教育部与飞思卡尔公司联合举办,吸引了许多高校学生参加。
近年来,我国不断的加大资金和人才发展智能车辆行业,相信不久的将来,我国智能车辆技术将赶上甚至赶超国际先进水平。
第2页第2页第2页
2智能小车系统器件选择
2.1系统整体方案设计
根据题目要求,本智能小车要在规定的跑到上沿黑色引导线匀速行驶,遇到障碍物后停止待障碍物离开后可继续行驶。
可确定方案如下:
智能车使用四驱式小车模型,使用循迹模块探测黑色引导线,确定小车赛道上的位置,测速模块测量每个电机的速度,确定小车当前的行驶状态并结合小车位置信息对电机控制。
使用避障模块探测小车前方是否有障碍物,当有障碍物时小车停止运行,待障碍物离开后继续行驶。
本方案可以实现对小车位置及运动状态的实时监测并加以控制,灵活可靠,能确保小车在赛道上平稳运行,达到设计目的,其整体系统方案框图如下2.1
所示。
第3页第3页第3页
循迹模块
避障拨快
电机驱动模块
四驱电机
测速模块
主 控 制 器
图2.1系统方案图
2.2系统器件选型方案论证
2.2.1主控制器
主控制器的选择主要有两种,一种是STC89C52,一种是STM32。
方案一:
使用STC89C52作为主控芯片 STC89C52是一款典型的8位单片机,使用经典的51内核,内部有8K字节的FLASH,512个字节的RAM,32
个通用IO端口,内置两个外部中断,三个16位定时器/计数器,一个串口中断,可以通过ISP/IAP机制下载程序,增加了保密性,工作性能稳定,但运行速度较慢,功耗高
方案二:
采用ST公司的STM32F103作为主控芯片,STM32是基于超低功耗ARM Cortex-M3处理器内核的微控制器,它由ST(意法半导体)公司专为要求高性能、低成本、低功耗的嵌入式应用设计。
相比于传统的89C51系列单片机,拥有很多新特性,例如性能强劲、代码密度高、支持位带操作、内部资源丰富、成本低廉、功耗小等众多优势。
其优点主要体现在:
1低廉的价格,
第4页第4页第4页
可以用8位单片机的价格买到到32位单片机,是STM32的突出优势。
2 丰富的外设STM32拥有包括:
ADC、DAC、RTC、CAN、DMA、USB、FSMC、IIC、SPI、TIMER、IIS、S
DIO等超多外设[2],具有很高的集成度。
3 众多的型号STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有BGA、QFN、LQFP等封装[3]可供选择。
同时STM32还推出了
STM32W和STM32L等超低功耗和无线应用型的M3芯片。
4 极低的功耗
STM32的每个外设均有自己独立的时钟开关,可以通过程序关闭相应外设的时钟以达到降低功耗的目的。
5优异的实时性能STM32具有84个中断,16级可编程优先级,并且所有的I/O引脚都可以作为中断输入。
由于本设计对于主控制器要求较高,所以使用STM32作为主控制器。
2.2.2循迹硬件系统设计
循迹传感器的作用是将环境的图像信号转换成单片机能够处理的数字信号,
循迹系统是保证智能车正常工作的先决条件。
在图像处理技术发展的初始阶段,数字化传感器非常昂贵,导致图像处理技术研究进展缓慢,随着近年来电子技术的告诉发展,例如CCD,CMOS这种图像传感器在日常生活中得到了广泛的应用,并且日益得到发展。
循迹传感器的选择主要分为两种,一种是视觉类的传感器,一种是光电式传感器
方案一:
使用视觉类传感器,视觉类传感器是获取一张图片,从中获取所需要的信息构造出观察对象,该传感器能够捕获数以千计的像素,图像的清晰程度以传感器所获取像素点的数量来表示,捕获到的图像通常存储在传感器自身内存中,通过捕获的图像与我们设定的基准图像进行比较可以判断智能小车的位置,并下达智能车下一步的动作指令,在智能车的设计中,图像传感器主
第5页第5页第5页
要使用CCD摄像头,该类传感器安装便捷,信息获取量大,分辨率高,但也有显著的缺点,主要包括耗电量大,对外界光线要求高,处理速度慢等。
方案二:
使用光电传感器,主要是使用红外对管,该类传感器由红外线发射管和光敏接收管组成,当被检测路径由白线转为黑线时,由于黑色无法反射光线使传感器的输出信号发生跳变一次将外界光信号转换成电信号,由于其结构简单,在探测过程中可以快速感知外界信息的变化。
光电传感器具有相应速度快,性能稳定,价格便宜,结构简单,灵敏度高,对外界光线要求低的特点,能够满足智能小车的基本要求,视觉类传感器能够根据摄像头捕获的图像来计算出智能车的车身位置,速度以及距离目的地的距离等信息,它能够根据获取的信息得到智能车的大量信息,但是在处理图像时对中央处理器的要求高,且实时性较差,不适合本次设计的智能车使用,所以本文的循迹系统采用简便实用的光电传感器。
2.2.3避障硬件系统设计
在智能车的研究过程中,避障传感器可以为智能车的行驶提供安全保证,避免智能车损坏以及其它安全事故。
本系统主要有超声波传感器,红外避障传感器,及激光雷达传感器三种选择
方案一:
使用超声波传感器,超声波传感器是利用超声波特性研制的测距传感器。
是由换能晶片在电能的激励下发生震动产生超声波,具有频率高,波长短,方向性好的特点,测量距离远、穿透性强、操作简单、成本低,精度高的,是机器人避障系统中常用的传感器之一。
超声笔传感器测距原理是采用时间差测距法,即超声波传感器向某一个方向发射超声波,在发射超声波的同时,传感器内部的计时器系统开始计时,超声波在空气中能够自由传播,当遇到障
第6页第6页第6页
碍物之后会被反射回来,当传感器检测到反射回来的超声波后,计时器会立即停止计时,根据发射与接收声波之间的时间差以及声波在空气中的传播速度可以计算出障碍物的距离。
当检测到障碍的距离在小于设定值时,控制小车停止以达到避障的目的。
方案二:
使用激光雷达装置,激光雷达传感器的作用和原理与超声笔相似,传感器发送一个信号等待信号被发射回来后接受,通过计算从发送到接收的时间,确定障碍物的距离该传感器有着非常高的精度且反应速度快,但价格比较昂贵。
方案三:
使用红外避障传感器,红外避障器是一种集发射与接收与一体的光电传感器,利用被检测物体对红外线的反射与否,由光电回路选通电路,从而判断是否有障障碍物,障碍物没有局限性,只要能够发生红外线的物体均可以被检测。
红外避障传感器技术成熟,性能稳定,成本低廉,并且性能稳定。
超声波传感器虽然能够测量范围广,测量距离准确,但是其方向性不好容易导致测量不准确,存在一定的探测盲区,本系统只需测量车辆前方一下段的距离,红外避障传感器足可以胜任,并且由于其稳定的性能,故本设计选择使用红外避障传感器。
3智能小车硬件电路设计
3.1硬件电路设计开发工具
本设计的所有硬件电路设计均在AltiumDesigner中完成。
Altiumdesigner
是原Protel软件开发公司Altium推出的一种一体化电子电路开发系统,主要在
Windows系统下运行,该软件把原理图设计,PCB绘制,电路仿真等技术完美融合,为电路开发人员提供了全新的解决方案,该软件功能强大,使用简单,
第7页第7页第7页
大大提高开发人员的设计效率。
3.2硬件电路设计
3.2.1主控最小系统电路
本设计的主控制器选择ST公司的STM32F103C8,该芯片的最小系统包含以下电路:
1:
复位电路
复位电路是单片机系统用来使单片机内部电路恢复到其实状态,其原理与计算机相似,但是原理和方法有所不同,在单片机系统中,单片机复位方式主要有两种,一种是在系统通电时会马上进行复位,另外可以在程序运行过程中通过复位开关进行手动复位如下图3.1所示为复位电路
图3.1复位电路
2:
晶振电路
单片机工作时需要外部提供时钟信号,晶振电路是其中的一种。
晶振内部由石英晶体组成,在通电是可以产生周期性的波形。
本系统使用8M外部晶振,由于STM32内部带有PLL锁相环,两者配合使用可以是单片机的系统时钟达到32允许的最高频率72M,晶振电路如下图3.2
第8页第8页第8页
图3.2晶振电路
3下载及调试电路
STM32支持实时调试功能,串口只能起到下载程序的作用,而使用JLINK
就可以进行在线仿真,方便观察数据变化,为我们的设计带来诸多的方便。
STM32支持两种调试接口:
SWD和JTAG。
如下图3.3
图3.3JTAG下载接口
3.2.2电机驱动电路
本设计使用直流电机作为智能车动力,对直流电机控制,一般采用脉宽调制的方法即通过一定频率的方便为电机供电,从而起到对电机速度的控制。
这
第9页第9页第9页
是因为电机是一种惯性元件,电机实际上可以被看做是一个大电感,它能够阻碍输入电流电压的突变能力,因此当输入方波的频率足够大时,作用在电机上的电压实际上是这个脉冲的有效电压值,我们只需要改变输入信号的占空比
(高电平占用时间与脉冲周期比值)就可以改变电机的转速。
脉冲宽度调制是根据实际要求设置占空比,其方法有以下几类:
(1)定宽调频法:
即保持高电平时间不变,改变低电平脉冲时间
(2)调宽调频法:
即保持低电平时间不变,改变高电平脉冲时间
(3)定频调宽法:
即保持周期时间不变,同时改变高低电平时间
在实际运用中,由于前两者方法需要改变脉冲的周期,当系统的频率与调整之后的频率相似时就会引起系统的震荡,所以一般选择第二种方案。
通常情况下,中小功率的电机控制使用H桥驱动,H桥是直流电机控制电路中最为经典的电路之一,通常由4个MOS管组成,如下图3.4所示改变四个
MOS管的通断即可控制电机的转速及转向。
使用四个独立的MOS管制作H桥比较繁琐,所以本设计选择LM298N作为电机驱动芯片,LM298N是SGS公司推出的直流电机驱动芯片,内含两个H桥的高电压大电流的全桥驱动器,其电路图如图3.5所示
图3.4H桥驱动电路 图3.5LM298N电机驱动电路
3.2.3循迹模块电路
本设计采用光电式传感器红外对管作为循迹传感器,该传感器有两个二极
第10页第10页第10页
管组成,一个为白色的红外线发射管,另一个为黑色的光敏三极管,红外对管发出红外线之后如果遇到白色物体就会反射回去,如果遇到黑色物体,红外线就会被吸收无法被红外接收管感受到,接收信号进过一个电压比较器之后就会转换成被单片机识别的“0”,“1”信号
本次设计使用双排传感器进行信号采集,目前许多智能车采用单排传感器检测道路信息,这种方法获取到的路面信息较少,对车身的状态不能很好的区别使得控制上出现不足,使用双排传感器可以很好的弥补这些缺点使得智能车能够得到更好的控制,传感器电路如下图3.6所示
图3.6红外对管电路
3.2.4测速模块电路
为了能够更好的控制小车的行驶状态,必须能够测得小车的行驶速度,对
第11页第11页第11页
于电机的测速,有两种方案,一种使用光电码盘,另一种使用霍尔传感器,霍尔传感器主要用于测量较高速度场合,光电传感器的实时性和抗干扰能力都要强于霍尔传感器,所以本次设计使用光电码盘,其电路图如图3.7所示。
测速原理,在电机的转轴旁边安装光栅,当电机转动时,光栅也就跟着转动,在光栅的两边分别固定防止红外发射管和接收管,在轮子转动的过程中,当光栅挡住红外发射管时,接收管无法收到红外线,单片机检测到低电平,光栅当没有挡住发射管时,接收管收到红外光,单片机检测到高电平,通过检测单位时间内高低电平跳变的个数可以计算出小车的速度。
图3.7测速电路
3.2.5电源电路
电源在任何一个电子系统中都是不可或缺的一部分,它为系统提供必需的电能保证系统能够正常运行。
本设计电源分为三个部分,第一部分为电机的供电,由于电机属于大功率器件,本系统使用4个电机额定工作12V电压,最大电流为1A,所以需要使用大功率的电池直接进行供电。
第二部分为避障传感器的供电,避障传感器使用的是红外传感器需要使用5V电压供电,使用LM2596将电池12V电压转为5V电压,该部分电路如下图3.8所示,第三部分是主控制器和循迹模块的供电,该部分使用LM1117-3.3V稳压芯片将5V电压转为
3.3V,该部分电路图如下3.9所示。
第12页第12页第12页
图3.8 12V转5V稳压电路图
图3.9 5V转3.3稳压电路
第13页第13页第13页
4智能小车软件设计
4.1软件开发平台
智能车辆系统的硬件用来获取外界信息并执行动作指令,相当于人体的各个器官组织,软件系统用来对获取的信息进入处理,并作出相应判断发出动作
指令,相当于人体的大脑,本设计使用STM32作为主控制器用来运行软件系统。
早起的程序开发主要是手工汇编或者机器汇编的方法将程序转换成计算机能够
识别的机器码,但这种方法比较繁琐并且容易出错,随着科学技术的发展,人们研究出更加高级的程序开发平台,可以直接使用C,C++等高级语言进行程序开发,这其中运用最为广泛的就是Keil软件,本设计选择使用更适合STM32开发的Keil5MDK作为软件开发平台
Keil5MDK软件是有Keilsoftware公司推出的一款集成开发环境,也被称之为MDK-ARM,可以为基于Cortex-M,ARM7,ARM9内核的芯片提供完整的开发平台,支持在线仿真,查看波形、内存,调试下载等功能。
简单易学,功能强大,软件界面如下图4.1
图4.1keil5MDK软件开发界面
第14页第14页第14页
4.2功能程序设计
4.2.1循迹程序设计
GPIO初始化
本设计可以在变色路面上识别黑色引导线并沿着引导线行驶