倒车雷达 基于MSP430F2274单片机的倒车雷达设计
作者:中国石油大学(华东) 崔海朋 时间:2008-09-10 来源: 今日电子 浏览评论
随着人们对汽车辅助驾驶系统智能化要求的提高和汽车电子系统的网络化发展,新型的倒车雷达应能够连续测距并显示障碍物距离,并具有通信功能,能够把数据发送到汽车总线上去。以往的倒车雷达设计使用的元器件较多,功能也较简单。本文介绍的基于新型高性能超低功耗
HYPERLINK "http://www.eepw.com.cn/news/listbylabel/label/...
基于MSP430F2274单片机的倒车雷达设计
作者:中国石油大学(华东) 崔海朋 时间:2008-09-10 来源: 今日电子 浏览评论
随着人们对汽车辅助驾驶系统智能化要求的提高和汽车电子系统的网络化发展,新型的倒车雷达应能够连续测距并显示障碍物距离,并具有通信功能,能够把数据发送到汽车总线上去。以往的倒车雷达设计使用的元器件较多,功能也较简单。本文介绍的基于新型高性能超低功耗
HYPERLINK "http://www.eepw.com.cn/news/listbylabel/label/单片机" 单片机MSP430F2274的倒车雷达可以弥补以往产品的不足。
系统总体设计
系统采用超声波测距原理。超声波测距仪器一般由发射器、接收器和信号处理器三部分组成。工作时,超声波发射器发出超声波脉冲,超声波接收器接收遇到障碍物反射回来的反射波,准确测量超声波从发射到遇到障碍物反射返回的时间,根据超声波的传播速度,可以计算出障碍物距离。作为一种非接触式的
方式,超声波具有空气传播衰减小、反射能力和穿透性强的特点。超声波测距具有在近距离范围内有不受光线和雨雪雾的影响、结构简单、制作方便和成本低等优点。高性能的单片机结合超声波测距,可以实现功能强大、使用方便的倒车雷达。TI公司的16位单片机MSP430F2274功耗极低,片上资源丰富,同时利用JTAG接口技术,可以对片上闪存方便的编程,便于软件的升级,非常适合作为倒车雷达系统的微控制器。倒车雷达系统的框图如图1所示。
图1 倒车雷达系统框图
硬件系统设计
系统以MSP430F2274微控制器为核心,外围电路由超声波发射电路、超声波接收电路、声光报警电路、通信接口电路、键盘液晶显示电路五部分组成,下面逐一介绍。
图2 倒车雷达系统主控电路图
系统的主控电路图如图2所示。本系统中选用的MSP430F2274片内有32Kb闪存和1Kb RAM,因此无须外扩存储器。外接的32.768kHz晶振作为CPU关闭状态Basic-Timer的时钟源,同时也作为系统的车载时钟使用。
超声波发送模块电路如图3所示,由超声波产生和发射两部分组成。超声波的产生方法有两种:硬件发生法和软件发生法。常用的硬件发生法常采用如下
:超声波由CD4011构成的振荡器振荡产生,经升压变换推动超声波换能器而发射出去,振荡器的起振和停振由单片机来控制。本设计采用软件发生法,因为通过软件发生法既可以减少硬件的复杂程度,降低系统的成本,又具有灵活性强、容易实现、稳定性好的优点。本系统利用MSP430F2274单片机的定时器功能来产生稳定的PWM(40Hz)脉冲波,并通过I/O端口P2.3输出到超声波发射部分。在超声波发射电路中CD4049一共包括了6个非门,图3中线路仅使用了3个,为了防止干扰或被静电击穿导致整个CD4049损坏,把没有使用的那一侧的3个非门串起来做接地处理。当控制端输出一系列固定频率脉冲时,在压电陶瓷型超声波发射换能器UCM-40-T上就固定频率的加正电压和反电压,发出大功率的超声波,所得到的波形比其他方式效果更理想。
图3 倒车雷达超声波发送模块
超声波接收电路如图4所示。这是本系统设计和调试的一个难点。压电陶瓷型超声波接收器 UCM-40-R 接收反射的超声波转换为40kHz毫伏级的电压信号,需要经过放大、处理、才能用于触发单片机中断。一方面传感器输出信号微弱,由于反射条件不同,需要放大倍数的范围大约是100~5000,另一方面传感器输出阻抗较大,需要高输入阻抗的多级放大电路,而高输入阻抗容易接收干扰信号。通常采用两种方案:一是采用运算放大器组成多级选频放大电路;二是采用专用的集成前置放大器。第一种方案容易产生自激振荡,要使接收电路达到很好灵敏度和抗干扰效果,电路的调试是较困难的。本系统采用专用的集成电路前置放大器 CX20106,它由前置放大器、限幅放大器、带通滤波器、检波器、积分器、整型电路组成。其中前置放大器具有自动增益控制功能,可以保证在超声波传感器接收较远反射信号输出微弱电压时放大器有较高的增益,在近距离输入信号强时放大器不会过载。调节芯片引脚5的外接电阻R3,将它的滤波器的中心频率设置在40kHz,达到了很好的效果。当接收到与滤波器中心频率相符的信号时,其输出引脚7输出一个低电平,而输出引脚7直接接到MSP430F2274的P2.2上,以触发中断。
图4 倒车雷达超声波接收模块
图5 倒车雷达声光报警电路图
报警模块采用简单的声光报警电路,如图5所示。先设定一个临界值,当车尾与障碍物的距离小于设定的最小距离时,红色指示灯闪亮,绿色指示灯熄灭。单片机向其端口发出PWM脉冲,随着距离的减小,通过控制PWM脉冲的占空比使闪光和蜂鸣的频率加剧,以此来提示驾驶员。
图6 倒车雷达通信接口电路图
通信接口电路如图6所示。采用美信的MAX3232芯片,外围电路非常简单,只需要5个0.1μF的电容器。该电路把单片机串口输出信号隔离变换成 RS-232信号发送到汽车总线上,同时还可以实现该系统与计算机的通信。
图7 倒车雷达键盘显示电路图
键盘和显示电路如图7所示,由键盘和液晶显示两部分组成。其中键盘采用独立式按键,有3个按键,一个设置键、一个上翻键、一个下翻键。可以进行报警值、工作方式、时钟等各个参数的设置。液晶显示电路采用ZJM12864BSBD这款低功耗的点阵图形式LCD,显示格式为128点(列)×64点(行),具有多功能指令,容易使用,可实时的显示时钟、距离和报警提示信息,方便直观。
系统软件设计
软件采用模块化设计,程序由主程序、测距子程序和键盘显示子程序、时钟显示子程序等多个模块组成,调试过程中对其中每个功能模块和子程序逐一调试,在每个子程序都完成指定的功能后,再进行综合调试。系统的软件
如图8所示。
图8 系统软件流程图
超声波发射电路发出超声波的同时计数器开始计数,当遇到障碍物反馈信号到超声波接收器接收,经CX20106接收电路处理后,产生一个低脉冲,该信号传送给单片机产生中断,调用测距子程序,计算出测量距离,调用显示子程序,根据不同的测量数值在液晶上显示距离和报警。当距离大于2m,显示“安全”和测量距离,继续测量;当距离小于1m时,显示“危险”和测量距离,由P1.2位驱动蜂鸣器报警;当距离小于2m且大于1m时,显示“注意”和测量距离。为增强抗干扰能力,系统连续发射超声波测量三次,从中剔除最大最小值,取中间值计算出精确的距离。这样每秒可测约三个数据,仍然可以满足实时性要求。
结语
该倒车雷达采用了高性能的MSP430F2274单片机,并充分利用了其片上资源使得系统功能丰富,使用的外围芯片减少,系统可靠性得到提高。该倒车雷达应用于汽车中,当驾驶员倒车时,从液晶显示屏上一目了然便知道障碍物离车的距离,克服了后视镜小,视野窄的缺点,消除了倒车造成的事故隐患。
声波倒车控制器的技术要求1.在现有样品只能显示测试距离功能的基础上增加继电器用来控制电机断电(串励系统)或者启动它励(它励系统)同时有声光报警。数位显示可以保留作为选装件。2.控制器应在离障碍物99~5cm时启动(感应探头至障碍物的距离)。应该做到出厂可调以适应客户需求。3.产品工作电压12V,主机应独立封装,做到防尘防水抗电磁干扰。4.每套系统有2或者3只探头,所有附件与主机的连接均采用插接器
超声波倒车控制器的技术要求
1.在现有样品只能显示测试距离功能的基础上增加继电器用来控制电机断电(串励系统)或者启动它励(它励系统)同时有声光报警。数位显示可以保留作为选装件。
2.控制器应在离障碍物99~5cm时启动(感应探头至障碍物的距离)。应该做到出厂可调以适应客户需求。
3.产品工作电压12V,主机应独立封装,做到防尘防水抗电磁干扰。
4.每套系统有2或者3只探头,所有附件与主机的连接均采用插接器,以便维护保养。
5.以上要求为暂时定制,有问题双方协商解决。
补充:欠压继电器12v断电电路;距离<5CM,继电器12v切断电机,软件C语言代码,硬件制作成品电路板。
//超声波测距系统,2008.5.5//
//89s51,数显,99CM-5CM,声光报警,继电器欠压保护,继电器5CM继电器控制电机断电。//
//工作电压12v输入,3路数码管显示距离。//
#include "reg51.h"
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit transfer="P1"^0;
sbit receiver="P3"^2;
sbit speak="P1"^1;
sbit relay="P3"^1; //继电器控制接口
/*数码管位选控制*/
sbit ledwei0=P2^4;
sbit ledwei1=P2^5;
sbit ledwei2=P2^6;
uchar TimerH,TimerL; //读取测量定时器的值
ulong realTimer; //存放真测量时间
ulong real_dis; //存放测量距离
uint dis_flag; //距离计算标志位
uint alarm_flag100=0; //用于报警
uint alarm_flag50=0;
uint alarm_flag20=0;
uint alarm_flag10=0;
uint wei0,wei1,wei2,wei3;
uchar ledflag="0"; //数码管标志位,用于刷新
uchar send_flag=0;
uchar count="0"; //定时器T0计数
uchar ledcode[11]={0x18, 0x7B, 0x2C, 0x29, 0x4B, 0x89, 0x88, 0x3B, 0x08, 0x09,0xff};//结合硬件译码
/*延时函数*/
void delay(uint count) //延时
{
while(count--);
}
/*超声波发送函数--40KHZ*/
void CLK40K()
{ uchar i="4"; //发送的波形数量=(i/2)
// ET1=0;
TR0=1; //START TIME0,同时发送40KHZ方波
do
{
transfer=~transfer;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
}
while(--i);
}
/*距离测量函数*/
void distance(void)
{
realTimer=TimerH*256+TimerL;
real_dis=realTimer*164/10000; //单位cm
//if(real_dis<=10)
//real_dis=10;
//real_dis=103;
wei0=real_dis%10;
wei1=(real_dis/10)%10;
wei2=(real_dis/100)%10;
//wei3=real_dis/1000;
}
/*显示刷新函数函数*/
void display(void)
{
switch(ledflag)
{
case 0:P0=ledcode[wei0];ledwei0=0;ledwei1=1;ledwei2=1;break;
case 1:P0=ledcode[wei1];ledwei0=1;ledwei1=0;ledwei2=1;break;
case 2:P0=ledcode[wei2];
if(wei2<=0)
{
ledwei0=1;ledwei1=1;ledwei2=1;
}
else
{
ledwei0=1;ledwei1=1;ledwei2=0;
}
break;
//case 3:P0=ledcode[wei3];break;
}
ledflag++;
if(ledflag==3)
ledflag=0;
delay(0x80);
}
/*报警处理函数*/
void alarm_light(void)
{
if(real_dis<=10)
{
relay="0"; //关闭电机
speak="1";
}
else if(real_dis<20)
{
if(alarm_flag20>=1)
{
speak^=1;
alarm_flag20=0;
}
}
else if(real_dis<50)
{
if(alarm_flag50>=2)
{
speak^=1;
alarm_flag50=0;
}
}
else if(real_dis<100)
{
if(alarm_flag100>=4)
{
speak^=1;
alarm_flag100=0;
}
}
else
{
speak="1";
}
}
/*系统初始化程序*/
void init()//系统初始化
{
TMOD=0X11; //初始化定时器T0,T1用于产生40hz发射波
TH0=0x00;
TL0=0x00;
TH1=0x00;
TL1=0x00;
TF1=0;
PX0=1;
ET1=1;
EA=1;
TR1=1; //启动定时器1
IT0=0; //外部低电平触发方式
}
void int0(void) interrupt 0 //关闭计数器,存计数值,置标志
{
EA="0"; //关闭中断
EX0=0; //关外部中断
TimerL="TL0"; //读取数值
TimerH="TH0";
TR0=0; //关闭定时器0
TH0=0x00;
TL0=0x00;
dis_flag=1; //距离计算标志
//speak=1;
// distance(); //调用距离计算函数
}
void time1(void) interrupt 3
{
TF1=0;
TH0=0x00;
TL0=0x00;
TH1=0x00;
TL1=0x00;
send_flag=1; //开启接收回波中断
}
/*系统主函数*/
void main()
{
init(); //系统初始化
real_dis=150;//y预设初值,防止开机未发射超声波,电机锁死
delay(0x40);
while(1)
{
if(send_flag==1)
{
/* 报警级别计数*/
alarm_flag100++;
alarm_flag50++;
alarm_flag20++;
alarm_flag10++;
/* 报警级别计数*/
send_flag=0;
count++;
if(count==5)
{
count=0;
CLK40K();
//TR1=1; //???
delay(0x40); //延时,避开发射的直达声波信号,可以调节测量的最小距离
EX0=1;
}
}
if(dis_flag==1)
{
dis_flag=0;
//speak=0;
distance();
EA="1";
}
display(); //调用显示函数
alarm_light();
}
}
本文档为【倒车雷达】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。