搜索
bottom↓
回复: 27
打印 上一主题 下一主题

智能往返小车的控制【恢复】

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2008-11-2 23:42:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
        智能往返小车的控制,这是2003年全国电子设计大赛的题目,我用51单片机来实现控制,现在拿出来跟大家分享:

  实现任务

小车能在起跑线与终点线自动往返。

   (1)车辆从起跑线出发,到达终点线后停留10S,然后自动返回起跑线。

   (2)中间300CM的限速区,车辆往返均要求以低速通过,通过时间8S。

 

跑道宽度0.5m,表面为瓷砖地板,两侧有2cm的黑线作为跑道分界线,终点有黑带提示‘,跑道如下图所示

 



 (原文件名:000.jpg) 



2.系统方案选择 

根据题目要求,电动车系统应具有:起点加速前进、减速, 限速区减速,加速,终点停留,后退、限速区减速、加速,起点停留等功能,为此按功能,系统可划分若干基本模块:黑白、检测模块,控制器模块,电机驱动模块。 



2.  主要硬件设计

(1)控制电路电路的设计,如下图所示:



 (原文件名:红外检测和光藕隔离.jpg) 





 (原文件名:H桥.jpg) 





单片机 (原文件名:4.jpg) 







程序:

#include <reg52.h>                 // 

        #define uchar unsigned char        //  开头定义,方便下面使用

        #define uint unsigned int

        #define ulong unsigned long

        sbit P32=P3^2;         // 红外检测口

        sbit P12=P1^2;        //  直流电机I/O口1

        sbit P13=P1^3;        //  直流电机IO口2

    void delly(ulong y); //  

        void unit();

 

        uint code data_table[]={250,250,250,150,250,0,250,150,250};//用数组,调制每个期间的PWM

        uchar i,timeh,timel;                                                                                                                                                 

        uint pwm_data,time_counter,counter1;

        main()

        {                                                        

          unit();

          while(1)

          {

            if(i<5)//开始前进

                {

                  P12=1; 

                  P13=0;

                  delly(pwm_data);

                  P12=0;

          delly(1000-pwm_data);//占空比

                }

                else if(i==5)//到打终点后,停止



                {

                  P13=0;

                  P12=0;

                  delly(333333);

                  P13=1;

                   while(i==5);                }

                else if(i>5&i<9)//到达终点之后返回

        {

                 P12=0;           

                 P13=1;

                 delly(pwm_data);                                                                                                   

                 P13=0;

         delly(1000-pwm_data);//返回到起跑线上停止

            }                

        else

                  {

                  P13=0;

                  P12=0;

                  while(1);

                }

                       // 

          }

        }

 

void unit()

{

  i=0;

   P3=0xff;//  

   P1=0xff;

  time_counter=0;                                                                                                

  pwm_data=data_table;

  TMOD=0x11;//  

  TH0=0x00;//    

  TL0=0x00;

  EA=1;//  

  ET0=1;

  EX0=1; //  

  IT0=1;//′ 

}

        //// óê±′|àí/////

void delly(ulong y) //延时

{

  while(y)

    y--;

}

        //////////// D  ′|àí2 · ////////////

void int0() interrupt 0 using 0//中断0

{  

  



  //timel=TL0;

  if(i>=1)

  {

    if((time_counter-counter1)>20)

      i++;    

  } 

  else 

  {

    i++;

    TR0=1;

  }

  pwm_data=data_table;

  counter1=time_counter;

   //timeh=TH0; 

}

void timer0() interrupt 1 using 1 //定时器0中断, 

