沈阳理工-毕业设计-智能玩具车控制系统的设计与实现-王子豪-最终版_第1页
沈阳理工-毕业设计-智能玩具车控制系统的设计与实现-王子豪-最终版_第2页
沈阳理工-毕业设计-智能玩具车控制系统的设计与实现-王子豪-最终版_第3页
沈阳理工-毕业设计-智能玩具车控制系统的设计与实现-王子豪-最终版_第4页
沈阳理工-毕业设计-智能玩具车控制系统的设计与实现-王子豪-最终版_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

沈阳理工大学学士学位论文摘 要智能车辆是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯及自动控制等技术。本论文主要通过玩具小车模拟智能无人循迹驾驶汽车,实现其基本功能。其中,使用嵌入式微处理器和红外传感器加装于玩具小车之上,感应周围环境变化,获取路面信息,处理之后通过无线通信模块与计算机进行实时通信。本文实现的智能玩具小车,通过对玩具车电子硬件、传感器设计和对嵌入式处理器软件的编程、调试,设计了根据不同路径环境下的循迹控制算法,完成了玩具小车在规定路径上的智能循迹行驶功能。关键词:智能循迹小车;嵌入式;传感器;自动控制AbstractIntelligent Vehicle is a collection of environmental awareness, planning decisions, multi-level driver assistance functions in an integrated system, which focused on the use of computers, modern sensor, information fusion, communications and automatic control technology. This thesis simulated intelligent unmanned vehicles, to achieve its basic functionality through the toy car. Among them, the use of embedded microprocessors and various sensors on the installation and toy car to achieve its induction surroundings change, access to road information, after processing, real-time communication with the computer via the wireless communication module. Implementation of this intelligent toy car, toy cars by electronic hardware and sensor design modifications and programming software for embedded processors, debugging, design control algorithms based on tracking different paths environments, finished toy car on a predetermined path intelligent tracking travel functions.Keyword: Intelligent TrackingVehicle; Embedded Microprocessors;Sensors;Automatic Controll目录1 引言11.1 研究背景和意义11.2 研究内容12 设计方案22.1 硬件设计方案22.1.1 主控芯片22.1.2 电源电路22.1.3 电机和驱动模块32.1.4 循迹电路32.1.5 最终方案选择42.2 总体设计框图43 硬件设计63.1 主控电路设计63.1.1 STM32F103芯片硬件结构63.1.2 最小应用系统供电电路设计73.3 电机驱动模块设计83.3.1 驱动电路原理83.3.2 电机驱动模块93.3.3 接口定义103.4 舵机驱动设计113.5 测速模块设计123.6 循迹电路设计133.7 辅助及调试电路设计153.7.1 液晶显示器153.7.2 无线通信154 软件设计174.1 主程序174.2 循迹算法194.2.1 传感器布局194.2.2 直道及简单弯道的循迹方法204.2.3 垂直交叉路口的循迹方法214.2.4 S型弯及U型弯的循迹方法234.2.5 复杂赛道的分段循迹方法254.3 自动控制算法264.3.1 PID算法介绍264.3.2 PID控制在智能玩具车上的实现274.4 各模块软件设计284.4.1 电机控制及调速284.4.2 舵机控制304.4.3 无线通信304.4.4 液晶显示325 制作与调试15.1 硬件部分制作15.2 系统调试15.2.1 硬件调试15.2.2 软件参数调试35.2.3 实际测试36 结论1致谢1参考文献1附录A 英文文献翻译1附录B 程序源代码4附录C 电路原理图5811 引言1.1 研究背景和意义智能控制技术指在无人(或少量)干预的情况下能自主地驱动智能机器实现控制目标的自动控制技术。智能汽车是当今车辆工程领域研究的前沿,20世纪80年代以来,随着计算机技术、信息技术、通信和网络技术的快速发展以及其他学科的相互发展和渗透,使得控制科学与工程研究的研究不断深入,控制系统向智能化的发展已成为一种趋势。在此基础上,智能控制的车辆也越来越受到工业、交通、国防、能源等领域的青睐,得到了蓬勃发展。智能车辆在普通车辆的基础上增加了先进的传感器、控制器、执行器和无线通信等装置,通过车载传感系统和信息终端,实现与人、车、路等的智能信息交换,使车辆能够智能的感知周围环境,自动分析车辆行驶的安全及危险状态,并使车辆按照人的意愿到达目的地,最终实现替代人来操作的目的。目前对智能车辆的研究主要致力于提高汽车的安全性、舒适性,以及提供优良的人车交互界面1。近年来,随着移动互联网技术的快速发展,智能车辆与下一代移动通信技术和云计算相结合,己经成为世界车辆工程领域研究的热点和汽车工业增长的新动力,很多发达国家都将其纳入到重点发展的智能交通系统当中2。汽车产业,作为一个有着一百多年历史的传统产业,在新的环境下,必然需要不断的自我革新,紧跟时代潮流。智能汽车正式两种产业的有机结合,必然会的到蓬勃的发展。随着人民生活水平不断的提高,消费力的提升,智能汽车的产业前途不可限量。1.2 研究内容本文主要通过对玩具小车的控制系统设计研究,以达到模拟智能汽车的目的。目前国际上发展智能汽车设计思路都是一致的,即在成熟可靠的传统汽车平台上,改装其控制系统,加装传感器和智能模块。智能汽车是一个综合的浩大的工程,包括传感器的应用、电动机的应用、电路设计、自动控制原理、系统调试、机械结构设计等。因此本文研究的智能玩具车忽略其机械、电气性能,着重于自动控制硬件系统和软件算法的研究。2 设计方案2.1 硬件设计方案在智能玩具小车的整体设计中硬件的设计至关重要。良好的硬件设计是智能玩具车稳定运行的基本保证。智能玩具车的硬件模块大体可以分为三部分,即传感器电路、驱动电路和辅助电路。另外,在硬件设计过程中也有很多需要考虑的因素,如强弱电的分离,模拟、数字信号的隔离,布线的合理性等。2.1.1 主控芯片智能玩具车中的主控芯片是该系统的核心,它负责整个系统的信息获取、处理和控制。方案一:采用目前广泛运用,成本低廉的51系列单片机作为主控芯片。51系列单片机作为一种经典的单片机品种,技术成熟且技术资料丰富,开发周期短,特别适合低端智能玩具上使用。但是,目前看来,51平台已经过于老旧了,硬件性能也开始捉襟见肘,软件开发局限性较大,不利于后续产品升级。并且,片上系统集成度较低,实际运用需要大量的外围电路,不利于系统的小型化和稳定性。方案二:采用ARM Cortex M系列核心的嵌入式处理器。Cortex M系列是ARM专为工业控制、智能电器等领域特别推出的嵌入式核心,继承了ARM芯片一贯的优点,具有高性能,低功耗的优点,系统集成度高。并且,由于ARM的开放授权,大量芯片厂商陆续跟进,使得该系列芯片成本大大降低,目前价格已经能做到和传统单片机一样的量级。2.1.2 电源电路电源电路的好坏关乎着整个系统的安全性、稳定性,是整个系统最基础的一环。目前广泛运用的主要是线性电源和开关电源。方案一:线性稳压电源。线性稳压电源是一种工作在线性状态下的直流稳压电源,是经典的、较早使用的电源电路。线性稳压直流电源的优点是反应速度最快、输出纹波小,工作噪声低;然而,它的的缺点是在大功率条件下电源效率较低、发热量大。方案二:开关稳压电源。开关电源是现代电力电子技术发展而成的新型电源,通过控制开关管开关断的时间占比,来持续输出稳定电压。开关电源一般由脉冲宽度调制(PWM)控制芯片和功率场效应管(MOSFET)构成。开关电源的优点是:功耗小、效率高;稳压范围宽;效率高,滤波电容的容量和体积少;电路形式多样灵活。开关稳压电源的缺点是存在较为严重的开关干扰。开关稳压电源工作中会产生高频交流电压和电流,导致尖峰干扰和庇振干扰,如果不采取一定的措施进行抑制和屏蔽,就会严重地影响电源的安全有效输出3。2.1.3 电机和驱动模块方案一:采用电阻网络和数字继电器构成驱动电路,通过改变继电器的开关状态,从而达到分压的目的。但该方案的缺点就是继电器的工作频率有限,无法实现高频PWM调节。还有一个问题在于电动机工作电流很大,这种方案效率较低,工作损耗大,而且使用寿命不高。方案二:采用功率三极管或MOSFET构成H桥驱动电路。该驱动的电路结构方案成熟、原理简单,载电流能力强。用由MOSFET管组成的 H型桥式电路,用单片机或可编程芯片输出占空比可调的脉冲控制信号,即可以精确调整电动机转速。由于电路工作在管子的饱和截止状态,因此效率高。采用H型桥式电路可以实现转速和方向的控制,电子管的开关速度快、稳定性强,因此是一种广泛采用的电机调速技术。可以选用大量成熟方案的H桥驱动模块。2.1.4 循迹电路方案一:采用发光二极管(LED)或着卤素灯等其他外部光源,用光敏二极管或颜色传感器接收发射的光线信息。然而光敏二极管精度不够,受外界光的干扰影响较大,线性程度不好。而颜色传感器虽然能够检测出颜色信息,但是由于外界环境和光线强弱的变化,极易出现传感器判断失误的现象。另外,该方案集成度较低,体积比较大,不适合智能小车的安装使用。方案二:利用红外对管传感器作为寻迹方案,红外光电对管集成了红外发射管和接收管,因为传感器发射出的是红外光,所以接收信号对外界可见光的影响较小,并且光电对管输出对信号可以通过电平转换电路变成数字信号输出,可靠性高,适合单片机的接收控制。若在小车底部安装该光电传感器,当底部的遇到黑色路径时,传感器输出高电平,遇到白色地面时,输出低电平。通过单片机I/O接口接收信息,程序控制小车改变方向。2.1.5 最终方案选择综合以上各个方案的优缺点和本论文设计的智能玩具小车的实际要求,现将最终决定的设计方案列出:1、硬件方案:(1)主控芯片采用ARM Cortex-M3内核的STM32F103嵌入式处理器;(2)电源方案采用线性稳压模块与DC-DC开关稳压模块相结合。(3)电机和驱动模块采用集成MOS管电机驱动,小车转向采用舵机控制;(4) 循迹电路传感器采用集成式光电传感器,小车行驶时记录编码器的输出脉冲;2、软件方案:(1)开发软件采用MDK-ARM V5.1集成开发环境(2)调试软件采用串口调试助手软件和J-LINK仿真软件。2.2 总体设计框图STM32F103主控芯片光电传感器阵列舵机控制电机驱动LCD显示编码器无线通信经过上诉方案论证的过程之后,其系统总方框图如图2.1所示。图2.1 系统组成框图主控芯片接收传感器输入的信号,其中红外传感器阵列用来检测线路,编码器用来检测电机运动路程信息;接收到的传感器信息由MCU处理,输出控制信号,控制舵机和电机进行相应的动作。另外处理器还通过I/O口控制直流电机、舵机、无线通信和LCD的显示。在功能和作用上,系统成了分成了三个主要部分,即信息获取与处理部分、动作控制部分和信息交互部分:(1)信息获取和处理部分包括两种传感器:光电传感器阵列和编码器,以及担任信息处理作用的STM32F103主控芯片。这个部分主要对传感器获得的赛道信息采集处理,为下一步动作控制部分的基础。(2)动作控制部分包括舵机控制与电机驱动。这个部分是该智能小车系统的执行部门,它将上一部分处理的电信号转换为实际的速度、角度等物理量。(3)信息交互部分包括LCD显示模块和无线通信模块。这个部分主要作用是系统的测试和参数调整,能够直观快速的显示系统的各项状态。3 硬件设计3.1 主控电路设计主控电路是智能小车系统各功能模块的控制中心,它负责信息的获取、处理和执行。主控电路硬件系统包括MCU芯片及外围接口电路、电源电路和对应的程序下载与ISP通信接口电路。3.1.1 芯片硬件结构本设计使用的MCU是ST公司推出的STM32系列32位微控制器,如图3.1所示为STM32F103芯片及引脚图,该芯片的各项硬件参数性能如下:图3.1 STM32F103芯片及引脚图1、内核32位 Cortex-M3内核,最高72MHz工作频率,支持单周期乘法和硬件除法。2、存储器512K字节ROM,64K字节SRAM;3、外设(1)2个12位模数转换器,1个温度传感器,2个DMA控制器;(2)64个通用快速I/O端口;(3)1个串行单线调试和JTAG接口;(4)6个通用定时器和2个高级定时器;4、通信接口(1)2个I2C总线接口;(2)3个USART通信接口;(3)2个SPI总线接口;(4)2个CAN总线接口;(5)1个USB 2.0全速接口。3.1.2 供电电路设计由于智能玩具车各模块对电源的需求不同,故不能直接使用单一的电源。表3.1给出了智能玩具车常用模块的供电需求情况。表3.1 智能车常用模块的电压需求情况模块名称需求电压典型单元单片机供电舵机供电编码器供电I/O外设光电传感器常用IC芯片3.3V56V5V5V/3.3V5V5V/3.3VSTM32F103VBT6FUTABA S3003欧姆龙 E6A2-CW3CNokia 5110 LCDBFD-1000缓冲IC供电根据需求而定其中,除了舵机电压可以提升至6V外,大多数供电电压需求为5V或3.3V,而电池电压为12V。由于STM32的功耗很小,所以不需要大电流稳压,但主控芯片需要一个稳定的电压保持平稳工作,所以供电设计为独立供电,避免与其他负载并联导致负载变化时影响芯片供电引起问题。在芯片供电中,使用三端固定式集成稳压器AMS1117-3.3来提供降压稳压供电,图3.2为AMS117-3.3的实物图。图3.2 AMS117-3.3芯片图图3.3 AMS117-3.3基本应用电路图如图3.3所示为AMS1117-3.3的基本应用电路,只要把正输入电压加到集成稳压器输入端输入端,公共端接地,其输出端则可以输出3.3V正电压。实际电路中,芯片输入端和输出端与地接大容量滤波电容外,还需要接小容量电容(0.110F),用于抑制芯片自激振荡,压窄高频带宽,减小高频噪声。图3.4所示的为最终制成的最小系统电路板。图3.4 最小应用系统实物图3.3 电机驱动模块设计在智能玩具车运行过程中,电动机的速度是根据传感器的反馈随时调整的。想实现电动机调速,并不能像普通玩具车一样用恒定电压对电动机进行供电。电动机的控制是通过脉宽调制(PWM)实现的。单片机芯片在接收并处理完成传感器传回的道路信息后得出预期速度,通过脉宽调制信号来控制电动机的转速。然而单片机芯片的输出能力非常弱,不可能直接控制电动机转动,所以需要一个专门的电动机驱动模块来驱动电机。3.3.1 驱动电路原理图3.5所示的是一个典型直流驱动调速电路。图3.5 简单直流电机调速驱动电路其中VT为功率MOS管,电流大小由电机功率决定。PWM信号的占空比决定电动机的转速,故电动机的转速可以通过调节PWM占空比来实现。使用此方案可以实现电动机的单向调速,若想实现双向控制,就要使用H桥来控制电机正反转动。图3.6 H桥原理电路如图3.6所示为最基本的H桥原理电路图,H桥电机驱动电路是用4个功率开关管(三极管或MOSFET)俩俩级联,电机两端分别接上下两个开关管。导通对角线上的一对管子就能使电机运转,而每一侧的开关管不允许同时导通。根据个管不同的导通情况,电流可能会从左到右或从右到左流过电机,从而控制电机的不同方向。固定任意一侧开关管的状态,在另一侧接上PWM控制信号,即可实现电机正反方向的调速。3.3.2 电机驱动模块在智能车的设计过程中,广泛采用的驱动方式是使用集成MOSFET全桥驱动芯片。相对于采用分立元件搭建电路,集成模块价格便宜,操作简单,稳定性高,因此本设计采用了2403ND直流电机驱动模块。该直流电机驱动模块功能特点如下:(1)尺寸设计尽量小,易于模块的放置与安装;(2)支持电机电压宽泛,7-24V均可以使用,加防反接功能;(3)双路电机接口,每路最大负载电流3A,每路有独立的3A过流保护;(4)与L298N驱动芯片控制信号同逻辑,每路都支持控制使能、正反转及制动;(5)使能信号可外接PWM,正反转控制信号可串联限位开关;(6)控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动;(7)使用光耦对全部控制信号进行隔离。如图3.7所示为2403ND直流电机驱动模块的实物图。图3.7 2403ND直流电机驱动模块实物图3.3.3 接口定义在2403ND驱动模块的接口定义中,+5V和GND为控制信号电源,如果控制信号为3.3V,那么+5V接3.3V;ENA、ENB分别为电机接口1和电机接口2的使能信号,可以外接PWM;IN1IN4为两路电机正反转、制动(或称刹车)控制信号。控制逻辑如表1.2和表1.3所示。其中0为低电平、1为高平、为任意电平,悬空时为高电平,如表3.1所示。表3.1 电机接口控制信号逻辑IN1IN2ENA输出状态0无输出,OUT1、OUT2悬空001刹车,VOUT1 = VOUT2 = VGND011正转,VOUT1 - VOUT2 = 电源电压101反转,VOUT2 - VOUT1 = 电源电压111刹车,VOUT1 = VOUT2 = 电源电压*注:未连接控制信号时的默认状态3.4 舵机驱动设计智能玩具车的转向系统需要舵机(Servo)来控制,如图3.9所示,舵机是由直流电机、减速齿轮组、传感器和控制电路构成,是一套典型的伺服控制系统。舵机通过接收的发送信号,输出指定的轴旋转角度。舵机与普通直流电机的区别在于直流电机是连续转动的,而舵机只能在一定角度内转动。舵机可以反馈转动的角度信息,而普通直流电机不能做到。因此普通直流电机一般是整圈转动做动力输出,而舵机主要用于控制某物体转动一定角度控制(例如机器人的关节驱动)。图3.8 舵机实物图 图3.9 舵机的伺服系统舵机的伺服系统由可变宽度的脉冲来进行控制,其波形类似与驱动电机的PWM波形。控制线是用来传送脉冲的。脉冲有最小值,最大值,和频率三个参数。一般而言,舵机的基准信号都是周期为20ms,最小宽度为1ms,最大宽度为2ms。中间脉冲的宽度为1.5ms,这个基准信号定义的位置为中间位置,如图3.10所示。图3.10 舵机转动角度与接收脉冲的关系3.5 测速模块设计在智能玩具车设计中,速度反馈是一个重要环节,良好的速度反馈是智能汽车在告诉运行过程中精确的调节速度的前提。速度反馈值可以通过PID算法(详见软件设计部分)更加迅速的调整小车的加速与减速。本文主要通过光电脉冲测速传感器来测量小车的速度。光电式脉冲传感器可以将机械唯一、转角或速度变化转换成点脉冲输出。光电编码器的最大特点就是传感器检测非接触,不收机械运动的抖动误差影响,因此它的响应快、精度高、可靠性高。图 3.11 光电脉冲测速原理示意图光电编码器采用光电接收技术,将转角和位移转换为不同角度极性的数字脉冲,如图3.11所示的是为光电脉冲测速原理示意图,在发光元件和光电接收元件中间有一个扇形的码盘,码盘上均匀的刻有透明光栅,转动码盘形成光脉冲,产生对应的电信号。市售的集成封装的编码器精度高,测速准确,码盘和电路都封装在编码器内,极大降低了损坏的概率。现在常用的编码器为欧姆龙公司生产的100线、200线或500线编码器,这里采用的是欧姆龙EA62-CW3C型100线编码器,图3.12是该编码器的实物图。具有双向测速功能,可直接输出方波,通过两路方波的相位差来识别转动方向。供电电压为512V,完全兼容智能玩具车的供电需求。图3.12 编码器实物图3.6 循迹电路设计目前在路径检测上广泛采用的是红外对管检测,电路基本原理图如图3.13所示。图3.13 光电对管检测电路原理图小车循迹原理是当小车在画有黑线的白色路面上行驶时,由于黑线和白色地板对红外光线的反射系数不同,因此可根据传感器接收到的反射光的强弱来判断黑线。红外对管装有一对红外发射管和红外接收管,红外光在不同颜色的表面具有不同的反射性质。红外发射管向地面发射红外光,遇到白色地面时发生漫发射,红外接收管接收到了发射光,输出较低的电压;当遇到黑线时,则红外光被吸收,红外接收管接收不到信号,则输出高电压。高低电压的模拟的电信号通过电平比较器转换为数字信号。因此遇到黑线时输出高电平,白色输出低电平,从而实现了黑白路径的检测。本文设计了一款专门用作黑、白线检测的传感器,特别适合复杂黑白线、交叉黑白线的检测,它使用5路巡线、1路避障共6路的高灵敏度的红外传感器,能够对黑白线进行准确的识别。该传感器模块的电路设计如图3.14所示。图3.14 传感器模块电路设计图该电路设计具有如下功能和特点:(1)集成5路循迹传感器,适合复杂黑线、白线的跟踪;(2)有一路蔽障用的红外传感器,蔽障距离可以通过滑动变阻器调节;(3)有一个专门设计的触碰传感器,使得智能小车能够规避前方障碍;(4)输出信号全部都为数字信号,方便与单片机相连;(5)全部传感器都有LED灯作为指示,方便调试(6)支持电压为3.0-5.5V满足系统需求。最终经过PCB设计制做的模块实物如图3.15所示。图3.15 循迹模块实物图3.7 辅助及调试电路设计在智能玩具车基本硬件模块组装完成之后还需要花费大量的时间进行调试,在调试过程中需要一些辅助的调试设备。3.7.1 液晶显示器液晶显示是智能车对外界反馈信息最好的方式,快捷且直观,可以将液晶显示模块与单片机进行连接,将要监视的数据发送到液晶显示模块上,从而可以脱离在线仿真监视变量的变化。这里选用的Nokia 5110液晶模块,图3.16为该液晶模块的实物图。该款液晶显示器自身重量轻,占用面积小且显示区域大,编程自由。显示器的数据为串行输入,节省单片机I/O口资源。图3.16 Nokia 5110液晶显示模块实物图3.7.2 无线通信使用串口通信可以将智能车采集到的数据发送给计算机进行处理,然而其弊端在于线缆的限制。由于通信过程中必须使用线缆进行连接,因此无法采集到智能汽车运行过程中的数据。为了摆脱线缆的束缚,可以采用无线通信方式。图3.17 NRF24L01模块实物图常用的无线通信模块为NRF24L01,图3.17为该模块的实物图。该模块使用SPI协议与单片机通信。使用NRF24L01模块进行通信需要在智能车上加装一个模块,接收端需要一款单片机提供SPI协议驱动NRF24L01模块接收数据,并且通过串口方式发送给计算机。该无线通信模块与MCU的接口应用电路设计如图3.18所示。图3.18 无线模块与单片机接口应用电路4 软件设计软件部分为整个智能玩具车运行的核心,完成了硬件和机械部分,软件算法的完善程度决定了小车运行的最终效果。本章阐述了智能车软件部分的原理和算法设计思路,最后在附录中给出了各模块的代码。4.1 主程序结束是否到终点线?开始方向控制硬件初始化定时器中断获取传感器值速度控制NY智能玩具车的主程序流程可以用图4.1来表示。整体的控制使用5ms定时器中断,所有的控制环节都在中断服务子程序中运行。图4.1 主程序流程图以下是主程序的基本框架:int main(void)软硬件初始化();for(;) 读取光电传感器的数值();液晶显示读取的数值();根据需要延时(); 定义的中断服务子程序如下:void EXTI2_IRQHandler(void)转向控制();速度控制();下面列出的是整个程序的宏定义以及全局变量定义:#define CLP PORTA.4/ 定义的是触碰开关端口 CLP#define Near PORTA.5/ 定义的是接近传感器端口 Near #define SS1 PORTA.8/ 下面定义的是SS1SS5这5个光电传感器的端口#define SS2 PORTA.9#define SS3 PORTA.10#define SS4 PORTA.11#define SS5 PORTA.12#define Servo_PWM PORTA.6/ 定义舵机信号端口#define Motor_L_PWM PORTA.0/ 定义左电机PWM端口#define Motor_R_PWM PORTA.1/ 定义右电机PWM端口#define Motor_Dead 15/ 电动机死区补偿#define Motor_MAX 250#define Motor_MIN -250float Gyro_Data,/ PID参数speed_P=0.58,speed_I=0.065;float speed;/ 小车实时速度int angle;/ 小车转角4.2 循迹算法4.2.1 传感器布局SS1 SS2 SS3 SS4 SS5在小车的调试制作过程中,不难发现传感器的布局对赛道的检测、控制算法有很大的影响。目前,比较常规的排列方法就是一字型排列,如图4.2所示。图4.2 一字型排列示意图这种布局的优点是简单且安装方便。不足之处在于:传感器仅有一排,且安装在智能车的头部,故对赛道黑线轨迹的曲率几乎没有任何预测功能。智能车会在弯道突然减速,在直道会突然加速,机械磨损大。处于对稳定性的考虑,避免小车在直道进入弯道时冲出赛道,赛车在连续直道时不能开足马力,全速前进,影响小车性能。SS1 SS2 SS4 SS5SS3因此,提出了一种改进型方案,如图4.3所示,把最中间的传感器SS3提到前面来。改进型相对于传统一字型布局有显著的优点:由于传感器有一个分布在前排上,使得智能玩具小车对于路径检测有了一定的预测功能,具体体现在进入复杂弯道的时刻,此时后一排传感器仍在弯道时,前一排传感器已经检测到弯道的变化。此传感器布局的不足之处在于:由于布局在两排上,控制算法的复杂程度有了很大的增加,若要判断具体的弯道信息,往往需要加上一次的检测数据。图4.3 改进型排列示意图4.2.2 直道及简单弯道的循迹方法直道及简单的弯道循迹只用三个循迹传感器就可以实现,可以用循迹模块上面的SS2、SS3和SS4三个传感器。智能小车判断当前路径为直道及简单的弯道前提是,SS3始终能检测到黑线,并且SS1和SS5始终不能检测到黑线。在这个前提下,当SS2碰到黑线时可以向左转,SS4碰到黑线的时候可以向右转,如图4.4所示,就可以实现直道简单弯道的循迹方法。图4.4 直道及简单弯道的循迹路径根据上面所述,可以把直道和简单弯道的循迹方法概括成流程图,如下图4.5所示。需要注意的是,该流程图是单一子程序算法的流程,因此仅仅代表算法的一部分,当小车路径不为设定的直道或简单弯道时,流程图实际上箭头是指向结束的。图4.5 直道及简单弯道程序流程图4.2.3 垂直交叉路口的循迹方法若小车行驶的赛道出现垂直的交叉路口,出现两种情况,T型路口和十字路口,如图4.6所示。而根据经验,若遇到垂直弯道完全可以按照弧形弯道的方法来处理,小车很难出现跑偏的情况。图4.6 垂直路口的循迹路径寻T字形的交叉线主要的思想是:最边上来那两个传感器(SS1、SS2或SS4、SS5)检测黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果任然有黑线,就说明寻到了T字路口。寻十字形的交叉线主要的思想是边上的四个传感器(SS1、SS2、SS4、SS5)碰到黑线的时候让小车再走一段时间,再判断最前面那个传感器SS3的状态,如果有黑线,就说明寻到了十字路口。具体的程序算法可以用上一次的检测数据来完成,定义:SS1_Last=SS1;/保存当前传感器数据SS1=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8); /更新传感器数据类似的,可以保存SS2SS5的传感器上一次检测数据为SS2_LastSS5_Last。将传感器当前数据和上一次检测数据共同参与路径判断,能够提高识别的精确度。可以得出垂直交叉路口的算法程序流程图,如图4.7所示。图4.7 垂直交叉路口的算法程序流程图4.2.4 S型弯及U型弯的循迹方法S型弯和U型弯属于大曲率弯道,由于传感器个数和智能车反应时间的限制,容易使路径判断错误,导致小车偏离赛道。为了避免这个问题的发生,智能车应该在进入弯道前判断是否为普通小曲率弯道,若不是,则应降低车速,进一步判断弯道类型。如图4.8-(a)所示,当前方遇到S型弯道时,判断最边上两个传感器(SS1或SS5),若检测到黑线,说明当前路径并非普通的小曲率弯道,需要进一步判断为何种类型的弯道。此时,让小车以低速度、大半径转弯一段路程,此段路程的长度与小车的机械性能有关,需要经过多次实验测定。当小车经过转弯之后行驶到S弯中部时,判断中间三个传感器(SS2、SS3、SS4)的状态,若三个传感器均能检测到黑线,则可以确定为此为S弯,此时小车以相同半径反方向转弯。如图4.8-(c)所示,转弯过程中,当发现只有SS3和SS5(或SS1)检测到黑线时,可以判断已经出弯。(a) (b) (c)图4.8 S型弯的循迹U型弯道与S型弯道类似,先要判断是否为特殊弯道,在进一步判断弯道类型。如图4.9所示,判断最边上的传感器(SS1或SS5)是否检测到黑线,转弯一段路程进入到弯道中部,此时再判断各个传感器状态。若只有SS3和SS5(或SS1)检测到黑线,则判断为U型弯,采取大于180度的角度转弯。出弯道的条件为:以SS3传感器为中心,左右两侧均能检测到黑线,例如图4.9-(c)的情况, SS2、SS3和SS5检测到黑线,可以确定小车已经出弯。(a) (b) (c)图4.9 U型弯的循迹同样的,可以归纳出判断S型弯或U型弯的程序流程图,如图4.10所示。图4.10 S型弯或U型弯检测流程图4.2.5 复杂赛道的分段循迹方法任何复杂的循迹都可以拆分成简单的循迹来实现,复杂的循迹最重要的是找到交叉点,然后根据预先各种简单路径的判断方法,先进行小范围转向,转向的多少可以用前面的传感器(即SS3)做转过黑线数目的计数,将一段复杂赛道拆分若干个块。如图4.11所示,可以用硬件定时器定时一段时间为依据划分段,也可以通过编码器记录小车行进的距离为依据划分若干个路段。U型弯S型弯直道图4.11 复杂赛道分段循迹示例4.3 自动控制算法4.3.1 PID算法介绍e (t)u(t)+r(t)比例积分微分执行机构对象+-PID控制是比例、积分、微分控制的简称,它是工程实际中应用最广泛的调节器控制规律。PID控制器结构简单、稳定性好、可靠、调整方便,因此问世70多年来成为工业控制的主要技术之一。当被控制对象的结构和参数不能完全掌握或得不到精确的数学模型时,控制理论的其他技术难以应用,系统控制器的结构参数必训靠经验和现场调试来决定,这时应用PID控制技术最方便7。如图4.12为PID控制系统原理图。图4.12 PID控制系统原理图比例调节作用是按照比例反映系统的偏差,系统一旦出现偏差,比例调节左用用来减少偏差。比例作用大,可以加快调节,减小误差,但是过大的比例使系统的稳定性下降,甚至造成系统的不稳定。积分调节作用是使系统消除稳态误差,提高误差度。当有误差时,积分调节就进行,直至无误差时积分调节才停止,积分调节输出常值。积分作用的强弱取决于积分时间T1,T1越小,积分作用就越强10。反之T1大则积分作用弱,加入积分调节可以使系统稳定性下降,动态响应变慢。微分调节作用反应系统信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有产生之前,已被微分调节作用消除7。因此,可以改善系统的动态性能。在微分时间选择合适的情况下,对系统干扰不利。智能汽车的结构和参数受到各个方面的影响,所以系统得不到精确的数学模型,控制理论的其他技术也难以应用,系统控制器的结构和参数必须依靠经验和现场调试来确定,因此PID控制技术最方便。4.3.2 PID控制在智能玩具车上的实现1、舵机PID控制舵机的PID控制是使用比较广泛的方法。其表达式为:output=Kpe+Kie+Kde式中,e为车身与跑道的偏移量;Kp为比例系数;Ki为积分系数;Kd为微分系数;output为舵机PWM输出量;e为上一次偏移量与当前偏移量之差。其中起主要作用的是比例项;积分项会导致转向延迟,故常常将积分项系数置0,适当调节微分项系数能使小车优化路径,达到更好的转向效果。2、电动机PID控制为了使智能玩具车在直道上以较快速度运行,在转弯时防止汽车冲出跑道,则必须将智能车的速度降低,这就要求智能车的速度控制具有良好的加、减速功能7。当智能车经过连续的弯道时,路线偏差的频繁变化会导致速度的频繁变化,这会引起速度控制系统的振荡,并且微分环节对于误差突变干扰很敏感,容易造成系统的不稳定9。为了解决上诉存在的问题,对数字PID算法进行了改进,将不完全微分和微分先行引入到PID算法中,大大改善了速度控制系统的动态性能。图4.13为智能车速度控制系统的结构图。由于赛道路况和智能车的姿态会经常变化,所以速度控制系统的模型也是不定的,通过调试得到不同情况下相对最优的PID参数,保证了速度控制系统在不同情况下都有较好的控制效果。反馈补偿伺服电动机微分先行速度设定不完全微分模糊PID路线偏差速度v(t)+-+r(t)图4.13智能车速度控制系统的结构图4.4 各模块软件设计4.4.1 电机控制及调速软件控制电机的核心主要由两部分组成:方向控制和速度控制。前者主要是使用电机驱动模块上面的控制端,通过单片机的I/O口输出控制信号。后者主要是输出占空比可调的PWM波形,电机速度与PWM波的占空比成正比关系。根据经验,PWM频率为110Khz时,电机的调速性能较好,这里我们使用2KHz。STM32的PWM输出功能需要用到定时器,STM32的定时器除了TIM6和TIM7其他的定时器都可以用来产生PWM输出。要使STM32的通用定时器TIMx产生PWM输出会用到3 个寄存器,分别是:捕获/比较模式寄存器(TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器(TIMx_CCR14)。首先是捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有 2 个,TIMx _CCMR1和TIMx _CCMR2。TIMx_CCMR1控制CH1和2,而TIMx_CCMR2控制CH3和4。该寄存器的各位描述如图4.14所示:图4.14 TIMx_CCMR1寄存器各位描述需要说明的是模式设置位OCxM,此部分由3位组成,它总共可以配置成7种模式,我们使用的是PWM模式,所以这3位必须设置为110/111。这两种PWM模式的区别就是输出电平的极性相反。 综上所述,PWM相关的函数设置过程如下:(1) 开启TIM3时钟以及复用功能时钟,配置PB5为复用输出;(2) 初始化TIM3,设置TIM3的ARR和PSC;(3) 设置TIM3_CH2的PWM模式,使能TIM3的CH2输出;(4) 使能TIM3;(5) 修改TIM3_CCR2来控制占空比。小车电机前进的控制程序如下:void Motor_Go(void)GPIO_SetBits (GPIOC, GPIO_Pin_0 | GPIO_Pin_2);GPIO_ResetBits(GPIOC, GPIO_Pin_1 | GPIO_Pin_3);类似的,小车后退控制程序:void Motor_Back(void)GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_2);GPIO_SetBits (GPIOC, GPIO_Pin_1 | GPIO_Pin_3);电机调速代码如下,其中PWM的占空比范围为099:void Motor_Set_Speed(unsigned char pwm1, unsigned char pwm2)TIM_SetCompare1(TIM2,pwm1);TIM_SetCompare2(TIM2,pwm2);4.4.2 舵机控制舵机的初始化与电机控制类似,都是PWM波形,不同的是舵机的PWM频率为50Hz,且脉宽只能在一定范围内改变。由于初始化代码与之前类似,下面给出舵机调角度控制函数,其中舵机角度控制参数值范围为60120度。void Servo_Angle_Set(unsigned char k)unsigned int pwmval;pwmval=(k-10)*5)/18+49;TIM_SetCompare1(TIM3,pwmval);4.4.3 无线通信NRF24L01 2.4GHz无线通信模块是采用SPI总线接口与MCU通信的,最大的SPI速率为10MHz。图4.15 SPI内部简明图如图4.15所示为SPI的内部简明图。SPI是英语Serial Peripheral interface的缩写,指的是串行外围设备接口。SPI是一种高速的全双工同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32也有SPI接口。SPI接口一般使用4条线通信: (1)MISO 主设备数据输入,从设备数据输出。 (2)MOSI 主设备数据输出,从设备数据输入。 (3)SCLK时钟信号,由主设备产生。 (4)CS从设备片选信号,由主设备控制。 从图4.15中可以看出,主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换13。图4.16 SPI总线初始化流程图图4.16所示为SPI总线初始化流程图。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。 如图4.17为NRF24L01模块与MCU连接图。图4.17 NRF24L01模块与MCU连接图综上所述,NRF24L01初始化过程如下:(1) 初始化NRF24L01芯片的I/O口,配置上拉输入和推挽输出模式;(2) 使能STM32的SPI总线,配置主从模式;(3) 定义SPI通信的波特值,开启CRC校验;(4) 向NRF24L01的ADDR寄存器写入5个字节的地址;(5) 再读出写入的地址,判断初始化程序是否成功。4.4.4 液晶显示Nokia5110(PCD8544)模块的通信协议是一个没有MISO只有MOSI的SPI协议。STM32系列MCU有富裕的SPI接口,所以可以直接利用利用硬件SPI,但通常没有必要,因为芯片主频高且液晶数据传输对实时性要求不高,只需要软件程序模拟即可。LCD5110的初始化过程为:接通电源后,内部寄存器和RAM的内容是不确定的

温馨提示

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

评论

0/150

提交评论