文档库 最新最全的文档下载
当前位置:文档库 › 摄像头智能车速度控制算法的设计与实现

摄像头智能车速度控制算法的设计与实现

编号2013180217 研究类型应用研究分类号TP27 学士学位论文(设计)

Bachelor’s Thesis

论文题目摄像头智能车速度控制算法的设计与实现

作者姓名

学号

所在院系机电与控制工程学院

学科专业名称电气工程及其自动化

导师及职称

论文答辩时间

学士学位论文(设计)诚信承诺书

目录

1 绪论 (1)

2 选题背景 (2)

2.1 选题的必要性 (2)

2.2 国内外发展研究现状及分析 (3)

3 基础理论 (3)

3.1 PID控制算法介绍 (3)

3.2 黑线路径特点 (6)

3.3 关于MC9S12XS128的介绍 (7)

3.4 Codewarrior开发软件 (8)

3.5 串口调试软件与无线传输测试软件 (9)

3.6 MATLAB测试平台 (10)

3.7 舵机调试软件 (11)

4 硬件电路设计 (11)

4.1 系统整体结构 (11)

4.2 舵机电路设计 (12)

4.3 电机驱动电路设计 (13)

5 舵机控制算法的设计 (15)

5.1 分段PD控制 (16)

5.2 分区间查表控制 (17)

6 电机控制算法的设计 (18)

6.1 数字PID控制算法 (18)

6.2 分段的闭环P控制算法 (19)

7 测试与分析 (20)

7.1 舵机调试 (20)

7.2 PID参数整定与电机调试 (20)

7.3 整体稳定性调试 (22)

8 总结与展望 (23)

9 参考文献 (25)

摄像头智能车速度控制算法的设计与实现

谢波(指导老师,胡长晖讲师)

(湖北师范学院机电与控制工程学院中国黄石 435002)

摘要:本文介绍了以MC9S12XS128单片机为主控制器的摄像头智能车的速度控制算法的设计与实现。在系统硬件设计部分,主要阐述了舵机控制和电机驱动电路的设计原理,以及测速模块的设计。在软件设计部分,重点阐述了转向舵机控制算法,电机分段的闭环P控制算法,电机PID控制算法的原理及其实现。测试表明,本智能车行驶在复杂多变的赛道上,具有较好的稳定性和适应性。

关键词:MC9S12X128;数字PID控制算法;分段的闭环P控制算法

中图分类号:TP27

The Design and Realization of Camera Intelligent Car speed

control algorithm

Xie Bo(Tutor,Hu Changhui)

(College of Mecharonics and Control Engineering, Hubei Normal University, Huangshi, China, 435002)

Abstract: This paper introduces the camera intelligent vehicle speed control algorithm design and implementation,in which MC9S12XS128 plays as main controller .In the

hardware design part , I mainly describe steer control and the design principle of

motor drive circuit.In the software design part,I emphasis on steering gear control

algorithm ,Segmented P closed-loop control and motor speed regulation PID algorithm principle and realization. A series tests show that the car has good stab- -lity and

adaptability in a complicated track.

Key words:MC9S12X128;digital PID control;Segmented P closed-loop control

摄像头智能车速度控制算法的设计与实现

谢波(指导老师,胡长晖讲师)

(湖北师范学院机电与控制工程学院中国黄石 435002)

1 绪论

近年来,丰田与微软结盟欲打造下一代互联汽车平台,将多款产品整合应用于汽车;另外,谷歌开发的无人驾驶汽车已在各种路况下成功行驶,并宣称将进入大规模的测试阶段。在国内,我国自主研制的红旗HQ3无人车也成功进行了一系列的自主驾驶测试……这表明:汽车智能化已经大势所趋,越来越多的车企已经把它作为未来市场竞争的一个着眼点。而消费者所期待的汽车智能化除了能给驾车带来方便和舒适外,更重要的是能为安全保驾护航。智能汽车是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体[1]。目前对智能车辆的研究主要致力于提高汽车的安全性、舒适性,以及提供优良的人车交互界面。近年来,智能车辆己经成为世界车辆工程领域研究的热点和汽车工业增长的新动力,很多发达国家都将其纳入到各自重点发展的智能交通系统当中。可以预见,随着汽车电子工业的快速发展,智能车将占据越来越大的汽车市场领域。作为全球最大的汽车电子半导体器件供应商,飞思卡尔半导体公司一直致力于汽车电子半导体器件的开发与推广。飞思卡尔是嵌入式处理解决方案的全球领导者,提供业界领先的产品,不断提升汽车、消费电子、工业和网络市场。飞思卡尔在不同的半导体器件市场拥有领先的地位。其推出的8、16、32位微处理器依靠较高性能在全球拥有领先地位,特别是最近推出的32位Kinetis K 系列Cortex-M4微处理器,是基于ARM? Cortex?-M结构的低功耗,高性能、可兼容的微控制器,非常适用于中高档智能汽车电子控制系统。

智能车可作为安装有特定设备的交通载体,使用在科学探索、工业生产等领域。目前智能车的研究重点主要集中在视频检测及目标检测、跟踪、避障等方面。随着电子技术和智能控制技术的发展,智能车已经成为自动控制领域的一个研究热点。路径识别技术是智能车控制系统中的一个重要组成部分,路径识别又是智能小车路径跟踪的信息基

础。本智能车通过数字摄像头获取目标道路信息,同时结合当前的行驶状态智能地做出决策,对其行驶方向与行车速度进行调整,从而实现准确快速跟踪的目的。设计不仅要求小车在白色的场地上能自动地沿着一条任意给地的黑色引导线行驶,而且在一些小弯道小车可以沿着捷径直线过弯,这其中包含两方面的内容,一方面智能小车要准确无误地堆黑色路线进行识别,另一方面是在准确获取道路信息的基础上采用有效的控制策略,使智能小车能够快速有效地沿着最优路径前进,并确保其稳定性。

本文主要针对具有黑色引导线并带有弯道、直道、虚线等的特定道路,由OV6620采集赛道图像数据,用动态阀值算法对数据进行二值化简化,通过路径识别算法计算出所采集图像特征,并将不同赛道对应不同舵机转角和电机转速,实现了任意路径识别与智能跟踪。

2 选题背景

2.1 选题的必要性

智能车辆是一个集环境感知、规划决策和多等级辅助驾驶等功能于一体的综合系统。它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体。随着电子技术和智能控制技术的发展,智能车已经成为自动控制领域的一个研究热点。

全国大学生智能车竞赛是教育部为了加强大学生实践、创新能力和团队精神的培养而举办的面向全国大学生的智能汽车比赛[2]。“飞思卡尔”杯全国大学生智能车大赛从2006年开始举办,是一项知识、技术综合性特别强的竞赛,对培养高水平、研究型学生,具有重要的现实意义。“飞思卡尔”杯全国大学生智能汽车竞赛中,参赛的队伍分光电组、摄像头组和电磁组三个组别。本文正是基于其中的摄像头组竞赛而诞生的。

路径识别技术是智能车辆控制系统中的一个重要组成部分,本课题研究的主要内容包括黑线提取和赛道路径识别,黑线提取尝试了小范围提取黑线算法、单向黑线提取算法、中心向两边黑线提取算法,最终选择了小范围提取黑线算法。赛道路径识别通过比较简单斜率、最小二乘法拟合直线、根据三点求出外接圆半径倒数曲率等三种算法,得出智能车辆最优的路径识别算法。

该竞赛与教育部已举办的各类竞赛属同一级别,都是为了提高大学生的科研能力和创新能力而举办的,具有重大的现实意义。与其他大赛不同的是,这个大赛的综合性很

强,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感、电子、电气、计算机和机械等多个学科交叉的科技创意性比赛,这对进一步深化高等工程教育改革,培养本科生获取知识、应用知识的能力及创新意识,培养硕士生从事科学、技术研究能力,培养学生知识、技术创新能力具有重要意义[3]。智能化技术与汽车相结合产生的智能汽车将在未来工业生产和日常生活中扮演重要的角色,而路径识别则正是体现智能水平的一个重要标志,基于数字摄像头的路径识别算法的研究具有非常广阔的应用价值。

2.2 国内外发展研究现状及分析

智能车辆在原车辆系统基础上主要由计算机处理系统、摄像机和一些传感器组成。摄像机用来获得道路图像信息,车速传感器用来获得车速,障碍物传感器用来获得前方、侧方、后方障碍物信息等,然后由计算机处理系统来完成对所获图像、信息的预处理、增强与分析识别工作,并对车辆的行驶状况做出控制。清华大学汽车研究所是国内最早成立的主要从事智能汽车及智能交通研究单位之一,在汽车导航,主动避撞,车载微机等方面进行了广泛而深入的研究。上海市“智能汽车车内自主导航系统的一种样车,2000年7月19日通过市科委鉴定,它标志着上海智能交通系统进入实质性实施阶段。国防科大成功试验了第四代无人驾驶汽车,它的最高时速达到75.6公里,创国内最高纪录。西北工业大学空管所,吉林交通大学,重庆大学等都在展开相关研究。这一新兴学科吸引着越来越多的研究机构,学者加入到智能车相关技术开发中。国内也有很多大学生智能车竞赛,将智能车的研究更加普及,带动了国内高校自动化,电子等相关专业的教学改革和发展。智能车有着十分广泛的应用前景,许多国家都在积极进行智能车辆的研究,最典型的运用就是在智能运输系统ITS上的应用。智能车辆在物流、军事等众多领域都有很广的应用前景。

3 基础理论

3.1 PID控制算法介绍

PID算法控制是过程控制中应用最广泛的一种控制规律。实际运行经验及理论分析充分证明这种控制规律用于多数被控对象能够获得较满意的控制成果[4]。

比例(P)控制:比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。K p偏大时,振荡次数加多,调节时间加长,系统趋于不稳定,K p太

小时,又会使系统动作缓慢。当仅有比例控制时系统输出存在稳态误差。

积分(I )控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误

差的或简称有差系统。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误

差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项

也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等

于零。积分作用使系统的稳定性下降,T i 小(积分作用强)会使系统不稳定,但能消除

稳态误差,提高系统的控制精度。

微分(D )控制:在微分控制中,控制器的输出与输入误差信号的微分(即误差的变

化率)成正比关系。在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放

大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具

有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而

避免了被控量的严重超调。只有T d 合适,才能使超调量较小,减短调节时间。一般来说,

微分过程减小了超调和降低了震荡。在另一方面,大部分的实际控制系统里使用了非常

小的微分增益,因为微分响应对过程变量信号的噪声非常敏感。如果反馈回来的过程变

量代表的噪声,微分参数就会引起系统的不稳定。

通常依据控制器输出与执行机构的对应关系,将基本数字PID 算法分为位置式PID

和增量式PID 两种。

(1)位置式PID 控制算法

基本PID 控制器的理想算式为

???

?????++=?t d i P dt t de dt t e t e t u T T K 0)()(1)()( (3.1) 式中:

u(t)——控制器(也称调节器)的输出;

e(t)——控制器的输入(常常是设定值与被控量之差,即e(t)=r(t)-c(t));

K p ——控制器的比例放大系数;

T i ——控制器的积分时间;

T d ——控制器的微分时间。

设u(k)为第k 次采样时刻控制器的输出值,可得离散的PID 算式

[]()()()()(1)k P i d j u t e t e j e k e k K K K =++--∑ (3.2) 其中P

i i T K K T =为积分系数,P d

d K T K T =为微分系数。 由于计算机的输出u(k)直接控制执行机构(如阀门),u(k)的值与执行机构的位置(如

阀门开度)一一对应,所以通常称式公式(3.2)为位置式PID 控制算法。

位置式PID 控制算法的缺点:当前采样时刻的输出与过去的各个状态有关,计算时

要对e (k )进行累加,运算量大;而且控制器的输出u (k )对应的是执行机构的实际位置,

如果计算机出现故障,u (k )的大幅度变化会引起执行机构位置的大幅度变化。

(2)增量式PID 控制算法

增量式PID 是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,

计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的

实际位置,因此要求执行机构必须具有对控制量增量的累积功能,才能完成对被控对象

的控制操作。执行机构的累积功能可以采用硬件的方法实现;也可以采用软件来实现,

如利用算式 程序化来完成。

由公式(3.2)可得增量式PID 控制算式

()()(1)()()[()(1)]p i d u k u k u k e k e k e k e k k k k ?=--=?++?-?- (3.3)

一般计算机控制系统的采样周期T 在选定后就不再改变,所以,一旦确定了K p 、

T i 、T d ,只要使用前后3次测量的偏差值即可由公式(3.3)求出控制增量。

增量式算法优点:算式中不需要累加,控制增量Δu(k)的确定仅与最近3次的采样

值有关,容易通过加权处理获得比较好的控制效果;计算机每次只输出控制增量,即对

应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程。

PID 参数的整定就是合理的选择PID 的各个参数。其参数的整定是综合系统的稳定

性、响应速度、超调量和稳态精度等各个方面考虑。综合自己调试的经验和工业调试的

经验,基本上PID 参数整定满足以下几个规则:

(1) 当e 较大时,为使系统具有较好的跟踪性能,应取较大的Kp 与较小的Kd ,同

时为避免系统响应出现较大的超调,应对积分作用加以限制,通常取Ki=0。

(2) 当e 处于中等大小时,为使系统响应具有较小的超调,Kp 应取得小些。在这种

情况下,Kd 的取值对系统响应的影响较大,Ki 的取值要适当。

(3) 当e 较小时,为使系统具有较好的稳定性能,Kp 与Ki 均应取得大些,同时为

避免系统在设定值附近出现振荡,Kd 值的选择根据|e(k)|值较大时,Kd 取较小值,通常

Kd为中等大小。

3.2 黑线路径特点

道路面用专用白色基板制作,跑道所占面积在5m×7m左右,道路宽度不小于50cm, 跑道表面为白色,中心有黑线作为引导线,黑线宽25mm±5[6]。引导黑线为连续黑线;跑到最小曲率半径不小于50,可以交叉为90°;在跑到中有一个长度为10cm黑色起始线。如图3.1所示;

图3.1 起跑线,赛道宽度

本次跑道由不同难度的弯道组成,主要分为半径为65cm角度为120°大S道,半径为80cm角度为270°大弯道、角度为150°弯道,半径为245cm角度为90°的弧道,半径为100cm角度为180°的弧道。如图3.2所示。

图3.2 跑道示意图

3.3 关于MC9S12XS128的介绍

MC9S12XS128 微控制单元作为MC9S12 系列的16位单片机,由标准片上外围设备组成,包括16位中央处理器、128KB的Flash 存储器、8KB的RAM、2KB的EEPROM、两个异步串行通信接口、两个串行外围接口、一组8通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、一组8通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O 接口、5个增强型CAN总线接口。同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。MC9S12XS128片内资源表如图3.3所示。

图3.3 MC9S12XS128片内资源

在整个系统设计中,用到了6个单片机基本功能模块:时钟模块、PWM 输出模块、

ECT 模块、中断模块、串口通信模块以及普通IO 模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。

3.4 Codewarrior开发软件

软件开发工具采用Metrowerks 公司开发的软件集成开发环境Codewarrior for HCS12,其包括集成环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C 交叉编译器、汇编器、链接器以及调试器,可以完成从源代码编辑、编译到调试的全部工作[7]。

开发语言采用HCS12C 语言,语法与标准C 语言基本相同,支持多种数据类型,中断服务程序用中断函数形式来实现,并提供了内嵌汇编的功能。另外,CodeWarrior 编译器提供了几种从C 源代码产生实际汇编代码的优化方法,这些代码被编程到微控制器中。Codewarrior 的功能非常强大,可用于绝大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。图3.4是Codewarrior的开发界面:

图3.4 Codewarrior开发界面

利用BDM 和Codewarrior IDE 的调试界面,可以进行一系列的调试工作,如黑白线的数字量,路径采集状态,各个寄存器值,程序调试的变量值,能够很好的观察整幅的图像信息,图像中黑线的位置,黑线断开的位置,小车舵机和电机的当前值等,给调

试提供了极大的方便。

3.5 串口调试软件与无线传输测试软件

串口调试助手,支持常用的300-115200bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。

目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。

为了更好形象地反应采集图像的数据,在串口发送中每发送完一行就添加一个回车符,这样得到的数据是每行的数据而不是连成一块的,图3.5是串口得到的数据图,图中非常好地反应了道路的信息:

图3.5 串口调试助手平台

由于小车是动态运行的,为了实现动态测试,采用了以NRF24L01为核心的无线通信模块,来实现单片机和PC 之间的无线通信,将智能车形式的动态信息传输到PC中进行处理,从而可以分析调整智能车的形式状态,是智能车能以最优的速度在复杂多变的赛道上稳定快速的形式。

MC9S12XS128将智能车运行数据通过SPI接口传输给NRF24L01无线发送模块,NRF24L01无线接收模块接收到数据后,将数据通过SPI接口传输给以8为单片机为主

控制器数据接收端,8位单片机将数据通过串口将数据传输给PC机,在PC机中,使用串口助手将数据以十六进制保存在文本文档中。利用Matlab可以将接到的数据绘制曲线。MATLAB绘制文本文件数据为曲线指令如下:

a=textread('c:\a.txt','%s')';%以字符形式打开文件

alpha=hex2dec(a)'; %16进制转化为10进制数,存入alpha矩阵

plot(alpha) ; %绘制alpha矩阵数据的曲线图

3.6 MATLAB测试平台

MATLAB是矩阵实验室的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB 和Mathematica、Maple、MathCAD并称为四大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。MATLAB开发环境如图3.6所示。

图3.6 MATLAB开发界面

3.7 舵机调试软件

在控制系统中,舵机控制效果是智能车性能的重要影响因素。所以舵机调试工具相当重要,因而好的舵机调试软件会给后续的调试工作带来很大的便利。舵机调试软件如

图3.7所示。

图3.7 舵机调试软件

4 硬件电路设计

4.1 系统整体结构

智能车分为五大模块:摄像头图像采集模块,电源模块,舵机转向模块,电机驱动

模块,单片机最小系统。如图4.1所示。

图4.1 系统硬件模块

4.2 舵机电路设计

大赛指定使用型号为S3010的舵机[9]。该舵机有三根接线端,分别为:电源线、地

线及控制线。舵机所需的工作电压为6V ,该型号舵机的转角是由控制信号端的高电平

脉冲宽度决定的,舵机的转角与控制信号的脉宽对应关系如下图4.2所示。在接口电路

中,舵机的转角控制端口(白线)与单片机的PM1通道相连。单片机通过这一端口,

将位置脉冲发送给舵机,实现对舵机转角的控制。舵机与单片机的接口如图4.3所示。

为了便于单片机控制,在对MC9SXS128

单片机的PWM 初始化时,设定PWM 的周期

为20ms 。初始状态时,设定

PWM 的高电平时间为1.5ms ,使舵机的偏转角度为0° 。

舵机内部有一个产生周期20ms 、宽度1.5ms 的基准信号的基准电路,有一个比较器将

外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,

舵机是一种位置伺服的驱动器,转动范围不能超过±90°。

图4.2 舵机转角与脉宽函数图像 图4.3 舵机接口电路 图4.4列出一个典型的20ms 周期性脉冲的正脉冲宽度与微型伺服马达的输出臂位

置的关系。

图4.4舵机转角控制图

4.3 电机驱动电路设计

智能小车前进的动力是通过直流电机来驱动的,直流电动机是最早出现的电动机,也是最早能实现调速的电动机。由于智能车摄像头组采用的单个电机控制后轮来驱动的,采用H桥电路可以很方便地组成单片机控制的小功率直流伺服系统,一个H桥电路由4个IRF540组成的[11]。如图4.5所示:IRF540是一个大电流(30A)、较高耐压(100V)、低导通电阻(0.077Ω)的N沟道场效应管。IR2104驱动芯片上的P3、P5、E6、E7是由单片机产生的PWM波控制,当PWM输出的P3是高电平、E6是低电平时,图中IR2104芯片的工作情况:U5的7管脚(HO)输出7.2V的高电平驱动电压,5管脚(LO)输出0V低电平驱动电压;U6的7管脚(HO)输出0V的低电平驱动电压,5管脚(LO)输出7.2V高电平驱动电压。则图中的4个IRF540工作情况:Q1、Q4关断,Q2、Q3导通,电机正转。当PWM输出的P5是高电平、E7是低电平时,电机反转。由于电机反转制动时,瞬间冲击电流很大,驱动芯片发热比较厉害,经过多次试验后,决定不采用反转制动,通过减小PWM的占空比来进行制动,制动效果基本能满足要求。

驱动电机的是采用单片机输出不同占空比的PWM波,根据直道、弯道不同跑道信息改变占空比大小达到控制电机速度的目的。

图4.5 电机驱动模块图

4.4 小车测速模块的设计

要想小车在赛道上平稳的行驶,我们必须要精确的控制车速,特别是在赛道的转角

处,防止车速过快而冲出跑道。可知控制芯片输入 PWM 波的占空比,即可控制直流电

机两端的电压差,从而控制智能小车的速度[12]。电机在开环控制下,电池电压、电机自

身的传动摩擦力、前向轮转角和赛道摩擦力等因素,都会造成智能小车运行不稳定。通

过在小车后轮上加装速度传感器来检测小车在赛道上的行驶速度,对小车速度形成闭环

控制,消除上面各种因素对小车速度的影响,使得小车行驶更加稳定。

本系统车速检测单元采用日本OMRON 公司的E6A2-CW3C 型旋转编码器作为车

速检测元件,质量为35克。考虑到码盘重量会影响车体重心位置,我们将其通过一块

轻质硬板固定在车尾部,让重心更加靠近后轮,增加轮胎与地面的摩擦力。为了不影响

加速性能,编码器的传动齿轮较小,基本上和电机的齿轮相同,齿轮之间夹角小于120

度。这样安装齿轮咬合很好,即避免由于齿轮咬合太紧以致加重负载,同时也避免了因

过松而出现的在转动中齿轮撞击的现象,减少电机的摩擦损耗和噪音。它由5~12V 的

直流供电,可以使用LM2940稳压后的+5V 直接对其供电。运用旋转编码器的输出特性,

采用其中一相,即可测出智能小车的行驶速度。通过把旋转编码器的脉冲输出端口接入

到 MCU 的增强型捕捉定时器模块。它是一个 16 位定时计数器,可以对输入脉冲进

行累加计数。

通过后轴上齿轮盘的旋转带动旋转编码器旋转,在一定时间内测出旋转编码器输出

的脉冲个数,即可算出智能小车的车速。

在求偏差量时,实际上用的是每20ms

电机转过的齿轮数和实际期望电机转过的齿

轮数,通过二者的差值,再乘以相应的系数,即Kp 、Ki 、Kd 的协调控制,计算出相应

的PWM 占空比。经过分析,决定将PID 的采样周期定为20ms ,即当进行一次场采集

进行一次PID 调节,这样就不需要另外使用外部中断,也不用去考虑中断优先级的问题,

而且经过最终的检验,这样能够满足对速度控制的需要。启动后,电机通过齿轮带动编

码器旋转,编码器每转动一周会输出200个脉冲,编码器输出的脉冲送给单片机具有输

入捕捉功能的端口PT7,单片机的PT7口每采集到一个上升沿,对应的脉冲累加器(PAC )

加一,利用摄像头场信号中断每隔20ms 产生一次中断,读取20ms 内PAC 所捕捉到的

脉冲个数,从而反应当前速度。为了减少单片机的运算量,直接用每20ms 内所测到的

脉冲个数反映电机的转速。

小车的速度与脉冲之间的关系,假设N 为一个采样周期T 内采集到脉冲数量,L 为小车

后轮周长,S 为小车前进的距离,K 编码器与电机的齿轮比,V 为小车的速度。则:

200

N S K L =?

? (4.1) 又由速度T

S V = ,即有 T L N K V ???=200 (4.2) 经测量得,L=165mm ,采样周期T=20ms ,齿轮比K=0.32,从而,小车的速度为

N V *0132.0= (4.3)

5 舵机控制算法的设计

在整个智能车的运行中,要使车能平稳的行驶,并且行驶过程中获得良好的速度,

首先对舵机的控制尤为关键,本文对舵机的控制主要尝试采用了两种方法:分段PD 控

制,分区间查表控制。

如图5.1所示,当占空比的高电平时间设置为1.5ms 时,舵机为不偏转,其对应寄

存器取值为1500,当改变这个数值时,舵机将回左偏或者右偏,理论上控制量与舵机

的PWM 寄存器的值应该表现为一阶线性关系,但是实际的系统中控制量和PWM 寄存器的

值可以看成是以(0,1500)为中心对称的二次函数。

图5.1 舵机PWM输出曲线

其表达式如下:

(

)

*

(

15002

=(5.1)+

+

(

[

*

b

abs

control

dire

))

control

]

abs

PWM*

a

其中abs(control)为control的绝对值变量,控制作用的方向由有变量direction 来决定当control的值大于0时,direction取1,反之,当control的值小于0时,direction取-1。.a和b取值在前期调节时,分别取值2和0.3,但随着小车速度的提高提高,这样的取值已经不能满足小车的动态要求,所以其参数本身应该随着速度的变化而变化,整体斜率应该随着速度的增大而增大。

当速度加快时,对程序执行的实时要求提高,而程序执行一遍的时间大概为40ms 以2m/s的速度计算的话,大概在程序的下一次调节之前,小车会行驶8cm,此时的赛道环境必然发生一定的而变化,所以加大舵机的转角,是必然的选择。

我们对舵机的控制主要尝试采用了分段PD控制,分区间查表控制两种方法。

5.1 分段PD控制

舵机PD控制,即根据划分的赛道类型,不同赛道类型整定出一套适合其的PD参数。由于舵机对实时性要求比较高,而积分环节则会降低系统的实时性,综合考虑之后,我们最后采用了PD控制舵机偏转,只要参数调节合理,可以把误差控制在合理范围内。

在舵机的PD算法中,control变量即可看成是偏差输入。最终的期望则是control

相关文档
相关文档 最新文档