基于KL25Z128VLK4单片机的智能车系统设计
2015-01-29安徽财经大学
安徽财经大学 汤 正
基于KL25Z128VLK4单片机的智能车系统设计
安徽财经大学 汤 正
本文以全国大学生“飞思卡尔”杯智能车竞赛为背景,基于飞思卡尔32位ARM Cortex-M架构微控制器(单片机)MKL25Z128VLK4,使用数字摄像头OV7620进行的智能车系统设计。简单介绍了KL25单片机、OV7620摄像头、系统整体硬件设计(包括PCB板的设计)及软件处理部分。重点说明了KL25单片机通过中值滤波和二值化等方法对来自OV7620摄像头的图像信息进行处理,对舵机产生良好控制。我们经过反复实验和调试,实现了智能车的自主循迹。
MKL25ZV128LK4;OV7620;图像处理;舵机;自主循迹
1 引言
全国大学生“飞思卡尔”杯智能汽车竞赛起源于韩国,是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的大学生课外科技竞赛。大赛组委会提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够自主识别路径的智能车,在专门设计的跑道上自动识别道路行驶,最快跑完全程而没有冲出跑道并且技术报告评分较高为获胜者。其设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械、能源等多个学科的知识,对学生的知识融合和实践动手能力的培养,具有良好的推动作用。
我们以实际参赛为经验,研究并设计了基于MKL25Z128VLK4单片机和OV7620摄像头的智能车硬件平台和软件系统。
2 MKL2Z128VLK4单片机简介
Kinetis L系列微控制器(MCU/单片机)的低功耗性能优越,既具有新型ARM® Cortex®-M0+处理器的卓越能效和易用性,也具备Kinetis 32位MCU/单片机产品组合的性能、外设、支持功能和可扩展性。该系列具有优化的动态和停止电流,并提供出色的处理性能,而且还提供多种片上闪存密度以及模拟模块、连接功能和HMI外设。Kinetis超低功耗L系列单片机还与基于ARM Cortex-M4的Kinetis K系列硬件和软件兼容,提供了一个向更高的性能、存储器和特性集成度升级的可扩展途径。
在实验和调试中,我们使用的是龙丘科技的以MKL25Z128VLK4为微控制器的核心板,该核心板为双排直插式,规格33*47mm,共引出72针引脚,使用官方内核频率48MHz,3.3V直流供电。其中核心板上PTB0/1/2/3上接了4个蓝色发光二极管,我们在后续调试程序中检查出错位置感觉十分方便有用。核心板样式如图1所示。
图1
3 OV7620摄像头简介
OV7620是一款CMOS摄像头器件, 当电机启动和急刹车时,电压突变对摄像头图像质量影响小,分辨率可以达到640*480,完全满足智能车的采集需求。OV7620每秒产生30帧图像,每帧两场,1秒钟采集60场图像,效率高,这比PAL制的摄像头来说提高了对小车的控制频率,对小车运行是很有好处的。OV7620主要有PCLK像素时钟输出、HREF水平场同步信号、FODD奇偶场同步信号和VSYNC垂直场同步信号。OV7620的输出数据是并行数据,同步信号可选用HREF和VSYNC分别作为同步行信号和同步帧信号,或者可选用HREF和FODD来同步行信号和同步帧信号。PCLK作为数据的锁存信号,保证控制核心所采集的数据时有效的图像信息。
因为OV7620摄像头兼容3.3V直流和5V直流供电,而我们使用的KL25单片机的工作电平是3.3V,无需做电平匹配。但是3V的电压下使用比较难调,输出的16进制数据清一色偏小,所以我们使用的摄像头是5V电压输入的。
4 硬件设计
根据KL25ZV128VLK4单片机的引脚功能复用功能表,该单片机只有PTA和PTD口具有中断功能,并考虑到OV7620 摄像头信号传输的连续性,我们将8位数字信号输出口Y0-Y7分别连接到单片机的PTD0-PTD7,HREF行同步信号接PTA5口,VSYNC场同步信号接PTA12口,PCLK时钟信号接PTA1口。
图2
智能车需要转向,我们使用的是型号为Futaba S3010舵机,其引出的红、黑、白三根不同颜色的线分别接+5V电压、GND和单片机的PTA13。因为该型号舵机工作频率为50-200Hz左右,超过正常频率范围舵机就会发出“呲呲”的声音,而且转向就会变得迟钝,不能正常工作。我们使单片机根据不同路况通过PTA13输出不同占空比的频率为50Hz的PWM波使舵机打向。
OV7620摄像头、MKL25Z128VLK4单片机、舵机、驱动板上的74LS244芯片均是+5V电压供电,但是7.2V直流电池直接给主板供电,所以必须需要使用降压芯片,我们使用的是AM1117-5.0芯片。AMS1117是一个正向低压降稳压器和低漏失电压调整器,它的稳压调整管是由一个PNP驱动的NPN管组成,在1A电流下压降为1.2V。AMS1117有固定和可调两个版本,输出电压可以是1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V,和5.0V。它内部集成的过热切断电路提供了过载和过热保护,以防环境温度造成过高的结温,是电池供电和便携式计算机的最佳选择。
对于驱动板,由于智能车使用的是双电机驱动,我们使用的是大功率H半桥集成芯片BTN7971B构成的4路PWM控制的电机驱动模块。由于BTS7971B为半桥驱动芯片,而系统需要在必要时产生制动效果,因此需要使用两片或两片以上的BTS7960B来构成全桥驱动,对电机进行双向控制,在必要时,使电机反向转动,产生制动。驱动板上三个2P接线柱,其中两个是分别控制双电机的,一个由主板上引来7.2V为驱动板供电。驱动板上还接入5口插针,其中一个是从主板上引来的+5V电压,使能74LS244芯片,剩余4口插针是留作接入4路PWM从而控制双电机的。
为了使智能车行驶起来更加稳定,我们将固定OV7620摄像头的碳素杆的底座用热熔胶固定在占整车重量约50%的电池正后方,使整车重心稳定在小车中央。同时为了使摄像头在智能车行驶过程中不随杆晃动影响图像采集,我们在此粗碳素杆(外径8mm,内径6mm)的中点处斜拉一根更细的碳素杆(外径3mm,内径2mm)到舵机正上方,两头均用热熔胶固定。
图2为我们所绘制的主板、驱动板的封装及原理图。
5 软件设计
如果说硬件部分是智能车的“躯体”,那么小车能够自主循迹跑起来更是需要“大脑”,即软件部分的支持和控制,使舵机能够根据摄像头采集的图像准确打向,进而使小车能够快速而平稳沿跑道行驶。
5.1 图像采集与处理
OV7620摄像头输出帧频率为60Hz,每帧图像分辨率为640×480,此数据量远远超过了路径识别的需求,给单片机造成了沉重的数据采集和处理负担,因而需要在采集图像数据过程中要对图像数据进行取舍。同时OV7620采集到图像是由一个一个不同的像素点构成的灰色图像,对比度不明显对于跑道边缘的判断不准确。因此我们使用OV7620采集出60行60列的图像,捕获的跑道信息完整,噪点较少,完全足够单片机用来对路径进行判断和处理。并且我们采取了对采集的图像根据大律法计算出一个动态阈值,之后再根据此阈值对图像进行中值滤波,得到一个二值化的图像,即整幅图像像素大小大于此阈值的像素点全为“1”,小于此阈值的像素点全为“0”,所以白色跑道全为“1”,跑道之外的蓝底全为“0”。此方法很好解决了对跑道边缘的判断不准问题,使单片机处理数据起来更加快速准确。图3为采集到的实际图像和第一个弯道二值化后的图像,以及图像处理程序的中值滤波函数。
图3
5.2 舵机控制
智能车能够快速准确自主循迹就是依赖单片机根据二值化的图像控制舵机打向。因为我们使用OV7620摄像头采集到的图像和二值化后的图像都是60行60列的,所以我们以30作为固定中值,再根据二值化的图像计算得到跑道的实际中值,二者之差即为跑道的水平偏移量,即判断为直道或弯道,若差值为0,则为直道;若差值大于0为右弯道;若差值小于0为左弯道,之后再根据差值的正负及大小给舵机不同占空比的PWM波,控制舵机不同的打向角度,达到自主转向的目的(见图4)。
图4
6 设计结果
经过以上理论分析及设计,最终完成了对智能车硬件和软件的构建和结合,设计成果如右图所示。在经过多次在白色蓝底跑道上的实际测试,该以KL25Z128VLK4为核心控制器的智能车很好地完成了对跑道信息的采集、处理及判断,顺利完成了直道、连续大“S”弯道、连续小“S”弯道、“十”字弯等不同路况的测试,均能快速稳定通过,且不冲出规定跑道范围,达到了自主循迹的目的。
[1]卓晴,黄开胜,邵贝贝.学做智能车—挑战飞思卡尔杯[M].北京:北京航空航天大学出版社,2007:1-18.
[2]吴斌华,黄卫华,程磊,等.基于路径识别的智能车系统设计[J].电子技术应用,2007(3):80-82.
[3]向婷,季奥颖,陈进军.数字式摄像头OV7620在智能车上的应用[J].传感器世界,2013(9):41-43.
[4]万海波,韩鹏,王海莉.第八届飞思卡尔杯全国智能汽车竞赛技术报告[R].安徽:安徽工业大学,2013:16-34.
[5]葛家斌.基于OV7620图像传感器的智能循迹系统的设计[J].电脑知识与技术,2011(9):8286-8296.