[资料分享] 智能机器车论文

TSB33   2009-5-5 13:54 楼主
              题目名称:智能机器车
                          淮安信息职业技术学院      参赛队员:钱祥,乙丽丽,张佳佳

摘要:
    智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能机器车就是其中的一个体现。本次设计的智能机器车主要实现自主寻线、蔽障的功能。采用AT89S52单片机作为小车的检测和控制核心;用4个红外灰度传感器来控制小车转向,用三个红外测距传感器来控制小车的蔽障

关键词:智能车 AT89S52 单片机   传感器

目录
1 设计任务…………………………………………………………………………….

2 单元电路设计
  21 小车驱动模式模块…………………………………………………………..
  22小车行走和转向模块………………………………………………………
  23小车蔽障模块…………………………………………………………………

3主程序设计图……………………………………………………………………

4最终电路…………………………………………………………………

5结论……………………………………………………………………………………………

1设计任务
          设计一辆小车,能够实现自主寻线、蔽障的功能
2 单元电路设计


     2
1 小车驱动模式模块
        该车采用了一个电动机驱动两个后轮,一个电动机驱动两个前轮转向的模式。利用单片机的P1.0口、P1.1口、P1.2口、P1.3口对电机通过脉宽调控电路进行脉宽调控,从而实现控制电动机的转速,见图中的行走驱动电路和转向驱动电路。为了实现对行走速度和转向速度的控制,两个电动机均需要进行脉宽调控。


01.bmp


      2
2小车行走和转向模块
          该车用4个红外灰度传感器利用单片机的P0.0口、P0.1口、P0.2口、P0.3口接收信号来控制转向。在地面上画上4厘米左右的黑线,通过这4个传感器来检测黑线,使车始终沿黑线行走。单片机复位后,各端口均是高电平,当灰度传感器检测到黑线时,通过比较器和非门,给单片机一个低电平“0信号,检测不到黑线时,给单片机一个高电平“1信号。中间两个灰度传感器将黑线夹在中间,当“左中”检测到黑线时,说明车偏离黑线右边了,这时单片机控制车方向左转,当“右中”检测到黑线时,说明车偏离黑线左边了,这时单片机控制车方向右转。“左前”和“右前”两个灰度传感器工作原理与“左中”和“右中”两个灰度传感器一样,目的是为了防止车偏离黑线太远时检测不到黑线。


02.bmp


      23小车蔽障模块
    遵循交通规则,将避障比拟成超车,所以小车避障时将从障碍物的左侧绕行。在小车的正前端、右前端以及右侧装上三个红外测距传感器,利用单片机的P0.4口、P0.5口、P0.6口接受信号来控制小车避障。当前端的测距传感器检测到20厘米范围内有障碍物时,单片机P1.4口输出一个底电平,控制车的四个灯亮并鸣笛,同时小车的方向控制切换为由这三个测距传感器来控制,此时单片机控制小车左转。三个传感器同时检测障碍物,当都检测不到障碍物时,车方向右转,当检测到障碍物时,车方向左转,这样就能使小车绕障碍物转圈。在这三个测距传感器检测控制的过程中,当左中灰度传感器检测到黑线时,小车的方向再切换为四个灰度传感器控制,这样小车就能完成避障并回到黑线上。


03.bmp
3主程序设计图

04.bmp
4最终电路图

未命名.bmp

5结论
由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。




[ 本帖最后由 TSB33 于 2009-5-5 13:58 编辑 ]

回复评论 (4)

不错,开源一下如何?
要是能用手机拍一下传上来能吸引不少同学的眼球哦!羡慕!
点赞  2009-5-5 15:28
本人写的程序:(目前实现了循线和避障功能)
#include"reg51.h"
sbit p00=P0^0;  //左端灰度传感器   
sbit p01=P0^1;  //左中灰度传感器   
sbit p02=P0^2;  //右中灰度传感器   
sbit p03=P0^3;  //右端灰度传感器   
sbit p04=P0^4; // 前端避障传感器   
sbit p05=P0^5; // 右侧避障传感器   
sbit p10=P1^0;  //p10=0,p11=1--左转
sbit p11=P1^1;  //p10=1,p11=0--右转
sbit p12=P1^2;  //p12=1,p13=0--前进
sbit p13=P1^3;  //p12=0,p13=1--后退
unsigned long i=0;
bit  zhuan=1;//用于循线与避障之间的切换   
bit  j=1;
void kongzhi()   //控制车前轮转向的程序   
{
p00=1;p01=1;p02=0;p03=1;
  if(p00==0)    //左端灰度检测到黑线   
    {
     p10=0;p11=1;  //左转  
     }
  if(p01==0)    //左中灰度检测到黑线   
    {
     p10=0;p11=1;  //左转
     }
  if(p02==0)    //右中灰度检测到黑线   
    {
     p10=1;p11=0; //右转
     }
  if(p03==0)     //右端灰度检测到黑线   
    {
     p10=1;p11=0;   //右转
     }
  if(p00==1&&p01==1&&p02==1&&p03==1)  //四个灰度传感器都检测不到黑线     
     {
  p10=1;p11=1;    //不做任何方向的改变   
  }
}
void delay1()    //后轮转速控制延时  
{
  unsigned long i;
  for(i=0;i<320;i++);
}
void delay2()    //后轮转速控制延时  
{
  unsigned long i;
  for(i=0;i<500;i++);
}
void xingzou()   //控制车后轮转动的程序   
{
  p12=1;p13=0;   //前进
  delay1();
  p13=1;         //停止  构成脉宽控速   
  delay2();
}
void bizhang()    //避障程序  
{
  p04=1;p05=1;
  if(p04==0)    //前端避障传感器检测到障碍   
    {
  if(j==1){
           TH0=0x63;
              TL0=0x18;
     }
     p10=0;p11=1;j=0; //左转
     
     }
  if(p05==0&&j==1)    //右侧避障传感器检测到障碍   
    {
     p10=0;p11=1;   //左转
     }
  if(p04==1&&p05==1&&j==1)   //都检测不到障碍物   
     {
  p10=1;p11=0;     //右转  
  }
}
void timer0(void) interrupt 1
{
TH0=0x63;
TL0=0x18;
i++;
if(i==100){
             i=0;j=1;
   }
}
void main()    //主函数  
{
TMOD=0x01;
TH0=0x63;
TL0=0x18; //5ms
TR0=1;
ET0=1;
EA=1;
  while(1)
  {
   xingzou();    //前进
   if(p01==0&&j==1)zhuan=1;   //
   if(p04==0)zhuan=0;
   if(zhuan==1)kongzhi();    //转向
   if(zhuan==0)bizhang(); //避障
  }
}

程序比较简单。
下面发一个循线和避障的视频,为了方便看,我发了MP4和WMV两种格式。
小车循线、避障演示视频.rar (3.93 MB)
(下载次数: 84, 2009-6-9 14:07 上传)
点赞  2009-6-9 14:07

下了看看啊!学习学习啊!

下了看看啊!学习学习啊!
我可以做的更好
点赞  2009-7-19 17:14
学习一下。
点赞  2012-7-20 10:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复