为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自动往返电动小汽车技术报告

2012-07-20 18页 doc 695KB 27阅读

用户头像

is_201994

暂无简介

举报
自动往返电动小汽车技术报告摘要 基于单片机的自动往返小车设计 摘 要 本系统以Freescale MC9S12XS128MCU为核心控制模块,附以外围电路,采用激光管和接收管进行信号检测和循线运动;通过CodewarriorIDE 在线Debug进行调试,实现自动往返小车设计。综合运用单片机技术、自动控制理论、传感器检,使小车自动借助传感器识别路面环境以及行驶状态,运用单片机的运算和处理能力来实现小车的自动加速、限速、减速、定时、原地转向倒车、左转、右转、显示行驶时间等控制。 关键词:MC9S12XS128MCU,自动控制,电动小车, PWM调速...
自动往返电动小汽车技术报告
摘要 基于单片机的自动往返小车设计 摘 要 本系统以Freescale MC9S12XS128MCU为核心控制模块,附以外围电路,采用激光管和接收管进行信号和循线运动;通过CodewarriorIDE 在线Debug进行调试,实现自动往返小车设计。综合运用单片机技术、自动控制理论、传感器检,使小车自动借助传感器识别路面环境以及行驶状态,运用单片机的运算和处理能力来实现小车的自动加速、限速、减速、定时、原地转向倒车、左转、右转、显示行驶时间等控制。 关键词:MC9S12XS128MCU,自动控制,电动小车, PWM调速,传感器 ABSTRACT The 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, sensor 1、设计任务: 设计并制作一个能自动往返于起跑线与终点线间的小汽车,不能用人工遥控(包括有线和无线遥控),其行驶线路满足所需的要求。 1.1 要求 分区控制:如(图1)所示: 图1 跑道示意图 (1) 车辆从起跑线出发(出发前,车体不得超过起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开始计时)。 (2) 到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差 的测量值) (3) D-E间为限速区,车辆往返均要求低速通过,通过时间不得少于8秒,但不允许在限速区内停车。 2. 系统论证与分析 根据设计任务要求,并且根据我们自己的需要而附加的功能,该系统的总体框图可分为几个基本的模块,框图如(图1)所示: 图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(cishu>200) { 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; // VCOFRQ[7:6];SYNDIV[5:0] SYNR寄存器构成,高位至低位 fOSC为外部晶振频率16MHZ // fVCO(压控振荡器时钟频率)= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) // VCOCLK Frequency Ranges VCOFRQ[7:6] 压控振荡器时钟频率范围选择 // 32MHz <= fVCO <= 48MHz 00 // 48MHz < fVCO <= 80MHz 01 // Reserved 10 // 80MHz < fVCO <= 120MHz 11 REFDV=0X83; // REFFRQ[7:6];REFDIV[5:0] REFDV寄存器构成 高位至低位 // fREF=fOSC/(REFDIV + 1) 参考电压公式 // REFCLK Frequency Ranges REFFRQ[7:6] 参考电压频率范围选择 // 1MHz <= fREF <= 2MHz 00 // 2MHz < fREF <= 6MHz 01 // 6MHz < fREF <= 12MHz 10 // fREF > 12MHz 11 POSTDIV=0X00; // POSTDIV[4: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;//分频总线时钟 //低位PCKA[0:2] 高位PCKB[0: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位位RTR[0:6] //RTR[3:0]位一组,RTR[6: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 Manual 9.附录: 元件 数量 MC9S12XS128单片机最小系统板 1块 LM7805稳压芯片 1片 万用板 3块 连接线 若干 直流电机 2个 车轮及固定支架 2套 L298N芯片 1块 16V充电电池 1个 激光管及接收管 3套 四位数码管 1个 支架 若干 滚轮轮 1个 74LS138 1片 排针 若干 电阻 若干 电容 若干 排线 若干 按钮开关 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(cishu>200) { count=count+1; //start=0; PTS_PTS6=1; PTS_PTS3=1; PWMDTY0=L; PWMDTY1=R; while(PTS_PTS2==1); cishu=0; } } else { if(cishu>79) { count=count+1; //start=0; PTS_PTS6=1; PTS_PTS3=1; if(count==6) { count=0; for(delay=0;delay<50000;delay++) { for(del=0;del<10;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; PORTB_PB2=0; PORTB_PB3=1; for(delay=0;delay<10000;delay++) { for(del=0;del<400;del++); } if(PTS_PTS0==0) { PORTB_PB0=0; PORTB_PB1=1; PORTB_PB2=1; PORTB_PB3=0; } else { PORTB_PB0=1; PORTB_PB1=0; PORTB_PB2=0; PORTB_PB3=1; } for(delay=0;delay<4000;delay++) { for(del=0;del<900;del++); } PORTB_PB0=0; PORTB_PB1=1; PORTB_PB2=0; PORTB_PB3=1; /* for(delay=0;delay<10000;delay++) { for(i1=0;i1<1500;i1++); }/ PITCE_PCE0=0; CRGINT_RTIE=1; if(loop==2) {second=0; loop=0; PITCE_PCE1=1; } } } PITTF_PTF0=1; } void interrupt 67 PIT1_ISR(void) { basic=basic+1; if(basic==4) { second=second+1; basic=0; } PITTF_PTF1=1; } void main(void) { DisableInterrupts; Clock_Init(); PORT_Init(); RTI_Init(); PWM_Init(); PIT_Init(); PORTB_PB0=0; PORTB_PB1=1; PORTB_PB2=0; PORTB_PB3=1; EnableInterrupts; for(;;) { if(loop==2) { Time_Display(); } else { Black_Display(); } } } 数码管显示模块 电源模块 小车位置调节模块 黑线检测模块 L298电机驱动芯片 MC9S12XS128 主控芯片 速度控制 方向控制 实时中断请求 显示函数 初始化 IV 18
/
本文档为【自动往返电动小汽车技术报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索