《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 两轮自平衡小车控制系统的设计
两轮自平衡小车控制系统的设计
2014年微型机与应用第11期
陈业伟,刘海刚,项华珍,邹治方,欧 翘
五邑大学 信息工程学院,广东 江门
摘要: 近年来,随着经济的不断发展和城市人口的日益增长,城市交通阻塞以及耗能、污染问题成为了一个困扰人们的心病。新型交通工具的诞生显得尤为重要,两轮自平衡小车应运而生,其以行走灵活、便利、节能等特点得到了很大的发展。但是,昂贵的成本还是令人望而止步,成为它暂时无法广泛推广的一个重要原因。因此,开展对两轮自平衡车的深入研究,不仅对改善平衡车的性价比有着重要意义,同时也对提高我国在该领域的科研水平、扩展机器人的应用背景等具有重要的理论及现实意义。全国大学生飞思卡尔智能车竞赛与时俱进,第七届电磁组小车首次采用了两轮小车,模拟两轮自平衡电动智能车的运行机理。在此基础上,第八届光电组小车再次采用两轮小车作为控制系统的载体。小车设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械及能源等多个学科的知识。
Abstract:
Key words :

  摘  要: 介绍了两轮自平衡小车控制系统的设计与实现,系统以飞思卡尔公司的16位微控制器MC9S12XS128MAL作为核心控制单元,利用加速度传感器MMA7361测量重力加速度的分量,即小车的实时倾角,以及利用陀螺仪ENC-03MB测量小车的实时角速度,并利用光电编码器采集小车的前进速度,实现了小车的平衡和速度控制。在小车可以保持两轮自平衡前提下,采用摄像头CCD-TSL1401作为路径识别传感器,实时采集赛道信息,并通过左右轮差速控制转弯,使小车始终沿着赛道中线运行。实验表明,该控制系统能较好地控制小车平衡快速地跟随跑道运行,具有一定的实用性。

  关键词: 控制;自平衡;实时性

  近年来,随着经济的不断发展和城市人口的日益增长,城市交通阻塞以及耗能、污染问题成为了一个困扰人们的心病。新型交通工具的诞生显得尤为重要,两轮自平衡小车应运而生,其以行走灵活、便利、节能等特点得到了很大的发展。但是,昂贵的成本还是令人望而止步,成为它暂时无法广泛推广的一个重要原因。因此,开展对两轮自平衡车的深入研究,不仅对改善平衡车的性价比有着重要意义,同时也对提高我国在该领域的科研水平、扩展机器人的应用背景等具有重要的理论及现实意义。全国大学生飞思卡尔智能车竞赛与时俱进,第七届电磁组小车首次采用了两轮小车,模拟两轮自平衡电动智能车的运行机理。在此基础上,第八届光电组小车再次采用两轮小车作为控制系统的载体。小车设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械及能源等多个学科的知识。

  1 小车控制系统总体方案

  小车以16位单片机MC9S12XS128MAL作为中央控制单元,用陀螺仪和加速度传感器分别检测小车的加速度和倾斜角度[1],以线性CCD采集小车行走时的赛道信息,最终通过三者的数据融合,作为直流电机的输入量,从而驱动直流电机的差速运转,实现小车的自动循轨功能。同时,为了更方便、及时地观察小车行走时数据的变化,并且对数据作出正确的处理,本系统调试时需要无线模块和上位机的配合。小车控制系统总体架构如图1所示。

