鲁 云,赵 亮,陈晓东,武 丽
(西南科技大学信息工程学院,中国绵阳 621000)
全国大学生“飞思卡尔”杯智能汽车竞赛根据车模检测路径的方案不同分为电磁、光电和摄像头3 个赛题组.电磁组是通过感应由赛道中心电线产生的交变磁场进行路径检测.第七届全国大学生“飞思卡尔”杯智能汽车竞赛规定电磁组车模直立行走,在比赛过程中只允许车模原有2 个后轮着地.针对此要求,作者提出一套设计方案,实践证明该方案应用在磁导航的两轮智能车中具有良好的自主寻迹效果.
系统以飞思卡尔公司的32 位单片机PK60X256VLQ100 为核心,设计了电源管理模块、加速度检测模块、角速度检测模块、路径识别模块、电机驱动模块、车速及车体运动方向检测模块、无线传输模块、串口调试模块和液晶显示模块等9 个部分,系统框图如图1所示.
图1 中,首先由加速度和角速度检测模块分别测量车模的加速度和角速度,送入单片机计算得到车模初始状态的平衡点,然后由互补滤波算法把加速度检测模块和角速度检测模块输出的信号进行融合[1-4],得到一个实时反应车模倾角的信号,再由此信号通过PID 算法控制车模平衡.在车模保持平衡的前提下由路径识别模块采集到的信号通过PID 算法控制车模前进速度和方向[5-6].系统中还设置了串口调试模块和无线传输模块,分别用于把车模运行时的数据通过有线或无线的方式实时发送到上位机以便于观察和调试.液晶显示模块可以把车模运行时的相关数据实时显示出来.
系统的核心控制器为PK60X256VLQ100,PK60X256VLQ100 是飞思卡尔公司生产的一款32 位单片机,片内总线时钟频率可达100 MHz,片内资源包括64 KB RAM、256 KB Flash、256 KB Program Memory 以及内部自带晶振,拥有外部GPIO、ADC、UART、PWM、FTM、PIT、I2C 等模块接口.
智能车的动力源为一块容量为2 000 mA,额定电压为7.2 V 的镍镉电池.电源管理模块为系统各个部分提供所需要的电源,可靠的电源是整个系统正常工作的基础,系统电源管理模块框图如图2所示.
图1 系统框图Fig.1 System block diagram
图2 电源管理模块框图Fig.2 Block diagram of power management
加速度传感器可测量由地球引力作用或者物体运动所产生的加速度,其输出的是与加速度成正比的模拟电压信号.选用MMA7260 作为本系统的加速度检测器件.MMA7260 是一款三轴低重力加速度半导体加速度计,可以同时输出3 个方向上的加速度模拟信号[7],加速度传感器如图3所示.
图3 加速度传感器MMA7260Fig.3 Acceleration sensor MMA7260
通过软件设置可以使MMA7260 各轴信号输出灵敏度为800 mV/g,这个信号不需要进行放大,可以直接送到单片机进行AD 转换.本系统只选用Z 轴方向上的加速度值,以便计算出车模相对于竖子在地面时的倾角.当车模发生倾斜时,重力加速度g 在Z 轴方向形成加速度分量,从而引起该轴输出电压变化,其变化规律为:Δu=kgsin θ,式中,k 为加速度传感器灵敏度系数,g 为重力加速度,θ 为车模以竖直于地面为基准的倾角.
由于车模在运动时本身摆动所产生的向前或向后的加速度会带来很大的干扰信号,它叠加在上述测量信号上使得输出信号无法准确反映车模的倾角.加速度传感器安装在车模上,距离车轮轴高度为h,车模摆动具有的加速度为β,车模运动向前或向后加速度为α,那么在加速度传感器Z 轴上实际产生的加速度为hβ+α.为了减少车模摆动引起的干扰信号,加速度传感器在车模上安装得尽量低,但是仍然无法彻底消除车模摆动带来的影响.因此对于车模直立平衡控制所需要的倾角信息还需要通过另外一种器件获得,那就是角速度传感器——陀螺仪.
陀螺仪可以用来测量物体的旋转角速度[8].选用ENC-03 作为本系统的角速度检测器件.ENC-03 角速度传感器放大电路严格按照其官方数据手册中的参考电路设计,这里不再赘述.
在车模上安装陀螺仪,可以测量车模倾斜角速度,将角速度信号进行积分得到车模的倾角.因为陀螺仪输出的角速度信号要经过积分运算得到车模倾斜角度,如果角速度信号存在微小的偏差和漂移,经过积分运算后会形成累计误差.这个误差随着时间的推移逐渐增加,最终导致电路饱和,无法得到正确的角度信号.针对此问题,本文利用前述加速度传感器获得的角度信号与陀螺仪输出信号经积分后获得的角度α 进行互补滤波,得到车模倾角θ,车模角度控制框图如图4所示.
图4 车模角度控制框图Fig.4 Model car's angle control block diagram
在比赛中,两轮智能车通过感应赛道中心下铺设的电线进行路径识别,电线规格是直径为0.1~0.8 mm的漆包线,其中通有20 kHz(范围为(20 ±1)kHz),100 mA(范围为(100 ±20)mA)的交变电流.以电感线圈作为路径检测传感器,在智能车行驶的过程中,电感线圈输出的感应电动势是幅值和相位随着线圈与载流导线相对位置变化而变化的正弦波,然后将此正弦波信号经过正弦波峰值检测电路转换成对应的直流电压信号,供给单片机进行A/D 采样转换,以获取电感线圈与赛道的当前位置关系.路径识别模块包括路径检测模块和正弦波峰值检测电路.利用路径检测模块的输出信号,通过正弦波峰值检测电路获得车模当前的位置信息.正弦波峰值检测电路详细设计参见文献[9].
路径检测模块采用4 个均匀分布在一条检测直杆上的电感线圈构成,其中左右2 个电感线圈平行于信号检测杆,用于判断车模与赛道的相对位置关系;中间2 个电感线圈分别向信号检测杆中间倾斜45°,用于预测车模前方的路径信息.
本系统选用BTS7960 作为电机驱动芯片[10].BTS7960 是应用于电机驱动的大电流半桥高集成芯片,它带有1 个P 沟道的高边MOSFET、1 个N 沟道的低边MOSFET 和1 个驱动IC.P 沟道高边开关省去了电荷泵的需求,因而减小了EMI.集成驱动IC 具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过电流及短路保护的功能.BTS7960 通态电阻典型值为16 mΩ,驱动电流可达43 A.因此完全能胜任本设计.电机驱动模块[11]电路图严格按照官方资料设计,这里不再赘述.
车模在运行过程中需要实时监控其速度和运动方向,本系统在左右电机上各安装一个500 线两相光电编码器.利用单片机内部计数器在固定时间间隔内测量由编码器返回的脉冲信号个数可以获得车模的运动速度.由于A、B 两相相位差为90°,可通过比较A、B 两相信号先后顺序来判断编码器的正反转,即车模的运动方向.
为便于系统参数的观察和调试,需要把车模运行时的数据发送到上位机.设计了无线传输模块和串口调试模块,分别用于把车模运行时的数据以无线和有线方式发送到上位机.本系统选用NRF905 作为无线传输模块[12],采用RS-232 作为串口调试模块.
本系统控制软件使用C 语言编程,采用模块化程序设计思想,以主程序为核心,设置了单片机初始化模块、串口发送模块、无线发送模块、液晶显示模块、车模平衡控制模块、车模速度控制模块和车模转向模块等.
主函数主要有执行系统初始化、发送系统相关参数到上位机、液晶显示、判断车模倾角是否大于25°的功能.其流程图如图5所示.
系统中断函数主要负责处理控制车模平衡、速度和转向程序.进入中断函数时首先检测车模平衡点,然后采用互补滤波算法把由加速度传感器和陀螺仪分别得到的角度信号进行滤波,再利用PID 算法将滤波后得到的车模倾角信号通过电机驱动模块控制车模平衡.在车模保持平衡的前提下,利用PID 算法将路径识别模块返回的信号通过电机驱动模块分3 步控制车模的前进速度、转向和加减速.系统中断函数如图6所示.
图5 系统主函数流程图Fig.5 Flowchart of system main function
图6 系统中断函数流程图Fig.6 Flowchart of system interrupt function
互补滤波算法公式为
angle_new=A_gyro*(angle_old+Gyroangle)+B_acc*Accangle),
式中:angle_new 为第n 次滤波后的角度,angle_old 为第n 次滤波前的角度,A_gyro 为陀螺仪滤波权重系数,B_acc 为加速度滤波权重系数,Gyroangle 为第n 次陀螺仪采样的角速度值,Accangle 为第n 次加速度采样的角度值[13-14].
两滤波权重系数之间存在关系为A_gyro+B_acc=1.利用公式A_gyro=t/(t+T),t 为时间常数,它决定了两者的各自权重;对于时间周期小于t 的,陀螺仪将会占主要作用,其加速度计的噪声将被过滤掉;相反,加速度计将起主要作用而抑制陀螺仪的积分漂移.得到A_gyro 后,即得到B_acc,然后再进行微调就得到理想的滤波参数.
车模平衡控制采用了PD 算法,其公式为
acceleration=kp*angle_new+kd*Gyroangle,
式中:angle_new 为最近一次车模倾斜角度,Gyroangle 为最近一次车模的角速度kd.调参数方法:先将比例控制作用由小变到大,观察各次响应,直至得到反应快、超调小的响应曲线.然后置微分参数kd=0,逐渐加大kd,同时相应调整比例系数,反复试凑至获得满意的控制效果和PD 控制参数.
车模行驶控制采用了PI 算法,其公式为:
run_speed_TempNew=nDeltaValue *P+run_speed_Tempkeep*I,
式中:nDeltaValue 为最近一次速度期望与实际速度的偏差,run_speed_Tempkeep 为速度偏差的累积.调参数方法:先将比例控制作用P 由小变到大,观察各次响应,直至得到反应快、超调小的响应曲线,再调节积分控制作用I 参数来消除控制稳态误差.
车模运动控制总框图如图7所示.由互补滤波得到的车模倾角θ 和陀螺仪输出的角速度ω 进行PD 运算,获得控制车模平衡的电机驱动信号.利用左右电感线圈信号差值按照PD 算法进行运算,得到控制车模运动方向所需的电机驱动信号.通过中间2 个电感线圈信号差值进行P 运算,获得车模减速所需的信号.由车模给定速度与速度反馈信号做差后按照PI 算法进行运算,得到车模实际运行速度所需的电机驱动信号.因此,电机驱动模块在车模平衡控制信号、车模速度控制信号和车模运行方向控制信号的分时作用下驱动2个直流电机来控制车模的平衡、速度和方向.
图7 车模运动控制总框图Fig.7 Total block diagram of model car's motion control
以PK60X256VLQ100 单片机作为控制核心,设计磁导航的两轮智能车控制系统.该系统是一种典型的快速、多变量、非线性、强耦合和自不稳定系统.在系统控制上主要研究了基于互补滤波算法的加速度传感器与陀螺仪信号融合方法和控制车模平衡及行驶的先进PID 算法.实验证明:该磁导航两轮智能车能在任意的规范赛道上稳定、准确、快速地行驶,寻迹效果良好.系统信号及控制响应速度快,系统的稳定性和抗干扰能力强.该系统方案也可以用于其他类似的轮式机器人中,应用前景广阔.
[1]郜园园,阮晓钢,宋洪军,等.两轮自平衡机器人惯性传感器滤波问题的研究[J].传感技术学报,2010,23(5):696-700.
[2]张吉昌,程 凯,郑荣儿.单轴双轮自平衡车姿态检测方案设计[J].中国海洋大学学报:自然科学版,2009,39(增):467-470.
[3]冯智勇,曾 瀚,张 力,等.基于陀螺仪及加速度计信号融合的姿态角度测量[J].西南师范大学学报:自然科学版,2011,36(4):136-141.
[4]杨兴明,余忠宇.自平衡控制系统的平衡性仿真[J].计算机工程与应用,2011,47(24):245-248.
[5]张志强.基于STM32 的双轮平衡车[J].电子设计工程,2011,19(13):103-106.
[6]李涵武,崔宏耀,张娜伟,等.基于电磁场检测的智能寻迹模型车设计[J].黑龙江工程学院学报,2011,25(2):23-25.
[7]杨继志,郭 敬.基于MMA7260 两轮自平衡小车控制系统设计[J].机电产品开发与创新,2011,24(3):144-146.
[8]吴晓鹏,赵祚喜,黄 健,等.CRS10 陀螺仪及其在角速率与转角测量中的应用[J].电子设计工程,2010,18(8):39-41.
[9]赵 亮,鲁 云,陈晓东,等.磁导航智能车中的正弦波峰值检测电路设计[J].电子世界,2012(7):137-139.
[10]陈 军,杨数强,王军强.一种新型智能车电机驱动电路的设计与实现[J].电子质量,2011,32(3):32-34.
[11]肖文英,黄守道.基于PR 控制器的永磁同步电机弱磁控制研究[J].湘潭大学学报自然科学版,2011,33(4):108-112.
[12]张孝云,江小华.基于nRF905 的无线加速度测量系统设计[J].现代电子技术,2011,34(17):153-155.
[13]赵 莉,陈庚华,张利华,等.互补型自适应滤波器在心磁信号处理中的应用[J].物理学报,2004,53(12):4420-4427.
[14]费万民,吕征宇,钱 挺.基于互补策略的新型单周控制有源滤波器[J].电力系统自动化,2003,27(3):50-53.