国赛技术报告-电磁组大连理工_第1页
国赛技术报告-电磁组大连理工_第2页
国赛技术报告-电磁组大连理工_第3页
国赛技术报告-电磁组大连理工_第4页
国赛技术报告-电磁组大连理工_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第十一届 ” 大学智能汽车竞 第一章方案设 系统总体方案的选 系统总体方案的设 小 第二章机械结构调整与优 智能汽车车模的选 智能汽车传感器的安 重心高度调 其他机械结构的调 小 第三章硬件电路方案设 单片机最小系统模 电源模 电机驱动模 串口通信模 第四章磁场信息处 磁场信息 数据处 第五章控制策略研 PID控 车模平衡控 车模速度控 车模方向控 车模电机控 第六章开发工具、制作、安装、调试过 开发工 串口功 画图功 CCD显示功 头图像功 头图像显示功 调试过 第七章车模主要参 智能汽车外形参 智能汽车技术参 参考文 “”杯大学生杯智能汽车竞赛是国家教学质量与教学工程本文采用第十一届“”杯大学生智能车竞赛的汽车模型作为研PIDPIDPID方向控制器实时调整小车的速在电源模块设计中,采用Linear公司线性稳压电源LT1529-5作为稳压5V输出为编供电采用Linear公司LT1963-3.3作为稳压3.3V输出,系统总体方案的选谐振检测20kHZ电生的磁场。由于平衡车的特殊性,车身在循迹前进的MMA8451;陀螺仪作为角速度传感器,型L3G4200D。另外,车身转向控制方面,也使用陀螺仪作为转向反馈,测编,易于固定,且精确度较高,用于速度闭环反馈。系统总体方案的设遵照本届竞赛规则规定,智能汽车系统采用飞思的32位微控制器MK60DN512VLQ10单片机作为控制单元用于智能汽车系统的控制。电磁传感器赛道信息,返回到单片机作为转向控制的依据。加速度计返回的数字信号作为车身当前角度的信号,陀螺仪车身转动的角速度。主控输出波控制电机的转速以保持车身的平衡和锁定赛道。同四轮车不同,平衡制电机的转速。平衡组加会导致车身的倾角剧烈变化,这并不利于根据以上系统方案设计,共包括六大模块:MK60DN512VLQ10主控MK60DN512VLQ10主控模块,作为整个智能汽车的“大脑”,将处理电感线圈、陀螺仪,加速度计和霍尔编等传感器的信号,根据控制算法做出速度检测模块,检测智能汽车的转速,用于速度的闭环控制;辅助调试模块,主要用于智能汽车系统的功能调试、状态。小然后建立相应的数学模型从而再针对具体的设计方案来调整的机械结构,E车模的机械结构和调整方案。智能汽车车模的选DED车模:E车轮距更E2.1E智能汽车传感器的安车模中的传感器包括有:速度传感器(编),车模姿态传感器(陀螺速度编我们采用了霍尔编,安装方法如下将网店上编时配套的支架安装在车模的固定位置,再将编通图2.2编安在安装编时应注意编齿轮与电机齿轮的咬合,安装时应注意调整好齿轮间隙。同样的,电机齿轮与车轮的咬合也很重要。齿轮传构对车模,齿是否良好的依据是,听一下电机带动后轮空转时噪音很小,并且不会有碰撞类的杂音,后轮齿轮机构就基本上调整好了,2.3所示。图2.3电机安装感线圈更加稳定,从而减小的误差。电感线圈的安装如图2.4所示。图2.4电感线圈的安装3D打印架固定在车模上,从而保证检测数据的可重心高度调重心的高度是影响智能车稳定性的因一。当重心高度偏高时,智能车同样为实现降低重心,提高小车稳定性的目的,我们采用从网上的钢图2.5电池的安装其他机械结构的调要对的表面进行处理,以保持其粘滞性,提高抓地力。小模型车的性能与机械结构有着非常密切的联系。良好的机械结构是模型车提高速度的关键基础。在同等的控制环境下,机械机构的好坏对其速度的影响十分显著。我们非常重视对智能汽车的机械结构的改进,经过大量的理论研究和实践,我们小车的大部分质量都集中在两轮前后,达到降低重心的目的,从而提高了小车整体的稳定性和可靠性。单片机最小系统模本设计的控制器为飞思公司生产的32位单片MK60DN512VLQ10144MK60DN512VLQ10括32位处理单元,UART模块,PIT定时中断模块,IIC模块,RAM器,FLASH器,EEPROM器,FTM模块。系统板电路模块如3.1所示。图 电源模i-Cd(镍镉)长的,该充电电池必须以正确的方法来使用。8V7V时,应注意及时充电,电池过放会对其造成的损害电压低于6V会对电池造成性。稳5V电源模由于编的额定工作电压为5V,LT1529是LINEAR公司生产的高性能线性稳压,其使用方便,电路的设计原理如图3.2所示。图 稳5V原理稳3.3V电源模3.3V3.3V,因此,3.3V3.3所图 稳3.3V电路原理电机驱动模刻因此本设计的驱动电路由4个MOS管构成H桥通过半桥驱动IR2184控制MOS管的导通和关断来实现正反转,并通过控制输入的 图 串口通信模调车的过程中,需要实时的观察变量变化情况,通过线在LiveWatch115200PID图 智能车信息的底层处理算法是整个上层控制策略的基础,电感传感器磁场信息由于赛道的电磁线通过的电流为100mA20KHZ的信号,为了检测其信号我们采用10mH6.8nF20KHZ的信号。选出吻合度较好的并联在一起,来赛道磁场信息。4.1数据处扰是一项不可缺少的工作。首先,我们把三次到的值取中值,然后再对中N0的单元,并扔掉数组最PID控PID控制即比例、积分、微分控制,该方法在工程实际中应用相当广泛。PID控制算法具有结构简单、工作可靠、便于调整、性能稳定等优点。当被控的测量来获得系统参数时,最适合用PID控制技术。PID控制,实际中也6.1PID控制系统原理图。r(t)r(t)++-+对执行机微积比图 PID控制系统原理U(s)=kp(1+1/(TI*s)+TD*s)TI为积分时间,TD间的增加,积分增大。这样,即便误差很小,积分项也会随着时间的增加制系统由于存在有较大惯性,其变化总是于误差的变化自动控制系统,在PID控制算法中PID参数的整定是控制系统设计的内容。该过程是根PIDPID主要有临界比例法、衰减法、反应曲。三种方法各有其特点,每法进行PID3PID4PID本系统的PID参数为通过上位机调试得来,具体调试方法为:先将PID参PID参数。车模平衡控2.0获得的角度准确值比较,通过D控制不断近车体自身平衡倾角,将输出值6.2所示5.2角度PD车模速度控比例参数,I为积分参数,使得实际速度紧紧跟随目标速度,提高车模速度的5.3速度PIPD车模方向控P起到直接跟随的作用,D则消除振荡,防止超调,起到稳定的效果。车模电机控不论是平衡控制、速度控制还是方向控制,最终都将以的形式赋all__L=Angle. -Speed. -Direction. all__R= -Speed. +Direction. 5.4开发工我队成员自主设计开发适合头、光电组别的上位机。大体功能如下串口功6.1选择串,和波特率。默认串位所有可以使用的串口中号码最显示”功能,还可选择“包含换行符”,“16进制发送”功能。AT+BAUD1,2,3,4,5,6,7等。49600bps,8115200bpsAT+NAME可以是英文或者数字组合。AT+NAMEAT+ROLE0,1。0是从机,连接单片机,1画图功6.2//K60staticunsignedchari,j;staticunsignedshort //16staticunsignedchar//2.将想发的数据赋值给send_data均可只要把代码中-10,-20,-30,-40变成想发送的全局变量即可,不发的数据要注释。send_data[0][0]=(unsignedshortint)(10);send_data[0][1]=(unsignedshortint)(20);send_data[0][2]=(unsignedshortsend_data[0][3]=(unsignedshortint)(40);send_data[0][4]=(unsignedshortint)(-10);send_data[0][5]=(unsignedshortint)(-20);send_data[0][6]=(unsignedshortint)(-30);send_data[0][7]=(unsignedshortint)(-send_data[1][0]=(unsignedshortint)(100);send_data[1][1]=(unsignedshortint)(200);send_data[1][2]=(unsignedshortint)(300);send_data[1][3]=(unsignedshortint)(400);send_data[1][4]=(unsignedshortint)(-100);send_data[1][5]=(unsignedshortint)(-200);send_data[1][6]=(unsignedshortint)(-300);send_data[1][7]=(unsignedshortint)(-send_data[2][0]=(unsignedshortint)(10000);send_data[2][1]=(unsignedshortint)(20000);send_data[2][2]=(unsignedshortsend_data[2][3]=(unsignedshortint)(40000);send_data[2][4]=(unsignedshortint)(-10000);send_data[2][5]=(unsignedshortint)(-20000);send_data[2][6]=(unsignedshortint)(-30000);//3.一下不用改了这三幅图的字头,start的前两个字母for(i=0;i<for(j=0;j<{}}CCD显示功6.3CCD头图像功图6.4头图像功能界头图像显示功图6.5头图像显示功能界调试过通过IAR编译软件的调试功能,可以得到大量的信息,为智能汽车的调试提供了很大的帮助。在智能汽车的调试过程中,有针对性的开发一个便于人机交互的上位机系统,通过简单明了的可视化界面直观的显示智能汽车的状态对调试有很大帮助。我们开发了用于监测智能汽实时状态的实时监测系统,大大提高了调试效率。智能汽车外形参智能汽车技术参7.17.1车模轴距/轮距(毫米车模平均电流(匀速行驶)(毫安电路电容总量(微法编×20赛道信息检测空间精度(毫米赛道信息检测频率(次/秒主要集成电路种类/ 设对车的整体结构也有很大的影响。前瞻伸出去的长度、角度影响了值的2、方向控制算法:一开始我队采用推荐的固定PID,在速度上去后,上位机系统针对光电组、头组都做了比较完备的调试功能,可以帮助参赛上位机系统,并提出修改意见,将这款软件做得更加完美。智能车是培养大学生综合动手能力的一个很好的且成平台。在这里,技能。队内分工合作,团结向前,每个人发挥着自己的。我们经历过车子[4]雷霏霖,梁志毅.基于CMOS传感器OV7620系统设计[J].电子测量技SmartCar[C].MachineVisionandHuman-MachineInterface(MVHI),Kaifeng,China,2010:764-767.[13]LUZhenlin,LIJingjiao,Zhang.InligentControlResearchbasedonthe A:程序源代码#includelongintstructCarAngleAngle=structCarSpeedSpeed=structCarDirectionDirection={0,0,0,0,0,0,0,0,0,{0},0};structCarStartLineStartLine={0,1,0,0,0};struct structCarPodaoPodao={0,2000,0,0,0};floatAdNum,AdNum1=0;//电压值charget_message_flag=0;interror=0;//mainstartvoidmain(){//AdNum4.9*3.3*ad_once(ADC0,SE18,ADC_8bit)/512.0;//charstr_print[80];{}}voidMeasure_Acc(){staticfloatfor(inti=0;i<a_sin[i]=a_sin_new=(a_sin[0]+a_sin[1]+Angle.a_sinAngle.a_sin*0.5a_sin_new*0.5;//(9090)sin1 Angle.a_cosAngle.a_cos*0.5a_cos_new*0.5;//(9090)cos0}#defineGyro_OFFSET18)//陀螺仪静态偏差voidAngle_control(){#definek_Gyro0.07 #definedt0.005#definetg //**时间staticfloat staticfloatAngle.m_angle=asin(Angle.a_sin)*57.295779513;if(Angle.m_angle>90)Angle.m_angle=elseif(Angle.m_angle<-90)Angle.m_angle=-90;Angle.G_angleAngle_Gyro_oldAngle.Gyro;Angle.Gyro=(float)(Get_Gyro(1,'X')+Gyro_OFFSET);Angle.speed= k_Gyro*(Angle_Gyro_old+Angle.Gyro)/2.0;mG_delta=(Angle.m_angle-Angle.G_angle)/tg;Angle.G_angle+=(Angle.speed+mG_delta)*dt;Angle.=(Angle.OFFSET-Angle.G_angle)*Angle.P-Angle.speed*}voidCapture_Image(unsignedinthang)//{int for(i=hang-1;i>=0;i-- for(j=Lie-1;j>=0;j--)for(i=0;i<hang;i++)for(j=0;j<Lie;{Image[i][j]=(unsignedchar)(FIFO_Data);}}voidLCD_Draw_Image(unsignedinthang)//T={intfor(i=0;i<hang;i++)for(j=0;j<Lie;j++)if(j%2==0)}voidLCD_Draw_Imageline(unsignedcharPixel[],unsigned{staticunsignedcharImageLine[320];unsignedinti;staticintblack_L_line[hang]=(int)(black_L[hang]/2.0);if(black_L_line[hang]<black_L_line[hang]=elseif(black_L_line[hang] >320)black_L_line[hang]=319;centre_line[hang]=(int)(centre[hang]/2.0);if(centre_line[hang]<0)centre_line[hang]=elseif(centre_line[hang]>320)centre_line[hang]=319;black_R_line[hang]=(int)(black_R[hang]/2.0);if(black_R_line[hang]<0)black_R_line[hang]=elseif(black_R_line[hang]>320)black_R_line[hang]=319;{LCD_SetPos(i,i,239ImageLine[i],239ImageLine[i]);if(Pixel[i*2]>ImageLine[i]=239;ImageLine[i]=LCD_SetPos(i,i,239ImageLine[i],239ImageLine[i]);}}voidSend_Image_to_Demok(unsignedint{inti,j;for(i=0;i<hang;i++){for(j0;jLie;j++)//demoktools{} for(j0;jLie;j++) else } }voidSend_Image_to_(unsignedint{inti,j; for(i=0;i<hang;i++){for(j=0;j<Lie;{uart_putchar(UART3,'');}} }voidSend_Image_Line(unsignedchar{int for(i=0;i<Lie;i++){uart_putchar(UART3,'');} }voidSend_Array_Int(unsignedint*Array_Int,unsignedint{int for(i=0;i<num;i++){uart_putchar(UART3,'');} }void{//buzzergpio_init(PORTE,26,GPO,LOW);//buzzer //LCD端口设置为输出 //LCD显示屏初始化 ID1= ID2= //1mspit_init_ms(PIT0,1);enable_irq(68);gpio_init(PORTB,7,GPO,}voidBuzzer_Ring_ms(unsignedint{}voidSwitch_init(){gpio_init(PORTC,7,GPI,gpio_init(PORTC,5,GPI,LOW);gpio_init(PORTC,3,GPI,LOW);gpio_init(PORTC,1,GPI,LOW);gpio_init(PORTB,23,GPI,LOW);gpio_init(PORTB,21,GPI,LOW);gpio_init(PORTB,19,GPI,LOW);gpio_init(PORTB,17,GPI, }void{Gyro_value_OFF=8;OFFSET_angle59.5;/7.95V,61.5angle_P=angle_D=speed_Goal=0;speed_Goal_init=sw*2;speed_P=100;speed_I=Dir_P=2;Dir_D=_Dead_L=_Dead_R=}//初始void{FTM__init(FTM0,CH3,10000,2000);//左FTM__init(FTM0,CH1,10000,2000);//gpio_init(PORTA,29,GPO,LOW);//DIR_Lgpio_init(PORTB,3,GPO,LOW);//DIR_Rgpio_init(PORTA,27,GPO,HIGH);//EN_Lgpio_init(PORTB,2,GPO,HIGH);}//LED {gpio_init(PORTD,13,GPO,HIGH);{}}#include"include.h"#include"8X16.h"#include"GB1616.h"//16*16#include"GB3232.h"//32*32voidLCD_PORT_init(){gpio_init(PORTE,7,GPO,HIGH);//csgpio_init(PORTE,10,GPO,HIGH);gpio_init(PORTE,8,GPO,HIGH);gpio_init(PORTE,6,GPO,HIGH);gpio_init(PORTE,9,GPO,HIGH);}void{}voidLCD_init(unsignedchar{

Software //Powercontrol //Powercontrol //VCMcontrolwrite_data(0x3e);//对比度调节 //VCMcontrol2write_data(0x86);//-- //MemoryAccessControlwrite_data(0xE8); //4868//28E8 //DisplayFunctionControl //3GammaFunctionDisable //Gammacurveselected //SetGamma //SetGamma //ExitSleep //Displayon} mand(unsigned {} write_data(unsigned {}voidwrite_word(unsignedint{} {}{}voidLCD_PutChar(unsignedintx,unsignedinty,unsignedcharc,unsignedintfColor,unsignedintbColor){LCD_PutChar8x16(x,y,c,fColor,bColor}voidLCD_PutString(unsignedintx,unsignedinty,unsignedchar*s,unsignedintfColor,unsignedintbColor){unsignedcharl=0;while(*s){if(*s<{}{PutGB1616(x+l*8,y,(unsignedchar*)s,fColor,bColor);}}}voidLCD_PutChar8x16(unsignedintx,unsignedinty,unsignedcharc,unsignedintfColor,unsignedintbColor){unsignedinti,j;for(i=0;i<16;i++){unsignedcharm=Font8x16[c*16+i];{}}}voidPutGB1616(unsignedintx,unsignedint y,unsignedcharc[2],unsignedintfColor,unsignedintbColor){unsignedint x+16-1,y,y+16-1);for(k=0;k<64;k++){//64if{{unsignedshortm=codeGB_16[k].Msk[i];{}}}}}voidPutGB3232(unsignedintx,unsignedint y,unsignedcharc[2],unsignedintfColor,unsignedintbColor){unsignedint x+32-1,y,y+32-for(k=0;k<15;k++)//15if((codeGB_32[k].Index[0]==c[0])&&(codeGB_32[k].Index[1]==c[1])){for(i=0;i<128;i++){unsignedshortm=codeGB_32[k].Msk[i];for(j=0;j<8;j++){if((m&0x80)==0x80){}else}}}}}voiddsp_single_colour(unsignedint{unsignedinti,j;forfor(j=0;j<320;j++)}voidDraw_single_line(unsignedcharaxis,unsignedintline,unsignedint{unsignedinti;{f

温馨提示

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

评论

0/150

提交评论