Z~]UEI1[$Z8UAIXRT_$78OC.jpg

  2 小车控制系统自平衡原理

  两轮小车能够实现自平衡功能,并且在受到一定外力的干扰下,仍能保持直立状态,是小车可以沿着赛道自动循线行走的先决条件。为了更好地控制小车的行走方式,得到最优的行走路径,需要对小车分模块分析与控制。

  本控制系统维持小车直立和运行的动力都来自小车的两个轮子,轮子转动由两个直流电机驱动。小车作为一个控制对象,它的控制输入量是两个电机的转动速度。小车运动控制可以分解成以下3个基本控制任务。

  (1)小车平衡控制:通过控制两个电机正反方向运动保持小车直立平衡状态;

  (2)小车速度控制:通过调节小车的倾斜角度来实现小车速度控制,本质上是通过控制电机的转速来实现小车速度的控制。

  (3)小车方向控制:通过控制两个电机之间的转动差速实现小车转向控制。

  2.1 小车平衡控制

  要想实现小车的平衡控制,需要采取负反馈控制方式[2]。当小车偏离平衡点时,通过控制电机驱动电机实现加、减速,从而抵消小车倾斜的趋势,便可以保持车体平衡。即当小车有向前倾的趋势时,可以使电机正向加速,给小车一个向前的加速度,在回复力和阻尼力的作用下,小车不至于向前倾倒;当小车有向后倾的趋势时,可以使小车反向加速,给小车一个向后的加速度,从而不会让小车向后倾倒,如图2所示。

WH0`CRKU)@(I9Y8KHS$I%87.jpg

  从上述的定性分析可知,在运动过程中小车会不断地在平衡点附近来回摆动,如果控制不当,来回摆动的幅度会很大。显然,这样的控制不能满足两轮小车的实际要求,小车更无法按照赛道快速运行。为使小车可以在平衡点附近很好地保持平衡,需要对小车的加速度等进行严格地定量分析和计算。

  直立着的小车能简化成放置在可以左右移动平台上的倒立着的单摆[3]。从图3可知,小车在偏离平衡位置时无法在不受外力的情况下稳定在平衡位置,是因为小车受到的回复力F=mgsinθ与小车位移偏离的方向相同,这样会加速使小车向偏离平衡的位置倒下。要想小车可以稳定在平衡位置,必须给小车额外增加一个和回复力相反方向的力。如果产生一个与小车偏离方向相同的加速度a,使小车受到额外的力F额外=-macosθ,此时小车所受到的合力为F合=mgsinθ-macosθ。只要F合<0,即F合的方向与小车偏离平衡位置的方向相反,小车就拥有了回复平衡位置的趋势,进而在空气阻力以及小车机械阻力的作用下,可以在一个平衡点稳定下来。

  2.2 小车速度控制

  两轮小车速度控制相对于4轮小车要复杂得多,因为在改变小车速度时,还需要保证小车可以实现平衡控制[4]。在保持小车平衡的前提下,采取改变小车倾角的方式来改变小车的速度。在一定范围内,当小车向前倾的角度越大时,小车前进的速度越大;当小车向后倾的角度越大时,小车前进的速度越小。

  即使小车在直立控制调节下已经能够保持平衡,但由于安装误差的存在,传感器测量的角度与小车实际角度存在偏差,因此小车实际会在重力的作用下,朝倾斜的方向加速前进。故需要外加速度负反馈以控制小车稳定在平衡位置。速度控制的任务主要有以下3个。

  (1)小车速度的测量;

  (2)通过小车直立控制实现小车倾角的改变;

  (3)根据速度误差控制小车倾角。

  小车速度的测量可以通过安装在电机输出轴上的光电编码器来实现。本系统采用的是100线的编码器,即编码器上面的齿轮转一圈,编码器可以输出100个脉冲。再利用单片机具有输入捕捉功能的引脚PT7对该脉冲进行采样。在固定时间内,输出脉冲越多,小车的速度就越快,这样就可以测量出小车的速度。

  小车倾角的控制所示系统实现。从小车直立控制算法中可知,小车的倾斜角度与加速度计Z轴测量输出的角度成比例线性关系[5]。因此,设置一个倾角给定值,小车的倾角给定值与重力加速度Z轴角度相减,便可以最终决定小车的倾角,再通过误差的比例-积分控制使角度自动维持在设定值附近,最后再利用角速度和角度作为输入量,制作一个比例-积分控制器,从而驱动电机维持车模保持给定的倾角。

  理论上,当小车向前倾角为45°时,速度为2 m/s[2]。但是在实际控制中,由于小车机械传动方面的阻尼力以及轮子的摩擦力等因素的影响,小车无法达到理论要求。为了解决这些干扰对小车速度的影响,需要采用速度负反馈的控制策略,形成一个闭环控制系统。

  2.3 小车方向控制

  为使车模沿着赛道行驶,必须检测赛道信息。本系统采用线性摄像头CCD-TSL1401实时采集赛道信息。TSL1401CL是由一个128×1的光电二极管阵列、电荷放大器电路和内部的像素数据保存器组成。它保存了从起始到停止时间的所有像素。操作简单,内部控制逻辑只需要串行输入信号SI和时钟CLK信号[6]。CCD检测采集赛道信息视角图如图所示。

JM87Y(YFNNJ`E9$FS7KBWBO.jpg

  CCD提取赛道信息后,将小车速度控制信号与直立控制信号综合,与赛道偏差检测信号进行加和减运算,形成左右轮差动控制电压,使得小车左右轮运行角速度不一致进而控制小车方向,如图7所示。

  3 小车控制系统算法编程

  小车的程序控制几乎都是在1 ms时间的中断里完成,主函数只是在不断地通过串口向上位机发送数据,进行实时监控。其中,中断程序分别完成了小车的直立控制、速度控制和方向控制,通过全局标志量的循环计数,确定每次小车需要调用执行的程序模块。中断函数的实现如图所示。

)IYCRCV}@S`$$]P5L{(T54I.jpg

  其中,小车的直立控制是本系统设计与实现的关键,角度计算和转换函数的实现如下所示。

  void AngleCalculate(void)

  {

  float fDeltaValue;

  g_fGravityAngle=(VOLTAGE_GRAVITY-

  GRAVITY_OFFSET)*

  GRAVITY_ANGLE_RATIO;

  //加速度传感器计算出来的角度值

  g_fGravityAngle=LOW_PASS_Acce(g_fGravityAngle);

  //低通滤波

  g_fGyroscopeAngleSpeed=(VOLTAGE_GYRO-

  GYROSCOPE_OFFSET)*

  GYROSCOPE_ANGLE_RATIO;

  //陀螺仪计算出来的角速度值

  g_fGyroscopeAngleSpeed=LOW_PASS_Gyro

  (g_fGyroscopeAngleSpeed);//低通滤波

  g_fCarAngle=g_fGyroscopeAngleIntegral;

  fDeltaValue=(g_fGravityAngle-g_fCarAngle)

  /GRAVITY_ADJUST_TIME_CONSTANT;

  //用加速度传感器得到的角度与陀螺仪的偏差,纠正陀螺仪的输出

  g_fGyroscopeAngleIntegral+=(g_fGyroscopeAngleSpeed+

  fDeltaValue)/

  GYROSCOPE_ANGLE_SIGMA_FREQUENCY;

  }

  本文介绍了直立行走小车控制系统的实现原理,通过对小车的平衡控制、速度控制和方向控制,实现了小车的直立行走与自动循轨的功能。在本系统的设计与制作过程中,不仅是对控制系统的实现原理的分析,还是对传感器的合理使用,都为开展对两轮自平衡车的深入研究提供了宝贵的实践经验。此外,在2013年举行的全国大学生飞思卡尔智能车竞赛中,此作品参加了华南赛区比赛,并荣获三等奖。实践证明,本系统的设计具有一定的实际价值。

  参考文献

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

  [2] 胡寿松.自动控制原理(第五版)[M].北京:科学出版社,2007.

  [3] 周小仨.两轮自平衡电动车核心控制算法的选择[J].办公自动化,2013,252(4):56-57.

  [4] 张启秋,蔡雄友,叶骏辉,等.两轮自平衡智能小车控制系统的设计与实现[J].五邑大学学报(自然科学版),2013,27(3):57-60.

  [5] 刘海刚,宋一标,陈恒伟,等.单轴两轮自平衡小车姿态控制系统设计[J].工业控制计算机,2013,26(9):16-18.

  [6] 王俊,许林,岳东,等.基于CCD的两轮自平衡智能车系统设计[J].信息技术,2013(8):179-185.


此内容为AET网站原创,未经授权禁止转载。