产品概述

912单片机 基于图像处理的智能车辆设计

小编 2024-11-25 产品概述 23 0

基于图像处理的智能车辆设计

介绍了自行设计的视觉导航的智能车,它综合应用了图像处理、单片机控制、数据通信等相关理论。智能车的设计包括软件、硬件两部分内容。软件设计包括图像处理、电机控制、数据通信等内容。硬件设计包括控制系统硬件组成、电机驱动控制电路设计。在不同条件下试验证明,该智能车系统实时性好、工作稳定。

1 智能车简介

1.1 引导原理

随着计算机技术、数字图像处理技术以及控制技术的发展,智能车辆将在未来的工业、运输以及日常生活起到至关重要的作用。本文所述智能车辆采用CCD传感器识别路径上的黑线,测出车辆与标识线的位置和角度的偏差。采用模糊控制方法,并通过电机的差速控制系统,是智能车沿路径快速行驶。

1.2 智能车系统简介

该系统以飞思卡尔公司的MC68S912DP256为核心,由电源模块、CCD传感器模块、直流电机驱动模块、转向电机控制模块、单片机模块等组成。智能车的工作模式是:CCD传感器探测道路信息,转速传感器检测当前车速,电池电压监测检测电池电压,由计算机-单片机组成的上-下位机控制系统调整小车运行。通过控制算法对模型车发出控制命令,再由转向舵机和驱动电机对模型车的运动轨迹和速度进行实时控制。

1.3 运动学模型(略)

智能车运动模型如图1所示,两个前轮由舵机控制,直流电机驱动两个后轮。以此确保车体两侧具有相同的角速度和运行速度。

图1 智能车运动学模型

2智能车控制系统

2.1 图像处理系统(略)

CCD摄像头拍摄路面标识线的图像,通过单片机的A/D转换模块把模拟图像实时地转换为数字图像信号传给计算机。

对采集到的数字图像,首先采用中值滤波器消除噪声。中值滤波器在消除噪声和保持图像细节之间可以得到较好的平衡,并且计算量不大,能够满足图像实时处理的要求。

因路面易受到光线、污染等外在因素的影响,所以采用自适应的阈值法,把图像转换为二值图像。根据识别出的标识线图像,提取导航参数角度偏差和位置偏差。

2.2电机控制系统

电机的驱动模块采用MC33886作为后轮驱动的动力来源。驱动电路图如图2所示。MCU通过IN1引脚输入PWM波,以调节33886的DNC口的输出电压,调节电机转速的快慢,并且在IN2口输入电压以调节电机的反转和制动性能。

图2 电机驱动电路

为了能够方便地对电机进行控制,在实验中使用了BDM的调试方式及装备CodeWarrior 3.1的仿真软件的PC机对所编写的控制程序进行调试。考虑到程序的可读性和维护性,在单片机程序中,采用了C语言进行编写。

2.3 数据通信系统

智能车系统采用了上-下位机的结构。下位机通过串口中断响应程序接受控制,并根据指令调整智能车的位置和航向,从而实现对路面黑线的跟踪。鉴于单片机与PC机串行接口的电气规范不一致,为实现数据通信,接口之间通过MAX232起电平转换的作用[3]。单片机串口原程序代码如下:

#include <hidef.h> #include <mc9s12dg128.h> #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

/*-------记录接受次数----------------------*/char m;void light(void) { PORTB=m; }/*-----------初始化------------------------*/void SciInit()

{ SCI0BDL = 52; SCI0CR1=0; /*normal,no parity*/ SCI0CR2=0X2C; /*RIE=1,TE=1,RE=1*/}

/*-----------发送部分----------------------*/void SciTx(unsigned char text)

{int i=0; unsigned char temp; temp=SCI0SR1; /*clear flag*/ for(i=0;i<10;i++) { while (!(SCI0SR1&0x80)); /* wait for output buffer empty */ SCI0DRL = text; }}

/*---------接受部分------------------------*/char SciRx(void)

