论文部分内容阅读
两轮直立小车控制系统的研究
浙江万里学院 郑健儿 祝 丽
【摘要】本文介绍的是两轮电动小车自动平衡控制系统的电路设计方案,控制系统包括K60单片机主控模块、电源模块、电机驱动模块和传感器模块,文章阐述了直立小车控制电路的具体设计方法。
【关键词】两轮直立车;控制系统;电路设计
引言
随着科学技术的发展,民众的生活水平也日渐提高,两轮直立车将会越来越受大家的喜欢。本文结合大学生飞思卡尔智能车竞赛项目,介绍了一种直立小车控制系统电路设计的方案,小车由两个直流电机作为驱动,通过速度编码器、加速度计和陀螺仪等传感器来检测车身的运动状态,通过单片机的信号处理实现小车自平衡状态。
1.系统控制任务分析
两轮直立小车控制系统的控制任务可以分解成以下三个方面[1]:(1)车身平衡控制:通过两个电机正反向运动产生的回复力保持车身直立平衡状态;(2)行进速度控制:通过改变车身的前倾角度从而改变电机的转速,来实现小车行进的速度控制;(3)小车方向控制:通过控制两个电机之间的转动差速实现小车转向的控制。
三个分解后的任务虽然可以通过单片机独立进行控制,但由于最终都是对同一个控制对象(两个电机)进行控制,所以它们之间又是相互关联和协调工作的。根据小车自动平衡控制的需求,系统电路需要单片机主控模块、电机驱动模块、电机转速检测模块、车身倾斜度检测模块、车身运动状态检测模块和电源模块等几部分电路构成,控制系统的框图如图1所示。
图1 直立小车自动平衡控制系统框图
2.系统硬件电路设计
2.1 稳压电源模块
小车用7.2V锂电池供电,根据各模块电路的需求,整个系统需要使用的电源电压有5V和3.3V两种。直流稳压电源常用的有串联型线性稳压电源和开关型稳压电源两大类,线性稳压电源具有波纹小、电路结构简单的优点。此5V的稳压选用LM2940稳压芯片,3.3V稳压选用AMS1117 芯片设计。具体电路如图2所示。
2.2 直流电机驱动模块
小车的直立平衡和行进、拐弯等运动完全由两个电机的速度和转向来决定,在控制系统中电机的加减速和正反向运动是由单片机输出的PWM信号来控制的,但由于一般单片机I/O口输出信号的电流较小,不能直接驱动直流电机,通常需要搭建H桥电路或用专门的驱动芯片来实现。BTS7970是一款性价比较高的电机驱动芯片,其驱动能力和响应速度都能满足控制要求。一块驱动芯片只能提供电机一个方向的PWM控制信号,因此需要用四片BTS7970驱动芯片来驱动两个电机。小车上安装有测速编码器,通过速度的反馈,再经过单片机PID算法输出相应的PWM信号,对电机的转速进行有效调节,从而控制小车的运行状态。单个电机的驱动电路原理图如图3所示。
2.3 传感器检测电路设计
为保证小车的直立平衡控制,需要对车身的运动状态进行监测。系统选用ENC-03陀螺仪传感器和MMA7361加速度传感器二合一的模块,实现对小车车身状态的实时监控。该模块自带有硬件滤波功能,由该模块的J口直接输出小车的角度值,不用通过角速率对时间的积分来获取,也就是说软件方面我们只需要对采集回来的角度信号进行简单的处理,就能得到相应的角度变化,该模块的X口输出的是实时的角速度值,采集回来的数据经过简单的处理就能得到相应的角速度变化。角度数据采集的准确与否,直接关系到直立环节的直立效果,而在直立环节,速度环节,转向环节中,直立环节又是另外两个环节的基础,所以角度数据采集显得尤为重要。传感器模块的电路原理图如图4所示。
2.4 系统主控制器
控制系统的主控制器选用飞思卡尔公司的MK60DN512VLQ10单片机,该单片机是一款高性能的32位处理器。利用该单片机内置的A/D转换模块以及PWM模块、TIM定时器模块、PIT周期性中断定时器等模块。由单片机采集加速度传感器和陀螺仪的信号以及对这些信号的处理和相关运算,将PID运算的结果传递给PWM模块,最后由PWM模块输出信号控制电机的转速及转向以使小车保持直立,并能按一定路径自动行驶。
3.系统主要功能的软件设计
3.1 平衡控制算法
PID算法是自动控制系统经典的理论,小车的平衡控制在软件部分处理时用到的是PD算法,系统直立控制的输入为系统倾角angle和角速度angle_dot,在直立控制函数中,把系统目标倾角减去系统实际倾角,得到系统倾角的误差,把此误差乘以直立控制的P参数,把此乘积直接作为电机的PWM输出,使系统向倾角误差减小的方向运行,以实现系统倾角的闭环控制[2]。另外,由于P参数过大后会导致系统超调而产生系统震荡,甚至使系统失去控制。为了抑制这种震荡,再引入D参数,把D参数直接乘以系统角速度,再与P参数与角度误差的乘积相加,即可实现抑制系统震荡的效果[3]。具体函数代码如下:
angle_err = pid_Angle.SetPoint -angle;
angle_pid_out=pid_Angle.Proportion*angle_
err+pid_Angle.Derivative*(-angle_dot);
3.2 小车速度控制
要提高系统运行的稳定性,速度的控制也非常重要。速度控制的软件部分采用了增量式的PID算法,增量式PID的优点是只需计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小,这非常适用于像小车这种大动态、容易产生检测误差的环节[4]。P参数保证系统反应的灵敏度,I参数保证速度控制的精度,D参数抑制速度控制的超调现象[5]。
以下是速度PID控制的具体函数代码:
int IncPIDCalc(int NextPoint)
{
register int iError, iIncpid;
iError=sptr->SetPoint-NextPoint;
iIncpid=sptr->Proportion*iError-sptr->Integral*
sptr->LastError+sptr->Derivative*sptr->PrevError;
sptr->PrevError=sptr->LastError;
sptr->LastError=iError;
return(iIncpid);
}
4.结语
采用飞思卡尔K60单片机设计平衡小车控制系统,不仅采集效率高,而且传输速度快,控制实效性好。同时该系统还具有简单易用、小型、可靠等优点,对一般工业控制系统的设计有一定的指导和借鉴作用,在两轮直立车飞速发展的今天具有非常广的应用前景。
参考文献
[1]卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007.
[2]尹怡欣,陶永华.新型PID控制及其应用[M].北京:机械工业出版社,1998.
[3]冯智勇,曾瀚,张力,等.基于陀螺仪加速度计信号融合的姿态角度测量[J].西南大学学报(自然学版),2011,36(4):137-141.
[4]谢世杰,陈生潭,楼顺天.数字PID算法在无刷直流电机控制器中的应用[J].现代电子技术,2004,27(2):59-61.
[5]张吉昌,程凯,郑荣儿.单轴双轮自平衡车姿态检测方案设计[J].中国海洋大学学报:自然科学版,2009(S1):467-470.
注:本研究成果由2013年浙江省大学生新苗计划项目资助。
浙江万里学院 郑健儿 祝 丽
【摘要】本文介绍的是两轮电动小车自动平衡控制系统的电路设计方案,控制系统包括K60单片机主控模块、电源模块、电机驱动模块和传感器模块,文章阐述了直立小车控制电路的具体设计方法。
【关键词】两轮直立车;控制系统;电路设计
引言
随着科学技术的发展,民众的生活水平也日渐提高,两轮直立车将会越来越受大家的喜欢。本文结合大学生飞思卡尔智能车竞赛项目,介绍了一种直立小车控制系统电路设计的方案,小车由两个直流电机作为驱动,通过速度编码器、加速度计和陀螺仪等传感器来检测车身的运动状态,通过单片机的信号处理实现小车自平衡状态。
1.系统控制任务分析
两轮直立小车控制系统的控制任务可以分解成以下三个方面[1]:(1)车身平衡控制:通过两个电机正反向运动产生的回复力保持车身直立平衡状态;(2)行进速度控制:通过改变车身的前倾角度从而改变电机的转速,来实现小车行进的速度控制;(3)小车方向控制:通过控制两个电机之间的转动差速实现小车转向的控制。
三个分解后的任务虽然可以通过单片机独立进行控制,但由于最终都是对同一个控制对象(两个电机)进行控制,所以它们之间又是相互关联和协调工作的。根据小车自动平衡控制的需求,系统电路需要单片机主控模块、电机驱动模块、电机转速检测模块、车身倾斜度检测模块、车身运动状态检测模块和电源模块等几部分电路构成,控制系统的框图如图1所示。
图1 直立小车自动平衡控制系统框图
2.系统硬件电路设计
2.1 稳压电源模块
小车用7.2V锂电池供电,根据各模块电路的需求,整个系统需要使用的电源电压有5V和3.3V两种。直流稳压电源常用的有串联型线性稳压电源和开关型稳压电源两大类,线性稳压电源具有波纹小、电路结构简单的优点。此5V的稳压选用LM2940稳压芯片,3.3V稳压选用AMS1117 芯片设计。具体电路如图2所示。
2.2 直流电机驱动模块
小车的直立平衡和行进、拐弯等运动完全由两个电机的速度和转向来决定,在控制系统中电机的加减速和正反向运动是由单片机输出的PWM信号来控制的,但由于一般单片机I/O口输出信号的电流较小,不能直接驱动直流电机,通常需要搭建H桥电路或用专门的驱动芯片来实现。BTS7970是一款性价比较高的电机驱动芯片,其驱动能力和响应速度都能满足控制要求。一块驱动芯片只能提供电机一个方向的PWM控制信号,因此需要用四片BTS7970驱动芯片来驱动两个电机。小车上安装有测速编码器,通过速度的反馈,再经过单片机PID算法输出相应的PWM信号,对电机的转速进行有效调节,从而控制小车的运行状态。单个电机的驱动电路原理图如图3所示。
2.3 传感器检测电路设计
为保证小车的直立平衡控制,需要对车身的运动状态进行监测。系统选用ENC-03陀螺仪传感器和MMA7361加速度传感器二合一的模块,实现对小车车身状态的实时监控。该模块自带有硬件滤波功能,由该模块的J口直接输出小车的角度值,不用通过角速率对时间的积分来获取,也就是说软件方面我们只需要对采集回来的角度信号进行简单的处理,就能得到相应的角度变化,该模块的X口输出的是实时的角速度值,采集回来的数据经过简单的处理就能得到相应的角速度变化。角度数据采集的准确与否,直接关系到直立环节的直立效果,而在直立环节,速度环节,转向环节中,直立环节又是另外两个环节的基础,所以角度数据采集显得尤为重要。传感器模块的电路原理图如图4所示。
2.4 系统主控制器
控制系统的主控制器选用飞思卡尔公司的MK60DN512VLQ10单片机,该单片机是一款高性能的32位处理器。利用该单片机内置的A/D转换模块以及PWM模块、TIM定时器模块、PIT周期性中断定时器等模块。由单片机采集加速度传感器和陀螺仪的信号以及对这些信号的处理和相关运算,将PID运算的结果传递给PWM模块,最后由PWM模块输出信号控制电机的转速及转向以使小车保持直立,并能按一定路径自动行驶。
3.系统主要功能的软件设计
3.1 平衡控制算法
PID算法是自动控制系统经典的理论,小车的平衡控制在软件部分处理时用到的是PD算法,系统直立控制的输入为系统倾角angle和角速度angle_dot,在直立控制函数中,把系统目标倾角减去系统实际倾角,得到系统倾角的误差,把此误差乘以直立控制的P参数,把此乘积直接作为电机的PWM输出,使系统向倾角误差减小的方向运行,以实现系统倾角的闭环控制[2]。另外,由于P参数过大后会导致系统超调而产生系统震荡,甚至使系统失去控制。为了抑制这种震荡,再引入D参数,把D参数直接乘以系统角速度,再与P参数与角度误差的乘积相加,即可实现抑制系统震荡的效果[3]。具体函数代码如下:
angle_err = pid_Angle.SetPoint -angle;
angle_pid_out=pid_Angle.Proportion*angle_
err+pid_Angle.Derivative*(-angle_dot);
3.2 小车速度控制
要提高系统运行的稳定性,速度的控制也非常重要。速度控制的软件部分采用了增量式的PID算法,增量式PID的优点是只需计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小,这非常适用于像小车这种大动态、容易产生检测误差的环节[4]。P参数保证系统反应的灵敏度,I参数保证速度控制的精度,D参数抑制速度控制的超调现象[5]。
以下是速度PID控制的具体函数代码:
int IncPIDCalc(int NextPoint)
{
register int iError, iIncpid;
iError=sptr->SetPoint-NextPoint;
iIncpid=sptr->Proportion*iError-sptr->Integral*
sptr->LastError+sptr->Derivative*sptr->PrevError;
sptr->PrevError=sptr->LastError;
sptr->LastError=iError;
return(iIncpid);
}
4.结语
采用飞思卡尔K60单片机设计平衡小车控制系统,不仅采集效率高,而且传输速度快,控制实效性好。同时该系统还具有简单易用、小型、可靠等优点,对一般工业控制系统的设计有一定的指导和借鉴作用,在两轮直立车飞速发展的今天具有非常广的应用前景。
参考文献
[1]卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007.
[2]尹怡欣,陶永华.新型PID控制及其应用[M].北京:机械工业出版社,1998.
[3]冯智勇,曾瀚,张力,等.基于陀螺仪加速度计信号融合的姿态角度测量[J].西南大学学报(自然学版),2011,36(4):137-141.
[4]谢世杰,陈生潭,楼顺天.数字PID算法在无刷直流电机控制器中的应用[J].现代电子技术,2004,27(2):59-61.
[5]张吉昌,程凯,郑荣儿.单轴双轮自平衡车姿态检测方案设计[J].中国海洋大学学报:自然科学版,2009(S1):467-470.
注:本研究成果由2013年浙江省大学生新苗计划项目资助。