电磁组厦门大学嘉庚学院电磁组自强队技术报告_第1页
电磁组厦门大学嘉庚学院电磁组自强队技术报告_第2页
电磁组厦门大学嘉庚学院电磁组自强队技术报告_第3页
电磁组厦门大学嘉庚学院电磁组自强队技术报告_第4页
电磁组厦门大学嘉庚学院电磁组自强队技术报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第七届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学校:厦门大学嘉庚学院队伍名称:自强队参赛队员:徐杰生曾海涵王明南带队老师:康恺吴天宝关于技术报告和研究论文使用授权的说明本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:徐杰生 曾海涵 王明南带队教师签名:康恺 吴天宝日 期:2012-8-14摘要本文介绍一套直立智能车速度磁导航的设计,该智能车以C

2、OLDFIRE MCF52259作为整个系统信息处理和控制的核心。该系统通过3个方面进行控制。由陀螺仪ENC-03MB和加速度计MMA7361车体在直立过程中的信息,通过PID控制对智能小车直立进行控制;速度控制是由2个编码器对电机两端进行测速,将测得的速度与给定的速度进行PID速度闭环控制;由互感线圈采集赛道信息,得到多个互感线圈的信息值,通过PID的控制起到寻线方向控制。关键词:COLDFIREMCF52259 PID 直立 速度 寻线方向目录第一章、引言. .1 1.1概述. .1 1.2整车设计思路. .1第二章、直立寻线小车的原理.2 2.1直立寻线小车的原理. .2 2.2速度控制

3、原理. .62.3车模方向控制原理. .7第三章、电路设计. .73.1传感器的电路设计. .73.1.1寻线互感运放电路. .83.1.2陀螺仪和加速度传感器电路. .83.2电源电路模块. . 8第四章、传感器安装及机械设计. .94.1电杆的固定. . .94.2电路板的固定. .104.3轮胎的改进. . .104.4底盘的加固. . .104.5车子布局. . . .114.6电机保护. . . .11第五章、软件处理及控制算法. .11参考文献. .11附录. .第一章、引言1.1概述“飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等自动化专业教学指导分委员会主办的一项以智能汽车为

4、研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛以汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛。比赛要求在大赛组委会统一提供的竞赛车模,我们选择了飞思卡尔32位微控制器COLDFIREMCF52259作为核心

5、控制单元的基础上,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动等,最终实现能够自主识别路线,并且可以实时输出车体状态的智能车控制硬件系统。我们从一月份开始经过接近7个月的制作与调试,终于完成了目前的直立智能小车的制作。期间我们合作共勉,学习开发调试软件的使用、主控芯片控制、控制原理、编程语言等方面的知识,在对机械进行了调整的基础上,对小车软件进行调试,在发现问题后努力解决问题,进一步优化智能小车的机械、软件、和传感器的方案。1.2整车设计思路本车是主要运用COLDFIRE MUF52259为处理核心,本次竞赛中要求小车直立寻线走,直立、速度、方向控制对应同一

6、个执行器(电机),要进行不同的控制,达到尽量解耦控制的效果。首先通过陀螺仪、加速度计传感器的信息处理输出相应的PWM波驱动电机,起到直立的效果。本次竞赛对速度和方向的要求非常高,所以我们用了左右两个编码器对左右轮进行测速,将得到的值与我们给定的速度进行比较,用过PID的简单闭环控制达到近似匀速的效果,在方向方面我们通过两个电感进行一字型摆放,通过兩电感的值通过简单的模糊控制,实现寻线的效果。具体的设计思路如下图1.1。ENC-03MB 陀螺仪电磁线检测 AD*2电源3.3V供电速度检测 编码器*2MMA7361加速度计驱动电路BTS7960COLD FIRE 图1.1设计思路框图 第二章、直立

7、寻线小车的原理2.1直立原理 车模直立是通过负反馈实现的。因为车模有两个轮子着地,因此车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消倾斜的趋势便可以保持车体直立了。如图下2.1所示。 图2.1通过车轮运动控制保持车体直立要将车子最后保持平稳,一般都是建立车模的运动学和动力学数学模型,通过设计最优控制来保证车模的稳定。为了使得同学们能够比较清楚理解其中的物理过程。我们通过对比单摆模型来说明保持车模稳定的控制规律。重力场中使用细线悬挂着重物经过简化便形成理想化的单摆模型。直立着的车模可以看成放置在可以左右移动平台上的倒立着的单摆。如图2.2所示。图2.2车模简化的倒立摆模型普通的单摆受力分

8、析如图2.3所示。图2.3普通的单摆受力分析倒立摆之所以不能象单摆一样可以稳定在垂直位置,就是因为在它偏离平衡位置的时候,所受到的回复力与位移方向相同,而不是相反!因此,倒立摆便会加速偏离垂直位置,直到倒下。在控制车模的直立的过程中,控制倒立摆底部车轮,使得它作加速运动。这样站在小车上(非惯性系)看倒立摆,它就会受到额外的力(惯性力),该力与车轮的加速度方向相反,大小成正比。这样倒立摆所受到的回复力为 2-1式式中,由于很小,所以进行了线性化。假设负反馈控制是车轮加速度与偏角a成正比,比例为。如果比例,(是重力加速度)那么回复力的方向便于位移方向相反了。按照上面的控制方法,可把倒立摆模型变为单

9、摆模型,能够稳定在垂直位置。因此,可得控制车轮加速度的控制算法 (2-3) 式中,为车模倾角;为角速度;k1、k2均为比例系数;两项相加后作为车轮加速度的控制量。只要保证在k1g, k20条件下,可以使得车模像单摆一样维持在直立状态。其中有两个控制参数k1,k2,k1决定了车模是否能够稳定到垂直平衡位置,它必须大于重力加速度;k2决定了车模回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证车模尽快稳定在垂直位置假设倒立车模简化成高度为L,质量为m的简单倒立摆,它放置在可以左右移动的车轮上。假设外力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,可以得到车模倾角与车轮运动加

10、速度a(t)以及外力干扰加速度x(t)之间的运动方程。运动方程图如下2.3所示。图2.3车模运动方程对应车模静止时,系统输入输出的传递函数为: ,此时两极点为。一个极点位于s平面的右半平面,因此车模不稳定。车模引入比例、微分反馈之后的系统如下图所示:系统传递函数为:,此时两个系统极点位于:系统稳定需要两个极点都位于s平面的左半平面。要满足这一点,需要k1g, k20.所以我们给直立控制用简单的PD值控制只能小车的平衡。2.2速度控制原理对于直立车模速度的控制相对于普通车模的速度控制则比较复杂。由于在速度控制过程中需要始终保持车模的平衡,因此车模速度控制不能够直接通过改变电机转速来实现。直立控制

11、和速度控制有耦合的关系。我们利用控制单片机的计数器测量在固定时间间隔内速度脉冲信号的个数可以反映电机的转速。我们假设直立的阶段我们是以某一个角度稳定的,车模角度控制规律可以看出车模倾角设定量与车模倾角变化之间大体呈现一个一阶惯性环节 做简化假设如下:车模角度在直立控制下简化成一个一阶过渡过程。(2)车模倾角是由车轮运动产生,因此车轮速度是倾角变量求导再乘以车模长度。忽略车模倾角引起车轮加速度。由于这个讨论仅对控制一开始短暂的过渡阶段而言,此时由于车模倾角比较小,引起速度变化很小。系统只进行速度比例负反馈。简化模型如下图2.4所示:图2.4车模倾角控制分析 有得到的式子中可以看出为了保证系统稳定

12、,往往取的车模倾角控制时间常数Tz很大。这样便会引起系统产生两个共轭极点,而且极点的实部变得很小,使得系统的速度控制会产生的震荡现象。所以在控制反馈中增加速度微分控制。2.3车模方向控制原理实现车模方向控制是保证车模沿着竞赛道路比赛的关键。直立车模所在的电磁组的道路中心线铺设有一根漆包线,里面通有100mA的20kHz交变电流。因此在道路中心线周围产生一个交变磁场。通过道路电磁中心线偏差检测与电机差动控制实现方向控制,从而进一步保证车模在赛道上。 我们用电感和电容的互感采集10mA的20KHz的交变电流导线的信号通过两个互感电容的信号差动,在车模直立控制和速度控制的基础上给电机左右轮差速实现转

13、向的效果。具体控制框图如下2.5所示:图2.5 通过电机驱动差动电压控制车模方向 我们通过官方给的文档只给了比例控制的基础上发现,当速度超过一定值的时候,很容易出现震荡丢线的现象,所以在此基础上我们加了适当的积分常数,这样能够在速度高速时,即使的提前控制,起到控制优化的效果。第三章、电路设计3.1传感器的电路设计3.1.1寻线互感运放电路 我们通过同10mh的电感和6800pf的电容互感经过下面的运放电路如下图3.1所示: 图3.1 电感运放电路 同过AD620对互感得到的小信号进行放大滤波后,采集的AD值传入单片机的AD口。 3.1.2陀螺仪和加速度传感器电路 陀螺仪电路信号放大电路如下图3

