APP下载

汽车巡航控制系统的软件设计与仿真

2015-01-09肖茵茵肖统民

关键词:增量按键车速

肖茵茵,肖统民

(1.广东技术师范学院计算机科学学院,广东广州510665;2.汕头大学工学院,广东汕头515063)

汽车巡航控制系统的软件设计与仿真

肖茵茵1,肖统民2

(1.广东技术师范学院计算机科学学院,广东广州510665;2.汕头大学工学院,广东汕头515063)

基于实际的小车模型,使用PIC16F877A单片机、AH3144霍尔传感器等部件,以C语言为软件编程语言,设计实现了一个汽车电控巡航控制模拟系统.首先对系统总体结构进行介绍,然后详细阐述了系统各功能模块的软件设计方案,并对其软件核心控制策略—增量式PID算法进行改进,最后给出了部分程序示例及仿真调试结果.实验结果表明,改进的增量PID算法使系统响应更快,增加了巡航控制的稳定性,整个系统能较好地满足自动巡航的各项功能需求,具有一定的市场应用价值.

巡航控制系统;增量式PID算法;软件设计;单片机

0 引言

巡航控制系统CCS(Cruise Control System)又称为定速巡航系统,是一种汽车自动行驶装置.该系统可通过巡航控制开关设定某个车速,当道路坡度或空气阻力等外界干扰因素不断变化时,车辆会自动转换档位和车速大小,使发动机维持有利转速.在巡航控制期间,驾驶员只需要手握方向盘而不用踩着加速踏板,减轻了驾驶员的驾驶操纵劳动强度,提高了行驶舒适性[1].由于必须考虑外界环境和汽车本身状况这两个因素,巡航控制系统的设计非常复杂.从20世纪60年代开始,国外各著名汽车厂商相继对巡航控制系统进行研制,历经机械式、数字式、智能化自适应式等阶段的发展,该系统已成为了中高档汽车上的热门装置,但进口配置成本较高.相比较而言,国内汽车工业起步较晚,所研制的巡航控制系统控制精度不高,稳定性不强[2].

在维持巡航控制系统原有成本的前提下,改进其软件设计方案是提高系统性能的有效方式.例如,有研究将模糊控制技术或遗传算法引入数字式巡航控制系统的软件核心控制策略—比例积分微分PID(Proportional Integral Derivative)调节方式中,使系统控制更加灵活[3-6].本文在实际的小车模型和PIC16F877A单片机、AH3144霍尔传感器、L298N电机驱动芯片、1602字符液晶显示屏等硬件基础上[7-10],探讨了汽车电控巡航控制模拟系统的软件设计及仿真调试方法.在对系统总体结构进行介绍后,文章详细阐述了各功能模块的软件设计方案,在车速调整模块中,对其增量式PID算法加以条件限制,以增强系统的响应速度和稳定性,最后给出了以C语言实现的部分程序示例及仿真调试结果.实验结果表明,改进的增量式PID算法是有效的,整个系统的巡航控制效果良好,是一种较为经济实用的巡航控制系统方案.

1 系统总体结构

数字式CCS由输入装置、电控单元ECU(Electronic Control Unit)和执行装置等组成.ECU是整个系统的核心,当汽车各种相关传感器和开关将操作指令和车速信号送入ECU后,ECU控制电机驱动电路,计算并自动调节发动机节气门开度,最终调整车速[11].

本系统的总体结构如图1所示:PIC16F977A单片机是核心的电控单元;在输入端,控制开关用于传递“系统复位”等几种操作指令,车速信号发生源由小车模型上的霍尔传感器AH3144模拟,这与实际中用防抱死刹车系统ABS(Anti-locked Braking System)自带的车速传感器或汽车里程表的脉冲信号检测车轮速度效果相当;在执行端,电机驱动电路部分的核心为L298N全桥式步进电机专用驱动芯片,而实时车速呈现在1602字符液晶显示屏上.具体电路原理和连接可参考文献[1]和[7-10],这里不再赘述.

图1 巡航控制系统总体结构图

2 软件设计方案

在既定的硬件结构下,合理的软件设计方案将最大程度地提高系统的可用性、稳定性与安全性.本节将对巡航控制系统电控程序各主要模块的设计方法进行介绍,并在第3节中对本方案的实际效果加以说明.

2.1 程序主要模块

本系统的电控程序主要模块如图2所示.主程序负责协调运行,其他各模块的主要功能如下:

图2 巡航控制系统电控程序主要模块图

(1)按键检测:负责系统复位、进入巡航、加速微调、减速微调和取消巡航等按键的扫描和获取,控制单片机实现对应功能;

(2)LCD显示:显示当前车速、设定车速、巡航状态等信息,方便用户了解当前系统工作状况;

(3)车速检测:通过统计单位时间内霍尔传感器接收到的脉冲串数目,计算当前小车实际车速;

(4)车速调整:通过自动控制算法控制输出模块,使小车实际车速逼近或等于设定车速;

(5)PWM(Pulse Width Modulation)输出:负责车轮电机的驱动,使小车正常前进.

2.2 按键检测模块

2.2.1 按键软件消抖法按键开关一般为机械弹性开关,由于机械触点的弹性作用,按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开,因此在闭合及断开的瞬间均伴随有一连串的抖动.抖动时间的长短由按键的机械特性决定,一般为5-10 ms.键抖动会引起一次按键被误读多次,为确保单片机对按键的一次操作仅作一次处理,必须去除按键抖动.按键消抖可采取硬件或软件方法,为了降低硬件开销,本系统采用了软件消抖方式:检测出键闭合/释放后执行一个延时程序,产生15 ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持原来的状态电平,才确认为有效的按键操作.

2.2.2 按键检测状态机按键检测模块采用有限状态机对按键进行识别处理,按键各状态的定义和之间的转换关系如图3所示.程序初始化时,将设置定时器中断(15 ms中断一次),并将状态值State置为S0.每次中断发生时,都将扫描各个按键的当前状态.

图3 按键检测状态机

2.3LCD显示模块

LCD显示模块需要设置好1602字符液晶显示屏的驱动,包括初始化、读写指令或数据、清屏、在指定位置显示字符/字符串/有符号长整数/浮点数等.这些都为标准设计,这里不再赘述.

2.4 车速检测模块

为了测量车轮转速,小车模型的车轮上附带有一块小磁铁,霍尔传感器正对该磁铁.车轮每转一周,霍尔传感器便产生一个脉冲,霍尔器件电路部分将这些脉冲串传送到单片机,单片机便根据接收到的脉冲序列的频率计算出车轮实际转速.频率测量的方法有多种,其中脉冲周期测频法(T法)在低频检测时精度较高,由于车轮转速不高,因此这里采用T法对车速信号进行频率测量.

2.4.1 脉冲周期测频法与车速换算脉冲周期测频法(T法)是在待测信号的一个周期T内,记录标准频率信号变化次数N,其频率F为:

T法的关键是如何确定基准周期T,为了降低测频误差,我们通过单片机集成的定时器来实现周期测量.单片机内信号的最高频率取决于晶振频率,由于所测信号的每一个脉冲的高低电平要持续至少一个机器周期,即它的周期不得高于2倍的机器周期;另一方面,一个机器周期等于6个状态周期,一个状态周期等于2个晶振周期.因此被测周期必须满足下列关系:

设车轮直径为D(单位为m),车轮每转一圈霍尔传感器输出N0个脉冲,单位时间T(单位为s)内单片机接收到N个脉冲,则实时车速v与测试所得频率的关系为:

当汽车在实际行驶时,由于车型不同,车轮直径也不同;即使车型相同,车轮直径也将随轮胎内的实际气压变化而变化,因此,在公式(3)中,车轮直径D需要在实际调试中确定.

2.4.2 实时车速检测过程单片机中定时器1测量一次脉冲周期的方法如下:为了准确计时,在测量周期的过程中子程序将关闭全局中断.由于按键扫描等模块要用到定时器0中断,子程序不能一直关闭中断,为了降低总中断关闭带来的影响,计时器1的最大计时值设为131.070 ms:全局中断关闭时,计时器1立即计时,如果在131.070 ms时长范围内单片机未能获取脉冲翻转,程序将终止速度测量,并认为车速为0;如果在计时的时长范围内单片机捕捉到脉冲翻转,程序将计时器1的计时值清零,并再次判断脉冲周期是否超过计时范围(131.070 ms),如果脉冲周期没有超过计时范围,程序将进行实际车速换算,否则,程序认为实际车速为0.此外,考虑到脉冲干扰和测量误差,程序将对车速进行多次测量,并以平均值作为最后的车速值.

2.5 车速调整模块

在现有的CCS软件设计中,多采用比例积分微分PID(Proportional Integral Derivative)自动控制策略实现车速调整和稳定功能.PID控制器是一个在工业控制应用中常见的反馈回路部件,可以把输入值和参考值进行比较,根据所得的系统偏差值,通过比例、积分、微分计算出新的输入值(控制量),使系统的输出值达到或者保持在参考值[1].

2.5.1 数字化PID控制算法原理由于计算机控制是一种采样控制,不能像模拟控制那样连续输出控制量,因此在实现数字式PID控制算法时,必须对积分部分和微分部分做离散化处理:以k为采样序号,用求和的形式代替积分,用增量的形式代替微分.数字化PID算法控制车速的原理如图4所示:

图4 数字化PID控制算法原理图

当第k次采样时,车速偏差ek的计算公式为(rk为驾驶员设定的巡航速度,ck为汽车实际行驶的速度):

根据ek,参考过去、针对现在、预估将来的各种状况,将比例单元(P)、求和单元(I)和增量单元(D)线性组合,可实现系统的定速巡航控制.设KP为比例系数,KI为积分系数,KD为微分常数,则系统输出uk与输入的关系为:

在进入巡航控制状态时,PID控制器根据预设的巡航速度与传感器接收到的汽车实际行驶速度计算偏差值:其比例控制部分输出相应的控制量来控制发动机节气门开度,减少偏差,使得行驶车速趋近巡航车速值;求和控制部分把车速偏差累计起来,通过加大控制量减小车速偏差,使行驶车速能够保持恒定稳定工作状态;增量控制部分起预估作用,能够在车速偏差变化剧烈之前,通过一个早期的修正信号进行修正,以减小系统的超调和震荡,提高系统的响应速度,减少调整时间,保证系统的控制性能[4].

PID控制结构简单,稳定性好,可靠性高,但在强非线性或不确定的情况下,不合适的参数设定会使控制系统振荡,工作状态不稳定,因此KP、KI、KD这三个参数决定了PID算法的控制能力.在实际应用中,必须依靠实际调试设定参数[12].

2.5.2 改进的增量式PID算法数字化PID控制算法可分为全量式/位置式和增量式两种[1].前者如公式(5)所示,输出的是全部控制量,每次输出均与过去状态有关,计算时要对误差进行累加,ECU工作量大,系统控制反应较慢;而后者输出的只是控制量的增量Δuk,如公式(6)所示,增量的变化只与最近两次的采样周期有关,ECU工作量小,系统可迅速达到预期控制效果,但其微分部分会使系统的控制频率变高,影响系统稳定性,进而使传输的信号出现误差.

CCS需要的控制量是增量(控制步进电动机的驱动),因此本系统使用的是效率更高的增量式PID控制算法.但是,由于增量式算法的缺陷,当CCS进入稳态后,ek值将在一个很小的范围内波动,对这样微小的偏差计算后,输出的控制量也将在一个很小的范围内不断波动,不利于车速的稳定.因此,本文对算法作如下改进:设置一个输出允许带e0,当采集到的系统偏差ek满足下列关系时,才计算并输出控制量uk,否则不作调整,以保证电机的稳定运转:

2.6 PWM模块

脉冲宽度调制PWM(Pulse Width Modulation)又称为脉宽调制[13],是利用微处理器的数字输出对模拟电路进行控制的一种有效技术.通过高分辨率计数器的使用,方波的占空比(接通时间与周期之比)被调制用来对一个具体模拟信号的电平进行数字编码,电压或电流源以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上,调制频率(计数器周期的倒数)通常为1kHz到200 kHz之间.

在本系统中,将依据车速调整模块的输出Δuk来计算PWM的调整量ΔD(即PWM的输出占空比),从而控制电机驱动电路调整车速,其流程图如图5所示.

图5 数字PID调节PWM调整量流程图

为实现PWM输出,可使用集成PWM输出的单片机、专用PWM集成芯片或软件模拟等方法.专用芯片硬件成本太高,软件模拟出的PWM信号精度不高,因此这里直接使用了单片机PIC16F877A电控单元中集成的PWM输出功能.在执行PWM操作前,需在软件中完成以下工作:

①设置提供调制方波的片上定时器/计数器的周期;

②在PWM控制寄存器中设置接通时间;

③设置PWM输出的方向;

④启动定时器;

⑤使能PWM控制器.

