基于MC9S12DG128B智能车的设计与实现.docx
《基于MC9S12DG128B智能车的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于MC9S12DG128B智能车的设计与实现.docx(23页珍藏版)》请在冰豆网上搜索。
基于MC9S12DG128B智能车的设计与实现
基于MC9S12DG128B智能车的设计与实现
摘要:
本论文介绍了无锡科技职业学院“震泽车队”在参加第四届Freescale全国大学生智能车大赛过程中的工作。
智能车的硬件平台采用带MC9S12DG128处理器的开发电路板,软件使用的是CodeWarriorIDE4.7开发环境,文中介绍了智能车的设计全过程,包括硬件的设计及软件开发流程。
整个智能车系统实现包括电源模块、速度控制模块、路径检测模块、方向控制模块、并对各个模块进行硬件设计及软件编写。
关键字:
MC9S12DG128,电源,速度,控制,模块化
Theintelligentvehicle'sdesignandrealizationbasedonMC9S12DG128B
Abstract:
ThispaperdescribestheWuxiVocationalCollegeofScienceandTechnology,"zhenzeteam"incollegestudentsnationwidetoparticipateintheFourthFreescaleSmartcarracingintheprocessofwork.SmartcarwithaMC9S12DG128processorhardwareplatformwiththedevelopmentofcircuitboards,UseofthesoftwaredevelopmentenvironmentisCodeWarriorIDE4.7,Thispaperintroducesthewholeprocessofdesignintelligentcars,includinghardwaredesignandsoftwaredevelopmentprocess.
Theintelligentvehiclesystemimplementation,includingpowermodules,thespeedcontrolmodule,thepathdetectionmodule,thedirectionofcontrolmodule,andeachmodulehardwaredesignandsoftwaredevelopment.
Keywords:
MC9S12DG128,Power,speed,control,modular
目录
第1章:
绪论1
1.1智能车大赛介绍1
1.1.1大赛简介1
1.1.2大赛规则介绍1
第2章:
主要思路及技术方案概要3
2.1系统硬件结构3
2.1.1主要模块3
2.1.2工作过程4
2.2系统软件设计流程4
第3章:
智能车硬件系统设计6
3.1电源模块6
3.2电机驱动模块和速度检测7
3.2.1直流电机特性8
3.2.2速度检测8
3.3摄像头模块设计9
3.3.1供电电路9
3.3.2摄像头采集电路图9
3.4调试电路模块10
第4章:
智能车软件系统设计11
4.1图像采集11
4.1.1摄像头的工作原理11
4.1.2视频同步分离电路12
4.1.3摄像头初始化14
4.1.4采集15
4.2图像处理15
4.2.1图像二值化处理15
4.2.2黑线提取16
4.3控制系统的设计17
4.3.1舵机控制17
4.3.2速度检测与控制19
4.3.3可能情况下速度处理21
第5章:
谢辞22
第6章:
参考文献23
第1章:
绪论
1.1智能车大赛介绍
1.1.1大赛简介
受教育部高等教育司委托,高等学校自动化专业教学指导委员会负责主办全国大学生智能车竞赛。
该项比赛以列入教育部主办的全国五大竞赛之一。
首届“飞思卡尔”杯全国大学生智能车邀请赛于2006年在清华大学成功举办。
此项比赛,在韩国已举办过多届,其专业知识涉及控制、模式识别、传感技术、汽车电子、电气、计算机、机械等诸多学科,对学生的知识融合和动手能力的培养,对高等学校控制及汽车电子学科学水平的提高,具有良好的推动作用。
很庆幸,我们学校参加了今年的第四届比赛,在本次比赛中,参赛选手仍须使用大赛组委会统一提供的竞赛车模,以Freescale公司生产的16位微控制器MC9S12DG128作为核心制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,最终实现一套能够自主识别路线,并且可以实时输出车体状态的智能车控制软硬件系统。
1.1.2大赛规则介绍
根据《第四届全国大学生“飞思卡尔”杯智能车竞赛比赛规则》中对参赛车模的规定进行智能车的设计。
主要规定有:
参赛选手须使用大赛组委会统一提供的竞赛车模,采用飞思卡尔16位微控制器MC9S12DG128作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,完成智能车工程制作及调试,于指定日期与地点参加场地比赛。
参赛队伍之名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术方案及制作工程质量评分为辅来决定。
组委会制定如下竞赛规则,在实际可操作性基础上力求公正与公平参与。
组委会将邀请独立公证人监督现场赛事及评判过程。
一:
对于智能竞赛车模
1)、禁止改动车底盘结构、轮距、轮径及轮胎。
2)、禁止改动驱动电机的型号及传动比。
3)、禁止改造滚珠轴承。
4)、禁止改动舵机,但可以更改舵机输出轴上连接件。
5)、禁止改动驱动电机及电池,车模主要前进动力来源于车模本身直流电机及电池。
6)、为了车模的行驶可以安装电路传感器等,允许在底盘上打孔或者安装辅助支架等。
其他事项:
车模改装完毕后,尺寸不能超过:
250mm宽和400mm长,高度无限制。
二:
电路器件及控制驱动电路限制
1)、核心控制模块可以采用组委会提供的HCS12模块,也可以采用MC9SDG128自制控制电路板,除了DG128MCU之外不得使用辅助处理器以及其它可编程器件。
附:
可以使用飞思卡尔公司8位、16位系列微控制器(单核,例如禁止使用MC9S12X系列)芯片自制控制电路板。
每台模型车的电路板中只允许使用一种型号微控制器。
8位微控制器最多可以使用2片,16位微控制器限制只能使用一片;不得同时使用8位和16位微控制器。
2)、伺服电机数量不超过3个。
3)、传感器数量不超过16个(红外传感器的每对发射与接受单元计为1个传感器,CCD传感器记为1个传感器)。
4)、直流电源使用大赛提供的电池。
5)、禁止使用DC-DC升压电路为驱动电机以及舵机提供动力。
6)、全部电容容量和不得超过2000微法;电容最高充电电压不得超过25伏。
第2章:
主要思路及技术方案概要
2.1系统硬件结构
由于本次比赛我们参加的是摄像头组,所以讨论摄像头设计方案,硬件电路是整个系统的基础,整个赛车共包括七大模块:
微处理器芯片MC9S12DG128,电源模块,图像采集模块(摄像头),速度检测模块,电机驱动模块,舵机驱动模块及辅助调试模块。
下面是整个系统的硬件结构图。
(图2-1)。
图2-1系统整体结构
2.1.1主要模块
1)、MC9S12DG128微处理器:
它是整个系统的核心部分,所有的信息都要由他来处理,他负责接收赛道图像信息、赛车速度反馈信息,并对信息进行快速的处理,形成适合的控制量来控制电机工作及舵机的工作。
2)、图像采集模块:
图像采集模块由DG128的AD模块,外围芯片(LM1881)与摄像头共同组成的电路构成。
其作用是获取路径信息,并送到S12进一步分析处理。
3)、速度检测模块:
对于车速的检测,我们采用的霍尔传感器,由附在驱动齿轮四周的8个小磁铁和霍尔传感器组成。
通过获得的高低电平来间接得求出赛车的实时速度。
同时构成了系统的闭环控制。
4)、电机驱动模块:
是整个赛车的动力源泉,驱动赛车前进。
5)、舵机驱动模块:
控制赛车的转向。
6)、辅助调试模块:
调试模块主要用的是BDM,用于程序的烧写,功能的调试,系统设置等等。
7)、电源模块:
给系统各个模块提供所需的电压。
2.1.2工作过程
系统将图像采集模块,速度采集模块采集到的路况信息、速度信息和小车状态信息等送到整个系统的核心部件MC9S12DG128进行分析处理,然后发出相应控制命令输出到执行模块的电机和舵机执行适宜的速度和转向动作。
2.2系统软件设计流程
系统硬件位于底层,是整个系统的基础,系统软件结构要根据硬件和控制需求来制定。
系统的基础软件流程为:
首先,对各功能模块和控制参数进行初始化,然后,通过图像采集模块获取前方赛道的信息,同时通过速度传感器获取当前赛车的实时速度。
采用PID对舵机进行反馈控制。
另外根据检测到的速度,结合速度控制策略,对赛车速度不断进行适当的调整,使赛车在符合比赛规则的前提下,沿赛道快速行驶。
系统的基本软件结构流程如下
图2-2系统软件基本流程
第3章:
智能车硬件系统设计
在智能车的硬件结构搭建完成后,我们就要开始,系统各个模块的硬件电路设计了。
3.1电源模块
比赛所用的电池是用6节相同型号的1.2V镍镉电池串联起来从而得到7.2V的电池组,其容量标称为2000mAh,也就是说,该电池可以在2A电流下持续供电一个小时。
根据系统各功能电路对电源(工作电流和电压)的要求,电源模块包含多个稳压电路将电池电压转换成各个模块所需的电压,主要包括如下不同的电压:
图3-1电源模块
1)、+5V电源,主要给MC9S12DG128单片机系统供电,以及串行通讯口电路等提供稳定的电源。
2)、6V电源,主要给舵机提供工作电压,根据前三届的经验,舵机可以直接工作在7.2V电压下,并且高电压可以提高舵机的响应速度。
3)、7.2V电压,主要用于后轮直流电机驱动模块,必须能够提供大电流,所以必须用大的电容来提高电池的瞬时电流能力,但必须满足大赛对电容容量的要求。
4)、12V电压,主要用于CCD/CMOS图像传感器的工作电压,根据所选的摄像头的规格来定。
注意:
电源要注意滤波,各功能电源特别是功率电源个模拟电路电源一定要分开,并要求一点接地,从而减少噪声和干扰带来的影响。
(下面是部分电源供电电路原理图截图)
图3-2电机和舵机供电电路
3.2电机驱动模块和速度检测
该车模驱动电机堵转电流为12A,车模正常行驶时电机电流为3A左右,车模行驶时需要对车速加以控制,则对电机必须进行PWM调速,下图4-3,为我们的电路设计。
图3-3电机模块
采用了两片MC33886并联是为了防止由于电流过大发热加剧导致其过热保护。
3.2.1直流电机特性
型号:
RS-380SH;输出功率:
0.9W---40W,工作电压7.2V,空载电流0.5V,转速16200r/min,电流3.3A是转速14060r/min,直流电机具有相应迅速、低电平稳定性好、调速范围宽等。
通过控制驱动电机两端的电压来控制车模的加减速和制动,电机工作状态有正转做功和发电两个状态。
3.2.2速度检测
要使车能够快速稳定的运行,并且很好的实现加速和减速,速度控制就是很重要的,所以我们就需要精确的测得车的速度,对于车速的检测,我们采用霍尔传感器检测,由附在驱动齿轮四周的8个小磁铁和霍尔传感器组成。
霍尔元件有三个引脚,其中两个引脚是电源和地,第三个是输出信号,只要通过一个上拉电阻接至5V的电压,就可以形成开关脉冲信号,后轮电机每转一周就会形成8个脉冲信号。
输出的电压信号可以由单片机的A/D端口进行读取,通过周期性地读取计数器计数数值,可以反映出脉冲频率,从而得到测速信息。
3.3摄像头模块设计
3.3.1供电电路
图3-4摄像头供电电路
3.3.2摄像头采集电路图
图3-5摄像头采集电路
3.4调试电路模块
调试电路用于模型车开发调试阶段的工作中,特别是在现场调试过程中。
他一方面可以显示模型车控制电路的各种信息及工作参数,另一方面还可以对工作参数进行现场修改。
由于调试电路做在智能车模上影响车模的工作状态,所以采用软件的方法来进行调试,整个BDM和串口将数据送到PC进行分析。
车模的运行参数存储在单片机的EEPPROM或RAM中。
调试电路增加拨码开关输入,用来进行不同程序的选择需要。
用4个LED发光二极管来指示程序的执行情况。
最后用着4个LED作为智能车转向信号指示。
第4章:
智能车软件系统设计
4.1图像采集
视频采集模块由摄像头、LM1881视频信号分离芯片以及S12的AD模块构成。
视频信号是AD采集的基础,下面介绍摄像头的工作原理和视频信号的特征。
4.1.1摄像头的工作原理
摄像头分黑白和彩色两种,根据赛道特点可知,为达到寻线的目的,只需提取画面的灰度信息,而不必提取其色彩信息,所以本设计中采用的是黑白摄像头。
摄像头主要由镜头、图像传感芯片和外围电路构成。
图像传感芯片是其最重要的部分,但该芯片要以配合合适的电路才能工作。
将芯片和外围电路制作在一块电路板上,称为“单板”。
若给单板配上镜头、外壳、引线和接头,就构成了通常所见的摄像头,如聊天用的摄像头;若只给单板配上镜头,这就是“单板摄像头”。
单板摄像头日常生活中不多见,生产单板的公司通常将它们卖给其它公司,其它公司再按自己的要求包装这些单板。
单板通常有三个端子:
电源端、地端和视频信号端(有的还多出一个端子,那是音频信号端)。
电源接的电压要视具体的单板而定,目前一般有两种规格,6-9V或9-12V。
视频信号的电压一般位于0.5V-2V之间。
摄像头的工作原理是:
按一定的分辨率,以隔行扫描的方式采集图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度一一对应的电压值,然后将此电压值通过视频信号端输出。
具体而言(参见图5-1),摄像头连续地扫描图像上的一行,则输出就是一段连续的电压信号,该电压信号的高低起伏反映了该行图像的灰度变化。
当扫描完一行,视频信号端就输出一个低于最低视频信号电压的电平(如0.3V),并保持一段时间。
这样相当于,紧接着每行图像信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。
然后,跳过一行后(因为摄像头是隔行扫描的),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着会出现一段场消隐区。
该区中有若干个复合消隐脉冲,其中有个远宽于(即持续时间远长于)其它的消隐脉冲,称为场同步脉冲,它是扫描换场的标志。
场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。
摄像头每秒扫描25幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50场图像。
奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。
图4-1摄像头视频信号
摄像头有两个重要的指标:
分辨率和有效像素。
分辨率实际上就是每场行同步脉冲数,这是因为行同步脉冲数越多,则对每场图像扫描的行数也越多。
事实上,分辨率反映的是摄像头的纵向分辨能力。
有效像素常写成两数相乘的形式,如“320x240”,其中前一个数值表示单行视频信号的精细程度,即行分辨能力;后一个数值为分辨率,因而有效像素=行分辨能力×分辨率。
4.1.2视频同步分离电路
要能有效地对视频信号进行采样,首先要处理好的问题是如何提取出摄像头信号中的行同步脉冲、消隐脉冲和场同步脉冲。
这里有两种可行的方法。
第一,直接通过单片机AD进行提取。
因为行同步脉冲、消隐脉冲或场同步脉冲信号的电平低于这些脉冲以外摄像头信号的电平,所以据此可设定一个信号电平阈值来判断AD采样到的信号是否为上述三类脉冲。
第二,就是给单片机配以合适的外围芯片,此芯片要能够提取出摄像头信号的行同步脉冲、消隐脉冲和场同步脉冲以供单片机作控制之用。
考虑到单片机的速度有限,而一些脉冲的间隔时间又较短,为了减轻其处理负担,采用了第二种方法进行信号提取。
LM1881视频同步信号分离芯片可从摄像头信号中提取信号的时序信息,如行同步脉冲、场同步脉冲和奇、偶场信息等,并将它们转换成TTL电平直接输给单片机的I/O口作控制信号之用。
1881的端口接线方式如图5-2所示
图4-2LM1881引脚图
其中,引脚2为视频信号输入端,引脚1为行同步信号输出端(如图5-3中的b)。
引脚3为场同步信号输出端,当摄像头信号的场同步脉冲到来时,该端将变为低电平,一般维持230us,然后重新变回高电平(如图5-3中的c)。
引脚7为奇-偶场同步信号输出端,当摄像头信号处于奇场时,该端为高电平,当处于偶场时,为低电平。
事实上,不仅可以用场同步信号作为换场的标志,也可以用奇-偶场间的交替作为换场的标志。
图4-3LM1881时序信号
4.1.3摄像头初始化
由于摄像头行同步信号以及场同步信号接到了S12单片机的外部中断IRQ引脚,所以当每行视频信号到来时,就会触发一个中断。
此时如果需要采集该行,就开始进行AD转换。
摄像头的初始化包括中断初始化和AD初始化。
//IRQ行中断初始化
VoidIRQ_init(void)
{INITCR_IRQEN=0;//不能使IRQ
INITCR_IRQE=1;//下沿触发
}
//A/D初始化
VoidAD_init(void)
{ATD0CTL2=0xC0;
ATD0CTL3=0X08;
ATD0CTL4=0X81;
ATD0CTL5=0XA0;
ATD0CTEN=0X00;
}
//定时器0初始化
voidECT_init(void)
{
DDRT=0x00;//PT口定义输入
TIOS=0x00;//设为输入捕捉
TSCR1=0x80;//定时器使能
TSCR2=0x87;//允许定时器溢出中断,定时器时钟32M/(2^4)=2M
TCTL4=0xAA;//触发电平:
下降沿//10101010--->10101011
TFLG1=0xFF;//清除中断标志
HPRIO=0xE8;//
TIE=0x0B;//开中断//00001011
}
4.1.4采集
当行同步信号过来时,先判定该行信号是否处于场消隐区,处于则退出。
反之,延时一段时间使之过去,再判断是否采集数据,是则采集AD值传至数组中。
当场同步信号过来时,先关闭中断,再交换图像指针,处理图像,判断道路特性,从而判断舵机和电机工作。
4.2图像处理
本次比赛我们图像部分采用了二值化算法,因为赛道只有黑白两种颜色,很容易分辨,采用二值化算法可以得到很好的效果。
首先将灰度图像二值化,得到二值化图像,这样有利于图像进一步处理。
之后我们对二值化后的图像进行去噪并黑线提取,主要采用的是边缘检测算法。
4.2.1图像二值化处理
图像二值化处理就是将图像上的点的灰度置为0或者255,也就是将整个图像呈现出明显的黑白效果。
即将256个亮度等级的灰度图像通过适当的阙值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
首先把灰度图像二值化,得到二值化图像,这样子有利于图像进一步处理。
图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,是处理变得简单,而且数据的处理和压缩量小。
为了得到理想的二值化图像,我们必须得到准确的阙值,我们经过大量实验,最后确定为60,当像素值小于这个阙值时,我们认定是黑线,当像素值大于这个阙值时,我们认为是白线。
如下图,即为我们咋二值化后通过串口打印出来的图像。
图4-4二值化处理后的图像
其中由“1”构成的直线即为实际中黑线的走向,
4.2.2黑线提取
经过二值化处理后的图像数组,是有效提取黑线的前提,我们采用边缘检测的方法来分析此二维数组并提取黑线。
二维数组的行数和列数即为像素的图像坐标,我们若求出了黑线边缘的图像坐标,就知道了黑线的位置。
黑线边缘的特点是其左右两像素为一白一黑,两像素值的差的绝对值大于某阙值,大小可以根据实验确定。
而其余处的相邻两像素或全白,或全黑,像素值差的绝对值小于该阙值。
这样,只要我们对两数组每行中任何相邻两点做差,就可以根据差值的大小是否大于该阙值来判断此两点处是否为黑线边缘,还可以以进行根据差值的正负来判断边缘处是左白右黑,还是右黑左白。
从最左端的第一个有效数据点开始依次向右进行阙值判断:
由于实际中黑白赛道边缘可能会出现模糊偏差,导致阙值并不是个很简单介于两相邻之间,很可能要相隔两个点。
因此:
第line为原点,判断和line+3的差是否大于该阙值,如果是则将line+3记为i,从i开始继续在接下的从i+3到该行最末一个点之间的差值是否大于阙值,如果大于则将line+i/2+1的坐标赋给中心给黑线中心位置值,如图
图4-5单行黑线提取
利用该算法所得到的黑线提取效果不仅可靠,而且实时性好;在失去黑线目标以后能够记住是从左侧还是从右侧超出视野,从而控制舵机转向让赛车回到正常赛道。
4.3控制系统的设计
黑线的提取已经完成了,接下来就要根据检测到的路径进行控制了,智能车控制的核心为速度和方向,速度和方向均受多种复杂因素的影响。
为了实现速度和方向的反馈控制,我们采用PID算法对速度和方向进行校正。
PID控制的实质是根据输入的偏差值,按一定的函数关系进行运算,其运算结果用以控制输出。
4.3.1舵机控制
对于舵机可以通过PWM输出的脉冲的大小进行左转和右转,因此在程序上可以控制发送不同宽度的PWM波,舵机内部会产生一个频率为50Hz的基准信号,通过基准信号与外部所给的PWM波的正脉冲持续时间进行比较,从而确定转向和转角的大小。
当所加PWM波的频率为50Hz时,脉冲宽度与转角对应如下图所示。
图4-6脉冲宽度与转角对应图
由于摄像头具有很好的前瞻性,可以提前获取赛道信息,因此我们可以提前判断赛道是直道还是弯道,对于前面黑线的提取同时,我们还要从中找到赛道的变化曲率,例如走直道、小S弯、大S弯等等。
知道赛道的曲率后,便可控制舵机提前转弯。
下面介绍赛道的斜率变化对应舵机的控制。
一场图像数据处理结束后,赛道的路径信息会清晰的再现出来。
根据整幅图像黑线的有效起点和有效终点的斜率和偏离图像中心位置的偏移量,就可以判断当前赛道是直道还是弯道。
根据这些信息给定舵机的控制量。
此方案获的主要思想如下:
首先找到图像数据最近位置的第一个有效行,同时记录黑线的中心位置信息,定义为(X0,Y0)。
然后再找最远位置的第一个有效行,以及其黑线中心位置,定义为(X1,Y1)。
据此算出黑线的斜率(Y1-Y0)/(X1-X0),和黑线偏离图像中心位置的偏移量|X0|。
其示意图如下。
其计算公式为:
舵机控制量=K0*X0+K1*(X1-X0)/(Y1-Y0)
根据不断的调试和经验数据得到比例系数K0,K1的确切的值。
4.3.2速度检测与控制
能车在行驶过程中,需要实时检测状态,从而决定下一时刻的控制量。
通过测速电路测得单位时间内的脉冲个数,从而计算出智能车的速度。
速度控制要考虑的因素有两个方面,一是当前速度,一是当前路况。
当前速度可由霍尔传感器检测并输入单片机内处理得到。