智能小车寻线道路设计要求是:在中间铺设了一条直径为0.5 mm的铜质漆包线,漆包线中有频率范围为20±2 kHz、电流范围为50~150 mA的正弦波信号。随着智能小车的发展,需适应更加复杂的赛道,例如直角弯、坡道、障碍等。文中设计的智能小车,是基于Kinetis K60单片机开发实现的,以电磁线圈作为感应传感器,采用偏差算法控制小车精准的寻线功能,从而实现智能小车智能快速稳定的寻线行驶。
1 硬件总体设计
智能小车系统由Kinetis K60主控模块、传感器模块、舵机控制模块、电机驱动模块、OLED显示模块、拨码开关模块、编码器测速模块、停车检测模块、障碍检测模块这9个部分构成。系统总体框架如图1所示。
除了以上9部分外还有电源模块,整个智能小车由7.2 V镍镉电池供电,其中由LM1117稳压芯片输出3.3 V为主控芯片K60、拨码开关模块、停车检测模块、OLED显示模块提供电源。由一块LM2940稳压芯片得到5 V电压单独供给传感器模块,另一块LM2940稳压芯片得到5V电压分别供给蓝牙调试模块、障碍检测模块、编码器测速模块和电机驱动模块,此外,通过试验可发现,S3010Futaba舵机可直接加7.2 V电压,此时舵机的响应速度也会提高,所以可直接将电池电压作为舵机的电源。舵机控制模块和直流电机均用7.2 V电压驱动。
电磁线圈采集到的交变电压信号经双运算放大器MAX4451放大后,通过二极管的二倍压检波电路将交变的电压信号检波形成直流信号,然后再通过单片机的A/D转换电路进行采集,获得正比于感应电压幅值的数值。
智能小车是以双电机方式工作,故采用4块BTS7971作为驱动芯片。BTS7971由一个p沟道的高边MOSFET和一个n沟道的低边MOSFET结合一个集成的驱动IC,形成能经受大电流通过的H桥的半边。因此4个BTS7971便能进行连接构成两个H全桥,进而实现电机的正反转。此外,使用 74HC244N三态八缓冲器隔离电机驱动模块,可防止电机转动产生的干扰信号灌入主控芯片而致损坏。
采用常开型塑封干簧管作为检测元件。在道路的起点和终点处埋有永久磁铁,当小车经过磁铁时,干簧管闭合,进而将这种信号传递给CPU,实现停车功能。将两个接近开关分别安装在小车两边对障碍进行检测。正常情况下,两个接近开关处于关闭状态0。通过调整好接近开关的检测距离,当道路某一边的障碍物进入接近开关的检测范围后,接近开关一直保持导通状态1,将这种信号的0和1变化传递到CPU,即可实现小车的障碍检测功能。
2 智能小车电磁寻线
2.1 传感器布置结构
采用“五横二竖加八字”排列的电磁线圈,如图2所示。此结构能使小车在直道、直角弯、S弯、十字弯,坡道上自主稳定地寻线行驶,具有抗干扰性强、稳定性高、机械强度高等特点。在高速运行的情况下仍能保持稳定的导航功能。
2.2 三次函数算法
在使用三次函数算法前应先进行预处理,以便快速利用三次函数求出偏差。预处理包括采样,求平均值,数据排序和归一化处理。由于不同道路的磁场强度会有所不同,先采样可获得道路磁场强度的最大值和最小值,这样智能小车对于不同道路的适用裕度会更宽,在实际投入生产和使用中有重要作用。三次函数算法的处理流程,如图3所示。
智能小车在初始化程序后,通过采样,取得各个电磁线圈在此赛道上磁感应电压的最大值和最小值分别储存在数组ad max[i]和ad min[i]中,以便系统快速高效地从数组中取值做比较,从而实现归一化。
每个电磁线圈采集5次磁感应电压后,通过去除其最大值和最小值求出平均值;这样起到了软件滤波的作用,减小了偶然误差。连续取5个平均值按时间先后进行排序并储存在二维数组ad3[i][5]里面,使得数据不断地更新,以便求出其加权平均值,减小系统误差。
求排序后平均值的加权平均值,取得与最后一次采集到最接近的磁感应电压值,再将每一个电磁线圈的加权平均值储存在数组ad4[i]中;将ad4[i]逐个与ad max[i]和ad min[i]比较:当ad4[i]>ad max[i],贝ad[5]=1.0;当ad4[i]<ad min[i]时,则 ad5[i];当ad min[i]<ad max[i]时,采用归一化后,e.jpg=d.jpg,进而实现磁感应电压值的归一化。归一化可简化三次函数算法,另外归一化后的值可供调试过程中便于观察电磁感应量变化的相对大小。
采用三次函数算法和固定斜率变化融合方法。在一定范围内,三次函数计算的偏差较精确,一旦超过该范围,则融合“一”字电感的变化,尽量使偏差的变化线性化。采用这种方法的优点是在进行各种弯道的判断、处理,尤其是对直角的处理,能做到稳定、准确、快速地使系统做出判断。各电磁线圈偏移赛道中心线的距离z 和归一化后的磁感应电压值ad5[i]的关系如图4所示。
假设曲线的三次函数为
y=ax3+bx2+cx+d (1)
式(1)中y=ad5[i],x为电磁线圈偏移赛道中心线的距离,取图2中传感器1、4、6、9的ad5[i]作为y值;此时x分别为-12,-6,6和12,由此可解出a,b,c,d值。
对式(1)三次函数求导后为
y’=3ax2+2bx+c (2)
将上述程序中求得的a,b,c,d值代入式(2)即可得到偏差x。
上述理论计算得出的偏差与实际的偏差总会因为机械等原因存在一定的误差,为了减小该误差,加入了偏差曲线拟合环节。再通过对偏差拟合进行补偿,使得曲线拟合得到改进。这样大幅减小了偏差,最大限度地提高了拟合的精度。将小车实际的偏差x和理论计算得出的偏差y,使用Matlab曲线拟合工具箱做曲线拟合便可得到相应的曲线拟合方程。偏差拟合曲线曲线拟合情况如图5所示。
3 智能小车速度控制
3.1 增量式PID控制
上述曲线拟合补偿出的偏差又实时快速地变化着,正可用于小车速度的控制。小车系统采用增量式PID控制算法,其结构简单,具有高适应性、易调整参数性,对于控制模型不准确、参数变化大的控制对象,此方法可得到满意的结果。因其输出每次只有控制变量,可通过简单的逻辑判断来降低故障的输出,以避免了系统故障的发生。其控制方法如下
h.jpg
3.2 差速电机算法
为使智能小车在过弯道时的路线更佳、速度更快、平稳性更高,小车在上述增量式PID控制算法中加入了差速电机算法,即采用闭环有差反馈式调节系统实现小车的差速策略。为达到差速电机的目的,将小车差速电机的数学模型搭建如图6所示。
假设V1为左电机速度;V2为右电机速度;R为弯道半径;L为前后轮的间距,最优路径的转向角为αu,则小车的平均速度为
这样便可根据实际情况需要,来调整预设的期望速度大小。编码器通过采样电机转过的齿轮数转化成电信号,即可当做单片机脉冲的触发信号,单片机通过对脉冲计数就可得到转速的具体数值,再将该转速减去期望转速,然后乘以对应系数,得出脉冲宽度调制的占空比。根据上述三次函数拟合出的偏差大小,单片机就可用增大或减小占空比反馈的方法实现对电机的加减速控制,从而实现电机的差速运行。
4 结束语
介绍了一种智能小车在磁导航过程中磁感应信号的处理方法,采用了“五横二竖加八字”排列的电磁线圈,通过三次函数算法算出小车相对路径中心的偏差,辅之以差速电机算法,在高速运行的情况下仍能保持平稳精确的运行状态。测试表明,该算法具有良好的实时跟踪性和准确性。