{ char temp; char result; temp=SCI0SR1; /*clear flag*/ while(!(SCI0SR1&0x20)); result=SCI0DRL; return result;}

3智能车的程序流程

视觉导航智能车总程序流程见图3所示。其中,上位机进行图像处理和参数提取,按照模糊控制规则对小车进行控制,并将结果通过RS232传输给下位机;下位机通过电机控制程序调整车体位置,实现对路径跟踪控制。

图3 总程序流程图

4 实验分析

采用基于LabView虚拟一起技术的智能车仿真系统Plastid对智能车进行算法仿真及分析,其可以对路径和模型车的环境进行模拟,软件界面及模型车仿真的轨迹如图4所示。

进行实时控制,分别以不同的车速跟踪直线和弯道。当跟踪不同路径时,在低速情况下,智能车表现出良好的控制效果。在速度较高的时候,跟踪效果不太理想。这是因为速度较高时,系统反应有延迟性,导致跟踪误差变大,而跟踪弯道的误差较跟踪直线要大,这是因为路径的复杂使对电机控制量需要反复调整。从整体上分析,小车基本上能沿指定路径快速稳定地行驶。

5 结束语

本文介绍了自行设计的智能车,利用计算机作为图像处理和识别的控制单元,采用MC68S912DP256单片机作为执行控制单元,建立起一个闭环控制系统。仿真分析和实时跟踪控制实验证明智能小车具有实时性好、工作稳定等优点。

(本文选编自《电气技术》,原文标题为“基于图像处理的智能车辆设计”,作者为王洋。)

多回路无线照明控制器MCU脱机下载器的设计与实现

刘雪兰1, 田宏伟2

(1.江苏农牧科技职业学院 信息工程系,江苏 泰州 225300;2.苏州大学 应用技术学院,江苏 苏州 215325)

:目前MCU的下载器以在线下载器为主,在室外环境下携带不便,便携式的脱机下载器比较缺乏且价格昂贵,因此根据多回路无线照明控制器实际需求设计了针对AW系列MCU的便携式脱机下载器。通过对HCS08内核CPU及背景调试控制器的深入理解,设计了使用SD卡和EEPROM双重存储器的下载器硬件和软件,精心设计了能保证程序下载可靠性的软件。该下载器已在实际项目中应用,运行稳定,效果较好。

:TP393文献标识码:ADOI: 10.19358/j.issn.1674-7720.2016.24.028

引用格式 :刘雪兰, 田宏伟. 多回路无线照明控制器MCU脱机下载器的设计与实现[J].微型机与应用,2016,35(24):98-100.

0引言

嵌入式产品中MCU的程序下载是指将固件程序下载到目标芯片中,同时提供对目标芯片Flash的擦除和校验等功能的过程。目前针对飞思卡尔MCU的程序下载器一般以在线编程为主,常用的有P&E公司、飞思卡尔公司等生产的调试器,这些调试器功能复杂、价格昂贵,就脱机下载器而言目前仅P&E公司提供一款Cyclone脱机下载器,价格更高。

AW系列MCU是飞思卡尔半导体公司推出的针对电机控制、自动化控制以及汽车应用等场合的工业级MCU,外围模块丰富,存储器容量大,且抗干扰能力强,因此选择其中的MC9S08AW60作为多回路无线照明控制器的核心MCU。实际运行中,由于用户功能需求的变化,需要到现场对MCU进行程序升级,但现场下载程序必须携带笔记本电脑和在线下载器才能进行,携带不便。

本文在分析了HCS08系列CPU内核基础上,设计了BDM调试器硬件电路,设计了多回路无线照明控制器MCU便携式脱机下载器,同时给出在下载器软件方面保证整个下载过程可靠性所采取的措施。

1设计思路

便携式下载器使用SD卡作为待烧写的十六进制目标文件的存储载体,带有液晶显示功能,通过按键选择MCU的型号及目标文件,选定后对目标MCU执行程序烧写操作,下载器使用9 V镍氢充电电池作为供电电源,外部的EEPROM用来存储配置参数,同时为了可靠起见,EEPROM还用来存储待烧写的目标文件,下载器的模块构成如图1所示。

便携式下载器的设计需要深入理解HCS08内核、背景调试控制器模块以及目标文件格式的解析等。

1.1S19记录文件

S19记录文件[1]是飞思卡尔HC08、HCS08、HCS12系列微控制器的机器码文件,是使用字符记录的具有固定格式的目标代码文件,S19文件中每条记录占用1行,每行由5部分数据段组成,其数据段定义如表1所示。

1.2背景调试模式BDM

背景调试模式[2]BDM(Background Debug Mode)是由飞思卡尔半导体公司推出的单线调试方式,是S08、S12及Coldfire系列MCU支持的调试方式。这些芯片内部都具有背景调试控制器(Background Debug Controller,BDC)[3],负责接收和解析下载器发送的命令,通过操作该控制器,开发人员可以实现底层调试、Flash擦除和编程、加密处理等功能。

BDM接口为单线接口,使用的通信引脚为BKGD,其他的为2个供电引脚以及复位引脚RESET,下载器为双排6芯接口,占用空间小,方便制作。

2 载器硬件设计

便携式下载器以AW60为主控MCU,下载器硬件设计围绕功能需求进行,包括BDM接口模块、液晶显示模块、按键输入模块、使用SPI接口通信的SD卡模块和EEPROM模块等,此处主要介绍BDM接口电路,电路示意如图2所示。

主控芯片输出信号与目标MCU之间接入三态缓冲器74HC125,在保证信号的驱动能力的同时可以适应目标芯片3.3 V或者5 V的信号电压[4]。从图2中可以看出,需要向目标MCU发送BKGD数据时,下载器BKGD_DRV首先输出低电平信号,75HC125-3由高阻态转换为工作状态,此时即可通过BKGD_OUT引脚输出0或1的信号,目标MCU的BKGD引脚即接收该信号,其他引脚的工作方式类似。

需要注意的是,图2中BKGD_IN引脚对应的是MCU的两个引脚PTC6和PTF0,而且在软件中将PTF0配置为定时器1通道2的输入捕捉引脚,这么做并不是为了增加驱动能力,而是为了配合BDM指令集提供的一条用于解决下载器与目标MCU速率不匹配的指令——SYNC指令。在实现SYNC指令功能时,PTF0处于输入捕捉的工作模式,用于捕捉目标MCU发送的电平跳变信号,通过测量目标MCU发送的128个低电平周期从而计算出该芯片BDM控制器的运行频率,实现自适应的通信。

3下载器软件设计要点

BDM通信是单线通信,其最基本的底层操作是读/写一个数据位的操作,而对应的指令集的基本单位为1 B,因此软件设计的要点就是深入了解BDM指令以及编写稳定可靠的读/写字节数据函数,同时为提高下载器下载的可靠性给出了三种措施。

3.1BDM指令介绍

HCS08内核的BDM指令分为两类[5]:一类是在任何运行模式下都可以执行的指令,用于对存储器的读写访问及设置断点等功能,称为硬指令,硬指令不影响CPU运行。另一类指令称为软指令,需要在BDM模式下由CPU执行(用户程序无法运行),固件指令主要提供对CPU内部寄存器的读取和修改操作。

3.2读写汇编子程序

下载器主控芯片第一步操作是测量目标MCU的频率,该操作是通过发送长度足够的低电平来同步请求SYNC指令,主控芯片通过测量目标MCU发送的128个低电平周期所使用的时间,从而换算出目标MCU的BDM控制器的工作频率,此处用到的便是PTF0作为输入捕捉用来计算两次跳变间用时的功能[6]。

在此基础上,接下来就是比较关键的读/写字节子程序的实现,为了保证通信的时序完全按照BDM的要求,该子程序必须使用汇编语言编写,限于篇幅不再列出具体汇编程序,程序设计时需要仔细计算出每个语句及循环操作所占用的周期,发送数据的过程及占用周期如下:

(1)主控芯片写位0到目标芯片BKGD引脚的操作:拉低目标芯片的BKGD引脚不少于12个时钟周期,目标芯片在检测到低电平后的第10个周期对BKGD进行采样,读入该位。

(2)主控芯片写位1的操作:拉低目标芯片BKGD引脚2~4个时钟周期后释放BKGD端,使之为高电平,目标MCU在探测到低电平以后的第10个周期对BKGD进行采样,读入该位。

3.3程序下载的可靠性

对于下载器而言,下载的完整性和可靠性是第一位的,脱机下载器在软件方面做了以下几个方面的工作:

(1)程序下载回滚功能:为防止用户下载程序后发现下载的代码文件有误,但目标MCU已被擦除无法恢复原有程序,在下载器的软件中加入了一个操作,即在烧写目标芯片前首先将目标MCU中的程序读出,程序读出后,存储在下载器外置的EEPROM中,若用户选择程序回滚,则下载器软件重新读入之前读出的目标文件,并进行回滚编程。

EEPROM选用容量为128 KB的25LC1024,内部划分为三个区域,分别用来存储配置参数、目标MCU内部原有固件程序以及待烧写的目标文件。

(2)防SD卡故障功能:为防止在下载过程中出现SD卡被拔出等误操作引起的无法读取目标文件下载的错误,下载器软件首先把待烧写的目标文件S19存入EEPROM中,在对拷贝到EEPROM的目标文件进行重新校验后才对目标MCU进行擦除和编程操作。

(3)程序下载校验功能:目标芯片烧写成功后,偶尔也会遇到运行不正常的情况,而且可能很难被发现,因此程序下载完毕后必须进行程序校验操作。具体过程是读出下载后芯片的程序,并按字节与存储在EEPROM中的S19文件进行对比,若出现不一致则提示用户校验错误,需要重新下载。

4结论

本文针对飞思卡尔下载器以在线编程为主,市场中缺乏MCU脱机下载器的问题,在深入理解HCS08型CPU内核中BDC模块的功能、指令的基础上,设计了针对多回路无线照明控制器MCU的脱机下载器,并成功用于实际产品的程序下载中。通过进一步的改进,可以适应更多型号的HCS08系列MCU的芯片编程。

参考文献

[1] 王超艺,王宜怀.飞思卡尔S08系列机器码文件下载软件的开发[J].计算机应用与软件,2011,28(12):256258.

[2] Freescale. HCS08 Family Reference Manual Rev.2[Z].2007.

[3] Freescale. Introduction to HCS08 Background Debug Mode[Z]. 2006.

[4] 徐清,王宜怀.嵌入式微控制器MC68HC912B32背景调试模式设计与实现[J].电子技术应用,2006,32(6):6164.

[5] 王宜怀,张书奎,王林.嵌入式技术基础与实践(第2版)[M].北京:清华大学出版社,2011.

[6] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.

相关问答

电气自动化控制维修技术员是干什么的? - 困困君在美国 的回答...

检修、修造、电网调度、用电管理、电力环保、电力自动化、技术管理等工作。其属于电气工程师,从事勘测、规划、设计、电力工程建筑、安装、调试、技...

电气自动化控制维修技术员是干什么的? - zEaaOw1v 的回答 - 懂得

一、电气自动化控制维修技术员主要工作内容如下:1、保管好机具设备,保持清洁,做到无丢失、无损坏、无锈蚀;2、在完成本单位车辆保修任务的基础上,积...

询问一下!广东全自动拉布机怎么收费,全自动拉布机需要预定...

[回答]跟武汉鑫军扬科技合作7-8年了,一直都很愉快,而且效果也很满意1,有可能是你的端口没有接上拉,2,具体还要看你的电路怎么接的,会不会是你外围电路拉...

各位老师,求了解!齐全的搬运电动叉车联系方式,搬运电动叉...

[回答]搬运机器人涉及到了力学,机械学,电器液压气压技术,自动控制技术,传感器技术,单片机技术和计算机技术等学科领域,已成为现代机械制造生产体系中的一...

猜你喜欢