PWM的频率和占空比跟电机转速密切相关,因此PWM的各种参数均影响车轮转速,必须依靠实际调试设定参数[13].为了精确调整PWM的占空比,本文直接采用占空值赋值的方法.

2.7 主程序流程

系统主程序是整个软件系统的核心部分,管理并维护着整个系统的软硬件资源.单片机上电后即对系统资源(如定时器、IO口输入输出方式等)、LCD1602参数、PID参数、PWM输出等进行初始化,初始化完成后便开始循环扫描按键变化并监控显示当前车速,由于采用固定中断(15 ms中断一次),按键扫描由中断程序完成.系统运行时有两种模式:

①常规模式:未按下巡航键时,车速受外界环境影响较严重,比如,当外界阻力突然增大时,由于PWM占空比没有做相应调整,车速减慢;当阻力消失车速又回升.同时,驾驶员可以很方便地调整车速.

②巡航模式:按下巡航键后,系统判断当前车速是否达到巡航速度最低值(40Km/h),若达不到,则系统显示速度未达最低限,并返回;否则便不断测速稳速(进行PID计算和PWM调整),即进入自动巡航状态.在自动巡航状态里,驾驶员可以通过加/减速按钮微调小车车速(步进值=5 Km/h),并以微调后的车速作为新的巡航速度.当按下取消巡航键后,系统退出自动巡航状态,转为常规模式继续运行.

3 程序实现与仿真调试

3.1 程序实现与代码示例

本系统的软件开发平台为MPLAB集成开发环境,所有程序由C语言实现,采用了Hitech公司的外围接口控制器PIC(Peripheral Interface Controller)平台专用C编译器[14].由于篇幅所限,这里只给出车速调整模块的部分核心代码:

3.2 仿真调试

本设计采用Proteus仿真平台调试程序代码.首先需要在Proteus工程里搭建硬件模型,由于车速检测模块没有理想的仿真元件,本文使用方波信号发生器模拟霍尔传感器,脉冲频率的高低直接决定当前车速的快慢.本论文的重点在于系统的软件设计,因此硬件模型搭建过程这里不再赘述.

由于小车的电机模型难以确定,程序采用的部分系统参数(如车轮直径、测速最大耗时、PWM频率、PID算法参数等)需要通过实际测试确定.经平台仿真调试,PID算法中的KP、KI、KD分别设为0.4、0.001、0.001时系统超调量最小,但系统的惯性时间稍大,对系统响应速度有一定影响,但还在可接受的范围内;当PWM信号的频率在1KHz时,调整PWM的占空比就能较大范围地改变电机转速.

小车实验在略带坡度的普通水泥和柏油路面上进行.实验结果的部分数据如表1所示.实验表明,当车速达到40-100 km/h之间时,虽然受电机震动的影响,霍尔传感器的输出有时波动较大,但整个系统较好地实现了自动巡航的各项功能,整体控制效果表现良好.改进的增量PID算法能使电机振动减少,从而减小偏差,并且使系统更快达到稳定状态.但由于测量条件的限制,实验只给出了系统在不同路面粗糙程度下的实测数据,而路面坡阻、风阻等其他环境干扰因素则未做定量分析.

表1 系统控制性能的部分数据

4 结束语

在对现有的巡航控制系统技术进行充分研究的基础上,本文基于实际的小车模型,设计了一个汽车电控巡航控制模拟系统.系统以PIC16F877A单片机为电控单元,利用霍尔传感器,以脉冲周期测频法测定小车实际转速,通过改进的增量式PID算法对PWM占空比进行调节,从而间接控制车轮转速,使小车能按照设定的巡航速度行驶.系统采用的软件开发平台为MPLAB集成开发环境,以C语言进行程序实现,程序中部分系统参数的最佳数值由Proteus仿真平台实际调试确定.本文在简单介绍该系统的总体结构后,着重对系统各功能模块的软件设计方案,包括增量式PID算法的改进方法进行阐述,最后给出了部分程序示例及仿真调试和实验的结果.仿真调试和小车实际运行的结果说明,改进后的增量PID算法使系统响应更快,减少了电机振动,增加了巡航控制的稳定性;整个系统虽成本较低,但能较好地实现自动巡航的各项功能.由于小车模型与实际车辆在控制上存在一定差异,因此在未来的工作中,将把本系统应用于实际车辆的巡航控制中,以更好地检验系统的实用性.我们还将进一步考虑坡阻、风阻、加速阻力等其他环境干扰因素对系统的可靠性和安全性的影响,这是影响实际应用的重要因素;另外,可考虑结合遗传算法、模糊控制技术等改进CCS的软件控制策略,使系统更加智能化.

