新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于51单片机的红外避障自动车的实现

基于51单片机的红外避障自动车的实现

作者:时间:2012-09-18来源:网络收藏
最近学校放假三天,于是有了大段的时间,参考了自己学过的单片机,模电等知识,决定开始第一个正式电子制作——《基于的实现》。最终获得了成功,整车调试达到了理想效果,实现了红外避障功能。视频以上传到优酷网,视频地址http://v.youku.com/v_show/id_XMTYzNDc4MjA4.html欢迎大家观看,探讨,提出意见和建议。

下面是一些基本资料:

—————————————————————小车参数——————————————————————————

障碍检测方式:(探测模块功耗7mA)

车模几何尺寸:149 x 102 x 59 (mm)

车 模 轮 距:120 (mm)

测 障 精 度:75 cm

电 源 系 统:4 x 1.5 v 干电池/4 x 1.2 v 充电电池及其稳压输出

电机:直流减速电机,1~12V工作电压,传动比:71.2:1

主 控 芯 片:STC89C52MCU

其 他 芯 片:LM7806 LM7805 STC11F01等

—————————————————————小组资料——————————————————————————

小组成员:

王太杰:0804211班,擅长于硬件,焊接技术强,硬件知识充足,在本次制作中负责电机驱动部分建与调试。

孙学军:0904211班,擅长于编程,C语言功底扎实,思路开阔,在本次制作中负责程序驱动部分程序调试。

李相华:0804211班,在本次制作中负责电源部分。

小组优势:

硬件与程序搭配协调,每人负责各自模块,只提供最终模块接口,使队友不必关注对方模块内部结构,只需将接口连接完成即可,大大减少了每人负责的内容,提高了效率。

—————————————————————制作流程与时间———————————————————————

2010年4月3日(周六):

小组成员对各模块电路进行了选择、优化,并进行了电路搭建、焊接,各模块调试,确定模块交互接口;主控程序思路成型,并编写了测试程序,对软硬件进行了测试。最后各模块交互,整体调试,主程序确定及细节敲定。

2010年4月4日(周日):

模块交互,整体调试,主控程序细节修改;经布局后各硬件模块转移至车体,最终焊接,整车成型。主控程序下载,调试,最终成功。

—————————————技术资料———————————————————

设计思路:

为便节省电机数量和电路复杂程度,红外避障小车(以下简称小车)采用前轮主动,后轮从动原理。前轮采用双电机驱动,利用差速法实现车身转向。

检测部分利用红外发射管发射红外光,遇障碍物后经反射被红外接受管接收,产生电平转换,利用单片机I/O口检测红外检测模块电平输出,以此判断前方障碍物有无,检测到障碍物后,经单片机I/O口控制电机驱动电路,经由电机驱动电路输出不同电压,产生差速,实现转向,最终以达到避障的目标。

电源模块:

考虑到小车行驶的灵活性,我们抛弃了采用交流电的方案。在制作调试过程中,我们采取了4节1.5V5号南孚电池,经电池盒串联后可获得5.9~6.5V稳定电压输出,直接给电机驱动电路供电。但考虑到工作电压为4.5V~5.5V,且其对工作电压要求比较严格。对此,我们设想采取基于LM7805稳压芯片的稳压芯片输出5V恒定电压。电源电路图见附件,由于在制作中手头只有一片LM7806,于是我们在输出端串联了一个IN4007二极管,产生0.7V压降,最终获得5.2V~5.3V稳定电压输出,给单片机供电。以提高系统稳定性。

在最终整车成型时我们采用了5V稳压二极管稳定电压,原因有二:一是降低了电源电路功耗,二是降低了制作成本。考虑到一次性干电池的不可利用性,我们在整车成型时采用了4节可充电电池经电池盒串联的方案,以降低后续制作成本。考虑到电压输出端的单一性,我们考虑采用10V稳压管另做一路电源输出,为电机提供工作电压,在一定程度上可提高电机功率,提高整车运行速度。

电机驱动模块:

考虑到电机驱动集成芯片的价格比较高(18~30元/片),我们舍弃了采用电机驱动芯片驱动的方案,转而寻求分立元件模拟电路驱动,经最终选择我们采取了利用双三极管控制开关电路,利用三极管的反应灵敏性,并将其一端接在MCU的I/O口上,可以通过控制I/O口输出0、1脉冲数量比来控制三极管开关,以达到控制输出电压的目的。驱动电路图见附件。

主控程序:

为了降低程序复杂性,我们使用了3个I/O口,一个I/O口用来接收红外部分电平转换,检测障碍物,另外两个I/O口端接电机驱动电路,用程序使其产生0、1脉冲数量比来控制驱动电路开关。最终实现速度差以实现转向避障。

主控程序如下:
/* *****************************
程序开发环境Keil uVision3
语言:C
编写者:孙学军
时间:2010/04/04
***************************** */



/* *****************************
主程序及注释如下:

***************************** */
#includereg52.h> //添加函数库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit s=P3^5;      //定义红外避障检测端口
sbit m1=P3^4;     //定义电机M1电平输出端口
sbit m2=P3^6;     //定义电机M2电平输出端口
void delay_ms(uint z); //声明延时函数


main()         //主函数
{
uint i=0;       //初始值设定
m1=1;
m2=1;
while(1)        //无限循环
{
if(s==0)      //S=0表示前方有障碍物 进行转向
{
for(i=0;i5;i++)
{
m1=0;
m2=1;
delay_ms(15);    //状态保持15ms
m1=1;
m2=1;
delay_ms(5);    //状态保持5ms
}
}
if(s==1)     //S=1表示前方无障碍物 直线行驶
{
m1=1;
m2=1;
delay_ms(10);    //状态保持10ms
}
}
}



void delay_ms(uint z) //延时函数 循环嵌套原理
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

/* *****************************

程序结束,经测试程序符合硬件,功能达到预期目标。

***************************** */


————————————————————功能扩展——————————————————————————

1:本车人机交互性不强,车体速度无显示、障碍物有无显示不明显,无转向灯提示
预期可以增加速度测量以及液晶或数码管显示模块,显示模块可以附在车体本身,也可以单独成模块,利用无线传输将数据从车体发送到终端显示。

2:增加自动循迹功能

3:增加自动刹车功能

4:遥控功能

————————————————————完毕————————————————————————————

欢迎探讨,大家共同学习进步,欢迎高手指点!

燃气报警器相关文章:燃气报警器原理


评论


相关推荐

技术专区

关闭