测障测角小车

智能小车的设计与制作部分内容:

《智能电动小车》

摘要:本课题组设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位);检测路面所放置的铁片的个数的功能;计算并显示所走的路程和行走的时间,并可发声发光。作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的应用实例。
    作品以两电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元AT89S52单片机,处理数据后完成相应动作,以达到自身控制。电机驱动电路采用高电压,高电流,四通道驱动集成芯片L293D。其中避障采用红外线收发来完成;铁片检测部分采用电感式接近开关LJ18A3-8-Z/BX检测;黑带检测采用红外线接收二极管完成;趋光部分通过3路光敏二极管对光源信号的采集,再经过ADC0809转化为数字信号送单片机处理判别方向。由控制单元处理数据后完成相应动作,实现了无人控制即可完成一系列动作,相当于简易机器人。
关键字:智能控制   蔽障  红外线收发  寻迹行驶  趋光行驶
1.总体方案论证与比较
     方案一:采用各类数字电路来组成小车的控制系统,对外围避障信号,黑带检测信号,铁片检测信号,各路趋光信号进行处理。本方案电路复杂,灵活性不高,效率低,不利于小车智能化的扩展,对各路信号处理比较困难。
     方案二:采用ATM89S52单片机来作为整机的控制单元。红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,黑带采用光敏二极管对光源信号采集,再经过ADC0809转化为数字信号送到单片机系统处理。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求。
     比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。方案二的基本原理如图1所示。
 
 
图1  智能车运行基本原理图框图


     避障部分采用红外线发射和接受原理。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,产生的高低电平信号经过处理后,完成相应的记录数目,驱动蜂鸣器发声。黑带寻迹依*安装在车底部左右两个光敏二极管对管来对地面反射光感应。寻光设计在小车前端安装3路(左、中、右)光敏电阻对光源信号采集,模拟信号经过ADC0809转化为数字信号送到MCU处理。记程通过在车轮上安装小磁块,再用霍尔管感应产生计数脉冲。记时由软件实现,显示采用普通七段LED。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现。

2.模块电路设计与比较
1) 避障方案选择
     方案一:采用超声波避障,超声波受环境影响较大,电路复杂,而且地面对超声波的反射,会影响系统对障碍物的判断。
     方案二:采用红外线避障,利用单片机来产生38KHz信号对红外线发射管进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。外界对红外信号的干扰比较小,且易于实现,价格也比较便宜,故采用方案二。
     红外线发射接受电路原理图如图2所示。
     采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此用250Hz的信号对38KHz的载波进行调制,这样减少外界的一些干扰。 接收管输出TTL电平,有利于单片机对信号的处理。采用红外线发射与接收原理。利用单片机产生38KHz信号对红外线发射管进行调制发射,发射距离远近由RW调节,本设计调节为10CM左右。发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。利用单片机的中断系统,在遇障碍物时控制电机并使小车转弯。由于只采用了一组红外线收发对管,在避障转弯方向上,程序采用遇障碍物往左拐方式。如果要求小车正确判断左转还是右转,需在小车侧边加多一组对管。外界对红外信号的干扰比较小,性价比高。 。调试时主要是调制发射频率为接收头能接收的频率,采用单片机程序解决。发射信号强弱的调节,由可调精密电阻调节。


完整内容下载附件查看。

测障测角小车:

红外测障:



cfas825:
 
  1. #include
  2. #define uchar unsigned char
  3. #define uint  unsigned  int
  4. uchar jianhao _at_ 0x30;
  5. sbit P31=P3^1;
  6. /*sbit p20=P2^0;
  7. sbit p21=P2^1;
  8. sbit p22=P2^2;
  9. sbit p23=P2^3;
  10. sbit p24=P2^4;
  11. sbit p25=P2^5;
  12. sbit p26=P2^6;*/
  13. sbit p27=P2^7;
  14. sbit P34=P3^4;
  15. sbit p32=P3^2;
  16. sbit p33=P3^3;
  17. sbit p34=P3^4;
  18. sbit p35=P3^5;
  19. bit flag;
  20.  
  21. //uchar code a[5]={0x7f,0xdc,0xe3,0x9c,0xce};
  22. //红外波
  23. void time0() interrupt 1
  24. {
  25.   P31=~P31;
  26. }
  27.  
  28. void Delay_1ms(uint j)
  29. { uchar i=0;
  30.     for(;j>0;j--)
  31.       for(i=0;i<125;i++);
  32. }
  33.  
  34. void fashong()
  35. { uchar k;
  36. ET0=1;TR0=1;
  37. Delay_1ms(3);
  38. for(k=0;k
  39. {ET0=0;TR0=0;P31=0;
  40. Delay_1ms(1);
  41. ET0=1;TR0=1;
  42. Delay_1ms(1);
  43. }
  44. ET0=0;TR0=0;P31=0;
  45. Delay_1ms(3);
  46. }
  47.  
  48. void  key()
  49. {if(p32==0)
  50. {jianhao=1;flag=1;}
  51. if(p33==0)
  52. {jianhao=2;flag=1;}
  53. if(p34==0)
  54. {jianhao=3;flag=1;}
  55. if(p35==0)
  56. {jianhao=4;flag=1;}
  57.  
  58. }
  59.  
  60. void main()
  61. {
  62.  
  63. TMOD=0X02;TH0=0XF3;TL0=0XF3;EA=1;P31=0;jianhao=0;
  64. while(1)
  65.   {//p20=1;p21=1;p22=1;p23=1;
  66. // p24=0;p25=0;p26=0;p27=0;
  67. p32=1;p33=1;p34=1;p35=1;
  68.     // P1=a[jianhao];
  69.          key();
  70.      if(flag)
  71.         { p27=0;
  72.         fashong();
  73.          flag=0;}
  74.          p27=1;
  75.         }
  76. }
复制代码


角度测量:



角度程序:
 
  1. #include"reg51.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  5. uchar code segnode[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
  6. #define digport P0
  7. #define dataport P1
  8. #define wordport P2
  9. #define r 45
  10. sbit  eoc= P3^3;
  11. sbit  clk= P3^4;
  12. sbit  start= P3^6;
  13. sbit  oe= P3^7;
  14. bit flag;
  15. uchar a[4]={0xff,0xff,0xff,0xff};//黑屏
  16. uchar dig=0x01;
  17.  
  18. void delay(uint t)
  19. {for(;t<0;t--);}
  20.  
  21. /*void display()
  22. {
  23.         uchar i;
  24.                 wordport=0xff;
  25.         for(i=0;i<4;i++)
  26.                 {
  27.                
  28.                         wordport=a[i];
  29.                         digport=dig<<1;
  30.                         delay(300);
  31.                  }
  32. }*/
  33. void Display(void)
  34. {
  35.         uchar i,k,select=0x01;
  36.        for(i=0;i<=5;i++)
  37.              { digport=select;
  38.                            wordport=a[i];
  39.                select<<=1;
  40.                             for(k=0;k<=100;k++)//改
  41.                                 {;}
  42.                  }
  43.  
  44. }
  45. void time0() interrupt 1
  46. {        clk=~clk; }               
  47. void chuli()
  48. {                       
  49.         unsigned long  int da;
  50.         //eoc=0;
  51.         start=1;
  52.         oe=1;
  53.         da=dataport;
  54.         delay(10);
  55.         oe=0;
  56. //        da=da*196;
  57.     if(da<127)a[3]=0xbf;//128改127//127.5=127
  58.     if(da>=127)a[3]=0xff;
  59. //        if(da<5000||da>45000){da=0;}
  60.    
  61.     if(a[3]==0xff) {da=da-127;        da=da*1961;} //}if(da>49000)da=50000;}
  62.     if(a[3]==0xbf) {da=128-da;        da=da*1961;}//128改127
  63.    
  64.         da=da*r;
  65.         if(da>9000000)da=9000000;
  66.         a[0]=seg[da/10000%10];
  67.         if((da/1000%10)>5)
  68.         a[0]=seg[da/10000%10+1];
  69.         a[1]=segnode[da/100000%10];
  70.         a[2]=seg[da/1000000];
  71.         start=0;       
  72.         delay(10);
  73. }
  74.  
  75. void main(void)
  76. {   uchar k;
  77.         delay(30);
  78. //        IT1=1;EX1=1;
  79.         TMOD=0x02;TH0=253;TL0=253;
  80.         TR0=1;ET0=1;PT0=1;
  81.         EA=1;
  82.         //eoc=0;
  83.         start=0;
  84.         start=1;
  85.         start=0;
  86.         for(;;)
  87.         {               
  88.                 if(eoc)        chuli();
  89.                 for(k=0;k<100;k++)
  90. {        Display();}
  91.         }
  92.        
  93. }       
  94.  
复制代码

 

文件到原文下载,原文出自:https://bbs.usoftchina.com/thread-208663-1-1.html

你可能感兴趣的:(测障测角小车)