{      

       TR0=0;

           if(time_counter<10000)

         time_counter++;

           else

             time_counter=0;

       //ET0=0;

       TH0=0x00;

       TL0=0x00;

       TR0=1;

          // t1_flag=1;

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

28
发表于 2011-6-25 20:14:08 | 只看该作者
m

出0入0汤圆

27
发表于 2010-11-5 22:05:23 | 只看该作者
看起来蛮酷的嘛

出0入0汤圆

26
发表于 2010-11-5 01:54:53 | 只看该作者
学习了

出0入0汤圆

25
发表于 2010-3-25 20:43:43 | 只看该作者
mark

出0入0汤圆

24
发表于 2009-8-15 20:47:34 | 只看该作者
好东西啊 正在做这个东西,希望有机会得到楼主的指点啊,我也才大二,对这个都是刚刚上手呢

出0入0汤圆

23
发表于 2009-8-14 10:57:37 | 只看该作者
好东西,留名

出0入0汤圆

22
发表于 2009-8-14 10:39:43 | 只看该作者
我要研究~~~

出0入0汤圆

21
发表于 2009-7-28 14:44:40 | 只看该作者
那个电位器是干什么用的?

出0入0汤圆

20
发表于 2009-7-14 11:42:46 | 只看该作者
xuexi

出0入0汤圆

19
发表于 2009-7-13 23:32:44 | 只看该作者
谢谢!

出0入0汤圆

18
发表于 2009-7-11 21:34:32 | 只看该作者
MARK

出0入0汤圆

17
发表于 2009-5-18 03:17:17 | 只看该作者
看起来都很不错呀,我也正在做智能小车的毕业设计,用ATMEGA16控制的.马上就要和大家见面了.

出0入0汤圆

16
发表于 2009-5-14 11:41:57 | 只看该作者
很感谢!我也正在做小车!很有用.

出0入0汤圆

15
发表于 2009-5-8 12:42:34 | 只看该作者
感谢!学习学习!

出0入0汤圆

14
 楼主| 发表于 2008-11-2 23:53:57 | 只看该作者
----

出0入0汤圆

13
 楼主| 发表于 2008-11-3 00:07:54 | 只看该作者
--

出0入0汤圆

12
 楼主| 发表于 2008-11-3 13:23:54 | 只看该作者
   我是自动化专业的,这是我大二时候做的项目,里面必很存在些问题,敬请各位高手能够指点迷津
头像被屏蔽

出0入0汤圆

11
发表于 2008-11-3 13:34:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

10
发表于 2008-11-3 13:34:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

9
发表于 2008-11-5 20:42:02 | 只看该作者
呵呵,在两年前(那时候读大三)我帮助大四哥们做了一个毕业设计,功能与你的基本一样。使用AT89S51做的。你可以看下对你有没有帮助哈!!!!!



侧面 (原文件名:照片 004.jpg) 





由于时间较紧,做工有点粗糙 (原文件名:照片 006.JPG) 





图中的电位器使用来调节红外传感器在不同光照下的灵敏度的 (原文件名:照片 024.JPG) 





车体是玩具汽车改装 (原文件名:照片 027.JPG) 

出0入0汤圆

8
发表于 2008-11-6 22:09:58 | 只看该作者
方便的话,能不能分享一下原理图?对新手帮助很大

出0入0汤圆

7
发表于 2008-11-6 22:37:19 | 只看该作者
时间久了,原理图已经没有了,如果有需要我给你话一个。这个系统不复杂的

出0入0汤圆

6
发表于 2008-11-7 11:46:24 | 只看该作者
真的很感谢你,因为刚接触单片机,只是做些像LCD时钟显示,矩阵键盘等简单的东西。



本贴被 Joyce 编辑过,最后修改时间:2008-11-07,16:40:07.

出0入0汤圆

5
 楼主| 发表于 2008-11-10 23:42:22 | 只看该作者
  谢谢  choulong 丑龙 的分享

出0入0汤圆

4
 楼主| 发表于 2008-11-10 23:43:06 | 只看该作者


这是我以前做的小车图片 (原文件名:小车.jpg) 

出0入0汤圆

3
发表于 2008-11-5 20:52:16 | 只看该作者
下面是程序,代码为汇编,在KEIL下编写。

程序ourdev_485125.rar(文件大小:8K) (原文件名:线控小车.rar) 

出0入0汤圆

2
发表于 2008-11-6 22:07:42 | 只看该作者
呵呵,很有创意嘛,看上去很不错啊,谢谢分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 16:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表