14、.2所示:图3.2陀螺仪运放电路图 其中图中的RW电阻大小能取到对陀螺仪信号放倍数的调整。R1和R4接上拉和下拉,使得陀螺仪本身输出的差值变到0.10.2V再经过运放能过得到较为线性的AD值。加速度计我们使用龙丘出产的MMA7361模块。电路图如3.3下所示:图3.3加速度MMA7361电路图3.2电源电路模块 我们使用的电源模块电路图如3.4所示:图3.4电源电路其中电源模块中,+3.3V是直接给陀螺仪、加速度计、和单片机供电用,+5V和-5V给运放模块正负电源供电所用。3.3驱动电路模块 我们使用BTS7960作为我们的驱动芯片,电路图如下3.5所示:其中两片BTS7960驱动一个电机。第

15、四章传感器安装计机械设计4.1电杆的固定电感的安装如下图4.1所示:是我们自行设计了电杆的安装座,为一圆孔台阶座,电感支架的材料为碳纤维棒,支架为T字型。两个杆用尼龙材料的连接件固定,连接件上带有两个紧定螺丝,可以调整两个杆的相对位置。需要强调的是,碳纤棒为实心的,碳纤管为空心的,在这里我们应该要用碳纤棒,因为碳纤维管比碳纤棒容易弯曲折断。电感支架的前杠用4根棉线固定在车身,防止支架晃动。4.2电路板的固定电路板固定于,电杆安装座下方的四个白色螺丝位置。4.3轮胎的改进轮胎应选择较软的胎,软胎还应打磨之更加柔软,但是要保留一些纹路。4.4底盘的加固前后底盘的中间以及两边都需要用pcb板加螺丝固

16、定。如下图所示,不能用热熔胶固定,因为用热熔胶连接的部分容易变形、脱落。4.5车子布局:车子的电池固定在底盘后部,支架以及电路板固定在底盘前部,这样能使撤职在平衡时底盘微微向前倾。4.6电机保护电机线容易断裂,应用热缩管将正负引线包好,再用热熔胶固定在电机架上。第五章、软件处理及控制算法微处理器:CodFire系列处理器 型号-MCF52259 控制理论:利用陀螺仪加速计计算出车体的倾斜角度,利用PD控制来控制直立,然后利用车速模块(编码器)测得当前小车的行驶速度,利用PI控制原理把速度控制在某个自己设定的值实现小车匀速行驶。利用AD口读取左右两个电感的电压值,再通过两个电感的差值实现对路径的

17、检测,用PD控制来控制车模的转向。算法:由于控制小车需要控制其直立,速度和方向,而输出量只有两个电机的PWM脉冲。为了避免各个控制输出量的互相影响,我们把各个控制分配到中断的分段中,使其不互相影响。代码设计:代码主要分为 1初始化 2 信息的获取 3 控制 其中初始化包括:PLL设置,PWM,AD,计数器IO,液晶屏,按键等模块的端口初始化信息的获取包括:各模块的AD值,脉冲数,电感电压等控制包括:直立,速度,方向控制参考文献1 飞思卡尔秘书处 ,电磁组直立行车参考设计方案1.0 2011-12-222 飞思卡尔秘书处 ,电磁组直立行车参考设计方案2.0 2012-3-13 邵贝贝等 学做智能

18、车2004年 北京航空航天大学出版社4 陶永华主编 新型PID控制及其应用 机械工业出版社 2002年附录源程序/*龙丘MCF52259多功能开发板V1.0编写:龙丘Designed by Chiu Sir软件版本:V1.1最后更新:2010年7月8日相关信息参考下列地址:-Code Warrior 7.1Target : MCF52259Crystal: 48.000Mhz*/*端口使用说明*ICOC3-内部计数器GPT3,TA3,PWM7PWM1-DTIN2-13左轮 TCPWM3-DTIN3 TAPWM4-ICOC0-46右轮 PWM6-ICOC1AD0-AN0-陀螺仪 ANAD1-AN

