展会信息港展会大全

与非网专题: 第二届全国智能车大赛华东赛区获奖论文
来源:互联网   发布日期:2011-10-01 12:50:10   浏览:4725次  

导读: 4.1 MC9S12DB128B单片机介绍 4.1.1 HCS12 微控制器简介[9] HCS12(以下简称DG128)是Motorola 新推出的高性能16 位微控制器,具有强大的功能和广阔的市场前景。HCS12 单片机系列提供由32K-512K 第三代快闪嵌入式存储器。每一个HCS12 单片机总线速度可达50 MH...

4.1 MC9S12DB128B单片机介绍

4.1.1 HCS12 微控制器简介[9]

HCS12(以下简称DG128)是Motorola 新推出的高性能16 位微控制器,具有强大的功能和广阔的市场前景。HCS12 单片机系列提供由32K-512K 第三代快闪嵌入式存储器。每一个HCS12 单片机总线速度可达50 MHz, 外围时钟可以到25MHZ。还具备编码效益、片上纠错能力,并与摩托罗拉68HC11 和68HC12 结构编码兼容。图4-1为实物图


图4-1 HCS12单片机

开发板实际上是单片机构成的最小系统。板上有构成最小系统需要的复位电路、晶体振荡器及时钟电路,串行接口的RS-232驱动电路,+5V电源插座。MC9S12DG128单片机中已经写入了开发的监控程序。8个调试用的小灯并非构成最小系统所必须,但对调试应用系统非常有用。印刷板上还有2个CAN总线的驱动电路和引出端,必要时用户可以自行焊上驱动芯片。这2个CAN总线的接口电路是MC9S12DG128单片机5个CAN总线中与、兼容的那2个。单片机的所有I/O端口都通过2个64芯的欧式插头引出。附录1给出了开发板上P1与P2插座的引脚定义。

表4-1 单片机端口分配表


 

软件主要功能包括检测信息处理以及控制策略算法。图所示为系统信息的控制流程与8 位单片机相比,Freescale的16位单片机虽然较为复杂,但却拥有丰富的外围接口,大量片上外围设备使得它可以直接用于许多场合,而不必像8051那样需配以不同的外围电路去适应各种不同的应用。MC9S12DG128微控制单元作为MC9S12系列的16 位单片机,由标准片上外围设备组成,包括16位中央处理器、128KB的Flash存储器、8KB的RAM、2KB 的EEPROM、两个异步串行通信接口、两个串行外围接口、一组8 通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8通道10路模数转换器、一组8 通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O 接口、20 路带中断和唤醒功能的数字I/O 接口、5个增强型CAN总线接口。同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。

图4-2 S12 构架

4.2 单片机功能模块

在整个系统设计中,用到了7个单片机基本功能模块:时钟模块、PWM输出模块、外部中断模块、ECT模块、AD模块、串口通信模块以及普通IO模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。

4.2.1 时钟模块

S12单片机中有四个不同的时钟,即外部晶振时钟、锁相环时钟、总线时钟和内核时钟。 当前电路板采用的是16MHz的外部晶振,因此外部晶振时钟为16MHz;默认设置下,锁相环时钟为32MHz,总线时钟为8MHz,内核时钟为16MHz。锁相环时钟与外部晶振时钟的倍、分频关系由SYNR、REFDV 两寄存器决定。总线时钟用作片上外围设备的同步,而内核时钟则用作CPU的同步,它决定了指令执行的速度。由于采用摄像头作为主要的寻线传感器,为了提高AD采集性能,增加在一行视频信号的时间内的采样点数,我们对单片机进行了超频。最终,超频后的总线时钟为32MHz。设置过程为:

SYNR=0x03;


REFDV=0x01;

while(CRGFLG_LOCK!=1);

CLKSEL_PLLSEL=1;

4.2.2 PWM模块

脉宽调制模块有8路独立的可设置周期和占空比的8位PWM通道,每个通道配有专门的计数器。该模块有4个时钟源,能分别控制8 路信号。通过配置寄存器可设置PWM的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8位通道还是四个16位通道)。为了提高控制精度,我们将PWM0、PWM1两路8位通道合并为一个16位通道来控制舵机,这样可使舵机的控制精度从1/255提高到1/65536。PWM模块的初始化设置过程为:


4.2.3 中断模块

视频信号的行同步有两种方式输入S12单片机,一种是通过IRQ外部中断引脚入,另一种是通过ECT模块接入。实际调试中,通过跳线对这两种方式进行选择。这里先介绍外部中断模块的使用。首先,在初始化程序中应设置外部中断的捕捉边沿,并开启外部中断。

然后,当检测到下一场视频信号的到来时,开启中断,在中断服务程序内完成对所需的行进行扫描,结果记录在一个二维数组中。扫描结束后,关闭中断,对数据进行分析处理。

下面是中断服务程序的代码:



4.2.4 ECT模块

增强型捕捉定时器模块,顾名思义,通过一系列可供设置的控制寄存器和可供读写的数据寄存器对端口功能进行了扩展。总的来说,ECT模块能实现输入捕捉和输出波形产生两大功能。最终方案中,有4路信号输入ECT端口。首先,是由视频信号提取芯片(LM1881)得到的行同步、场同步和奇偶场信号。利用ECT模块的脉冲捕捉工作方式,并通过查询TFLG1寄存器中的对应标志位来判断是否已获取相应信号,可以准确同步每场视频信号,完成数据点的采集。

