【《基于STM32单片机的移动机器人控制系统设计》13000字(论文)】_第1页
【《基于STM32单片机的移动机器人控制系统设计》13000字(论文)】_第2页
【《基于STM32单片机的移动机器人控制系统设计》13000字(论文)】_第3页
【《基于STM32单片机的移动机器人控制系统设计》13000字(论文)】_第4页
【《基于STM32单片机的移动机器人控制系统设计》13000字(论文)】_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32单片机的移动机器人控制系统设计摘要自主移动机器人是一种近些年刚兴起的一种新型机器人,它是一种能在较复杂环境可通过自主运行,实现具体的运行要求的一种功能性机器人。本次设计提出了一种基于STM32单片机的智能小车控制系统,搭载本系统的自主移动机器人在具体的运行过程中,可通过各个传感器感知外部环境和本身的运行状态,来实现自动避障、自主循线、不同智能小车之间间距的调节等功能。为实现这些功能,本次所设计的系统中运用了信息融合技术、部分与课题相关的人工智能技术、超声波测距技术以及多种不同功能的传感器,硬件平台为四轮式结构的智能小车。本次设计的系统所需要实现的功能较多,因此在结构上比较复杂,对控制系统的要求较高,最终选择STM32F103系列单片机作为核心控制处理器。STM32F103处理数据和运行的速度非常快,并且自身集成了最常用的外设接口,这些接口完全可以满足本次所设计的系统的使用要求。本课题所设计的基于STM32单片机控制的智能小车,核心部分由嵌入式微控制器、自主循迹、超声波测距、电机和舵机驱动等硬件模块组成,为实验提供了一个功能强大的硬件平台。在进行软件设计时,考虑到系统总体比较庞大,结构也相对复杂,所以决定分模块进行。这使得系统的软件设计工作难度得到了一定程度的降低,同时,如果后期要对系统进行更新和升级的话,也会非常方便。为全面而深入的介绍本次的设计工作,使论文更有条理性,对论文结构的安排如下所述。首先本论文对自动移动机器人的研究背景进行了大致的描述,并综合分析了国内外与自动移动机器人相关领域的发展状况。之后确定了主控芯片的类型,并分析自己做出这种选择的原因。接着阐述了对系统总体的机械结构以及硬件电路的设计,同时对系统各个功能模块的原理进行了分析,其中提到PID算法,这个算法用于实现对小车速度的控制。接下来从软硬件的角度对系统的各功能模块进行了详细的阐述。另外,本次设计所用到的软件开发环境主要为keiluVisions5,对Keil的详细介绍放在了软件设计部分的最前面,这样可以使文章结构更具有逻辑性。最后为验证系统是否能达到预期功能,将程序导入硬件,智能小车系统运行稳定,所有功能正常实现,达到了本次设计的预期要求。关键词:STM32;PID控制;超声波测距;自主循迹目录摘要 1第1章绪论 61.1课题研究背景和意义 61.2国内外研究现状 61.2.1移动机器人国外研究现状 61.2.2移动机器人国内研究现状 71.3本文的主要研究内容 8第2章智能小车系统总体结构 92.1智能小车系统的总体结构 92.1.1智能小车机械结构 92.1.2智能小车电气控制结构 102.2智能小车系统控制方案 11第3章智能小车系统硬件设计 133.1智能小车整体设计 133.2核心控制器 143.2.1微处理器简介 143.2.2STM32最小系统 153.3其他硬件模块选型 163.3.1舵机转向模块 163.3.2电机驱动模块 173.3.3超声波测距模块 183.3.4线性CCD自主循迹模块 19第4章智能小车系统软件控制设计 224.1keiluVisions5开发环境介绍 224.2转向舵机控制 224.3直流电机控制 244.3.1电机速度闭环控制 244.3.2电机位置闭环控制 254.4自主循迹控制 264.5超声波测距跟随控制 27第5章系统测试 325.1智能小车自主循迹测试 325.2智能小车系统整体测试 33第6章总结与展望 356.1论文总结 356.2论文不足与展望 35参考文献 36第1章绪论1.1课题研究背景和意义随着计算机技术和人工智能技术的飞快发展,机器人技术的应用范围也在逐步扩大。近几年来人工智能技术的迅速发展,使得智能车技术也发展到了能够模仿人类行为的高级水平。不仅给传统的人工产业带来了巨大的改变,同时也提高了我们生产的质量和效率。轮式移动机器人不仅可以广泛应用于交通和工业,还可以应用于科研勘探、消防灾害、消毒防疫、军事作战等多种特殊任务。一般来说,智能轮式移动机器人可以承担强辐射、毒性污染、宇宙探测等不适合人直接接触的任务。智能车具有多种功能,可以在许多环境下代替人类工作,在各行各业都有很好的应用价值。例如,在日常生活中,智能车可以引领盲人,给盲人指引出安全的道路。在军事方面,智能车可以代替人类在危险地区的排雷和侦察任务。在科学实验过程中,智能车可以在外太空行星上完成探索并且发送回照片,还有助于在恶劣的环境中完成设备安全性检查和处理等任务。综上所述,智能车可以纳入轮式移动机器人,根据需要在出发地和目标点之间自主稳定地运行。因此,对智能轮式机器人的研究不仅具有重要的理论研究价值,在多领域层面的融合和应用和我们的日常生活和工业生产中,本文研究的智能车平台的相关技术具有非常高的利用价值。1.2国内外研究现状1.2.1移动机器人国外研究现状1954年,美国巴里电器公司为了实现可用于堆栈环境的自动运输车辆系统,开发了世界上第一个自动引导车辆AGV系统,标志着智能车辆的诞生。在此之后,美国广播公司、GM、TheOhioState大学、欧洲和日本的研究所等都进入了这一领域的深入研究,外国很多大型科技公司、研究所纷纷将巨大的财力、精力和人力投入到智能车领域的研发上。其中最具代表性的是微软公司、谷歌和IBM三个大型公司,不断推出自己公司设计的新型智能汽车。随着科学技术水平的提高,人们开始研究智能车的走向。小型车“智能”的概念是美国科学家在20世纪60年代提出的,这些科学家认为在设计智能车的过程中,障碍规避功能的实现非常重要,根据收集的实时环境信息分析数据,并进一步计划路径,显然这是小车行驶路径上所有障碍的信息数据已经获得的情况下最科学合理的路径。随着传感器技术的进一步发展,研究人员从90年代开始将红外和超声波技术应用于智能汽车。利用超声波技术避免障碍时,环境温度的影响不容忽视。在用红外线躲避障碍物时,由于检测不到圆形物体,小车很有可能会遇到障碍。在小车运行中,机器视觉通常应用于路径识别和跟踪,可以监控更多的信息并进行测试,但大量的数据会大大减少实时性。因此,提高机器视觉性能的关键是开发高效的算法和开发高性能硬件。在智能车避障计划方面,著名的姿势空间法由T.Lozano.Perez等提出,利用姿势空间的一点来表征智能车的方向和位置,在无方向图中,无视智能车的大小,在行驶轨道上用点表示小车的位置,提高了智能小车的灵活性。1.2.2移动机器人国内研究现状20世纪80年代,我国着手智能车辆方面的研究,提出了发展国家高技术研究和发展的“863研究项目”。在《863计划》中指出,要开发拥有自主知识产权的智能车辆技术。我国从第八个五年计划期间开始,每年都将中长期发展规划作为智能车辆及相关领域的研究工作的重要支持方向。我国的智能车辆技术与西方国家之间存在一些差异,但经过国内研究人员的不断努力,这种差距正在迅速缩短。而且,在不断的探索中取得了很多成果和自主知识产权,我国也在近几十年对智能车辆的科研过程中取得了长足的进展和丰硕的成果。1980年,我国设立了“遥控驾驶的核化侦察车”项目,80年代末我国逐渐开始了这方面的相关研究。哈尔滨工业大学2007年与香港中文大学进行联合研究,致力于解决智能机器人壁垒问题。车的主控模块的处理器选择了STC89C52微控制器,小车的遥控命令接收由IRM-2638红外接收器完成。障碍物检测由红外传感器进行,控制直流电机,控制智能车的整个系统避免障碍物。南昌大学对模糊算法进行了深入研究。2012年,他在Matlab平台上利用多传感器信息融合技术模仿识别障碍算法,选定小型车的控制核心为STC89C52,利用超声波大米避免障碍。在1991~1995年我国第八个五年计划期间,北京理工大学、国防科技大学等科研机构共同开发了自动测试Bed-1无人驾驶汽车,这是我国首辆具有无人驾驶功能的汽车,行驶速度为21公里/h。该研究使我国在智能车领域取得突破性进展,为后续研究奠定了基础。在1996~2000年我国第九个五年计划期间,我国通过对ATB-1的改进和技术升级,成功开发了ATB-2无人驾驶汽车。与上一代ATB-1相比,功能有所提高,在道路条件下最多可行驶75.6公里/h。进入21世纪后,我国的科学技术和创新力得到了非常迅速的发展和提高。在智能车辆的基础研究领域,清华大学、吉林大学、国防科技大学、同济大学等多所高校通过反复实验,开发了利用多种类型的车辆传感器实现车辆智能化的多种算法和独创性技术。多家互联网和新兴技术公司利用数据处理和系统更新能力、高精度地图、基于深度学习的环境意识和决策方法的优势,与国内大型汽车企业合作,共同进行了涵盖多个领域的智能车辆的开发和应用工作。从太空探索的火星无人探测车、智能化制造业和智能化物流领域的无人智能堆栈车、贴在人类日常生活上的医疗健康和货运领域的医疗消毒轮机器人、无人驾驶的重型牵引车,都代表着我国智能化无人驾驶车辆技术研究的先进和车辆智能化的值得注意的成就,预示着未来。我国智能车辆的研究技术、应用范围和创新实力将迈向更高的层次。1.3本文的主要研究内容本课题的研究目的是以STM32为核心控制器设计多功能智能车,智能车可以实现自动巡线、自动跟随,运行过程中将车速信息在OLED显示屏上实时显示。论文各章的主要内容如下:第一章论述了课题的研究背景和意义,分别对国内外自主移动机器人系统的研究现状进行了说明,对我国目前的发展现状进行思考。第二章阐述了智能车系统的总体设计方案和系统控制原理。第三章提出了智能车系统的总体结构框架,对如何选择各个硬件模块进行详细的分析。第四章提出系统软件控制方案,对各模块进行软件分析测试。第五章系统测试。测试主要包括单个智能小车的自主巡线测试和小车的自主跟随测试,其他硬件模块调试在软件调试时一并完成。 第六章对本次设计各方面的测试和分析进行了总结,对存在的不足之处进行了思考,对之后的学习和研究进行展望。第2章智能小车系统总体结构2.1智能小车系统的总体结构2.1.1智能小车机械结构 本次设计采用四轮、后轮驱动式智能小车。轮子选用防滑防震式,避免运动过程对实验结果产生不必要的误差;底座选择铝合金材质,质量大,底盘稳,运动能够更加稳定;前轮通过拉杆与转向舵机相连,后轮由两个直流电机分别驱动一个轮子,从而获得更大动力和更快的速度。核心控制板由螺丝和亚克力板固定在小车如图位置,锂电池用扎带固定在底座上方,防止滑动。智能小车试验平台尺寸图如图2.1所示图2.1智能小车尺寸图本次设计的前车和后车都同时安装了电机、舵机、线性CCD循迹和电源等模块。由于后车需要通过超声波传感器来测量与前车的距离,所以在前车后方我们固定了一块亚克力板,方便后车进行测量。前车机械结构如图2.2所示图2.2小车机械结构1 同理后车前方我们通过超声波固定卡子安装了超声波传感器,其他硬件与前车相同。后车机械结构如图2.3所示图2.3小车机械结构22.1.2智能小车电气控制结构 核心控制板由5个模块组成,分别是电机驱动模块、舵机驱动模块、稳压电路、TSL1401CL线性CCD图像传感器和OLED液晶显示屏。后车核心控制板还搭载了超声波测距传感器。每个模块具体功能将在下一章硬件设计中详细说明。智能小车整体电路图如图2-4所示图2-4小车电气控制整体结构2.2智能小车系统控制方案根据智能车的结构设计,智能车分为核心控制板、运动控制、数据信息收集、信息输出和电源控制五个部分。智能车的各模块功能设计如下:(1)核心控制板主要由STM32单片机及各种驱动电路组成,是智能小车的核心。对其他各个模块进行控制。(2)运动控制部分由转向舵机,直流电机组成。线性CCD传感器收集的信息通过核心控制器处理后产生不同的PWM波形来改变舵机的转向角度,从而完成循迹转向;由于前车是以固定的车速运动行驶,所以电机速度的改变主要由后车体现,是通过超声波传感器测得的距离通过控制器判定之后,对后车电机速度做出相应改变,这将在下一章中详细介绍。(3)数据信息收集部分主要由线性CCD传感器、超声波传感器组成。其中线性CCD传感器模块主要负责不同轨迹的识别,超声波传感器负责测量后车和前车的安全距离。(4)信息输出部分由OLED模块组成,主要用于显示智能车舵机转向角度、电机转速等信息。(5)电源控制部分主要由可充电锂电池稳压电路组成,为智能车的电机及其他部分提供稳定的电压,确保智能车的正常稳定运行。图2.4小车控制系统框架本章小结本章内容主要介绍了本次设计的智能小车整体结构以及各个组成模块,详细介绍了小车的机械结构,这是完成实验的前提;其次对各个模块所需要实现的功能进行阐述,通过整体电气控制结构能够清楚的看出各模块之间的信息交互。对核心控制器控制舵机转向模块、电机驱动模块和其他传感器模块的控制方法进行设计,使得智能小车能完成预期目的。第3章智能小车系统硬件设计3.1智能小车整体设计智能小车硬件的选择和设计是智能小车能否稳定、高效运行的直接原因。若将本次设计的智能小车看作一个运动系统,我们需要实现的功能就是小车能够按照指定轨迹运行,运行速度可控,再前车通过直线或曲线时,后车可以稳定地安全的跟随,避免发生两车相撞。要实现上述功能,我们必须保证各硬件与核心控制器之间能进行信息交互,并且通过控制器将改变的信息重新发送到各硬件从而实现实时控制。智能小车硬件整体控制结构如图3.1,表3-1所示为各个硬件模块的规格和属性参数。图3.1小车整体硬件结构硬件系统各模块主要功能如下∶(1)电源模块需要提供电压给各个模块使其正常工作,但是各硬件所需要的电压各不相同,所以我们需要用到稳压电路和升降压电路等。(2)接口电路可以将已经调试编译好的程序通过串口烧录到STM32单片机里,对小车进行调试。(3)超声波测量模块的作用是测量前车与后车之间的距离,通过单片机控制电机转速,以保证小车能够以安全距离跟随。(4)电机驱动模块的作用是驱动小车后轮的转动,通过程序可以控制电机正转、反转和转速。(5)舵机驱动模块的作用是控制舵机的转向角度,前提是轨迹不是直线,如此单片机才能产生不同的PWM信号发送给舵机进而转向。(6)自主循迹模块通过线性CCD传感器对不同轨迹的识别和轨迹提取,通过循迹算法由单片机控制达到自主循迹的目的。表3.1平台搭载的硬件规格、属性等参数TSL1401CL图像传感器尺寸25*30mm,摄像头直径3mm,工作电压3.3V~5VSTM32RCT6核心控制板尺寸12*12mm,主频72M,48引脚,工作电压3~5V转向舵机尺寸51.5*22*34.5mm,最大角度180°,扭矩20Kg.cm,质量55g,反应速度0.14sec/60°,工作电压4.8~7V直流减速电机(带测速编码器)最大直径37mm,减速比30:1,质量150g,功率4.32W,额定电压12VHC-SR40超声波传感器频率40kHz,最远测试距离4米,精度0.5厘米,额定电压5V3.2核心控制器3.2.1微处理器简介 相比较学习单片机时接触的AT89C51系列单片机外,STM32系列单片机也是现在的主流控制器。STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARMCortex®-M0,M0+,M3,M4和M7内核,所以它比51单片机运行速度更快,功能更加强大。本次设计选用STM32F103C8T6为核心控制器,其中32代表其为芯体位宽为32bit的MCU,F代表其产品类型为通用基础型,103代表其芯片为增强型系列,C代表其引脚数量为48个,8代表其闪存容量的大小为64KB,T代表其封装类型为LQFP封装,6代表的是工作温度范围为-40度-85度。其中包括电源电路,晶振复位电路和串口通信电路。STM32f103C8T6引脚如图3.2所示图3.2STM32f103C8T6引脚图3.2.2STM32最小系统(1)电源电路 核心控制板由锂电池提供电压,但锂电池电压过大,通过AMS1117-3.3正向低压降稳压器将输出电压稳定在3.3V。电路如图3.3所示,从图中我们可以看出输入和输出都接了电容,这样接的目的是对输入和输出进行滤波,同时可以增加输出电压的稳定性。图3.3AMS1117-3.3正向低压降稳压电路(2)复位电路主控芯片是低电平复位(引脚NRST),一共有三种复位方式:硬件按键复位、软件复位,看门狗计数终止复位。其中的电容的目的是防止在按键刚刚接触/松开时的电平抖动引发误动作。电路图如图3.4所示图3.4复位电路(3)串口通信电路本系统选用的STM32处理器是简洁型的主控制器,在核心板上只有USB接口,而没有通信串口,为了便于通信测试,系统采用芯片CH340G实现USB转串口。CH340G芯片转串口电路图如图3.5所示。图3.5串口通信电路3.3其他硬件模块选型3.3.1舵机转向模块本文选择的转向伺服舵机也属于电机的一种,其内部装有小型直流电机和电位器,再与外部的齿轮连接实现转向,本次设计的舵机转向范围为0~180°。所需要转动的角度通过输入信号可以精确的给定,其工作原理是电机控制板接收STM32C8T6核心控制器的PWM脉冲控制信号,并驱动小型直流电机转动,齿轮组将电机的转速减小,将电机的扭矩增大后输出;电位器与齿轮组的末级一起转动,测量舵机输出轴转动的角度,最后齿轮末端带动横向拉杆运动实现转向控制。如图3.6所示图3.6转向舵机与前车轮的安装要使舵机正常工作,通过舵机的电流和加在舵机两端的电压需要保持在额定参数,根据选用舵机的规格参数,我们选择将电压控制在6V。由于锂电池输出为12V电压,所以我们选用XL4015开关稳压电路,将12V电压稳定在6V输出。保证了舵机工作在额定功率下正常运行。如图3.6所示为XL4105稳压电路,芯片内部还集成了过流、过温和短路保护等电路,因此可以放心使用。图3.6XL4105稳压电路3.3.2电机驱动模块直流电机的转速很高,通常每分钟可达几千、几万转,所以一般需要安装减速器,减速器也称为齿轮减速箱,它是一种相对精密的机械传动部件,并且内置了多组传动齿轮。使用的目的就是减小转速,增加转矩,从而增强可控性;本文研究的直流电机减速器体积较小但传递的扭矩很大,减速比为30∶1。如图3.7所示图3.7直流编码器电机 由于直流电机是大功率感性负载,STM32控制器不能直接控制电机的运转,所以我们需要功率放大电路来驱动电机的转动。前车通过人为修改代码数据再通过编译之后由核心控制器产生PWM信号通过驱动电路进行信号放大才能控制电机的运转,包括正向、反向运动,电机转速等。本次设计选用的是A4590单H桥电机驱动芯片,此电路内置了过温、过流和短路保护电路。图3.8A4590电机驱动电路3.3.3超声波测距模块本次设计选择了HC-SR40超声波传感器,它能提供2厘米-400厘米的测距功能,测距精度最高为3毫米,工作电压为5伏。该模块的组件包括超声波发射器、超声波接收器及其控制电路,控制电路中有VCC电源阴极、GND电源阴极、TRIG出发控制信号输入针和ECHO返回信号接收针等4个针和单片机连接。在移动机器人跟随运动过程中,要不断检测与前车之间的距离,做出适当的运动决定。这个过程主要是根据超声波传感器对前车之间距离的检测,预测运动路径是否安全,根据反馈自主控制电机速度,防止与前车发生冲撞。图3.9HC-SR04超声波模块HC-SR04超声波模块的接口除了电源和接地引脚外,还有TTL触发信号输入引脚和回波信号输出引脚。微控制器计时器生成的PWM触发信号由超声波模块的触发信号输入引脚输入超声波发射电路,回波信号由超声波接收电路输出,进入微控制器的另一个计时器。微控制器通过计时器的PWM输出模式配置通用输入输出引脚,转换为TTL级信号,然后为超声波测距模块提供超过10微秒的高电平触发信号。超声波模块发送8个频率为40kHz的超声波脉冲信号。超声波信号遇到反射物体,再反射回超声波模块时,超声波传感器接收特定时间段(脉宽)的回波信号。回声的时间可以看作是超声波往返时间。超声波传感器接收到达高平的信号,输入微控制器的计时器输入引脚,由计时器的捕获/比较寄存器完成输入信号的捕获,获得信号上升和下降时间,从而获得回波的脉冲宽度。在与单片机的连接中,VCC连接到电源阳极、GND和单片机。TRIG和ECHO分别接收单片机的两个通用IO端口。需要超声波工作时,给触发引脚超过10s的高电平信号,单片机会将8个40kHz周期电平作为标记发送,返回信号接收引脚,接收波动信号时可以计算距离。可以通过计算信号持续时间来获得距离。超声波传感器的驱动电路和线性CCD传感器共用一个驱动电路。3.3.4线性CCD自主循迹模块 自主循迹方法有红外线传感器循迹和线性CCD循迹,本次设计选择线性CCD循迹方法,TSL1401CL传感器如图3.10所示。现在主流的线性CCD传感器为TSL1401CL,它含有128个感光单元呈线性排列,每一个感光单元可以读取环境的光线强度并转换为电压输出,光线越强电压值越高,TSL1401CL与STM32C8T6数据传送的接口信息如表3.2所示。图3.10TSL1401CL线性CCD传感器表3.2TSL1401CL与STM32RCT6数据传送接口说明TSL1401CL接口接口功能与STM32RCT6的对接引脚说明VDD电源正极,输入电压DC3.3-5V,连接STM32RC6的5V接口AO模拟输出,连接STM32RCT6ADC接口执行对图像的数据获取CLK时钟管脚,控制电荷转移、像素的输出与芯片的复位SI串行输入口,决定数据序列的起始GND电源负极(地线),连接STM32RCT6的GND接口由于单片机不能直接驱动CCD传感器,和电机驱动模块同理,超声波传感器和循迹传感器也需要驱动电路进行驱动才能正常工作。本次设计选用LM2576-5.0降压开关型稳压电路,它能稳定输出3A电流,并且不需要太多的元器件就能构成高效的稳定的电路。图3.11LM2576-5.0降压开关型稳压电路本章小结 通过上一章对系统整体结构以及各个模块的功能分析,本章内容主要阐述对各个模块硬件的选择,分析了每个硬件模块的基本原理。主要包括转向舵机模块、电机驱动模块、自主循迹CCD模块和超声波测距模块。硬件的选型对实验尤为重要,直接关系到实验能成功。对每个模块进行分析也是为后面的软件和算法设计奠定基础。第4章智能小车系统软件控制设计4.1keiluVisions5开发环境介绍2013年10月,Keil公司(ARM公司之一)正式推出KeilMDKv5,该版本使用uVision5IDE集成开发环境,是目前针对ARM微控制器,尤其是ARMCortex-M内核微控制器最佳的一款集成开发工具。MDKv5向后兼容KeilMDK-ARMuVision4,以前的项目同样可以在MDKv5上进行开发,MDKv5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级其主要包含五方面特性,具体为∶(1)内置数据库可以实现同时实现多种配置与操作;(2)具备功能强大、性能良好的编译工具;(3)提供在线联调功能;(4)与之相配套的信息资料十分完善。图4.1编译环境4.2转向舵机控制由于伺服舵机本身具有内部的闭环控制结构,所以本文研究同样采用位置式PID控制算法对智能小车的前轮伺服舵机的速度进行闭环控制,位置式PID控制算法定义公式如下∶当位置式PID的积分项到达饱和程度时,误差会继续在积分环节的作用下积累,如果误差开始进行反向变化时,控制系统需要一些时间从积分的饱和区域退出,所以在u(k)达到最大值或最小值时,需要停止积分作用,并且要对积分和输出进行限幅,所以本文伺服舵机在使用位置式PID控制算法时,一般直接使用PD控制,所以位置式PID控制算法也适用于像本文伺服舵机这样不包含积分部件的执行机构。本文伺服舵机位置式PID控制算法的程序如下:速度值可通过舵机的目标位置和舵机的实际位置计算得到,使用累加的方法,赋值给相应的寄存器并作用到舵机。这样就可以把舵机的速度调节转变成对PID参数大小的调节。另外,在接近目标位置的时候还能够实现减速,防止因为惯性而造成舵机齿轮减速箱的损坏。函数功能:舵机PWM以及定时中断初始化arr:自动重装值psc:时钟预分频数返回值:无voidServo_PWM_Init(u16arr,u16psc) { RCC->APB2ENR|=1<<11;//使能TIM1时钟 RCC->APB2ENR|=1<<2;//PORTA时钟使能 GPIOA->CRH&=0XFFFF0FFF;//PORTA11复用输出 GPIOA->CRH|=0X0000B000;//PORTA11复用输出 TIM1->ARR=arr;//设定计数器自动重装值 TIM1->PSC=psc;//预分频器不分频 TIM1->CCMR2|=6<<12;//CH4PWM1模式 TIM1->CCMR2|=1<<11;//CH4预装载使能 TIM1->CCER|=1<<12;//CH4输出使能 TIM1->BDTR|=1<<15;//TIM1输出PWM TIM1->CR1=0x80;//ARPE使能 TIM1->DIER|=1<<0; //允许更新中断 TIM1->CR1|=0x01;//使能定时器1 TIM1->CCR4=1500; MY_NVIC_Init(1,1,TIM1_UP_IRQn,2);}4.3直流电机控制4.3.1电机速度闭环控制图4.2电机速度闭环控制原理根据增量式离散PID公式函数功能:增量PI控制器入口参数:编码器测量值,目标速度返回值:电机PWMe(k)代表本次偏差e(k-1)代表上一次的偏差以此类推pwm代表增量输出速度控制闭环系统使用PI控制intIncremental_PI_A(intEncoder,intTarget){ staticintBias,Pwm,Last_bias; Bias=Target-Encoder;//计算偏差 Last_bias=Bias; //保存上一次偏差 returnPwm;//增量输出}intIncremental_PI_B(intEncoder,intTarget){ staticintBias,Pwm,Last_bias; Bias=Target-Encoder;//计算偏差 Last_bias=Bias; //保存上一次偏差 returnPwm;//增量输出}4.3.2电机位置闭环控制图4.3电机位置闭环控制原理根据位置式离散PID公式函数功能:位置式PID控制器入口参数:编码器测量位置信息,目标位置返回值:电机PWMe(k)代表本次偏差e(k-1)代表上一次的偏差∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;pwm代表输出intPosition_PID(intEncoder,intTarget){ floatPosition_KP=80,Position_KI=0.1,Position_KD=500; staticfloatBias,Pwm,Integral_bias,Last_Bias; //Bias=Encoder-Target;//计算偏差 Bias=Target-Encoder;//计算偏差 Integral_bias+=Bias; //求出偏差的积分 Last_Bias=Bias;//保存上一次偏差 returnPwm;//增量输出}4.4自主循迹控制 TSL1401CL含有128个感官单位,我们可以通过STM32单片机的ADC按照顺序收集每个感官单位的电压值,并且把他们保存在数组中。staticu16i,j,Left,Right; staticu16value1_max,value1_min; value1_max=ADV[0];//动态阈值算法,读取最大值value1_min=ADV[0];//最小值通过提取的最大值和最小值计算阈值:将阈值与左跳变沿和右跳变沿依次比较,计算出中线位置: 若轨迹在小车中心位置,舵机角度不变,小车直线前进;若轨迹偏离小车中心,说明小车此时需要转向,舵机需要转动一定角度,电机转速也要相应改变。图4.4算法控制程序流程图4.5超声波测距跟随控制实现小车间间距的调整,主要通过调整直流电机的转速来完成。超声波测距模块根据接收到的超声波信息可以判断出两车的间距。当间距低于设定值时,速度PI控制器会发送加速指令给直流电机驱动器。直流电机驱动器接收到指令后会向直流电机发送相应的驱动脉冲,直流电机接收到驱动脉冲后减速运行。当间距高于设定值时,具体工作流程与上述过程类似,电机会减速运行,直至距离处于合适的值以内。*@函数名:TIM4_Int_Init*@功能说明:配置记录超声波飞行时间的定时器*@参数:无*@返回值:无voidTIM4_Int_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//时钟使能//定时器TIM3初始化 TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler=psc;//设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//设置时钟分割:TDTS=Tck_tim TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式 TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//根据指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);//使能指定的TIM3中断,允许更新中断//中断优先级NVIC设置 NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;//TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占优先级1级 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//从优先级3级 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能 NVIC_Init(&NVIC_InitStructure);//初始化NVIC寄存器 TIM_Cmd(TIM4,DISABLE);//使能TIMx }图4.5超声波测距流程图在小车向正前方行驶的过程中,超声波传感器向正前方发射超声波,在接收到返回的超声波后可据此判断小车与前车的间距。若大于预设值25cm,车距安全,小车继续前进。若小于预设值,说明车距较危险,小车可直接停下,并继续根据超声波探测到的信息判断车距,车距安全后再启动;若车距继续增大,加速前进。若车距在减小,减速前进。图4.6信号脉冲波形图如图4.6所示为超声波传感器各信号发出的脉冲电平。触发信号为1us的TTL高电平,模块内部发出的信号为8个连续的高频脉冲,回响电平持续时间与检测距离有关,距离越长,持续时间就越长,反之则越短。*@函数名:Dist_PID*@功能说明:根据距离值与小车电机转速构成PID闭环*@参数:Target目标与前车的距离值Kp比例Ki积分Kd微分*@返回值:无voidDist_PID(floatTarget,floatKP,floatKI,floatKD){ staticfloatBias,Last_Bias,Intergal_bias=0; Bias=Target-Dist; Intergal_bias+=Bias; Motor_PWM=KP*Bias+KI*Intergal_bias+KD*(Bias-Last_Bias); Last_Bias=Bias; if(Motor_PWM>7000)Motor_PWM=7000;elseif(Motor_PWM<-7000)Motor_PWM=-7000;}本章小结 本章内容首先详细keiluVisions5开发环境,在此环境中我们可以不断调试使系统稳定运行;然后提出伺服舵机的闭环PID控制以及电机速度、位置闭环控制,通过改变PID参数大小来改变舵机转向角度和电机运行速度。自主循迹模块的控制采用动态阈值法,确定阈值进行轨迹的识别。超声波模块在测得车间距后立刻判断是否为安全距离来控制后车电机速度大小,只有完成理论值计算才能够进行系统测试。第5章系统测试在完成软件和算法设计之后,我们需要对智能小车硬件平台进行检查。包括系统整体完整度,线路是否全部正确连接等,然后才能进行机械测试。本次设计的控制系统,主要可实现两个方面的功能。一是单个小车能够完成循迹功能,可按照地面上的标记运行。二是不同的小车之间能够协调运行,后车能沿着前车的运行路线运行,并且能与前车保持安全车距。首先对驱动模块检测,利用串口调试功能模块把编好的程序加载STM32芯片当中,查看电机和舵机能否正常运转;其次检测线性CCD传感器模块,是否能够完成预定轨迹的自主循迹;最后检测超声波测距模块是否能正确测量与前车之间的安全距离,在没有其他环境因素干扰下,误差是否达到标准。5.1智能小车自主循迹测试首先对单个小车的功能进行了测试,预期小车在启动后,能识别地面上的标线,然后能沿着标线以较稳定的速度自行走完全程。实际运行时,小车确实能沿着标线运行。为使测试结果更加的准确合理,特意多次改变了地面上的标线,结果小车依然能稳定的沿着标线走完全程。同时也在不同时刻进行测试,因为不同的时间段光线明暗程度有所区别,主要在室内灯光环境下和室外非太阳光直射环境下进行测试,测试过程如图5.1和图5.2所示。图5.1室内灯光环境图5.2室外非太阳光直射环境自主循迹测试只和光线明暗程度有关,直线轨迹和曲线轨迹的循迹结果在相同环境下都是相同的。通过测试我们可以得出结论,循迹过程中要避免光线太亮或者太暗,都会对循迹效果有非常大的影响,其次是循迹路面和轨迹颜色必须要颜色有明显区别,目前实验表明白色路面黑色轨迹是循迹效果最好的。在进行多次实验后,当我们排除明显的干扰因素后,小车自主循迹能够顺利完成,达到实验预期目的。5.2智能小车系统整体测试图5.2超声波测距跟随测试在保证智能小车能够正确自主循迹的前提下,可以进行车-车跟随测试。之前在对单个智能小车的测试中,单个小车能够实现全部的预期功能。下面将对多个小车一起运行时的实际运行情况加以测试。与单个小车相比,整个车队多出来的功能为测距以及调速。具体方法为:在前车的尾部安装一块亚克力板,为避免风阻对实验结果的影响,其大小要适中,并且安装牢固。在超声波测距跟随控制模块中,小车向正前方行驶的过程中,向正前方发射超声波。超声波传感器在接收到返回的超声波后可据此判断小车与前车的间距。若大于预设值25cm,车距安全,小车继续前进。若小于预设值,说明车距较危险,小车可直接停下,并继续根据超声波探测到的信息判断车距。车距安全后再启动,若车距继续增大,加速前进。若车距在减小,减速前进或者直接停下。通过实验结果可以看出结果达到实验的预期效果。本章小结 本章主要内容为智能小车的整体测试,利用实验测试检测系统是否能够完成所有功能。实验主要分为两个部分:自主循迹功能测试和车—车跟随测试。首先检测每辆小车的自主循迹效果,测试结果良好之后再进行跟随测试。由测试结果可知,小车自主循迹功能能够实现,需要注意的光线明暗对实验有影响。跟随实验也能够成功,小车运行状态也能够实时显示,测试结果表明本次设计的智能小车系统的有效性。第6章总结与展望6.1论文总结时代在不断进步,和智能机器人相关的技术也在飞速发展。本文以智能小车实车为研究对象,介绍了其硬件组成,设计了小车的机械结构和软件控制策略。开发了智能小车的自主循迹与自动跟随控制策略;主要的研究工作如下∶(1)智能小车硬件控制系统的组成及各模块的工作原理介绍,包括STM32RCT6核心控制器模块、电源管理模块、轨迹检测线性CCD模块、伺服舵机模块、电机驱动模块、速度检测模块。多个模块之间相互协作,再通过算法控制来实现所有功能。(2)设计了智能小车直流电机的位置式PID控制及模糊自适应PID控制,以及伺服舵机的位置式PID控制。信息收集部分的轨迹检测和自主循迹,超声波测距跟随方法等。(3)通过ARM开发工具KeilMDK,将编写调试好的程序通过串口下载到小车核心控制板中,测试各个硬件模块的功能。舵机的转向、电机转速、超声波测距精度等。(4)最后进行整体测试,自主循迹时舵机与线性CCD模块的信息交互,随着轨迹的变化舵机转向角度相应变化;超声波跟随时,两车之间距离增大后车需要加速,距离减小后车需要加速,直至两车之间保持安全距离。6.2论文不足与展望 本文设计的智能小车虽然在以往的研究中增加了功能,但限于本文作者研究的时间与水平等问题,在论文中有许多不足之处和可以改进并使之更完善的地方∶(1)本文没有设计能直接在线调节智能小车各个参数的上位机软件,若开发出这样的上位机软件,对智能小车调试后的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论