1、3.5电磁传感器的设计 8第四章 智能汽车软件设计 124.1软件流程图 124.2 转向控制软件设计 134.3 速度PID控制算法及其改进形式 14第五章 系统调试 I5.1仿真系统 I5.2 无线调试模块 II5.3 上位机调试单元 II参考文献 V附录 VI第一章 引言1.1 智能汽车制作情况概述智能汽车以比赛组委会提供的飞思卡尔16位微控制 MC9S12XS128B为控制器,采用电感传感器进行赛道路径检测,舵机转动和车模电机的运动速度和运动方向。电机驱动芯片选用MOSFET管,同时使用MC9S12XS128B单片机的PWM模块,运用PID控制算法,控制舵机的转向和电机的转速,完成对智
2、能汽车运动速度和运动方向的闭环控制。系统还扩展了四位拨码开关模块作为人机操作界面,以便于智能小车的相关参数调整。 1.2 文献综述针对本次飞思卡尔智能汽车比赛,主要存在的技术问题就是如何设计出合理的传感器队赛道信息做出正确及时的判断,如何控制舵机和电机在最优的线路上以最短的时间通过赛道。对于S12 芯片的寄存器设置和操作,参考了飞思卡尔的S12用户使用手册。由于选择采用电感传感检测赛道上20Khz的方波,最终完成对赛道信息的判断,学习的电磁原理的相关书籍,即李仕伯.马旭.卓晴.著基于磁场检测的寻线小车传感器布局研究,并且参考了竞赛组秘书处技术组的20KHz 电源参考设计方案。在选择传感器时,我
3、们研究了宋文绪,杨帆传感器与检测技术。邵贝贝1文中详细介绍了如何在S12 系列单片机上进行程序代码编译和CodeworriorIDE 编译器使用方法,对程序调试和软件开发提供了很好的参考。1.3 技术报告结构技术报告以智能汽车的设计为主线,包括小车的构架设计、硬件设计、软件设计,以及控制算法研究等,分为六章。其中,第一章为引言部分,第二章主要介绍了小车的总体设计方案以及车模的相关参数,第三章对小车的硬件设计进行了详细的介绍,其中包括机械改造,电路设计两大部分,第四章对小车的软件设计思想和相关算法进行介绍,第五章详细介绍了赛车系统开发的调试工具、软件和各种调试手段和方法,对小车的开发调试等进行说
4、明,第六章叙述了我们在设计过程中遇到的问题和解决方法。第二章 智能汽车系统整体方案设计2.1 设计要求 在本次的飞思卡尔第六届智能汽车的比赛中,要求参赛队伍设计的智能汽车具有自动循迹的功能,跑道下铺有20Khz的方波电源信号线,在引导线周围激起交变的磁场,从而通过检测此磁场引导车辆行驶。使用电磁场作为引导智能车的优点,主要体现在磁场信号具有很好的环境适应性,不受光线、温度、湿度等环境因素的影响。智能车系统的方案设计要求就是智能车将采集的信号作出正确合理的处理,使其快速稳定的行驶。因此,能沿着方波信号线自动行驶是前提,想要取得较好的成绩还得尽量提高智能小车的运行速度。2.2 智能汽车系统总体设计
5、 根据电磁车循迹的要求,电磁车设计包括赛车的设计和恒流源的设计。 根据电磁传感器方案设计,赛车共包括五大模块:电磁传感器模块、速度传感器、MC9S12XS128模块,电机驱动模块、电源管管理模块。其中系统结构框图如下:光电编码器MC9S12XS128电磁传感器直流电机PWM驱动可充放电源电源管理模块伺服舵机各个模块的作用如下所示:1. 电磁传感器模块:在该模块中对采集到的信息进行处理,一次信息来判断当前智能小车所出赛道的变化趋势、小车的当前速度机转角的信息。将处理得到的信息传给单片机以采取相应的控制决策。2. 速度传感器:选择光电编码器,采集当前的电机速度,作为系统速度控制的反馈。同时与设置的
6、目标速度作比较,选择合适的算法使其变化为目标速度,从而实现电机的加速减速。3. MC9S12XS128模块:S12 单片机是系统的核心部分。它负责接收赛道信息数据、赛车速度等反馈信息,并对这些信息进行恰当的处理,形成合适的控制量来对舵机与驱动电机进行控制。4. 驱动模块:在该模块中包括了驱动电机和舵机,当接收到单片机的命令后便执行相应的操作,同时信息采集模块又采集到电机和舵机的状态信息,反馈给单片机 。从而整个系统构能够形成一个闭环系统,保证了小车的平稳运行。5. 电源管管理模块:为了使各模块正常工作,必须供给各自所需的电压,例如电机电源,舵机电源,单片机工作电源。在恒压源的基础上,搭建模拟电
7、路,使恒压源分别变为目标电压。2.3 智能汽车机械结构设计机械结构在很大程度上影响着小车的速度与转向特性,在准备比赛初期,由于没有经验,单纯为了传感器的稳定,使用了实心的钢铁细管作为支撑架,导致小车的重心偏前,转弯过程不协调。为此,我们选择改用质量较轻的碳纤管作为支撑材料。此外,为了解决模型车的前轮倾角,差速的松紧等问题,我们在参考往届赛队的基础上,通过不断实践将小车的机械结构调整到最佳的状态。智能汽车结构特点:小车前轮倾角的调整:我们在调试的时候发现,增大轮胎与地面的摩擦力可以大大减少小车在高速过弯时小车冲出赛道的几率。鉴于此,我们调整了小车的前轮主销倾角,使之成为“八”字形,这样就大大的增
8、大了小车的前轮与地面的摩擦力。舵机的改造:在初期的时候,我们将舵机平放,但是随之而来的问题是小车转向迟钝,并且左右的转向不相等。为此我们在参考往届赛队的基础上,根据小车的实际特点,将小车的力臂进行了适当的加长,并且将舵机由平放改为了竖直放置。差速的调整:差速的松紧程度在很大程度上影响着小车的过弯与加速特性,差速太松,小车在加速时容易打滑,差速太紧,小车再过弯时较为吃力。经过反复试验,我们将差速调整到一个比较合适的程度。传感器的调整:传感器作为模型车控制的重中之重,就像是一个人得眼睛。要想跑得快,就得看得远。为此,我们在车模整体结构允许的情况下,尽可能的加长了传感器的构造,优化了智能车的前瞻效果
9、,这种方案的优越性,在模型车转弯和控速方面体现的尤为明显。第三章 智能汽车硬件设计3.1 转向模块 转向舵机我们使用的是组委会提供的舵机,并加长了舵机的力臂。根据舵机驱动的原理,舵机的控制周期是10ms,,在一定范围内,占空比决定着舵机的舵角。XS128单片机80PIN共有8路可配置的PWM接口,PP0PP7其中两个相邻的接口可以合成一路16位的PWM。我们将PP4和PP5合成了一路16位的PWM发生器,并由PP5输出。舵机的标称电压是5V,但我们通过实验发现:适当地提高舵机的供电电压可以明显提高舵机的转向速度与转向力度。为此我们使用5V电源电压给舵机供电。舵机的机械设计图如下: 图3.1 舵
10、机机械设计图3.2 驱动模块 驱动芯片的选择直接影响小车的加速效果,智能车大赛的主要标准就是速度,因此驱动芯片至关重要。在准备过程中我们反复试验了若干的电机驱动芯片,例如33886芯片驱动和7960驱动都没有达到满意的效果。后来我们用MOS管自己搭建了驱动电路,这样既保证了电机的驱动能力,同时也提高了电机的反应速度。驱动硬件设计图如下:驱动电路设计图如下:3.3 测速模块好的控速效果是建立在精确的反馈的基础上的,同时也是各种速度控制算法的基础。在初期的调试阶段,我们用自制的光电码盘配合光电管和比较器获取小车的当前速度,但我们发现这种方法产生的信号并不整齐,影响速度的采集。最后我们放弃了这种方案
11、而改用信号比较整齐精确的光电编码器来测速。我们采购到了增量式的分辨率为100线的光电编码器。XS128有16位的脉冲累加器,我们将从光电编码器输出的信号接至PT7口,在单片机软件设计中,每隔20ms将脉冲累加器中的值读回并将寄存器清零。这样就能获取光电编码器20ms的发出的脉冲,进而根据齿轮的比例就能计算出小车的实际速度。光电编码器的电路如0图3.3所示: 图3.3 测速模块电路图编码器机械设计图如下:3.4电源设计方案 电源电路包括振荡电路、功率输出电路、恒流控制电路以及电源等组成。1振荡电路震荡电路部分采用单片机产生。2.功率输出 功率输出部分采用L298。3.恒流控制电路 恒流控制电路由
12、限流电阻操控。如图3.5电磁传感器的设计导线周围的电场和磁场,按照一定规律分布。通过检测相应的电磁场的强度和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。由于赛道导航电线和小车尺寸l 远远小于电磁波的波长 ,电磁场辐射能量很小(如果天线的长度l 远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。为此,我们将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。,我们选取最为传统的电磁感应线圈的方案。它具有原理简单、价格便宜、体积小(相对小)、频率响应快、电路实现简单等特点
13、,适应于初学者快速实现路经检测的方案倍压检波电路可以获得正比于交流电压信号峰峰值的直流信号。为了能够获得更大的动态范围,倍压检波电路中的二极管推荐使用肖特基二极管或者锗二极管。由于这类二极管的开启电压一般在0.1-0.3V 左右,小于普通的硅二极管(0.7V),可以增加输出信号的动态范围和增加整体电路的灵敏度为了讨论方便,我们在跑道上建立如下的坐标系,假设沿着跑道前进的方向为z轴,垂直跑道往上为y轴,在跑道平面内垂直于跑到中心线为x轴。xyz轴满足右手方向。可以对于小车转向进行负反馈控制,从而保证两个线圈的中心位置跟踪赛道的中心线。通过改变线圈高度h ,线圈之间距离L 可以调整位置检测范围以及
14、感应电动势的大小。传感器的模拟即仿真如下图:传感器在赛道上采回信号后,通过滤波运算作出仿真。 3.6飞思卡尔MC9S12XS128最小系统最小系统我们用的是自己设计的,个系统的核心控制采用Freescale的MC9S12XS128型号16位单片机,5V电压供电。单片机内部资源有:128KB的FLASH、8KB的RAM、8KB的DATA FLASH、I/O口有91个、总线频率为40MHz,内部有CAN总线、SCI、SPI,16路12位A/D、8路8位PWM输出(在实际使用时,为了提高输出精度将两路PWM合并为一路则有4路16位PWM输出)、16位定时器、4路PIT。可见,此单片机有很丰富的资源,
15、可以满足真个系统的需求。其中,16位PWM输出能够很好的控制S3010伺服器工作,实现精确转向;12位A/D工作时钟最大可以达到8M,满足信号采样的需求;4路PIT可以实现对脉冲信号的上升沿和下降沿捕捉;丰富的I/O口资源能够扩展外部设备,如键盘、LCD、LED。单片机最小系统原理图如图所示最小系统板正面 最小系统板反面第四章 智能汽车软件设计 4.1软件流程图软件运行需要配置单片机各个模块寄存器数值,使单片机各个模块正常工作。初始化中包括:单片机时钟配置、I/O口配置、PWM模块配置、A/D模块配置、RTI实时中断配置、脉冲捕捉模块配置。当初始化完毕后,开始对传感器输入信号进行采样,当完成一
16、次采样后将采样值输入控制算法,控制算法经过运算得到应该偏转的角度和速度,通过改变PWM模块内部寄存器数值可以得到不同占空比的方波信号,实现对舵机和电机的调节。如图4-1所示: 4.2 转向控制软件设计通过比较两路A/D采集传感器电压大小,可以得知传感器与漆包线之间的位置。假设1号传感器在车体左方,2号传感器在车体右方。当车体偏向漆包线左方时,右侧传感器靠近漆包线数值增加,左侧传感器远离漆包线数值下降,用1号传感器数值减去2号传感器数值则会出现负值;当漆包线在车体正中间时,左侧传感器数值等于右侧传感器数值,那么做差之后的数值为0;当车体偏向漆包线右方时,右侧传感器远离漆包线数值下降,左侧传感器靠
17、近漆包线数值增加,做差后会得到正值。那么根据做差后的数值可以判断车体与漆包线的位置关系,从而控制舵机转向修正车体位置。得到偏离位置值之后,PID控制器(如图4-2)对输入偏差值运算得到修正值,输入调节小车沿着路径行驶。通过更改KP_A、KI_A、KD_A三个参数改变小车的控制性能。三者和用选择适当的参数,可实现稳定的控制。PID调节器的控制输出为:4.3 速度PID控制算法及其改进形式PID 控制是工业过程控制中历史最悠久,生命力最强的控制方式。这主要是因为这种控制方式具有直观、实现简单和鲁棒性能好等一系列的优点。位置式PID算式连续控制系统中的PID控制规律是 4.1其中是偏差信号为零时的控
18、制作用,是控制量的基准;利用外接矩形法进行数值积分,一阶后向差分进行数值微分,当选定采样周期为T时,式4.1可离散为下面的差分方程 4.2增量式PID算式。根据式4.2得出 4.3于是 4.4式4.3的计算结果,反映了第k和第k1次输出之间的增量,所以称为增量算式。这个算式的结果是可正可负的。利用增量算式控制执行机构,执行机构每次只增加一个增量,因此执行机构起了一个累加的作用。对于整个系统来说,位置和增量式两种算式并无本质区别,只是将原来全部由计算机完成的工作,分出一部分由其他元件去完成。然而,虽然增量式算式只是算法上的一点改进,却带来了不少优点:算式只与最近几次采样值有关,不需要进行累加,不
19、易引起误差累积,因此容易获得较好的控制效果。计算机只输出增量,误动作时影响小,必要时可加逻辑保护,限制或禁止故障时的输出。手动于自动切换时,由于步进电机具有保持作用,所以容易实现无扰动切换,机器故障时,也可以把信号保持在原位。由于增量算式有上述优点,在实际控制中,应用得比位置式更为广泛。第五章 系统调试5.1仿真系统使用CodeWarrior Development Studio for HCS12(X) V4.7作为程序编写、编译、下载、调试工具。在软件内部集成了在线调试功能,可以查看程序变量以及寄存器值。如图5-1所示。图5-1 CodeWarrior Development Studio
20、调试界面5.2 无线调试模块 为了实时监控小车的各项参数,我们采用了基于Zig-Been技术的无线调试模块,经过适当地配置,配合单片机串口和我们自行开发的上位机调试软件。不但可以实时观察赛车的各项参数,还可以在线修改智能车的各项参数。避免了频繁下载程序的问题。我们使用的无线调试模块如图5.2所示:无线发送模块无线接收模块5.3 上位机调试单元 为方便调试,我们用VC编写了智能车调试软件,调试界面如图5.3所示:用C+编写的上位机程序为了便于调试小车寻迹效果,在实验场地制作了跑道用来调试小车寻迹是否能够满足要求如图所示。18m小跑道 用来试弯道42m大跑道参考文献1 宋文绪,杨帆传感器与检测技术
21、M第1版,北京:高等教育出版社,2004.1。2 贾伯年,俞朴传感器技术M第2版,南京:东南大学出版社,2000.8。3卓晴.黄开胜.邵贝贝.学做智能车挑战“飞思卡尔”杯.北京:北京航空航天大学出 版社,2007.3.4邵贝贝.单片机嵌入式应用的在线开发方法.北京:清华大学出版社,2004.5李仕伯.马旭.卓晴.基于磁场检测的寻线小车传感器布局研究,清华大学,2009.126 李发海,王岩智电机与拖动基础M第1版,北京:清华大学出版社,2005.8。7竞赛组秘书处.路径检测设计参考方案.2010.1。8竞赛组秘书处 技术组.20KHz 电源参考设计方案。附录#include /* common
22、 defines and macros */MC9S12XS128.h /* derivative information */Init.hGeneral.hLQSDdriver.hControl.huart.h#pragma LINK_INFO DERIVATIVE mc9s12xs128word Pulse_counter = 0;word AD_value1 = 0;word AD_value2 = 0;word AD_value3 = 0;word AD_value4 = 0;word AD_value5 = 0;/*/word Time_1ms = 0;word Time_5ms =
23、 0;int Speed_detect = 0; /cm/sint L_position21 = 0;byte RXBUF512=0; / byte TXBUF4 = 0;int WSend_data = 0;byte BSend_data = 0;word Startline = 0;word Starttime = 0;byte Start_state = 0;word Start_delay = 0;word Cross_count = 0;word CROSS_DELAY = 0;word Speed_count = 0;byte Speed_flag = 0;word PWM_ONE
24、 = 0;void main() Start_state = 1; PORTB=0xFF; DisableInterrupts; SetBusCLK_48M(); InitIO(); Init_PWM (); Init_IOC(); Init_AD(); uart_int(); /Start_TF(); Delay_ms(10); Init_RTI(); EnableInterrupts; Clear(); Key_mode = (PTIJ & 0XC0)6; if(Key_mode = 0 | Key_mode = 1) Key_input0 = 300; /高速速度 Key_input1
25、= 250; /低速速度 Key_input2 = 60; else Key_input0 = 200; Key_input1 = 200; Key_input2 = 70; Key_input3 = 1800; Key_board(); Speed_H = Key_input0; Speed_L = Key_input1; Start_delay = Key_input2; PWM_ONE = Key_input3; /* 起跑延时 */ Time_5ms = 0; for(;Time_5ms = Start_delay*20) if(Starttime - Time_5ms 7) * 2; CROSS_DELAY = (500 - Speed_detect); if(Speedup_flag) Speed_count+=Speed_detect;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1