[1]胡克非.定速巡航系统的设计[D].武汉:武汉理工大学,2012.

[2]王连军.汽车巡航控制系统的使用与发展[J].中国高新技术企业,2009,121(10):9-10.

[3]付锐,秦加合,王党青,等.汽车巡航控制系统的定速控制方法的仿真研究[J].计算机工程与设计,2013,34(6):2098-2103.

[4]仇成群,刘成林,沈法华,等.基于Matlab和模糊PID的汽车巡航控制系统设计[J].农业工程学报,2012,28(6):197-202.

[5]Abdullah R,Hussain A,Warwick K,et al.Autonomous intelligent cruise control using a novel multiple-controller framework incorporating fuzzy-logic-based switching and tuning[J].Neurocomputing, 2008,71(13/15):2727-2741.

[6]刘洪玮,石红瑞.遗传算法在汽车巡航控制系统中的应用[J].自动化仪表,2009,30(11):48-50.

[7]Microchip Technology Inc.PIC16F 877技术手册[DB/OL].[2008-01-07].http://www.datasheet5.com/pro duct_PIC16F877_5f8792a9 9814e803.html.

[8]Allegro MicroSystems Inc.A3144 Datasheet[DB/OL].[2006-05-25].http://www.datasheet5.com/product_A 3144_a4c8c8baa115288d.html.

[9]意法半导体.L298N技术手册[DB/OL].[2000-06-27].http://www.datasheet5.com/product_L298N_16a3 0eb1c9e6dd8d.html.

[10]自制单片机-LCD1602的驱动[DB/OL].[2007-08-09].http://wanglihua7141.blog.163.com/blog/static/12 086022007926113049687/.

[11]朱琦,吴晔.一种汽车电子巡航系统的应用[J].汽车与配件,2009(01):35-37.

[12]Duhongxiafly.PID参数整定及其对性能影响[DB/OL].[2011-04-23].http://wenku.baidu.com/view/ e05fc15e3b3567ec102d8a12.htm l.

[13]冼凯仪,李先祥.基于PWM控制的直流电机控制系统的设计[J].佛山科学技术学院学报,2000,18(3):16-19.

[14]廖珍爱.MPLAB-C18 C编译器的优化技巧[J].单片机与嵌入式系统应用,2004(10):86-87.

Software Design and Simulation of Automobile Cruise Control System

XIAO Yinyin1,XIAO Tongmin2
(1.Department of Computer Science,Guangdong Polytechnic Normal University,Guangzhou 510665,Guangdong,China;2.College of Engineering,Shantou University,Shantou 515063,Guangdong,China)

Based on the actual car model,an electronic automobile cruise control simulation system is designed and implemented by single chip PIC16F877A,hall sensor AH3144 and other electronic elements,with C language as the programming language. Firstly,the whole system structure is introduced.Then,the software design scheme of each functional module is explained,and the core software control strategy-the incremental PID algorithm is improved.Finally,some program examples and result of simulation debugging are given.The result shows that the improved incremental PID algorithm makes the system response faster and increases the stability of cruise control. The whole system can satisfy all requirements of cruise control well,and has a certain value in the market.

cruise control system;incremental PID algorithm;software design;single chip

TP 273

A

1001-4217(2015)01-0071-10

2014-10-19

肖茵茵(1983-),女,博士,讲师.主要研究方向:自动化仿真、信息安全、互联网技术等. E-mail:xyycx1983@163.com

国家自然科学基金资助项目(60903054);广东省高校优秀青年创新人才培育项目(LYM11085,LYM11084)

猜你喜欢

增量按键车速
提质和增量之间的“辩证”
基于有限状态机的按键检测程序设计
“价增量减”型应用题点拨
2012款奔驰R300车修改最高车速限制
一种多方向导光按键结构设计
基于均衡增量近邻查询的位置隐私保护方法
北京现代途胜车车速表不工作
两车直角碰撞车速计算方法及应用
德州仪器(TI)发布了一对32位增量-累加模数转换器(ADC):ADS1262和ADS126
按键的多种状态检测及消抖处理方法