欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    天津工业大学锋利队技术报告.doc

    • 资源ID:2549023       资源大小:1.89MB        全文页数:24页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    天津工业大学锋利队技术报告.doc

    第一届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校:天津工业大学 队伍名称:锋利队参赛队员:李超 谢乐成 郭威带队教师:张军 关于技术报告和研究论文使用授权的说明 本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 12目录第一章 引言第二章 硬件设计2.1单片机2.2电源管理模块2.2.1 电源总体分配图2.2.2 7805和7806降压模块2.2.3 DC/DC升压模块2.3后轮电机及其驱动模块2.3.1后轮电机2.3.2后轮电机驱动模块2.4传感器模块2.4.1传感器工作原理及性能2.4.2传感器布局2.5速度负反馈模块2.6前轮舵机2.7智能车的主要技术参数第三章 软件设计3.1 HCS12控制软件理论3.2算法说明及代码设计介绍3.3调试过程说明第四章 结论参考文献附录第一章 引言本赛车采用飞思卡尔16位微控制器MC9S12DG128B作为核心控制单元,通过红外光电传感器进行路径识别,采用自制光电码盘检测速度,采用MC33886DH集成H桥芯片驱动电机,具有简单且先进的转向控制算法和速度控制算法,保证智能车能够在各种不同尺寸的赛道上稳定高速的行驶。本技术报告将从硬件设计(单片机型号、电源管理模块、后轮电机及其驱动模块、传感器模块、速度负反馈模块、前轮舵机)和软件设计两大部分对智能车各项性能进行介绍。第二章 硬件设计第二章 硬件设计2.1单片机本智能车采用大赛组委会提供的采用飞思卡尔16位微控制器MC9S12DG128B作为核心控制单元,有关MC9S12DG128B的详细信息可以登陆www.freescale.com.cn。2.2 电源管理模块2.2.1 电源总体分配图图1 电源管理原理图图2 电源管理电路图 2.2.2 7805和7806稳压模块由于电源提供的直流电压为7.2V,而单片机、测速传感器和其中6个光电传感器的工作电压为5V。所以,使用7805电路进行5V稳压。电路如右图所示:图3 7805电路图图4 7806电路图前轮舵机的工作电压为4.86V,根据舵机的特性,电机在6V时能输出最大转矩。所以,采用7806对电源电压进行降压与稳压。如右所示:2.2.3 DC/DC升压模块 VoViDC/DC升 压模 块本智能车光电传感器有2个的工作电压为12V,所以我们采用DC/DC升压模块将电压升为12V。GND0图5 DC/DC升压模块2.3后轮电机及其驱动模块2.3.1后轮电机本车后轮电机采用由深圳市高翔电机有限公司生产的RS-380SH-4045直流电机,电机参数如下表:表一 驱动电机参数2.3.2后轮电机驱动模块后轮电机采用飞思卡尔MC33886芯片进行驱动。MC33886芯片主要技术参数:5.0V to 40V Continuous OperationPWM Frequencies up to 10kHz5.0A H-BRIDGEUndervoltage shutdownMC33886驱动芯片与单片机连接、与电机连接电路:图6 MC33886连接电路原理图2.4传感器模块2.4.1传感器工作原理及性能光电传感器采用浙江超能电子有限公司生产的E3F-DS30C1型号光电传感器。此传感器能有效的检测出黑白线。并且,此传感器有检测距离远, 灵敏度可调,响应速度块等优点。具体参数为:图7 E3F-DS30C1型号光电传感器原理电路图工作电压:DC10-30V;工作电流:I 200MA;探测距离:430CM。响应时间:t 1.5ms 2.4.2传感器布局图8 传感器布局分布在上面的两个红外光电传感器探测距离20CM,我们主要用它来检测弯道,并适时的减速;中间的四个红外光电传感器主要用来检测弯道并根据情况控制前轮所转的角度;下面的两个光电传感器主要用于检测直线。2.5速度负反馈模块采用红外光电对射传感器对安装在后轮转轴上的自制编码器提取信号,并用555定时器对所提取的信号进行整形,整形后的信号送入单片机,通过单片机输入捕捉功能计算出智能车当时的行驶速度,根据反馈回的速度控制输给后轮PWM占空比。图9 555定时器引脚图速度反馈电路如下:图10 速度反馈电路测速编码器安装情况如右图,采用自制的编码盘,焊接的电路。 图11 测速传感器安装位置2.6前轮舵机SRM-102 舵机基本参数如下: 响应速度: 4.8V 旋转60度 0.2秒输出力矩: 3.3kg (6V)转速:     0.18s (6V)尺寸:     39*20*36mm重量:     45g工作电压: 4.8-6V2.7 智能车的主要技术参数智能车总体重量:1.24千克 长、宽、高:35cm、24cm、14cm电路功耗:12W 电容总容量:传感器种类及个数:红外光电传感器6个 光电传感器2个 红外对射传感器1个赛道信息检测精度:55mm第三章 软件设计3.1 HCS12控制软件理论软件以光电传感器检测黑白线的的不同而输出高低电平为依据,根据不同传感器到黑线,对应不同的情况,对前轮舵机转向和后轮电机速度进行控制。并设置了一些特殊情况,以解决小车在不同路段行驶时有不同情况。并使用编码器测速原理对小车进行测速。以控制小车的高速运行,起反馈作用。程序流程图为:程序开始AD初始化速度大小AD转换是速度>最大控制速度速度<最小控制速度稳速升速否转换完?转换值给最高速度传感器不同情况时各速度初始化中断执行程序关中断舵机各角度初始化判断谁中断PWM、定时器、H口初始化根据传感器中断赋不同值,以对应速度、转动角度开中断for循环:等中断,一直执行程序,二次控制程序control()跳出中断读取脉冲个数3.2算法说明及代码设计介绍H口中断服务程序设计清单: interrupt void H0_Interrupt(void) DisableInterrupts; /关中断 if(PTIH=0b00000100 ) /(3)传感器检测黑线; ctrl=3; left=1; right=0; PORTK = 0; else if(PTIH=0b00001000 ) /(4)传感器检测黑线; ctrl=4; left=0; right=1; PORTK = 1; else if(PTIH=0b00010000) /(5)传感器检测黑线; ctrl=5; left=1; right=0; PORTK = 2; else if(PTIH=0b00100000 ) /(6)传感器检测黑线; ctrl=6; left=0; right=1; PORTK = 4; else if(PTIH=0b01000000 ) /(7)传感器检测黑线; ctrl=7; left=1; right=0; PORTK = 0; else if(PTIH=0b10000000 ) /(8)传感器检测黑线; ctrl=8; left=0; right=1;第三章 软件设计 PORTK = 1; else if(PTIH=0b00000011 ) /(1)、(2)传感器同时检测黑线; ctrl=0; left=0; right=0; else if(PTIH=0b00000001) /(1)传感器检测黑线; ctrl=1; left=0; right=0; else if(PTIH=0b00000010 ) /(2)传感器检测黑线; ctrl=2; left=0; right=0; turn_drive = turnctrl; speed_ref = speedctrl; speed_drive=200; PWME = 0; PIFH=255; PWMDTY01 = turn_drive; PWMDTY5 = speed_drive; PWME = 34; EnableInterrupts; asm("RTI"); /中断返回注:部分变量参数意义见附录程序在此段程序中,主要是对小车进行产生中断后的最初控制,以快速响应为目的。同时,产生一些标志性信息,为其后的再次控制提供各种信息。二次控制子程序清单:void control() if(ctrl=0) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(ctrl=1)|(ctrl=2) if(counter<speed_ref-1)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=3)|(ctrl=4) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=5)|(ctrl=6) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=7)|(ctrl=8) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; PWME = 0; PWMDTY01 = turn_drive; PWMDTY5 = speed_drive; PWME = 34; return; 根据当前速度、传感器检测到黑线情况,对小车的速度进行控制。包括当小车速度小到设置极限时对其升速。当最外传感器检测到黑线时,根据当时速度情况对其降速,以保证其能正常转过弯道,不会冲出跑道。3.3调试过程说明对速度、转角、传感器位置以及传感器灵敏度进行调节。确定小车在不冲出跑道的前提下,在直线上能达到的最大速度、转弯降速时最小降到多少进行调节。以达到最佳的搭配。对传感器之间距离、传感器灵敏度进行小范围的调节,以达到最好的检测状态。并对其抗干扰性进行检测。第四章 结论半年来,在紧张的学习之余,我们积极准备着即将到来的智能车大赛,虽然我们的知识和经验还很不足,但在经过几个月来的精心准备,我们完成了智能车的设计制作与调试,并在自制的跑道上完成了各种自动驾驶测试。我们的智能车主要由寻迹探测部分和转速控制部分两大部分构成,具有简单而先进的转向控制算法与速度控制算法,小车行驶快速、可靠。但智能车在“S”形赛道上仍有一定的振荡并且小车行驶的稳定性不是很强,往往在同一赛道上每一圈的时间有一定的差别,针对这个问题,我们进行了一系列的有针对性的测试尽量将振荡降到最小,使其具有更好的稳定性。参考文献1 MC9S12DT128BDGV1 Device User Guide2 MC9S12ATD10B8CV2 Device User Guide3 MC9S12BDLCV1 Device User Guide4 MC9S12BFV1 Device User Guide5 MC9S12CRGV3 Device User Guide6 MC9S12DT128PIMV1 Device User Guide7 MC9S12ECT16B8V1 Device User Guide8 MC9S12EETS2KV1 Device User Guide9 MC9S12FTS128KV1 Device User Guide10 MC9S12IICV2 Device User Guide11 MC9S12MSCANV2 Device User Guide12 MC9S12PWM8B8CV1 Device User Guide13 MC9S12SCIV2 Device User Guide14 MC9S12SPIV2 Device User Guide15 MC9S12VREGV1 Device User Guide16邵贝贝.单片机嵌入式应用的在线开发方法. 北京:清华大学出版社,200417王宜怀,刘晓升.嵌入式应用技术基础教程. 北京:清华大学出版社,200518 黄继昌.无线电爱好者实用资料图表集. 北京:人民邮电出版社,199119秦曾煌.电工学上下册 电子技术(第五版). 北京:高等教育出版社,1999附录程序代码:#include <hidef.h> /* common defines and macros */#include <mc9s12dg128.h> /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"unsigned char ctrl; unsigned char speed9; unsigned int turn9; unsigned char ATD; unsigned int turn_drive=1500;unsigned char speed_ref=0;int turn_change=0; unsigned char speed_drive=200; unsigned char left=0; unsigned char right=0; unsigned char counter; / -AD初始化 - void AD_Init(void) ATD0CTL2 = 0xC0; /控制寄存器2: 上电,标志位快速清零 ATD0CTL3 = 0x08; /一个通道转换,非FIFO模式 ATD0CTL4 = 0x85; /转换精度8位,2个AD转换周期,最高AD转换时钟为2MHz,即:24MHz/(5+1)*0.5=2MHz ATD0CTL5 = 0x80; /八位精度只能采用右对齐方式,结果数据无符号表示,选择多路转换,通道选择码为000(cc,cb,ca)即从0通道开始的3个通道被采样 ATD0DIEN = 0x00; / 禁止数字输入缓冲 /-中断口H初始化- void PORTH_Init() DDRH=0x00; PIEH=0xFF;/H口中断允许 PPSH=0xFF; void PORTK_Init() DDRK=255; PORTK=6; /IN2=0;D1=0;D2=1;/-计数、定时初始化- void ECT_init() PBCTL = 0; DLYCT = 0; ICPAR_PA0EN=0; TCTL4_EDG0A=1; MCCTL_MODMC=1; ICPAR_PA0EN=1; MCCTL_MCZI = 1; MCCTL_MODMC = 1; MCCTL_MCPR = 3; MCCTL_RDMCL = 1; MCCNT = 50000; TSCR1_TEN = 1; MCCTL_MCEN = 1; /-PWM初始化-void PWM_init() PWMCTL_CON01=1;/0和1联合成16位PWM; PWMCNT01 = 0;/计数器清零; PWMPOL_PPOL1=1;/先输出高电平,计数到DTY时,反转电平 PWMPRCLK = 0; /clockA不分频; clockA=busclock; PWMSCLA = 12; /对clock sA 进行24分频;pwm clock=clockA/24=1MHz; /pwm0、1 ,前轮电机 PWMDTY01 = turnctrl; /高电平时间为1.5ms; PWMPER01 = 20000; /周期20ms; 50Hz; PWMCLK_PCLK1 = 1; /选择clock sA做时钟源; PWME_PWME1 = 1;/允许PWM1 /PWM5后轮电机 PWMCNT5 = 0; PWMPOL_PPOL5=1; PWMDTY5 = speedctrl; PWMPER5 = 255; PWMCLK_PCLK5 = 1; PWME_PWME5 = 1; return; /-H口中断处理函数-#pragma CODE_SEG NON_BANKED interrupt void H0_Interrupt(void) DisableInterrupts; /关中断 if(PIFH=0b00000100 ) /(3)传感器检测黑线; ctrl=3; left=1; right=0; else if(PIFH=0b00001000 ) /(4)传感器检测黑线; ctrl=4; left=0; right=1; else if(PIFH=0b00010000) /(5)传感器检测黑线; ctrl=5; left=1; right=0; else if(PIFH=0b00100000 ) /(6)传感器检测黑线; ctrl=6; left=0; right=1; else if(PIFH=0b01000000 ) /(7)传感器检测黑线; ctrl=7; left=1; right=0; else if(PIFH=0b10000000 ) /(8)传感器检测黑线; ctrl=8; left=0; right=1; else if(PIFH=0b00000011 ) /(1)、(2)传感器同时检测黑线; ctrl=0; left=0; right=0; else if(PIFH=0b00000001) /(1)传感器检测黑线; ctrl=1; left=0; right=0; else if(PIFH=0b00000010 ) /(2)传感器检测黑线; ctrl=2; left=0; right=0; turn_drive = turnctrl; speed_ref = speedctrl; speed_drive=200; PWME = 0; PIFH=255; PWMDTY01 = turn_drive; PWMDTY5 = speed_drive; PWME = 34; EnableInterrupts; asm("RTI"); /中断返回 /-T0定时中断- interrupt void T0_Interrupt(void) counter = PACN0; PACN0 = 0; TFLG2_TOF = 1; MCFLG_MCZF = 1; if(ctrl=1) turn_drive-; else if(ctrl=2) turn_drive+;/-控制子程序- void control() if(ctrl=0) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(ctrl=1)|(ctrl=2) if(counter<speed_ref-1)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=3)|(ctrl=4) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=5)|(ctrl=6) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; else if(ctrl=7)|(ctrl=8) if(counter<speed_ref)&&(speed_drive<255) speed_drive+; else if(counter>speed_ref) speed_drive-; PWME = 0; PWMDTY01 = turn_drive; PWMDTY5 = speed_drive; PWME = 34; return; /-主程序-void main(void) ctrl=0; AD_Init(); while(!ATD0STAT1_CCF0); /等待通道0转换结束 ATD = ATD0DR0; /读通道0的转换结果 speed0 = 10; speed1 = 4; speed2 = 4; speed3 = 3; speed4 = 3; speed5 = 1; speed6 = 1; speed7 = 2; speed8 = 2; turn0 = 1500; turn1 = 1580; turn2 = 1420; turn3 = 1680; turn4 = 1320; turn5 = 1820; turn6 = 1180; turn7 = 1600; turn8 = 1700; PORTK_Init(); PWM_init(); ECT_init(); DisableInterrupts; PORTH_Init(); EnableInterrupts; for(;) control(); VI

    注意事项

    本文(天津工业大学锋利队技术报告.doc)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开