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

发布者:qin199099最新更新时间:2012-09-18 来源: 51hei关键字:51单片机  红外避障自动车  红外探测 手机看文章 扫描二维码
随时随地手机看文章
最近学校放假三天,于是有了大段的时间,参考了自己学过的单片机,模电等知识,决定开始第一个正式电子制作——《基于51单片机的红外避障自动车的实现》。最终获得了成功,整车调试达到了理想效果,实现了红外避障功能。视频以上传到优酷网,视频地址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稳定电压输出,直接给电机驱动电路供电。但考虑到51单片机工作电压为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
***************************** */



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

***************************** */
  #include   //添加函数库
  #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;i<5;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:遥控功能

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

 

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

关键字:51单片机  红外避障自动车  红外探测 引用地址:基于51单片机的红外避障自动车的实现

上一篇:AD转换的数码管显示
下一篇:电子温度报警器设计制作总结

推荐阅读最新更新时间:2024-03-16 13:08

AT89S51单片机实验系统的开发与应用
摘要:针对传统单片机实验系统依赖于仿真器调试,实验成本高且效率低,不适应现代科技的开发要求的问题,为改善单片机实验系统的性能,采用在系统编程(ISP)的方法,利用AT89S51芯片设计了一种单片机实验系统。实验表明系统结构简单,实用性强,达到了工科类高职生快速掌握单片机的基础知识的预期效果。 关键词:AT89S51;实验系统;ISP;74LS164 目前单片机应用已渗透到各个领域,单片机技术的发展也因此日新月异。作为实践性很强的应用型学科,单片机研发及教学离不开实验。传统的单片机实验系统需要频繁拔插烧写单片机芯片来编程,依赖于仿真机调试,实验成本高且效率低,已不适应现代科技开发需求。如何充分合理利用单片机的性能,方便用户高效学
[工业控制]
AT89S<font color='red'>51单片机</font>实验系统的开发与应用
基于80C51单片机的电子储物柜系统
基于80C51单片机的电子储物柜系统 电路描述: 安全是我们日常的生活中最关心的问题。 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全。 为了对于门访问安全 因此,我们打算通过引进一个电子密码锁系统,该系统包括一个人得到一个访问某些项目之前要输入密码的安全性,以及在家里,一个房间密码锁系统,不只是普通的单用户密码锁系统,需要用户插入已编程的代码来访问一个房间; 它是一个密码锁系统,有密码而且可以启用多个用户访问。 在基于51单片机的门储物柜,只允许授权人员进入限制区域的门禁系统。 该系统由8位微控制器AT89C2051具有ROM的2K字节的程序存储器完全控制。 该系统具有通过该密码,可以通过它来输入
[单片机]
基于80C<font color='red'>51单片机</font>的电子储物柜系统
51单片机modbus协议程序
#include reg51.h #define uint8 unsigned char #define uint16 unsigned int #define FOSC 16000000 uint16 BAUD=9600; uint16 TEMP_Alert=1000; //字地址 0 - 255 (只取低8位) //位地址 0 - 255 (只取低8位) uint16 TempRegister; //用于测试 字址址16 uint8 localAddr = 0x01; //单片机控制板的地址 uint8 sendCount; //发送字节个数 uint8 receCount; //接收到的字节个数 //uint8 sen
[单片机]
51单片机之存储器
51单片机结构: 思维结构很重要: 由上图可知,51单片机的存储器分为俩大部分:程序存储器ROM和数据存储器RAM,这一点有别与计算机 程序存储器ROM: 1、 程序存储器ROM顾名思义,存放程序的地方,程序指令指导单片机完成设定的功能 2、 51单片机专门设置一个16位的PC,用于指示下一时刻CPU将要执行的程序指令在ROM中的位置,由于PC指针长度位16位,所以单片机的程序存储器ROM空间大小为2^16 = 64Kb,从0000~FFFFH 3、 ROM还可以细分为片内ROM和片外ROM 片内ROM: 8051片内有4KB ROM,地址范围从0000H~0FFFH 片外ROM: 片外可扩展,一般从1000H~F
[单片机]
<font color='red'>51单片机</font>之存储器
51单片机自动红外洗手器程序
单片机源程序如下: #include reg52.h #include intrins.h #include Delay.h #include Time.h #include L298.h #include main.h #include ADC0832.h #define uint unsigned int #define uchar unsigned char unsigned long volt;//测量的电压值 unsigned char volt1=0; unsigned char OPEN_Flag=0; unsigned char one_times=0; /*------------------------
[单片机]
<font color='red'>51单片机</font><font color='red'>自动</font><font color='red'>红外</font>洗手器程序
基于51单片机的LED旋转显示器制作
由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。原理就不多说了。 下面分享一下我的制作过程。这里有关于本制作的更详细的图片展示: 首先是制作效果图: 电路图: 电路采用的是无限供电模块给单片机供电的。采用无限供电。无摩擦,震动小。LED与单片机引脚之间的连接采用的是细小的漆包线。省去了限流电阻。省去复位电路制作起来更简单方便。 准备主要材料:因很多人不知材料哪里买,先将地址链接在材料名称,点击就进去了 1.51单片机1片 2.单片机插槽和万能电路板(洞洞板) 3.贴片LED0603(颜色自定,如果焊接技术不够
[单片机]
基于<font color='red'>51单片机</font>的LED旋转显示器制作
51单片机C语言程序(五) 时钟程序(用定时器)
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit rs=P3^5; sbit lcden=P3^4; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit rd=P3^7; uchar count,s1num; char miao,shi,fen; uchar code table = 2009-7-13 MON ; uchar code table1 = 00:00:00 ; void delay(uint z) {
[单片机]
8051单片机中的寄存器是算CPU还是RAM
问题:单片机8051中的一些寄存器到底算CPU的还是RAM的? 请高手指点,像累加器DPTR,A,PSW等一些寄存器是属于CPU的,但书上又说他们都属于RAM中的特殊功能寄存器(SFR),这是什么道理? 另外,存储器和寄存器不是两个功能,结构都不同的东西么?为什么RAM中存在许多寄存器组,即二者在此是相同的? 综合理解:有以下几种可能: 1、CPU是一个抽象的概念,如同操作系统这个概念一样没有明确的界线;(cpu是由人划分出来的一块区域不明确) 2、CPU这个概念不适用与51; 3、51可以划分CPU和RAM部分,但CPU和RAM有交叉的部分(比如寄存器组等) 4、CPU部分寄存器是和RAM统一编址,访问该RAM地址即等于
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved