智能车控制系统毕业论文(6)

2019-05-27 21:26

河南理工大学毕业设计说明书

3 智能车软件设计

本程序设计由以下几个模块组成:单片机初始化模块,实时路径检测模块,舵机控制模块,驱动电机控制模块,中断速度采集模块,速度模糊控制模块。

(1)单片机的初始化模块包括:I/O模块、PWM模块、AD模块、计时器模块、定时中断模块初始化。

(2)实时路径检测模块:前排光电传感器检测黑线,将返回信号输入单片机的输入端口,程序不间断地读入输入端口的信号,通过判断语句,得出合适的PWM信号控制舵机转向。

(3)舵机控制模块,驱动电机控制模块:通过直接输出PWM信号控制。舵机的控制采用开环控制,驱动电机采用模糊算法闭环控制。

模糊控制算法把由各种传感器测出的精确量转换成为适于模糊运算的模糊量,然后将这些量在模糊控制器中加以运算,最后再将运算结果中的模糊量转换为精确量,以便对各执行器进行具体的操作控制。在模糊控制中,存在着一个模糊量和精确量之间相互转化的问题。

本系统控制软件采用CodeWarrior软件及BDM作为调试工具,此外,编程环境支持C语言和汇编语言的程序设计,以及C语言与汇编语言的混合编程,大大方便了程序设计,提高了系统开发效率。本系统程序代码使用C语言编写。

控制系统中对被控对象的检测是一个非常重要的关键环节。在反馈控制系统中,控制器总是通过比较检测量和给定量来计算控制量,因此,检测环节对整个控制系统的质量起到至关重要的作用。为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。即应使小车在直道上以最快的速度行驶,在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯。从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升。为实现上述控制思想,我们要尽可能的提高路径检测的精度,并采用不同的控制方法来控制小车的转角和速度。首先

17

河南理工大学毕业设计说明书

绘制出系统软件流程图,如图3-1所示:

图3-1 软件流程图

N Y 定时中断 设定速度 反模糊化 输出伺服电机PWM控制信号 模糊推理 实时路径检测 输入量 模糊化 PWM控制信号 PID控制 启动定时器 计算偏差和变化率 单片机初始化 开始 定时器中断使能 速度采样 驱动电机 18

河南理工大学毕业设计说明书

3.1 路径的检测

我们采用模拟量对黑线的位置定位。由于各环境下光电管的值不一样,为了解决这个问题,先要对光电管进行标定,找到它对黑线的敏感程度,将这个过程的每个光电管的最大值最小值保存下来,用最大值减去最小值得到每个传感器在赛道上的输出范围。小车行使过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值, 然后找到其中最大的那个值。就可以确定该光电管下面的黑线比例最大,然后找到它旁边的两个光电管。就可以根据这三个值可以算出黑线的准确位置,具体公式如式(3-1)所示:

position=percent[j]*weight[j]+percent[j+1]*weight[j+1]+percent[j-1]*weight[j-1]

(3-1)

percent[j]为所占黑线的百分比,weight[j]为当前光电管所在位置。 程序段如下: void CheckStart(void){ int i,sum=0,backnum=0;

if(percent[10]>50 &&percent[14]>50) { if(flag==0){

TIE_C1I=1; TC1=TCNT+4000; TFLG1_C1F=1; flag=1; }

for(i=11;i<14;i++) sum+=percent[i];

19

河南理工大学毕业设计说明书

if(sum<200&&sum>90) isstart++;

if(sum>=220)iscrossing++; } }

3.2 转角的控制

对于舵机的控制,我们采用开环控制,由于舵机的控制精度高,一个PWM占空比对应一个角度,因此开环控制的效果较好。我们采用的是PD控制,因为这样可以让舵机的控制速度更快,输入黑线位置和黑线位置的变化率,通过分段比例控制输出相应的PWM值。因为小车处于弯道和直道的转向模型不同,统一的比例带过大会导致小车振荡,过小导致最大控制量偏小,小车转向不足,过弯时冲出赛道。使用分段比例控制既方便又可以解决以上两种问题。

由于小车前面有一排光电管,当小车处于直道时,最中间的光电管检测到信号,当处于不同曲率的弯道时,上排两侧不同的光电管将检测到信号。所以,根据上排光电管检测到的不同信号,可以判断出小车所处的位置。然后,根据小车的位置再相应的调整舵机。

调整舵机的原则是:小车处于直道,则摆正舵机,使小车沿直线行驶。小车进入弯道时根据弯道的曲率来控制舵机的转角,小车处于弯道的曲率越大,则将舵机的转角摆的越大。除此之外,小车还会遇到黑色交叉线的特殊情况,对此,本系统将保持原有的小车方向与速度,使小车不受交叉线的干扰。如果小车转过的弯过大,则可能使上排光电管全部偏离黑色轨迹,从而没有一个光电管检测到黑线,这时本系统将会把舵机转至最大角,让小车急转驶回黑线,同时,将速度降至最低,防止小车冲出轨迹。 程序段如下: void angle_sample(void) {

int pwmdty1=0;

20

河南理工大学毕业设计说明书

//if(abs(distance)<10) //pwmdty1=0; //else { if(distance<0)

pwmdty1=-fuzzy1();

{

else

pwmdty1=fuzzy1(); //}

if(pwmdty1>60) pwmdty1=60; if(pwmdty1<-58) pwmdty1=-58;

PWMDTY23=ini_Angle+pwmdty1; }

void diff1(void)

int j;

dif1=abs(distance)-error1[error1num-1]; for(j=error1num-1;j>0;j--) error1[j]=error1[j-1]; error1[0]=abs(distance); }

21


智能车控制系统毕业论文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:樊昌信通信原理试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: