自动往返电动小汽车技术报告.doc_第1页
自动往返电动小汽车技术报告.doc_第2页
自动往返电动小汽车技术报告.doc_第3页
自动往返电动小汽车技术报告.doc_第4页
自动往返电动小汽车技术报告.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的自动往返小车设计摘 要本系统以Freescale MC9S12XS128MCU为核心控制模块,附以外围电路,采用激光管和接收管进行信号检测和循线运动;通过CodewarriorIDE 在线Debug进行调试,实现自动往返小车设计。综合运用单片机技术、自动控制理论、传感器检,使小车自动借助传感器识别路面环境以及行驶状态,运用单片机的运算和处理能力来实现小车的自动加速、限速、减速、定时、原地转向倒车、左转、右转、显示行驶时间等控制。关键词:MC9S12XS128MCU,自动控制,电动小车, PWM调速,传感器ABSTRACTThe core of the system is MC9S12XS256 series microcontroller control module. We make full use of the automatic detection technology, MCU smallest system, Nixie tube module circuit, the control of signal, and the motor drive circuit. Through the simulation Codewarrior, practice and debugging, we realize the design of automatic car. We comprehensively use the microcontroller technology, automatic control theory, the detection technology, etc. The car is in unattended operation circumstance, using sensor to identify road environment and its position on the road. It travels by single-chip microcomputer control, the preliminary no control. MCU is known for its flexible operations, small volume, light weight, less consumption, powerful functions, and low in price. This design based on singlechip and peripheral circuit, uses gray scale sensor, laser device and receiver to realize the required following movement. We use MCU to realize the automatic forward, backward, left, right, and display time and distance of intelligent control system.KEY WORDS: MC9S12XS256 microcontroller, automatic, PWM speed adjusting, sensor1、设计任务:设计并制作一个能自动往返于起跑线与终点线间的小汽车,不能用人工遥控(包括有线和无线遥控),其行驶线路满足所需的要求。1.1 要求 分区控制:如(图1)所示:图1 跑道示意图(1) 车辆从起跑线出发(出发前,车体不得超过起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开始计时)。(2) 到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差 的测量值)(3) D-E间为限速区,车辆往返均要求低速通过,通过时间不得少于8秒,但不允许在限速区内停车。2. 系统方案论证与分析根据设计任务要求,并且根据我们自己的需要而附加的功能,该系统的总体框图可分为几个基本的模块,框图如(图1)所示:MC9S12XS128主控芯片L298电机驱动芯片黑线检测模块电源模块数码管显示模块小车位置调节模块图2-1 小车系统框图2-1 主控芯片选择针对此次设计的要求,以性能和熟悉程度为最重要的考虑指标,选择飞思卡尔公司的16位单片机MC9S12XS128。此MCU功能强大,具有高速I/O口、8路8位PWM输出通道,16通道AD转换4路定时通道、时钟发生模块,控制精度高,灵敏度强,适于进行实时过程控制。缺点是价格较贵,引脚众多且密集,搭建载板难度大。 系统电路图 2-2 电机及驱动模块2-2-1 电机选择问题 步进电机控制精度高,但价格昂贵且占用较多的I/0口,软件开销较大,不利于实时速度和转向控制。 直流电机价格相对较便宜,占用引脚数少,调速和调整转向相对容易。 综合考虑上述因素,选择直流电机对小车进行驱动2-2-3 电机数量问题 选用一个电机,直行效果较好,但为了保证小车在行驶过程中不触碰挡板则必须安装舵机,进行四轮驱动,机械复杂度加大的同时,舵机的控制又会占用一个PWM通道,整车的复杂度增加。 选用两个电机,分别驱动两个后轮作为主动轮,车体前方使用单个滚轮作为转向轮, 此方案缺点是两电机无法调节速度至完全相同,直行效果相对较差,优点是方便调整转向机械复杂度低; 综合考虑上述因素,选择两个电机的方案2-2-4 电机驱动芯片问题 采用ST公司的L298N双H桥驱动芯片 通过对使能端ENA和ENB输出PWM波进行调速,通过数字电平控制电机转向,操作简单,程序易于实现电路原理图: 2-3 路面黑线检测模块3-1 传感器选择方案一 灰度传感器 灰度传感器配合AD转换模块,可对黑线进行准确的检测,但使用灰度传感器存在一个致命的缺陷,反应速率太慢,受发光二极管和光敏电阻性能的影响,该方案只在低速行驶下才可有效检测黑线,速度一旦提高,将会出现严重的漏线!往返时间最短是基本要求之一,因此必须保证较快的速度。经过实际的赛道测试,最终放弃了已经架设完毕并且调通的灰度传感器方案。方案二 激光管+接收管 激光管 接收管 透镜激光管发射电路 接收管接收电路 通过PWM输出通道点亮激光管,使其发光频率为180KHZ,接受管对该频率的激光敏感 当接收管接收到激光时引脚输出电平为低,未收到时引脚输出电平为高,当激光打到黑线或打到较远区域时接收管均无法接受,引脚电平均为低。 方案优点:灵敏度高,在高速行驶状态下仍能准确检测黑线 缺点:过于灵敏,抗干扰能力欠佳,当路面凹凸不平或有离散的小黑点时均有可能误读为黑线;改进方案:滤波算法if(PTS_PTS2=1) /ALWAYS HIGH cishu=cishu+1; PTS_PTS6=0; PTS_PTS3=0; if(count=3) if(cishu200) count=count+1; /start=0; PTS_PTS6=1; PTS_PTS3=1; PWMDTY0=L; PWMDTY1=R; while(PTS_PTS2=1); cishu=0; 滤波方案的不足:滤波常数的选择难以做到最优,仍有极个别情况会误读黑线此处若采用两个或三个激光管同时检测,理论上完全可消除干扰,但由于时间和经费限制,未进行更深入的尝试,上述滤波算法基本满足要求。2-4 小车位置调整模块方案一 红外传感器红外传感器是典型的数字元件 0 1输出当发射出的红外线遇到遮蔽物 灯亮 输出低电平0当发射出的红外线没有遇到遮蔽物 灯灭 输出高电平1方案缺点:实际赛道测试时,发现激光传感器对距离并不灵敏,采用红外传感器返回的信号进行直行控制效果非常差!方案二 激光管+接收管方案优点:灵敏度高,反应迅速,实际测试效果与红外传感器相比有极大提高2-5 数码管显示模块显示电路2-5 电源模块 5V稳压电路图3、程序设计 程序流程图初始化显示函数实时中断请求方向控制速度控制3-1 初始化时钟初始化void Clock_Init(void) /设定fBUS=40MHZ CLKSEL_PLLSEL=0; /关闭内部锁相环时钟,进行相关设置 SYNR=0X49; / VCOFRQ7:6;SYNDIV5:0 SYNR寄存器构成,高位至低位 fOSC为外部晶振频率16MHZ / fVCO(压控振荡器时钟频率)= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) / VCOCLK Frequency Ranges VCOFRQ7:6 压控振荡器时钟频率范围选择 / 32MHz = fVCO = 48MHz 00 / 48MHz fVCO = 80MHz 01 / Reserved 10 / 80MHz fVCO = 120MHz 11 REFDV=0X83; / REFFRQ7:6;REFDIV5:0 REFDV寄存器构成 高位至低位 / fREF=fOSC/(REFDIV + 1) 参考电压公式 / REFCLK Frequency Ranges REFFRQ7:6 参考电压频率范围选择 / 1MHz = fREF = 2MHz 00 / 2MHz fREF = 6MHz 01 / 6MHz fREF 12MHz 11 POSTDIV=0X00; / POSTDIV4:0,只有低五位可用 / fPLL(内部锁相环时钟频率)= fVCO/(2 POSTDIV) / If POSTDIV = $00 then fPLL is identical to fVCO (divide by one) / fBUS(总线频率即系统时钟频率)= fPLL/2 while(CRGFLG_LOCK=0); /等待内部锁相环时钟频率达到稳定,即CRGFLG_LOCK=1 CLKSEL_PLLSEL=1; /使能内部锁相环时钟,自定义系统时钟频率设定完毕 端口初始化void PORT_Init(void) DDRA=0XFF; PORTA=0XFF; DDRB=0XFF; PORTB_PB4=1; PORTB_PB5=1; PORTB_PB6=1; PORTB_PB7=1; DDRS=0B11111000; PTS_PTS3=1; /BUZZER PTS_PTS4=1; /ZHIXING LED PTS_PTS5=1; PTS_PTS6=1; /JIGUANG HUIDU PTS_PTS7=1; /CHUANGAN HUIDU PWM初始化 void PWM_Init(void) /单通道输出 PWME=0X00; /关闭通道 进行设置 PWMPRCLK=0X02;/分频总线时钟 /低位PCKA0:2 高位PCKB0:2 /此处4分频 PWMSCLA=2; / 选择比例因子分频A时钟 CLOCKSA=CLOCKA/(2*PWMSCLA) PWMSCLB=5; / 选择比例因子分频B时钟 CLOCKSB=CLOCKB/(2*PWMSCLB) PWMCTL=0X00; / 选择是否级联 0不级联 1级联 PWMCLK=0X03; / 选择各个通道时钟 0 原时钟 1 S时钟 PWMPOL=0Xf7; / 选择初始极性 0低电平 1 高电平 PWMCAE=0X00; / 选择对齐方式 0左对齐 1中心对齐 PWMPER0=200; /输出两路5kHZ的PWM波 PWMDTY0=L; /初始化时全速前进 120 慢速 150 中速 PWMPER1=200; / PWMDTY1=R; PWMPER2=222; PWMDTY2=56; PWMPER3=222; PWMDTY3=56; PWME=0X0f; / 使能输出通道 此处输出5kHZ 实时中断初始化void RTI_Init(void) /实时中断初始化函数设置中断时间为1ms RTICTL=0X83; /超时周期设置 /第七位RTDEC RTDEC=1 十进制;RTDEC=0 二进制 /第0到第6位位RTR0:6 /RTR3:0位一组,RTR6:4为一组 /两组加权相乘,确定分频数 /时钟源为fOSC=16MHZ /详细对应关系见XS128英文数据手册P244-P246 CRGINT_RTIE=1; /使能RTI实时中断周期性定时中断初始化void PIT_Init(void) /周期性定时中断模块初始化函数 PITCFLMT=0X00; /关闭PIT模块,进行相关设置 PITCE_PCE0=0; PITCE_PCE1=1; PITMUX=0X00; /选取微定时基准时钟0 PITMTLD0=199; /装载微定时基准时钟0的计数初始值 PITLD0=49999; /装载16位定时通道0计数初始值 PITLD1=49999; /定时器1用于10秒停车计时 PITINTE=0X07; /使能16位定时通道超时中断 PITCFLMT=0X80; /使能PIT模块 超时周期=(PITMTLD+1)*(PITLD+1)/fBUS /此处为0.25s /时钟源来自总线时钟 3-2 几个要求的处理:1、 停车后偏移量最小应对方案: 进入0.5m的缓冲区后进行减速,以补偿高速急刹的惯性偏移2、小车往返 方案一:倒车 缺点是倒车行驶由于传感器排布不对称,方向控制难度大 方案二: 掉头 虽然转向延时不好把握,但完成转向后其他环节易于处理 经过实际对比选择方案二4、参考书目模拟电子技术,高吉祥著,电子工业出版社;数字电子技术,高吉祥著,电子工业出版社;单片机自学笔记,范红刚等著,北京航空航天大学出版社;C程序设计,谭浩强著,清华大学出版社;C语言开发技术详解,戴建华等编著,电子工业出版社;单片机的C语言,姜志海、赵艳雷编著,电子工业出版社;单片机原理及嵌入式系统开发张阳等著,电子工业出版社MC9S12XS256RMV1.pdf Freescale Corporation Reference Manual9.附录:元件数量MC9S12XS128单片机最小系统板1块LM7805稳压芯片1片万用板3块连接线若干直流电机2个车轮及固定支架2套L298N芯片1块16V充电电池1个激光管及接收管3套四位数码管1个支架若干滚轮轮1个74LS1381片排针若干电阻若干电容若干排线若干按钮开关1个附1:附2:仪器设备清单:数字万用表;电焊工具; 电钻;附3:主函数及中断服务子函数代码:void interrupt 7 RTI_ISR(void) /中断编号为7 if(PTS_PTS2=1) /ALWAYS HIGH cishu=cishu+1; PTS_PTS6=0; PTS_PTS3=0; if(count=3) if(cishu200) count=count+1; /start=0; PTS_PTS6=1; PTS_PTS3=1; PWMDTY0=L; PWMDTY1=R; while(PTS_PTS2=1); cishu=0; else if(cishu79) count=count+1; /start=0; PTS_PTS6=1; PTS_PTS3=1; if(count=6) count=0; for(delay=0;delay50000;delay+) for(del=0;del10;del+); CRGINT_RTIE=0; PITCE_PCE0=1; PWMDTY0=0; PWMDTY1=0; loop=loop+1; if(loop=2) PITCE_PCE1=0; else if(count=3) PWMDTY0=L1; PWMDTY1=R1; else if(count=5) PWMDTY0=LMID; PWMDTY1=RMID; else PWMDTY0=L; PWMDTY1=R; while(PTS_PTS2=1); cishu=0; else cishu=0; if(PTS_PTS0=0) PORTB_PB0=0; PORTB_PB1=1; PORTB_PB2=0; PORTB_PB3=0; PTS_PTS4=0; else PTS_PTS4=1; if(PTS_PTS1=0) PORTB_PB0=0; PORTB_PB1=0; PORTB_PB2=0; PORTB_PB3=1; PTS_PTS5=0; else PTS_PTS5=1; (PTS_PTS0=1)&(PTS_PTS1=1) PORTB_PB0=0; PORTB_PB1=1; PORTB_PB2=0; PORTB_PB3=1; CRGFLG_RTIF=1; / 中断标志位写1清零void interrupt 66 PIT0_ISR(void) i=i+1; if(i=4) time=time+1; /计数1秒 i=0; if(time=10) time=0; PWMDTY0=L; PWMDTY1=R; PORTB_PB0=0; PORTB_PB1=

温馨提示

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

评论

0/150

提交评论