其次,是速度传感器输出的脉冲信号。我们采用脉冲下降沿触发中断方式,计算两次脉冲时间差,从而得到小车的当前速度。具体设置过程如下:

4.2.5 AD模块

模数转换器模块有8 路通道,精度可设置为8位或10位。另外单次转换时间、转换结果类型、转换完成是否产生中断、转换序列长度等都是可以自行设置的。本次设计中,,AD模块主要是用来采集摄像头视频信号。具体设置过程为:


4.3 PID控制算法

PID控制是工程实际中应用最为广泛的调节器控制规律。问世至今70年多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。单位反馈的PID控制原理框图如图4-3所示。


图4-3 单位反馈的PID 控制原理框图

e代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器计算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u。

4-1

其中,,,分别称为比例系数、积分系数、微分系数。u接着被送到了执行机构,这样就获得了新的输出信号Y。这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。运用PID控制的关键是调整三个比例系数,即参数整定。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

一般来说,增大比例系数能够减小上升时间,并减小稳态误差,但不能消除。增大积分系数能够消除稳态误差,但会使瞬时响应变差。增大微分系数能够增强系统的稳定特性,减小超调,并且改善瞬时响应。

以上简要介绍了PID算法的原理和特性,实际过程中,由于摄像头是按一定间隔周期获取位置信息的,因此必须将连续PID控制离散化,这样得到的就是数字PID算法。

在设计最初的数字PID算法时,我们对模型的结构进行了许多简化。使用摄像头采集赛道位置并通过它与理想状态的偏差,得到当前误差的相对值。其次,被控对象仅限于小车的舵机,控制量为期望的舵机转角。

具体编写程序时,我们首先通过估算建立了一个量化表,将采集到的数字量转换成相应的误差值。然后,对该误差值进行PID算法处理,再将算出的控制值转换成合适PWM 波参数,对舵机进行控制。此外还可以将驱动电机也作为控制对象,并增加速度传感器来实现速度的闭环控制。实际测试表明,当积分系数为0、微分系数相对比例系数较小时,小车性能较好。同时发现,小车在直道上时比例系数应适当小些,这样不会产生“蛇形”现象;弯道上比例系数应适当大些,这样能避免小车在高速入弯后冲出赛道。为了最大限度发挥数字PID的功能,我们在完成了模式识别(具体算法见下小节)的前提下,实现了比例系数的动态调整,获得了较为满意的效果。下图为应用PID控制器的方向和速度控制框图。


图4-4 位置和速度负反馈的PID控制框图

为了提取弯道和直道的不同特征,我们首先在实际赛道的不同位置上采集了足够反映各种情况的数据,并matlab软件重新作图进行了分析。


图4-5 速度和方向耦合的PID控制框图

一开始,在使用分离的方向与速度PID进行对方向和速的分别控制时,速度和方向的控制效果都不好。速度加不上去,而舵机在速度快时又无法及时转向,造成赛车经常冲出赛道。后来我们使用如图4-5所示的方向与速度耦合的PID,把速度和方向放在一起考虑。即把摄像头采集的道路误差也用于速度PID的控制。当把位置误差传给PID控制器时PID根据设定的值计算出控制量控制舵机转向,纠正小车的位置。而速度根据道路误差确定后,经过与速度传感器采集的速度作比较后把误差值输入PID进行计算,PID输出控制信号通过使电机加减速达到想要的速度。而且使用模式识别方式,把弯道和直线区别开来,并对直线和弯道采取不同的控制策略。在进入弯道时,使用BANGBANG算法,而在直线时使用PID控制。结果如表4-2所示,赛车在弯道的转弯效果明显好转,能够及时刹车,而且整体速度也能有较大的提高。

表4-2 测试数据


在每一个控制周期中,检测一次赛车的当前速度值。若速度值小于预定的速度值,则将驱动电机PWM输入的占空比置为100%;若速度大于预定的速度值,则将驱动电机PWM输入的占空比置为0。

4.4 模式识别

模式识别就是把赛道的直线、弯道、S形道路用算法区别开来。然后,我们对这些不同特征的赛道进行实验,找出相应的最优的速度和方向控制方案。当赛车在赛道上行驶时,控制算法根据赛段的特征,应用相应的最优控制方案行驶,从而达到控制策略的最优化。这里还有个问题,就是提前预判和模式之间衔接的问题,经过大量的实验我们在提前预判的时间控制上和模式的良好衔接上有了较大的改善,赛车的速度和稳定性也得到了很大的提高。每圈时间减少了约1秒多。图4-8就是我们用来进行模式识别而采集的误差分析图。峰谷处即为赛车转弯时采集的道路误差值。我们根据转弯时误差值明显区别于直线时把直线和弯道相区别开来,为模式识别了奠定基础。


图4-8 赛车中心线与赛道误差分析图


4.5 程序框图

一,主程序


二,初始化子程序


三,中断程序

四,子函数

1.单行信号采集函数CCD_Sample( )


2.单行黑线偏差计算函数Error_calculate( )

点击查看大图

3.误差中值滤波函数E_Procs( )

对计算出的各行误差进行中值滤波。

4.舵机方向控制函数Dir_Control( )


5. 速度测试函数Velocity_measure(void)

6.速度控制函数Vel_Control(void)

 

上一章: 智能车硬件设计                                                                       下一章系统调试

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港