基于线性CCD的两轮自平衡智能小车控制系统设计
扫描二维码
随时随地手机看文章
近年来,随着技术的不断进步,两轮自平衡小车以其结构简单、轻盈小巧、运动灵活、高效节能等特点,在许多个领域得到了较大的发展。本文设计并制作了一台两轮小车,用飞思卡尔公司生产的MK60DN512ZVLQ10单片机作为核心控制器,加速度计MMA7260和陀螺仪ENC03作为车身姿态控制测量元件,实现两轮小车的自平衡。根据设定速度与小车速度的偏差控制电机的电压,以实现速度控制,并利用线性CCD采集赛道信息,根据路径的弯度控制小车两个轮子的转速实现转向控制,从而实现两轮直立车的寻迹方案。
1 系统组成
系统主要由单片机核心控制器、直立控制模块、速度控制模块、方向控制模块等功能模块构成。直立控制模块包含陀螺仪及加速度计,将它们安装在小车的重心位置,这样能保证传感器不会太敏感或太迟钝,两者的数据融合使小车能保持一定的倾角前进。速度控制模块:电机驱动模块驱动直流电机运转,通过安装于左、右轮的编码器测速,与设定速度进行比较,控制小车按设定速度行驶。方向控制模块:通过安装于小车运动上方支架上的线性CCD,控制两轮实现差速转弯,以控制运动方向,系统框图如图1所示。
2 各个控制模块
2.1 直立控制模块
两轮车行走的首要条件是车的直立平衡,我们设计的参考方案如图2所示。它是通过陀螺仪ENC03采集到车倾斜的角速度w,通过加速度计采集车倾斜的角度θacc,与陀螺仪积分得到的角度θ比较,得到偏差量e2(t)经过比例1/Tg转换作为反馈量给陀螺仪,偏差量e1(t)与陀螺仪采集到的角速度相加再积分作为车倾斜的角度θ。由于陀螺仪会有积分误
差及温漂,采用加速度计就可以减少陀螺仪的误差,加速度由于受外界的干扰比较大,瞬间值不够准确,所以配合陀螺仪的使用,两者共同作用来采集车模的倾角。
2.2 速度控制模块
电机驱动采用4个BTS7960组成H桥电路来驱动直流电机的转动,另外采用MK60N512VMD10单片机两路脉冲计数器,通过编码器分别测出小车左、右轮的脉冲量。利用4路PWM分别控制两个电机的正反转。如图3所示,当开关QA、QD接通,电机为正向转动,开关QB、QC接通则电机反向转动,从而实现电机的正反转,电流的大小,决定电机的转速,通过PWM占空比来决定电流的大小,从而间接地控制了电机的转速。
小车的速度控制是建立在小车直立的基础上的,通过给小车一个设定速度,然后将编码器测得的小车实际速度与设定速度进行比较,偏差量作为反馈量,经过比例PSPEED、积分ISPEED的和作为速度的输出,进一步控制PWM的输出从而使小车按设定速度行走,如图4所示。
2.3 方向控制模块
小车运行方向控制是通过两个轮子的差速来实现,而差速是由线性CCD采集赛道信息来计算弯道两边黑线与直道时两边黑线的偏差值来确定。我们比赛使用的CCD型号为TSL1 401,属于线性CCD,与面阵CCD相比,线性CCD只是采集一行的数据,而这一行数据是由线性CCD传感器128个光电二极管通过积分电路所采集的图像灰度值。
对于采集回来的128个数据,要确定一个阈值Th,一般情况下为200左右(还能通过拨码开关根据现场环境亮度来选择几个不同的阈值Th),来区分开白色跑道与其它颜色灰暗的非跑道区域。对于白色跑道反馈回来的值肯定是比其它反馈回来的值大,取这些数的一个中值来作为阈值,来区分赛道的黑白点(除了白色赛道,其余都是黑点),就可以判别
出白色跑道,然后就可以计算出弯道时与正常跑道的偏差值,将两边的偏差值相减再转换成电压值加到方向输出函数中,就可以控制小车的转向了。程序框图如图5所示。
由于比赛的赛道有虚线,所以我们将采集到128个点的数据从中间(第64个点的数据)往两边处理(左边64-0跟右边64-127的情况是一样的),目的是寻找两边的黑点,与设定的阈值Th相比,如果小于阈值Th,再判断3个点是否都小于阈值Th,如果是,则认为是检测到了赛道边上的黑线。
程序实现部分(左边64-0的64个点检测部分):
3 结束语
文中讨论了基于线性CCD的两轮自平衡小车控制系统的设计思想及实现方法,对系统中通过线性CCD完成对赛道识别的方向控制模块,以及直立控制模块、速度控制模块等模块的软硬件进行了分析,并给出了关键程序段。通过测试及参加飞思卡尔智能车比赛,证明这个系统是合理的,也提高了小车运行的速度。开展对两轮自平衡车的深入研究对提高我国在这一领域的科研水平、扩展机器人的应用背景等具有重要的理论及现实意义。