19、1-加速度计AD2-AN2-矫正位A3-DC 命令数据选择管脚 TEA2-RES 模块复位管脚 A1-D1(MOSI) ,主输出从输入数据脚,由MCU控制A0-D0(SCLK) ,时钟脚,由MCU控制A8-A15-外部计数器存储位 TFA16-TG0 外部计数器控制位 TGA17-TG1*/#include support_common.h /* include peripheral declarations and more */#include MCF52259_PIT_driver.h#include MCF52259_UART_driver.h#include MCF52259_PWM

20、_driver.h#include Get_info.h#include Control.h#include LQ12864.huint8 txtbuf016;uint8 txtbuf116;uint8 txtbuf216;uint8 txtbuf316;/中断全局变量int step=0;int index=0;int count_s=1;int count_d=1;int SpeedPluse=0;int adi=0;/*函数区*/void delay(uint16 ms) int ii,jj; if (ms1) ms=1; for(ii=0;iims;ii+) /for(jj=0;jj5

21、0;jj+); for(jj=0;jj-0.5&Ag_acc-0.5&agvelocity_gyro100) /使显示屏稳定 / LCD_CLS(); LCD_Print(8,0,txtbuf0); LCD_Print(0,2,txtbuf1); LCD_Print(0,4,txtbuf2); LCD_Print(70,4,txtbuf3); / LCD_Fill(0 xff); / LCD_Fill(0 x00); / LCD_CLS(); /LCD_Print(0,0,(uint8 *)龙丘); /index=0; / /index+; _declspec(interrupt:0) voi

22、d PIT0_handler(void)/interrupt source 55 if(step=0) Pulse_counter(); MCF_GPIO_PORTTG|=MCF_GPIO_PORTTG_PORTTG0; MCF_GPIO_PORTTG|=MCF_GPIO_PORTTG_PORTTG1; MCF_GPIO_PORTTG&=0; else if(step=1) /* for(adi=0;adi7;adi+) int k=0; for(k=0;k=20) if(g_nRightPulseI10) SpeedControl(0); else if(g_nRightPulseI=10)

23、 SpeedPluse=g_nRightPulseI; SpeedControl(SpeedPluse+5); else SpeedControl(1000); sprintf(txtbuf1,%5d,g_nRightPulseI); g_nLeftPulseI=0; g_nRightPulseI=0; count_s=1; else SpeedControlOutput(count_s); /速度调节 count_s+; else if(step=4) Direction_votage(); ftostr(g_fLeftVoltageI,txtbuf2,3); ftostr(g_fRight

24、VoltageI,txtbuf3,3); DirectionControl(); /方向控制 step+; if(step4) step=0; MCF_PIT_PCSR(0)|=MCF_PIT_PCSR_PIF;#include Control.h#include MCF52259.h#include support_common.h#include Get_info.h /直立调节参数float g_fAngleOut=0.0;#define ANGLE_P 0.05*450#define ANGLE_D 0.05*14/速度调节参数#define SPEED_P 0.05*9/10.5/1

25、0/3.2/4/3/3/0.1/3/0.5#define SPEED_I 0.05*2.5/1.8/2.5/2.5/2.5/2/2.5#define DEAD_VAL 0.05*250 float g_fSpeedOld=0; float g_fSpeedNew=0; float g_fSpeedIntegral=0; floatg_fSpeedOut =0; float g_fLeftOut=0; float g_fRightOut=0;/方向调节参数 #define DIRECTION_P 0.05*600/475/430#define DIRECTION_D 0.05*800/16000

26、/10000/15500/680/500/478/585/580 float g_fDirectionOut=0;float g_fDoutold=0;float g_fDoutnew=0;float diff_now,diff_before; /-*/函数名:AngleControl */功 能:直立控制 */参 数:无 */返 回:无 */-*void AngleControl() g_fAngleOut =ANGLE_P*Angle+ANGLE_D*agvelocity_gyro; /-*/函数名:SpeedControl */功 能:速度控制 */参 数:无 */返 回:无 */-*v

27、oid SpeedControl(int speedset) int fspeederror; int speednow; speednow=g_nRightPulseI; fspeederror=speedset-speednow; g_fSpeedOld=g_fSpeedNew; g_fSpeedIntegral+=SPEED_I*fspeederror; g_fSpeedNew=g_fSpeedIntegral+SPEED_P*fspeederror; /速度调节void SpeedControlOutput(int fen)float fValue;fValue =g_fSpeedNew - g_fSpeedOld;g_fSpeedOut=(fValue/19)*fen + g_fSpeedOl

温馨提示

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

最新文档

评论

0/150

提交评论