APP下载

基于线性CCD 的两轮自平衡智能小车控制系统设计

2014-01-21廖志飞刘海刚陈庆威梁植权

电子设计工程 2014年20期
关键词:白点陀螺仪加速度计

廖志飞,刘海刚,陈庆威,梁植权

(五邑大学 信息工程学院,广东 江门 529020)

近年来,随着技术的不断进步,两轮自平衡小车[1]以其结构简单、轻盈小巧、运动灵活、高效节能等特点,在许多个领域得到了较大的发展。本文设计并制作了一台两轮小车,用飞思卡尔公司生产的MK60DN512ZVLQ10单片机作为核心控制器,加速度计MMA7260和陀螺仪ENC03作为车身姿态控制测量元件,实现两轮小车的自平衡。 根据设定速度与小车速度的偏差控制电机的电压,以实现速度控制,并利用线性CCD采集赛道信息,根据路径的弯度控制小车两个轮子的转速实现转向控制,从而实现两轮直立车的寻迹方案。

1 系统组成

系统主要由单片机核心控制器、直立控制模块、速度控制模块、方向控制模块等功能模块构成。直立控制模块包含陀螺仪及加速度计,将它们安装在小车的重心位置,这样能保证传感器不会太敏感或太迟钝,两者的数据融合使小车能保持一定的倾角前进。速度控制模块:电机驱动模块驱动直流电机运转,通过安装于左、右轮的编码器测速,与设定速度进行比较,控制小车按设定速度行驶。方向控制模块:通过安装于小车运动上方支架上的线性CCD,控制两轮实现差速转弯,以控制运动方向.系统框图如图1所示。

图1 系统总体结构图Fig.1 The overall system structure diagram

2 各个控制模块

2.1 直立控制模块

两轮车行走的首要条件是车的直立平衡,我们设计的参考方案如图2所示。它是通过陀螺仪ENC03采集到车倾斜的角速度w,通过加速度计采集车倾斜的角度θacc,与陀螺仪积分得到的角度θ比较,得到偏差量e2(t)经过比例1/Tg转换作为反馈量给陀螺仪,偏差量e1(t)与陀螺仪采集到的角速度相加再积分作为车倾斜的角度θ。由于陀螺仪会有积分误差及温漂,采用加速度计就可以减少陀螺仪的误差,加速度由于受外界的干扰比较大,瞬间值不够准确,所以配合陀螺仪的使用,两者共同作用来采集车模的倾角[2]。

2.2 速度控制模块

图2 陀螺仪、加速度计数据融合框图Fig.2 Gyroscope accelerometer data fusion

电机驱动采用4个BTS7960组成H桥电路来驱动直流电机的转动[3],另外采用MK60N512VMD10单片机两路脉冲计数器,通过编码器分别测出小车左、右轮的脉冲量。利用4路PWM分别控制两个电机的正反转。如图3所示,当开关QA、QD接通,电机为正向转动,开关QB、QC接通则电机反向转动,从而实现电机的正反转.电流的大小,决定电机的转速,通过PWM占空比来决定电流的大小,从而间接地控制了电机的转速。

图3 H桥电路Fig.3 H bridge circuit

小车的速度控制是建立在小车直立的基础上的,通过给小车一个设定速度,然后将编码器测得的小车实际速度与设定速度进行比较,偏差量作为反馈量,经过比例PSPEED、积分ISPEED的和作为速度的输出,进一步控制PWM的输出从而使小车按设定速度行走[4],如图4所示。

图4 速度控制框图Fig.4 Block diagram of speed control

2.3 方向控制模块

小车运行方向控制是通过两个轮子的差速来实现[5],而差速是由线性CCD采集赛道信息来计算弯道两边黑线与直道时两边黑线的偏差值来确定。我们比赛使用的CCD型号为TSL1401,属于线性CCD,与面阵CCD相比,线性CCD只是采集一行的数据,而这一行数据是由线性CCD传感器128个光电二极管通过积分电路所采集的图像灰度值[6]。

对于采集回来的128个数据,要确定一个阈值Th,一般情况下为200左右(还能通过拨码开关根据现场环境亮度来选择几个不同的阈值Th),来区分开白色跑道与其它颜色灰暗的非跑道区域。对于白色跑道反馈回来的值肯定是比其它反馈回来的值大,取这些数的一个中值来作为阈值,来区分赛道的黑白点(除了白色赛道,其余都是黑点),就可以判别出白色跑道.然后就可以计算出弯道时与正常跑道的偏差值,将两边的偏差值相减再转换成电压值加到方向输出函数中,就可以控制小车的转向了。程序框图如图5所示。

图5 CCD数据处理框图Fig.5 CCD data processing

由于比赛的赛道有虚线,所以我们将采集到128个点的数据从中间(第64个点的数据)往两边处理(左边64-0跟右边64-127的情况是一样的),目的是寻找两边的黑点,与设定的阈值Th相比,如果小于阈值Th,再判断3个点是否都小于阈值Th,如果是,则认为是检测到了赛道边上的黑线。

程序实现部分[7](左边64-0的64个点检测部分):

void CCD_DataProcessing(void)

{

for(i=63;i>=0;i--)

{

L_Number=0;

if(gPixel[i]

{

for(a=i;a>i-4;a--)

{

if(a<=0) //忽略了最后的四个点,最后几个点如果为白点都认为是127

{

g_iLeft_CCD_Number=i;//把对应的白点号记下

LeftStartflag=1; //左边确认检测到了白点

break;

}

if(gPixel[a]

{

L_Number++; //判断 6点,如果有>=4个白点就确认找到了第一个白点

if(L_Number>=3)

{

g_iLeft_CCD_Number=i;//把对应的白点号记下

LeftStartflag=1; //左边确认检测到了白点

break;

}

}

}

}

if(LeftStartflag==1)

{

break;

}

}

if ((g_iLeft_CCD_Number >= 60) &&(g_iRight_CCD_Number>=60))//冲出跑道的情况

{

g_iLeft_CCD_Number=g_iLeft_CCD_OldNumber;//使用上一次的值

g_iRight_CCD_Number=g_iRight_CCD_OldNumber;

}

g_iLeft_CCD_OldNumber=g_iLeft_CCD_Number;

g_iRight_CCD_OldNumber=g_iRight_CCD_Number;

}

3 结束语

文中讨论了基于线性CCD的两轮自平衡小车控制系统的设计思想及实现方法,对系统中通过线性CCD完成对赛道识别的方向控制模块,以及直立控制模块、速度控制模块等模块的软硬件进行了分析,并给出了关键程序段。通过测试及参加飞思卡尔智能车比赛,证明这个系统是合理的,也提高了小车运行的速度。开展对两轮自平衡车的深人研究对提高我国在这一领域的科研水平、扩展机器人的应用背景等具有重要的理论及现实意义。

[1]王宜怀,吴瑾,蒋银珍.嵌入式系统原理与实战—ARM Cortex-M4 Kinetis微控制器 [M].北京:电子工业出版社,2011.

[2]第七届全国大学生“飞思卡尔”杯智能汽车竞赛 电磁组直立行车参考设计方案 [R].飞思卡尔杯智能汽车竞赛秘书处,2012.

[3]张飞飞,杨雪松.基于MC9S12XS128单片机的路径图像识别智能小车[J].甘肃科技,2013,29(13):12-14.ZHANG Fei-fei,YANG Xue-song.Path recognition?of intelligent car based on MC9S12XS128[J].Gansu Science and Technology,2013,29(13):12-14.

[4]胥布工.自动控制原理 [M].北京:电子工业出版社,2011

[5]张启秋,蔡雄友,叶骏辉,等.两轮自平衡智能小车控制系统的设计与实现[J].五邑大学学报:自然科学版,2013,27(3):57-60.ZHANG Qi-qiu,CAI Xiong-you,YE Jun-hui,et al.Design of the control system for two-wheel self-balancing smart cars[J].Journal of WUYI University:Natural Science Edition,2013,27(3):57-60.

[6]赵晓东.线性CCD实验系统的研究[J].电子测试,2012,5:85-88,97.ZHAO Xiao-dong.Research on linear CCD experimental system[J].Electronic Test,2012(5):85-88,97.

[7]王文龙,张少博,陈海峰.一种试验数据处理软件设计[J].火箭推进 ,2012(1):76-80.WANG Wen-long,ZHANG Shao-bo,CHEN Hai-feng.Design of a test data processing software [J].Journal of Rocket Propulsion,2012(1):76-80.

猜你喜欢

白点陀螺仪加速度计
医 学 指甲上有小白点是缺钙吗?
粉刷匠的孩子,真让我羡慕
消除大型锻件内白点缺陷的工艺方法浅析
刷子李
基于EMD的MEMS陀螺仪随机漂移分析方法
我国著名陀螺仪专家——林士谔
基于遗传算法的加速度计免转台标定方法
微机械陀螺仪概述和发展
常温下硅微谐振加速度计零偏稳定性的提高
MEMS三轴陀螺仪中不匹配干扰抑制方法