APP下载

基于ARM7+μC/OS-II的智能循迹小车设计

2012-12-23霖,张

科技传播 2012年23期
关键词:舵机赛道芯片

张 霖,张 桐

1.中南大学,湖南长沙 410086

2.厦门大学嘉庚学院,福建厦门 363105

汽车是改变人类生活的一项重要发明,其产生和发展已有百年,从福特的福特汽车到现在的奔驰,汽车的每一次进步都标志着整个人类社会的巨大飞跃。时至如今,智能化已成为时代的潮流,所以开发车辆自动驾驶系统也成为大势所趋。

在本文中,设计了一种能够在铺有引导线的跑道上自动循迹的小车,小车的控制核心采用荷兰NXP 公司生产的LPC2131 芯片,并采用电磁引导的方式进行循迹,即通过在跑道中心线铺设一条通有200mA、20KHz 电流的导线产生磁场来进行导航,并在赛车后轮轴传动齿轮上加装脉冲编码器来测量后轮转速。鉴于传统的“裸机编程”形式实时性较差且不稳定,故而本设计中将实施操作系统μC/OS-II 应用到车辆的自动控制之中,并且应用了PID 控制算法以期获得更好的结果。

1 系统硬件设计

智能车的设计由采用ARM7 核的LPC2131 芯片作为核心控制器.如图1 所示,系统硬件分为五个模块:核心控制单元、路径识别、微控制器、电机驱动、电源管理和人机交互等模块。其中,系统模块图如图1 所示。

图1 系统整体模块图

1.1 核心控制模块

核心控制模块采用LPC2131,其特点是片内资源丰富,有PWM、AD、SPI、I2C、CAN 等多种通信接口,且封装小、功耗低,适合智能车系统的使用。系统引脚的分配如下:P0[27:30]为AD 输入模块,接收从传感器得到的信号,P0.21、P0.9 为PWM 信号输出口,用于控制智能车的转向和行驶,P0.10 口作为智能车测速输入口,用于接收脉冲编码器采集到的信号。

1.2 电源管理模块

智能车供电采用7.2V 锂电池供电,其中,小车电机直接由锂电池通过电机驱动电路供电,而其他部分则经过降压和稳压后供电。赛车的电机驱动电路必须和核心控制电路分离,因为在电机运行的时候会产生很大的电流,不过不合控制电路分开的话,过大的电流通过地线回流会损坏控制芯片。

核心控制电路中,由LM7806 稳压芯片将电源电压转化至6V 供舵机使用,由LM2940 将电源电压稳至5V 供除LPC2131外的集成电路芯片使用,由LM1117 将电源电压稳至3.3V 供LPC2131 芯片使用。

1.3 路径识别模块

在路径检测上,使用通有100mA,20kHz 的导线作为引导线,根据麦克斯韦理论,变换的电场会产生变化的磁场,所以智能车可以通过处理由安装在赛车前部的4 个电感在切割磁感线时产生的感应电动势来判断当前位置。

图2 赛道周围磁场分布

图3 长直导线磁场分析

由于赛道宽度远小于电磁波波长,故而赛道可视为缓变磁场。所以,我们可以使用分析静态电磁场的方法来分析导线附近的电磁场分布,进而检测位置。根据毕奥-萨伐尔定律可知:在通有恒定电流I,长度为 L 的通电直导线周围存在电磁场,距离导线r 处P 点 (如图3 所示)电磁感应强度为:

可得:

由于赛道的导线很长,可近似视为无限长,故而,上式中θ1=0,θ2=π。可得:

如图4 所示:

图 4 无限长直导线电磁分析

根据电感线圈在磁场中感应电动势计算公式:

可知,在传感器靠近电磁线的地方,传感器获得的电压信号越大,反之则越小,如图5 所示。

图5 感应电动势E 与距离x 之间的关系

由此,我们可以较容易地获取赛道中心线的位置。首先,对所有的传感获得的数据进行处理,找出得到最大数据传感器的位置,实现对赛道信息的粗定位,然后再以最大值传感器位置为中心,借助其左右传感器获取的信号的大小来确定是偏左还是偏右,以实现更加精确的定位。

经过多次的研究和实验发现, 运用分段处理和归一化运算可以有效的解决上述问题。分段处理就是把相邻传感器之间的中心位置作为运算的分界点,分别处理各段的数据信息;归一化运算就是将得到的数据与曲线最大值之间的比值来计位置偏移量,这样将比值控制在0-1 之间,用一个常量乘以这个比值就可以相应的位置。这样获得的比例位置关系非常的接近直线关系,可以近似为一次函数来处理。其仿真关系如图 6 所示。

图6 分段处理和归一化运算

1.4 电机驱动模块

电机驱动模块包括两个部分:电机驱动部分和测速部分。

电机驱动部分采用了全桥驱动的原理,如图7 所示,通过4 个组成H 状的MOS 管的通断来控制电机的转速和正反转。

图7 H 桥驱动原理图

在具体实现上,电源模块采用了两块BTS7960 构成一个全桥驱动电路。BTS7960 是一块集成的电机驱动芯片,每块BTS7960 芯片内部集成了一个半桥电路,将两个BTS7960 连接,便能够组成一个全桥驱动电路。

测速部分使用了光电编码器来实现。光电编码器内部有一与电动机同轴转动的光栅,有一发光二级管照射在光栅之上,当光栅随电机转动的时候,发光二级管的光线透过光栅周期性的照射到另一侧的光电二极管上,便产生脉冲信号,经输出装置传送至微处理器中,系统通过对脉冲进行计数来确定当前电机转速。

1.5 赛道电源模块

赛道电源旨在驱动赛道中心线下铺设的0.1mm~0.3mm直径的漆包线,如图8 所示,其频率范围为频率范围:20K±2KHz,其电流范围为电流范围:50mA~150mA。

图8 线圈驱动电压与电流示意图

赛道电源模块由振荡电路、功率输出、恒流控制电路和电源4 个部分组成,如图9 所示。其中,振荡电路由555 时基电路组成,用于产生脉冲信号;功率输出电路由L298 电机驱动芯片组成,用于提高输出信号的功率使之能够使用;恒流电路运用三极管恒流特性,将输出电流稳定在50mA ~150mA 范围内。

2 控制策略

2.1 PID 控制理论介绍

智能车的控制采用PID 控制理论。PID 控制分为3 个部分:即比例(P)控制 、积分(I)控制和微分(D)控制。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。在积分控制中,控制器的输出与输入误差信号的积分成正比关系,这样可以通过积分项的增加而消除稳态误差。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,这样就可以通过当前和以前的误差预测误差变化的趋势。

2.2 智能车速度控制

由于智能车电机的供电直接由7.2V 电池完成,而电池的电量却是时时刻刻在下降,所以选用绝对的PWM 占空比来控制电机转速时不现实的。只能通过每次输出占空比的增量来控制电机,才能保证控制的有效性。

由以上分析可知,智能车的速度控制需要采用增量式的PID 控制,即:

其中e(k)即为每次速度检测所得速度值与偏差值之间的误差。

但是,当此控制系统遇到较大的偏差时,由于PID 算法固有的特性,就会造成鲁棒性不足的问题。

所谓鲁棒性,鲁棒是Robust 的音译,也就是健壮和强壮的意思,指标称系统所具有的某一种性能品质对于具有不确定性的系统集的所有成员均成立,如果所关心的是系统的稳定性,那么就称该系统具有鲁棒稳定性;如果所关心的是用干扰抑制性能或用其他性能准则来描述的品质,那么就称该系统具有鲁棒性能。

为了弥补这一缺点,本设计在算法设计中为PID 的调节设定了边界,当系统误差过大的时候,便直接输出最大或最小值以期快速改变减小误差,防止超调。

图9 为智能车速度控制流程图。

图9 赛道电源模块图

2.3 智能车转向控制

智能车的转向主要由控制舵机完成,而舵机会严格地按照单片机输出的PWM 信号占空比来转向相应的角度,因此,不同于电机,舵机可以使用PWM 占空比的绝对值来控制。

而舵机是一个延迟很大的机械机构,如果使用PID 算法中的I 项会造成很大的机械延迟,并且I 项对于过去数据的依存度很高,累加运算量大,如果中间出现故障,会极大地影响智能车转向的控制,所以,在舵机控制中只使用了PD 控制,去掉了I 项,即:

与电机相同,舵机控制中也存在着鲁棒性的问题,所以,也要为PID 的调节设定了边界,当系统误差过大的时候,便直接输出最大或最小值以期快速改变减小误差,防止超调。

图10 速度控制流程图

舵机控制流程图如图11 所示。

图11 转向控制流程图

3 系统软件设计

3.1 μC/OS-II 系统简介

在本设计中,选用了嵌入式实时操作系统μC/OS-II。μC/OS-II 是由Labrosse 先生编写的一个开放式内核,最主要的特点就是内核占用空间小,源码公开。μC/OS-II 是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU 使用权。这个特点使得它的实时性比非占先式的内核要好。μC/OS-II 和大家所熟知的Linux 等分时操作系统不同,它不支持时间片轮转法。μC/OS-II 是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,μC/OS-II 把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU 的使用权,只有等它交出CPU 的使用权后,其他任务才可以被执行。μC/OS-II 对共享资源提供了保护机制。正如上文所提到的,μC/OS-II 是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。

3.2 系统任务划分

表1 任务划分及说明表

图12 任务控制关系图

在本系统的设计中,共定义了4 个任务:系统启动任务Task_Init()、路径检测任务Task_Location()、转向控制任务Task_Turn()和速度控制任务Task_Speed()。调度工作可分为两个部分:最高优先级任务的寻找和任务切换。

在本系统中,任务划分及说明如表1 所示。如图12 所示,操作系统任务调度和通信流程如下:系统启动后,执行Task_Init()来进行系统的初始化,在初始化任务执行完毕后,利用系统内置的OSTaskDel()函数,使得该任务进入休眠状态。此时,路径检测任务Task_Location()将成为优先级最高的任务并一直执行。当Task_Location()检测到路径发生变化的时候,会通过邮箱传递数据到Task_Turn(),并由Task_Turn()控制舵机PWM信号的输出;同时,Task_Location()检测到路径发生变化的时候,也会通过邮箱将预期需要达到的速度发送到Task_Speed(),Task_Speed()根据在定时器中断服务函数中得到的编码器转数来计算速度值,并决定PWM 输出。任务优先级较低,但是同样会一直执行,并且每次中断都会向该任务发送信号量使其进入就绪态。

4 结论

智能车是一个自动行驶的智能控制系统,它从传感器中采集信息,而后信息流入智能车的大脑,即是微处理器。处理器分析数据并运算后得出指令并传输给执行机构。这就是一个完整的智能系统,而本文的任务就是如何去完成这个系统并转化到智能小车上。

本文设计的系统能够较好地满足智能车行驶的需要,并且有一定的扩展性。在本文中完成了智能车设计的软件、硬件和机械3 个方面。

在软件方面,本设计在嵌入式实时操作系统μC/OS-II 开发了驱动程序并且设计了系统的整体程序,并运用了PID 控制算法,较好的完成了智能车行驶控制的任务,具有良好的实时性,对于小车行驶中可能遭遇到的各种问题都能很好的应对。

在硬件方面,本设计选择了一款适合小车的ARM7 系列芯片,并以此为重心完成了小车各个模块的硬件设计,并在此基础上,又完成了各个部分的接口电路设计,使得整个小车能够耦合成为一个有机的整体。

[1]基于交变磁场检测的路径识别智能车控制系统设计.

[2]张自友.乐山师范学院学报,2010,25(12).

[3]刘益民,等.转台伺服系统中高精度测速方法的研究与实现[J].科学技术与工程,2007(8).

[4]杨巍.基于内模整定的PID算法应用与研究.华北电力大学(北京),2010.

[4]司利云,等.嵌入式实时操作系统μC/OS-Ⅱ及其应用[J].电子产品世界,2002.

[5]晏五一.基于ARM的新型远程配变监控终端研究与设计[D].湖南大学,2007.

[6]郭炜璜.PID控制在清梳联系统中的应用[J].国际纺织导报,2009(2).

猜你喜欢

舵机赛道芯片
自制冰墩墩不能滑出“法律赛道”
科创引领,抢跑新赛道
征服蒙特卡洛赛道
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
无人驾驶,先上赛道如何?
基于高速同步485总线通信的多通道舵机控制器设计
芯片测试
多通道采样芯片ADS8556在光伏并网中的应用
基于云模型的舵机同步控制