智能车的控制系统设计毕业论文设计(编辑修改稿)内容摘要:

工大学毕业设计说明书 12 图 28 路面信息 检测原理图 图 29 传感器示意图 车速检测模块 旋转编码器是用来测量转速的装置。 它分为单路输出和双路输出两种。 技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。 单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差 90 度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。 本系统车速检测单元采用日本 OMRON公司的 E6A2CW3C型旋转编码器河南理工大学毕业设计说明书 13 作为车速检测元件。 因为其精度达到车轮每旋转一周,旋转编码器产生 200个脉冲,不仅硬件电路简单,而且信号采 集速度快、精度高,满足模糊控制精度要求。 其硬件电路如图 210所示。 旋转编码器旋转编码器的工作电压为5— 24伏,输出为一系列脉冲。 因为 E6A2CW3C 型旋转编码器的输出方式为电平输出,所以 本系统将旋转编码器的输出接 一个 2K上拉电阻再 与 MC9S12DG128 的 I/O口 PT0 相连。 PT0 采用 16位输入脉冲累加模式对旋转编码器的输出脉冲进行累加计数。 在旋转编码器的中轴上安装一个直径为 4cm,齿数 76,传动比 1: 1 的齿轮,并将该齿轮与同轴于后轮的传动齿轮咬合。 如此则后轮旋转的同时将通过传动齿轮带动旋转编码器一同 旋转。 此时只需要测量一定时间 (10ms)旋转编码器输出的脉冲数就能准确计算出车速。 车速的计算公式如公式( 21)所示: Tdn200v  ( 21) ( , , )d n T为 小 车 后 轮 直 径 为 采 样 时 间 内 旋 转 编 码 器 产 生 脉 冲 数 为 采 样 周 期 图 210 车速检测硬件电路图 舵机控制单元 本系统舵机控制单元采用 S3010 型舵机作为智能车方向控制部件。 舵机控制采用电压反馈闭环控制时,由于采用电位器检测反馈电压作为反馈回路,河南理工大学毕业设计说明书 14 其检测精度不高,达不到较好的控制效 果,故舵机采用 PWM 信号开环控制。 小车转向角的控制通过输入 PWM 信号进行控制。 根据检测的不同路径,判断出小车所在位置,按不同的区间给出不同的舵机 PWM 控制信号,小车转过相应的角度。 考虑到实际舵机的转向角与所给 PWM 信号的占空比基本成线性关系,所以舵机的控制方案采用查表法。 在程序中预先创建控制表,路径识别单元检测当前的路况,单片机通过查表可知当前的路况,然后给出相应的 PWM信号控制舵机的转向。 如图 211 所示。 多少的脉宽对应多少的转角一目了然。 实验证明:舵机的开环转向力矩足够,可以满足给定 PWM 信号与角度 的一一对应,控制电路简单且能满足控制要求。 其硬件电路如图 212 所示。 舵机的工作电压为 ,输入为 PWM 信号,相应输出一定转角。 舵机的控制信号线与 MC9S12DG128 的 PWM3 口相连,为提高舵机的精度,加大 PWM 信号控制范围,将 2个 8位 PWM 信号寄存器合并作为一个 16 位的寄存器进行输出。 本系统采用 PWM2 和 PWM3 合并当作 PWM23 给舵机作控制信号输入口,同时为保证整个小车的重心在小车的中心线上,将舵机安装在前轮靠后的部位,使得整个小车行驶时更加平稳可靠。 图 211 转角与脉宽关系 河南理工大学毕业设计说明书 15 直流驱动电机控制单元 系统直流驱动电机控制单元采用 RS380ST型直流电机,由于路况十分复杂,弯道多,直道少,所以采用 MC33886 电机驱动 H 桥芯片作为电机的驱动元件。 通过 MC9S12DG128 输出的 PWM 信号来控制直流驱动电机。 MC33886 内部具有过流保护电路,接口简单易用,能够提供比较大的驱动电流,考虑到实际驱动电流可能很大,故采用 2 片 MC33886 并联方式驱动电机。 但考虑到采用全桥时,均流问题 可能引起 2 片 MC33886 不同时工作,所以我们采用半桥驱动。 为了提高 PID 控制的精度,将 PWM0 和 PWM1 两个 8位寄存器合并成PWM01。 其硬件电路如图 213所示。 MT_VCC为 5伏, IN1 和 IN2 分别为 MC33886的 PWM 信号输入端口。 MC33886 的输出端口 OUT1 和 OUT2 分别接驱动电机的两端。 D D2 为芯片的使能端。 图 212 转向伺服电机控制电路 VCC PWM SERVO OUTPUT 河南理工大学毕业设计说明书 16 (b) 图 213 电机驱动电路图 河南理工大学毕业设计说明书 17 3 智能车软件设计 本程序设计由以下几个模块组成:单片机初始化模块,实时路径检测模块,舵机控制模块,驱动电机控制模 块,中断速度采集模块,速度模糊控制模块。 ( 1)单片机的初始化模块包括: I/O模块、 PWM模块、 AD模块、计时器模块、定时中断模块初始化。 ( 2)实时路径检测模块:前排光电传感器检测黑线,将返回信号输入单片机的输入端口,程序不间断地读入输入端口的信号,通过判断语句,得出合适的 PWM信号控制舵机转向。 ( 3)舵机控制模块,驱动电机控制模块:通过直接输出 PWM信号控制。 舵机的控制采用开环控制,驱动电机采用模糊算法闭环控制。 模糊控制算法把由各种传感器测出的精确量转换成为适于模糊运算的模糊量,然后将这些量在模糊控 制器中加以运算,最后再将运算结果中的模糊量转换为精确量,以便对各执行器进行具体的操作控制。 在模糊控制中,存在着一个模糊量和精确量之间相互转化的问题。 本系统控制软件采用 CodeWarrior 软件及 BDM 作为调试工具,此外,编程环境支持 C 语言和汇编语言的程序设计,以及 C语言与汇编语言的混合编程,大大方便了程序设计,提高了系统开发效率。 本系统程序代码使用 C 语言编写。 控制系统中对被控对象的检测是一个非常重要的关键环节。 在反馈控制系统中,控制器总是通过比较检测量和给定量来计算控制量,因此,检测环节对整 个控制系统的 质量起到至关重要的作用。 为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。 即应使小车在直道上以最快的速度行驶,在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯。 从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升。 为实现上述控制思想,我们要尽可能的提高路径检测的精度,并采用不同的控制方法来控制小车的转角和速度。 首先河南理工大学毕业设计说明书 18 绘制出系统软件流程图,如图 31 所示: 图 31 软件流程图 单片机初始化 定时器中断使能 开始 开始 启动定时器 实时路径检测 输出伺服电机 PWM控制信号 定时中断 速度采样 计算偏差和变化率 输入量 模糊化 模糊推理 反模糊化 PID 控制 PWM 控制信号 驱动电机 设定速 度 N Y 河南理工大学毕业设计说明书 19 路径的检测 我们采用模拟量对黑线的位置定位。 由于各环境下光电管的值不一样,为了解决这个问题,先要对光电管进行标定,找到它对黑线的敏感程 度,将这个过程的每个光电管的最大值最小值保存下来,用最大值减去最小值得到每个传感器在赛道上的输出范围。 小车行使过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值, 然后找到其中最大的那个值。 就可以确定该光电管下面的黑线比例最大,然后找到它旁边的两个光电管。 就可以 根据这三个值可以算出黑线的准确位置,具体公式如式( 31)所示: position=percent[j]*weight[j]+percent[j+1]*weight[j+1]+percent[j1]*weight[j1] ( 31) percent[j]为所占黑线的百分比 , weight[j]为当前光电管所在位置。 程序段如下: void CheckStart(void){ int i,sum=0,backnum=0。 if(percent[10]50 amp。 amp。 percent[14]50) { if(flag==0){ TIE_C1I=1。 TC1=TCNT+4000。 TFLG1_C1F=1。 flag=1。 } for(i=11。 i14。 i++) sum+=percent[i]。 河南理工大学毕业设计说明书 20 if(sum200amp。 amp。 sum90) isstart++。 if(sum=220)iscrossing++。 } } 转角的控制 对于舵机的控制,我们采用开环控制,由于舵机的控制精度高,一个 PWM占空比对应一个角度,因此开环控制的效果较好。 我们采用的是 PD 控制,因为这样可以让舵机的控制速度更快,输入黑线位置和黑线位置的变化率,通过分段比例控制输出相应的 PWM 值。 因为 小车处于弯道和直道的转向模型不同,统一的比例带过大会导致小车振荡,过小导致最大控制量偏小,小车转向不足,过弯时冲出赛道。 使用分段比例控制既方便又可以解 决以上两种问题。 由于小车前面有一排光电管,当小车处于直道时,最中间的光电管检测到信号,当处于不同曲率的弯道时,上排两侧不同的光电管将检测到信号。 所以,根据上排光电管检测到的不同信号,可以判断出小车所处的位置。 然后,根据小车的位置再相应的调整舵机。 调整舵机的原则是:小车处于直道,则摆正舵机,使小车沿直线行驶。 小车进入弯道时根据弯道的曲率来控制舵机的转角,小车处于弯道的曲率越大,则将舵机的转角摆的越大。 除此之外,小车还会遇到黑色交叉线的特殊情况,对此,本系统将保持原有的小车方向与速度,使小车不受交叉线的干扰。 如果小车转过的弯过大,则可能使上排光电管全部偏离黑色轨迹,从而没有一个光电管检测到黑线,这时本系统将会把舵机转至最大角,让小车急转驶回黑线,同时,将速度降至最低,防止小车冲出轨迹。 程序段如下: void angle_sample(void) { int pwmdty1=0。 河南理工大学毕业设计说明书 21 //if(abs(distance)10) //pwmdty1=0。 //else { if(distance0) pwmdty1=fuzzy1()。 else pwmdty1=fuzzy1()。 //} if(pwmdty160) pwmdty1=60。 if(pwmdty158) pwmdty1=58。 PWMDTY23=ini_Angle+pwmdty1。 } void diff1(void) { int j。 dif1=abs(distance)error1[error1num1]。 for(j=error1num1。 j0。 j) error1[j]=error1[j1]。 error1[0]=abs(distance)。 } 河南理工大学毕业设计说明书 22 车速的控制 对于车速的控制,我们采用闭环控制,控制量由 MC33886 给出,而速度反馈量由编码器测得。 编码器输出的脉冲输入到 PACN10,通过定时器申请中断,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。