基于电磁感应传感器的智能车系统设计(单驱动)_第1页
基于电磁感应传感器的智能车系统设计(单驱动)_第2页
基于电磁感应传感器的智能车系统设计(单驱动)_第3页
基于电磁感应传感器的智能车系统设计(单驱动)_第4页
基于电磁感应传感器的智能车系统设计(单驱动)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

基于电磁感应传感器的智能车系统设计(单驱动)毕 业 论 文(设 计)题 目: 基于电磁感应传感器的智能车系统设计(单驱动) (英文): Smart Car Design Based on Electromagnetic Induction Sensors (The Single Drive) 院 别: 机电学院 专 业: 机械电子工程 姓 名: 学 号: 指导教师: 日 期: 4基于电磁感应传感器的智能车系统设计(单驱动)摘 要本设计运用Freescale S12单片机控制模型车自动沿着黑白赛道完成比赛。本设计主要包括智能车的组装、机械机构的调整、系统方案和控制策略的选定、硬件电路和软件控制的设计等几部分。工作方式简介:用电感采集跑道信号,通过将电感信号滤波放大后,把信号传送到MC9S12XS128主芯片进行AD转换和处理,运用控制策略分辨出赛道的黑线和路况,控制转速和转向,使小车顺利完成比赛,在此基础上,再提高小车速度,对小车行驶路径进行优化。关键词:智能车;MC9S12XS128;PID;路径优化Smart Car Design Based on Electromagnetic (The Single Drive) AbstractThe design using Freescale S12 MCU to control model car run along the black and white track and complete the race Automatically.It includes smart car assembly, mechanical sector adjustment, system solutions and control strategy selected, hardware circuit and software control design and so on. How it works:It use the inductance to capture the track image signal. It use amplifier circle to transform the analog signal of the image,then transmit it to MC9S12XS128 main chip for processing. Use control strategy to distinguish the track and the conditions,then control speed and steering to complete the race successfully. Base on this, then increase the speed of the car and do some track optimization.Keywords: smart car; MC9S12XS128; PID; track optimization45目录1引言11.1 概述11.2 整车设计思路21.2.1 控制系统21.2.3 电磁组赛道主要特点42 硬件设计62.1 传感器方案62.1.1 磁场检测传感器62.1.2 传感器的布局72.2 主板电路设计72.2.1电源模块72.2.2 驱动模块82.2.3 各模块接口92.3 最小系统版92.4 其它外设143 机械设计153.1 舵机的安装153.2 传感器的安装153.3 车模的机械调校153.3.1 底盘高度153.3.2 前轮定位153.3.3 差速调整174 软件设计184.1 程序整体设计184.1.1 程序框图184.1.2 系统初始化184.2 磁场信息获取及处理224.3 赛车定位234.4 舵机控制284.5控速策略294.6 开发和调试手段314.6.1 BDM调试器的使用314.6.2 程序下载和调试324.6.3Matlab数据分析334赛车主要技术参数345结论35参考文献36致谢37附录A 程序源代码38附录B 设计图纸46基于电磁感应传感器的智能车系统设计(单驱动)1 引言1.1 概述智能车辆( intelligent vehicles, IV)是智能交通系统( in2telligent transportation systems, ITS)的重要构成部分,其研究的主要目的在于降低日趋严重的交通事故发生率,提高现有道路交通的效率,在某种程度上缓解能源消耗和环境污染等问题。智能车辆利用各种传感技术获取车体自身和车外环境的状态信息,经过智能算法对其进行分析、融合处理,将最终的决策结果传递给驾驶者,在危险发生之前,提醒驾驶员做出必要的回避动作,避免事故发生;在紧急状况下,驾驶者无法做出反应时,智能车辆则自主完成规避危险任务,帮助驾驶人员避免危险发生。 美国开始组织实施智能车辆先导( intelligent vehicle ini2tiative, IV I) 计划, 欧洲提出公路安全行动计划( roadsafety action p rogram, RSAP) ,日本提出超级智能车辆系统。我国科技部则于2002年正式启动了“十五”科技攻关计划重大项目,智能交通系统关键技术开发和示范工程,其中一个重要的内容就是进行车辆安全和辅助驾驶的研究。预计在2020年之前进入智能交通发展的成熟期,人、车、路之间可以形成稳定、和谐的智能型整体。智能车是一个集环境感知、规划决策、自动驾驶等功能于一体的综合系统。它集中的运用了计算机、传感器、信息。通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体。本课题是源于飞思卡尔智能车竞赛,该竞赛所使用的车模是一款带有差速器的后轮驱动模型车,由组委会统一提供。比赛跑道为表面白色,中心有连续黑线或是漆泡线作为引导线,黑线宽为25cm,赛道中心线下铺设的0.1-0.3mm 直径的漆包线,其中漆泡线通有100mA交流电流。该比赛在地面铺设通有交变电流的引导线,在引导线周围激起交变的磁场,从而通过检测此磁场引导车辆行驶。使用电磁场作为引导智能车的优点,主要体现在磁场信号具有很好的环境适应性,不受光线、温度、湿度等环境因素的影响。由于电磁场是矢量场,具有方向行,对于不同的传感器和传感器的不同摆放方式,探测到的电磁场也是有所不同的。在本次竞赛中,参赛队伍需要制作出一个能够自主识别道路并行驶的智能车模。那么在模型车的制作过程中,最关键的问题就是如何探寻路径,如何施以合适的控制策略来确保小车在不违背比赛规则的前提下沿赛道尽可能快速稳定前进。而探寻路径的准确与否将直接影响小车行进的稳定效果,故而,设计出准确的寻线系统是该智能车制作过程中最重要的环节。比赛规则限定了跑道宽度50cm和拐角最小半径50cm,赛道具体形状在比赛当天现场公布。各参赛队伍在严格遵守比赛规则的条件下,在车模前面安装光电传感器或CCD或电磁传感器,并设计了电机驱动、转向舵机控制以及控制算法,以简洁但功能完美为出发点,以稳定为首要条件,以追求在最短的时间内跑完全程,并能检测赛道的起跑线,能够在完成比赛之后自动停止在起跑线3m范围之内。 1.2 整车设计思路智能车的比赛是以最短时间完成比赛为目标,对机械、硬件和算法的要求都挺高,要求软硬件两方面都能兼顾,能够快速、稳定的完成比赛。首先在硬件平台的搭建方面,我们在规定允许的范围内,对车模进行了适当的改装,在前后轮的定位、轮胎等进行了处理,使车模的稳定性更强,为速度的提高奠定了基础。同时,在电路设计上,添加了串口等功能,使传感器的调节更加方便,在试车时也会更加方便。然后是软件平台的搭建,在软件平台上,我们设计了无线遥控,可以在试车时及时控制小车启动、停车,极大地方便了调车,能够更清楚得看清小车的行进路线,保证了程序调试时更加具有针对性。1.2.1 控制系统智能车的工作模式如下图所示:电磁传感器获取赛道某点电磁特性,信号输入到 S12 控制核心,进行进一步处理以获得赛道信息;通过欧姆龙360线增量型编码器转速传感器检测车速,并采用 S12 的输入捕捉功能进行脉冲计数计算车速和路程;通过片上AD转换输入信号;舵机转向采用分段PD控制;电机转速控制采用 PID控制,通过 PWM控制驱动电路调整电机的功率。1.2.2 整车布局鉴于赛车和赛道的特点,在整车布局上仍延续基本布局的思路,采用低重心紧凑型设计,并架高舵机以提高响应速度。为调整整车重心位置,采用碳杆支撑电磁传感器,减小转动惯量。 在降低整车重心方面采用了低位主板的布局,同时设计了强度高质量轻的电磁传感器安装架,减轻信号采集电路板重量,降低电池架高度,降低赛车前方底盘高度。图1.2 车模电路设计构思图1.4所示为最终的参赛车模1.2.3 电磁组赛道主要特点1. 传感器信号为模拟值 电磁组需要检测的信号为大小 100mA,频率为20KHz 的方波信号,赛道由导线铺成,导线周围分布着交变的电磁场,由于赛道的各种形状,使得磁场发生叠加,不同的赛道形状形成不同的特征磁场,如下图为十字线附近的磁场。赛道信息相对于传统黑白线具有信号可以提供模拟信息的优势,我们利用电磁赛道这种优势,完善小车控制算法,达到了较好的控制效果。16 图1.3 导线周围磁场2. 传感器信号具有方向性 磁场是矢量,在空间的分布为具有方向性,所以传感器检测到的信号也具有特定的方向性。在实际检测的时候发现,不同方向传感器的变化规律有很大的不同,这也和磁场的分量变化规律相一致。比如,磁场垂直分量变化的比较早,但是受相邻赛道的影响较大,而磁场的水平分量恰好相反。如下图所示:图1.4 水平和垂直线圈的信号区别2 硬件设计2.1 传感器方案2.1.1 磁场检测传感器1、传感器的选择传感器设计关系整个项目的成败。电磁组的引导线为通有 20KHZ、100mA电流的漆包线(线径 0.1mm0.3mm) ,因此导线周围存在辐射电磁波。如何将电磁波能量转换为电压信号供AD采样成了本小车中最为关键的部分。 以下详细介绍了我们小车传感器方案选择、传感器设计、硬件制作、传感器优化的各个过程。一、方案选择我们主要涉及到电磁检测的方法主要有以下三种:1、电磁感应磁场测量方法:电磁线磁场传感器,磁阻抗磁场传感器。2、霍尔效应磁场测量方法:半导体霍尔传感器、磁敏二极管,磁敏三极管。3、各向异性电阻效应(AMR)磁场测量方法。上述三种检测方法我们都进行过实验,最终选择方案1,因为方案1实现容易,需求的器件易找易用,检测灵敏度高。2、放大电路设计使用 10mH电感和 6.8nF电容并联谐振,来感应 20KHz的磁场信号,经放大电路放大后,得到正弦波,再用 AD采样,得到正弦波的峰值,以判断传感器离导线的距离,从而定位导线。下面是三极管二级放大电路图:图2.1 三极管二级放大电路2.1.2 传感器的布局电磁传感器测出的信号为当前所在位置的某个方向的磁场信息,所以传感器的布局至关重要。通过实验发现,当传感器放前一点,前瞻搭,得到的赛道信息量大。所以,采用尽量架远主要传感器的方式,以获得前瞻,提前预知赛道形状。2.2 主板电路设计主板上主要包括电源模块、电机驱动、信号检测电路、各模块的接口。2.2.1 电源模块智能车的电源电压为7.2V,整车的电压配置如下图,采用芯片LM2940三端稳压芯片,降压为+5V输出。图2.3 电源配置和稳压电路2.2.2 驱动模块电机驱动使用两片 BTS7970,。BTS7970 为英飞凌公司的大电流电机驱动半桥,输出最大电流可达 63A,内部带有一个 P 沟道的高边 MOSFET、一个 N 沟道的低边MOSFET和一个驱动 IC。BTS7970 通态电阻典型值为16m。P 沟道高边开关省去了电荷泵的需求, 因而减小了EMI(Electro Magnetic Interference)。集成的驱动 IC 具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。BTS7970 应用非常简单,只需要向芯片第2引脚输入PWM 波就能控制。当系统中只需要单向控制时,只需要让电机一端接地,另一端接 BTS7970 第 4 引脚。如果需要电机双向旋转控制,则需要另一片BTS7970 共同组成,电路图如下:图2.4 电机驱动电路2.2.3 各模块接口包括最小系统板接口、传感器接口、人机界面接口、测速编码器接口、舵机接口,主要由插针等接插件组成。2.3 最小系统版单片机使用MC9S12XS128,MC9S12XS128 是飞思卡尔半导体公司的汽车电子类产品,早在飞思卡尔还没有从摩托罗拉分离出来前就已经诞生了。它隶属于飞思卡尔单片机的S12 系列,其内核为CPU12 高速处理器。MC9S12XS128 的封装有两种,一种为80 引脚的,它没有引出扩展总线,且AD 转换只引出了8 路;一种为112 引脚的,两种都采用了表面贴片式封装。下图为112 引脚的MC9S12XS128 引脚图:图2.5 最小系统版MC9S12XS128 拥有丰富的片内资源,有16路AD 转换,精度最高可设置为10 位;有8 路8 位PWM 并可两两级联为16 位精度PWM,特别适合用于控制多电机系统。它的串行通信端口也非常丰富,有2 路SCI,2 路SPI 此外还有IIC,CAN总线等端口,并且采用了引脚复用功能,使得这些功能引脚也可设置为普通的IO 端口使用。以下是它的系统结构图:13图2.6 MC9S12XS128的系统结构图以MC9S12XS128B芯片为核心的最小系统主要包括以下几个部分:时钟电路、串口电路、BDM接口、供电电路、复位电路和调试用LED灯。各部分的功能分别如下:(1)时钟电路为单片机提供一个外接的16Hz的石英晶振。(2)SCI串口可以输出TTL/CMOS电平。(3)BDM接口允许用户通过该接口向单片机下载和调试程序。(4)供电电路主要是给单片机提供+5V的电源。(5)复位电路是通过一个复位芯片给单片机一个复位信号。(6)调试用的LED灯和单片机的PORTB口相连,供程序调试使用。1、时钟电路时钟电路是单片机系统可靠运行的关键之一。如果时钟电路在设计上存在问题,会造成时钟电路不稳定,且时钟电路的高频响应噪声会引起系统的兼容性下降,会成为系统永久的隐患。这种不稳定因素带来的不可靠性会给整个系统的调试工作带来极大的困难,设计人员一般很难发现会是由于时钟电路设计不合理或辅助元器件参数有问题造成的。因此,在辅助元器件参数的选择、印刷电路板的布线等方面给予很大的重视。在设计时钟电路时,可以使用有源振荡器作为外部时钟,并且振荡器的频率不必太高,积累足够的经验后再使用频率更高的晶振。若使用无源石英晶振时,也可以不使用内部锁相环倍频电路。标准的MC9S12XS128单片机的时钟电路,通过吧一个16MHz的外部晶振接到单片机的外部晶振输入接口EXTAL和XTAL上,然后利用MC9S12XS128内部的压控振荡器(VCO)和锁相环(PLL)把这个频率提高到25MHz,使之作为单片机工作的内部总线时钟。值得注意的是,MC9S12XS128单片机的外时钟电路既可以使用串联振荡电路,也可以使用并联振荡电路。使用串联振荡电路时,XCLKS引脚即PE7引脚要拉低,而使用并联振荡电路或外部有源振荡器时,该引脚要拉高。因此,在最小系统的设计中,通常会设计一处跳线,方便选择外部有源振荡器还是串联振荡电路。图所示是最小系统外接无源晶振的接口电路。若直接使用有源振荡器,则可以接一个16MHz的外部有源晶体振荡器,经单片机内部分频后得到一个8MHz的总线时钟。由于EXTAL的输入电压为2.5V,故有源晶体振荡器输出的时钟信号必须经分压后才可以和EXTAL连接。对于锁相环模块,需要加上一个如图1.5所示的滤波电路。其中,VDDPLL引脚由单片机内部提供2.5V电压,XFC端是压控振荡器(VCO)的电压控制器,通过给锁相环电路编程,以数字方式锁定VCO的控制端电。而Cs,Cp和Rs的取值与晶振、REFDV寄存器和SYNR寄存器有关,需要通过计算得出,若其参数选择不当,会是VCO的控制端电压抖动,导致系统工作不正常。图2.7 最小系统外接无源晶振的接口电路以及锁相环滤波电路2、串行口的RS-232驱动电路通过串口驱动电路中的RS-232电平转换芯片,单片机可以利用异步通信协议与PC机通信。RS-232电平转换芯片可以实现TTL电平与RS-232电平之间的转换,然后再通过9芯串行口与PC进行串口通讯。3、电源电路HCS12单片机的芯片内部使用3V电压,而I/O端口的外部供电电压为5V。通常需要采用滤波电路改善系统的电磁兼容性,降低系统对电源的高频干扰。4、复位电路复位电路的作用是产生一个低电压信号给MC9S12XS128的RESET端,使系统上电启动。在最小系统中,通常使用低电压复位芯片MC34064,使上电复位更加可靠。而在设计系统目标板时,也可以只用一只0.1F的电容替代电路中的MC34064。同时,在系统目标板上通常添加一个手动复位按钮,以方便调试时使用。5、BDM接口BDM接口是连接BDM调试工具,其中BDMIN接口是接BDM调试工具,向MC9S12XS128单片机下载程序用的。若下载相应的BDM调试工具软件到目标板后,这块板就具有了BDM调试器功能。BDMOUT接口是当开发上的应用程序为BDM调试器程序时,此接口可以用做BDM调试器的输出口。如果不打算将这块目标板用作BDM调试器,可以不引出BDMOUT接口,从而有更多的I/O口可供用户的应用程序使用。6、单片机并行口及驱动能力并行口模块是单片机中最简单的I/O模块,其他功能模块如SCI,SPI,PWM,CAN等在不作为相应功能模块使用时,也可以作为并行口模块使用。如果在单片机的并行口上连接一些发光二极管(LED)可用于调试时显示系统的应用程序的某些状态。S12单片机的引脚共都可以当做通用I/O引脚使用。特别是A口、B口、K口常用于CPU总线扩展时的总线接口,它们不用做中线扩展是只能作为并行口使用。并行I/O口上有一个方向寄存器,他控制并行I/O口时用于输入还是输出。若方向寄存器相应位清零,表示该位用于输入;往方向寄存器相应位写1,表示改位用于输出。为安全考虑,单片机的I/O口在复位时,方向寄存器是清零的,即复位后所有I/O口都默认为输入口。并行I/O口在初始化时,要往相应的方向寄存器位写1,才能将改口定义为输出。对于定义为输出口的单片机引脚,可输出逻辑1或逻辑0,在5V供电的情况下,逻辑1不低于4.2V,逻辑0不高于0.8V。如果不作特别说明,一般单片机的I/O口的驱动能力相当于一个TTL晶体管的驱动能力。TTL晶体管导通时,输出为0,相当于输出端接地,允许流过晶体管的典型电流为4mA;TTL晶体管截止时,输出端通过片内的上位电阻保持输出端高电平。当作为高电平输出用时,与高电平可能的输出电流相比,低电平有较强的吸收电流的能力,不能指望有单片机向外提供功率,也不能指望单片机输出的高电平可以直接点亮一个LED灯,而要利用晶体管觉的导通,靠外部供电来驱动输出设备。这样,当单片机的引脚输出高电平,晶体管截止,相当于开路,LED熄灭。S12单片机的I/O接口有较强的电流吸收能力,各I/O接口可以允许10mA吸收电流,此时输出端仍能保证不高于0.8V。2.4 其它外设测速编码器使用 360线每转的欧姆龙编码器,如下图。图2.6 欧姆龙编码器3 机械设计3.1 舵机的安装今年的比赛所用的舵机是数码舵机,S-D5数码舵机,工作电压4.5-5.5V,带堵转保护电路,力矩5.0kg,回中更准确,定位更精确, 动作速度0.140.02sec/60。数码舵机提升了脉冲密度,轻微的信号改变都会变的可以读取,这样无论是遥控杆的轻微变动,或者舵机摇臂在外力作用下的极轻微变动,都会能够检测出来,从而进行更细微的修正。然而,数码舵机比起模拟舵机寿命短,考虑到数码舵机的性能,舵机安装如下:3.2 传感器的安装电磁传感器测出的信号为当前所在位置的某个方向的磁场信息,所以传感器的布局至关重要。通过实验发现,当传感器放前一点,前瞻搭,得到的赛道信息量大。所以,采用尽量架远主要传感器的方式,以获得前瞻,提前预知赛道形状。为了平衡整辆车的机械结构,减轻重量,支撑电感的材料采用碳素纤维管,具体结构如下:3.3 车模的机械调校3.3.1 底盘高度一般来说,底盘的高度越低,车的转向性能越好,行驶稳定性越佳。前高后低的布置会比较有利于转向。所以我们将前后底盘的高度都降低到 5mm 左右。加强车的机械强度,同时减轻重量,在车模撞击赛道和墙壁是能够很好经受住考验。3.3.2 前轮定位主销后倾角和车轮前束可以提高车模行驶时的转向回正力。我们所使用的车模中,车轮和主销是平行的,一般调成 0 度左右就可以了,适当的正前束可以提高连续转向的反应能力。车模前轮的空程比较大,过弯时车轮定位参数会发生比较大的变化,所以我们把主销的内倾角设成比较大的值,会更有利于过弯。1 前轮前束的调整车轮前束是指从上往下看两个车轮指向的方向(如图xx所示)。在前端指向内的一对前轮是车轮前束,零前束即车轮指向正前方,这时轮胎的磨损最小。 前束过大则磨损轮胎面外部花纹边缘 ,在我们的方案中,车模的设计结构是后轮驱动,所以使用前束。前轮前束的作用是: 前轮外倾有使前轮向外转向的趋势,前轮前束有使车轮向内转向的趋势,可以抵消因前轮外倾带来的不利影响,使车轮直线滚动而无横向滑拖的现象,减少轮胎磨损。悬架系统铰接点的变形,也使前轮有向外转向的趋势,也要靠前轮前束来补偿。图3.1 车轮前束2 主销内倾角的调整当汽车水平停放时,在汽车的横向垂面内,主销轴线与地面垂线的夹角为主销内倾角,如图3.2中的角。主销内倾角的作用:是使车轮自动回正。主销内倾时的受力分解如图3.3所示。车轮轴线与主销夹角在转向过程中是不变的,当车轮转过一个角度,车轮轴线就离开水平面往下倾斜,致使车身上抬,势能增加。这样汽车本身的重力就有使转向轮恢复到原来中间位置的效果。另外外轮的回正力矩大于内轮所受回正力矩,总的效果是使内外轮顺着图中蓝色箭头转动,如图3.4所示,因此回正力矩总的效果是使汽车回正。图3.2 主销内倾角图3.3 主销内倾时受力分解图3.4 主销内倾角效果3.3.3 差速调整车在转弯时后轮的速度会不同,所以需要差速器。在后轮不打滑的情况下,差速越松,转向效果越好,但是太松的差速会导致无法提供驱动力。实际中在赛道上调整到比较平衡的值就可以了。在差速和摩擦轴承中适当加点油也可以一定程度上改善差速的性能。 4 软件设计4.1 程序整体设计4.1.1 程序框图系统初始化读取道路信息处理道路信息并得到相关参数根据参数选择算法执行舵机与电机图4.1 程序流程图4.1.2 系统初始化在整个软件系统设计中,主要用到了5个单片机基本功能模块:系统总线超频模块、定时器中断模块、PWM模块、 AD转换模块、串口通信模块。 1、系统总线超频模块初始化 S12 单片机中有四个不同的时钟,即外部晶振时钟、锁相环时钟、总线时钟和内核时钟。 当前电路板采用的是16MHz 的有源晶振,因此外部晶振时钟为16MHz;默认设置下,锁相环时钟为36MHz,总线时钟为8MHz,内核时钟为16MHz。锁相环时钟与外部晶振时钟的倍、分频关系由SYNR、REFDV 两寄存器决定。总线时钟用作片上外围设备的同步,而内核时钟则用作CPU 的同步,它决定了指令执行的速度。针对智能车系统,我们需要尽可能地提高软件运行速度和效率。因此,我们通过锁相环设置将系统总线频率由 8MHZ 提高到64MHZ。 void chaopin_init(void) /超频64M CLKSEL=0X00; PLLCTL_PLLON=1; SYNR =0xc0 | 0x07; REFDV=0xc0 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); _asm(nop); _asm(nop); while(!(CRGFLG_LOCK=1); CLKSEL_PLLSEL =1; 2、PWM模块初始化脉宽调制模块有8 路独立的可设置周期和占空比的8 位PWM 通道,每个通道配有专门的计数器。该模块有4 个时钟源,能分别控制8 路信号。通过配置寄存器可设置PWM 的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8 位通道还是四个16 位通道)。为了提高控制精度,我们将两个单路的PWM 进行了级联,将输出控制精度从原来的8位提高到了16位。将5、7通道级联连接舵机,3通道接电机。具体初始化程序如下:void PWM_init(void) PWMCLK=0XA8; /5通道选择ClockSA, 3 7通道选择ClockSB PWMSCLA=0X08; /COLKSA=1MHZ PWMSCLB=0X08; /COLKSB=1MHZ PWMPRCLK=0X22; /A_COLK=16MHZ B_COLK=16MHZ PWMPOL=0XA8; /3,5,7通道输出起始高电平 PWMCAE=0X00; /左对齐方式(计数器循环增计数) PWMCTL=0XF0; PWMCNT23=0X0000; PWMCNT45=0X0000; PWMCNT67=0X0000; /从零开始计数 PWMPER23=20000; /设置输出周期为20ms PWM67驱动舵机 PWMDTY23=center; PWMPER45=1000; /周期10ms PWM45驱动电机正转 PWMDTY45=120; /4,5控制正转 PWMPER67=1000; /F=1KHZ PWM01驱动电机反转 PWMDTY67=100; /6,7控制反转 PWME_PWME3=1; /3,5,7通道使能,输出PWM PWME_PWME5=1; PWME_PWME7=0; 3、AD转换模块初始化void ATD_init(void) ATD0CTL1=0X00; /8位精度, ATD0CTL2=0X60; /快速清除标志位,禁止外部触发,不使能中断 ATD0CTL3=0XF8; /右对齐方式 完成转换后冻结 转换序列长度为12 ATD0CTL4=0X03; /采样时间为8MHZ 四个周期,转换时间2MHZ ATD0CTL5=0X30; /多通道转换和连续转换 ATD0DIEN=0X00; /禁止数字输入 4、定时器中断模块初始化void ECT_init(void) /计数 PACTL=0X50; /下降沿计数 PACNT=0X0000; void Timer_init(void) / 定时器计时中断 PITCFLMT_PITE=0; PITCE_PCE0=1; /使能通道0 PITMTLD0=11; PITMUX=0X00; PITLD0=320-1; /定时1ms PITMTLD0=200-1; PITINTE_PINTE0=1; PITCFLMT_PITE=1; 5、串口通信模块串口通信模块设有两个串行通信接口SCI1 和SCI0。使用时,可以对波特率、数据格式(8 位或9 位)、发送输出极性、接收唤醒方式等进行选择。另外,发送和接收可分开使能,模块中还提供了多种避免传输错误的选项。在本次设计,我们利用其中一个串口SCI0,将所需要的信息通过串口传到电脑上进行必要的处理和分析,以提高调试的效率。部分程序如下:void Sci_init(void) /串口初始化 DDRM=0x01; SCI0BDH=0x00|0x01; /波特率设置 SCI0BDL =0xA0; SCI0CR2=0X2C; /中断允许,TXD引脚用于发送禁止接收器中断, SCI0CR1=0; 串口发送程序如下:void SciTx(unsigned char text) unsigned char temp; temp=SCI0SR1; while (!(SCI0SR1&0x80); /延时至发送数据寄存器为空 SCI0DRH=0; SCI0DRL=text; delay(100); 4.2 磁场信息获取及处理我们通过电磁传感器获得一组AD采样信号,供单片机处理。磁场之间存在相互的影响,电感之间也存在干扰,因此,如何准确进行采样成为必须解决的课题。为了获取更加准确的数据信息,我们对获得的数据进行了相应的处理:将数据都存入一个数组中,当采集到一个新的数据时,对数组中的数据进行滚动刷新,即新的数据靠前,旧的数据排后,数组中最早采集的数据在每次刷新的过程就自动丢弃。然后对该数组中的数据求阙值,这样就获得了一个相对比较准确的数据。程序如下:void get(void) while(!ATD0STAT2_CCF0); g0=ATD0DR0L-12; while(!ATD0STAT2_CCF1); g1=ATD0DR1L; while(!ATD0STAT2_CCF1); g2=ATD0DR2L; ref_AD2=(g0+g2)/2; ref_AD1=ref_AD2*13/8; 4.3 赛车定位要控制好车的转向和速度,首先就要对赛车进行准确的定位。根据电感线圈在磁场中感应电动势计算公式:可以知道,在传感器靠近电磁线的地方,传感器获得的电压信号越大,反之越小。两者之间的关系如下图:图4.2 感应电动势与x之间关系如果只使用一个线圈,感应电动势E是位置x的偶函数,只能够反映到水平位置的绝对值 x 的大小,无法分辨左右。为此,我们可以使用相距长度为L的两个感应线圈,计算两个线圈感应电动势的差值:图4.4 感应电动势差值与x之间的关系 从上图可以看出,当两个线圈的中心恰好处于跑道中央,感应电动势差值 d E 为0。当线圈往左偏移,感应电动势差值小于零;反之,当线圈往右偏移,感应电动势大于零。因此电动势差值 d E 与位移x是一个单调函数。可以使用这个量对于小车转向进行负反馈控制, 从而保证两个线圈的中心位置跟踪赛道的中心线。通过改变线圈高度h ,线圈之间距离L可以调整位置检测范围以及感应电动势的大小。 如图 4.1 所示我们可以比较容易的获取赛道中心线的位置。首先对所有传感获得的数据进行处理,找出最大数据传感器的位置,实现对赛道信息的粗定位,然后再以最大值传感器位置为中心,借助其左右传感器获取的信号的大小来确定是偏左还是偏右,以实现更加精确的定位。经过多次的研究和实验发现, 运用分段处理和比值运算可以有效的解决上述问题。分段处理就是把传感器之间的中心位置作为运算的分界点,分别处理各段的数据信息;比值运算就是运用数据的比值来计位置偏移量,将比值控制在0-1之间,用一个常量乘以这个比值就可以相应的位置。这样获得的比例位置关系非常的接近直线关系,可以近似为一次函数来处理。其仿真关系如图 4.3所示。图4.3 分段处理和比值运算函数运用此方法,我们将赛车相对与赛道中心线的位置关系定位为0-180(传感器宽度定位 30-150) ,这样就算传感器完全偏离赛道中心线也能够获得定位数据。如图4.4给出了几种特殊位置的定位。图4.4 位置定位赛车定位的程序如下图所示:void calcu_position(void) if(g0!=g1!=g2) for(i=0;igmax_num) max_num=i; else if(g0=g1)&(g1g2) this_position=-L/2; else if(g2=g1)&(g1g0) this_position=L/2; else this_position=last_position; if(max_num=2) if(g2ref_AD2) this_position=-L/2-L/2*(g2-g1)/(g0-ref_AD2); else this_position=-L*3/2+L/2*(g2-ref_AD2)/(g2-g1); else if(max_num=0) if(g0ref_AD2) this_position=L/2+L/2*(g0-g1)/(g0-ref_AD2); else this_position=L*3/2-L/2*(g0-ref_AD2)/(g0-g1); else if(g2g0) this_position=L/2*(g1-g2)/(g1-g0)-L/2; else if(g2g0) this_position=L/2-L/2*(g1-g0)/(g1-g2); else this_position=0; last_position=this_position; 4.4 舵机控制小车转向角的控制通过输入PWM信号进行开环控制。根据检测的不同路径,判断出小车所在位置,按不同的区间给出不同的舵机PWM控制信号,小车转过相应的角度。考虑到实际舵机的转向角与所给PWM信号得占空比基本成线性关系,舵机的控制,舵机的反映速度完全滞后于处理速度,车模在高速行驶时候要保证舵机的快速跟踪性,我们引入了PD控制的方法,人为的将舵机的控制进行了非线性的划分。当偏差很小时候几乎忽略掉P和D,这时在通过直道区域的时候车子不会发生摆头现象。当偏差大到一定数值会加大P,并且引入D控制。当偏差继续增加,这时会引入更大的P和D更大的P和D能有助于车模的维持方向,在弯道上斜率会显著增加,这样又能保证在小圆环内不至于偏离出跑道太多以至于丢失跑道。所以舵机控制方案采用分段PD控制。小车处于弯道和直道的转向模型不同,对舵机控制量改变过大会导致小车在直线行驶时出现振荡,过小导致最大控制量偏小,小车转向不足,过弯时冲出赛道。 我们采用分段 PD 控制很好的 解决了上两种问题。我们根据引导线的斜 率来确定 P 和 D 的系数,具体方法如下:利用两排传感器得出前排引导线偏移量和后排引导线偏移量,分别为 position1 和 position2 ,由于两排传感器的间距已知为 L ,则可以求出引导线的斜率:当小车处于直道时, k=0 ,此时 P 和 D 的值给很小。 k 值越大说明弯越急,因此所给的 P 和 D 的值也要相应增大。如果 k 值超过限度,说明车子姿态已严重偏 离引导线,此时转角给最大值,并减速到一个安全的过弯速度。下表给出了 P 和 D与斜率之间的关系值最大的电感PD121.8251.234.51.24.5控速策略模拟PID控制系统组成原理如图4.1所示。PID调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。10图4.1 PID控制系统组成模拟PID调节器的微分方程: 公式1式中:。模拟PID调节器各环节的作用:比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数TI,TI越大,积分作用越弱,反之则越强。微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。相对于模拟PID,控制器只能处理数字信号,因此需要将模拟PID进行离散化处理。模拟PID控制规律的离散化见表4.1所示。数字PID控制器的微分方程: 公式2式中:为比例项,为积分项, 为微分项。表4.1 模拟PID控制规律的离散化模拟形式离散化形式常用的控制方式分为如下几种:1、P控制 2、PI控制 3、PD控制 4、PID控制 我们车模的的电动机控制采用了增量式PID控制算法,舵机控制采用了位置式PD算法。电动机的控制方法,在处理器对道路信息进行了处理后就会得到相应的速度设定值,此时PID运算程序会立即得出输出的脉宽调制的宽度,并通过速度反馈即使获得实时速度。当然我们的PID算法并不是原始的,而是改进的,既当速度差距很多时也会引入BangBang控制,而当需要刹车时又采用了非线性的刹车办法,将刹车误差人为放大。由于加速和减速都采用了PID控制,因此加速和制动的时间都由程序根据实际需要自行处理,测试中发现这种算法速度上升很快并且适应性很强。在车模速度很高的情况下,任何一个错误的操作都会使得车辆冲出跑道造成比赛的失败,为了更好的降低错误判断,尽可能的提高车模的稳定性,这里对舵机的控制数据进行记录,每一次更新控制信息都要比较两次信息的误差,依据我们的车速,车模在连续的跑道上上下间隔数据偏差不会大过4cm,一旦出现了过大的偏差就会舍弃这一次的控制信息,维持原来的控制结果。实践中这样不但增加了车模的稳定性,还能有效避免错误信息对车模影响。电机的控制采用经典的 PID控制,各环节的具体参数要经过反复的调整,以达到对各种赛道类型的适应性的平衡。各环节的注意点如下: P环节:和控制的力度相关,过软和过硬都不好。可以适度地采用分段 P的方法,即黑线在车的中间位置时 P 较软,黑线偏离较远时 P 较硬,以实现部分赛道的优化。 I 环节:I 环节可以使控制更加精准,但也有使控制变迟钝的负面效应,所以在前瞻

温馨提示

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

评论

0/150

提交评论