智能避障小车报告(2)

2020-05-01 10:47

小车正前方A目标物B

有几何关系可知:

CABACL??sin?sin?sin(?????)sin?得: AB?Lsin(???)sin? AC?L sin(???) OA2?OC2?AC2?2?OC?ACcos?OC2?OA2?AC2 ?=arccos2?OC?OA由此求得OA及?角

时刻控制小车转过???2即可让目标物时刻在小车正前方,并且让OA保持

在10m以内。

B、实现难点

由于AB杆在追踪装置上,所以不可能设计的太长,最多能设成0.4m,但是追踪器到目标物距离OA为10m左右,这会使得?与?的差值很小,从而测的OA的长度及?误差较大。

还有就是一直没找到测?与?的装置,所以导致这种方案无法执行。 (2)、隔板信号检测法

A、方案原理

如图,目标物在A点发射球面电磁波,在追踪装置上有B、C、D三个信号接收器,用三块金属板隔离开来。不管追踪小车在何方位,最多只有两个接收器能接收到信号,而当目标物在小车正前方时,只有接收器B能接受到信号,其他两个接收器应信号被隔板屏蔽而接收不到。当只有B接收到信号时,控制小车前进,其他时刻控制小车转向,即使时刻到小车沿目标物方向前进,从而达到追踪目的。

图(a)

小车正方向B120° 120° 120° DC

图(b)

B、实现难点

由于电磁波具有衍射性,隔板可能无法完全屏蔽电磁波信号,所以在任意时刻,三个接收器都会接收到信号,导致该方案无法执行。 (3)、雷达定位追踪

把雷达装到小车顶端,由雷达发射电磁波对目标进行照射并接收其回波,从而获得目标至电磁波发射点的距离、距离变化率(径向速度)、方位、高度等信息,小车分析后移向目标的方位。并且雷达白天黑夜均能探测远距离的目标,且不受雾、云和雨的阻挡,具有全天候、全天时的特点,并有一定的穿透能力。困难是雷达一般体积较大,市场上没有用于定位追踪的雷达产品,只有测量车速和GPRS定位的。

由于以上几种方案都最终未能实现追踪功能,所以我们做出来的实体只能避障,而无法追踪目标。

四、系统电路

实体的系统电路连接如下图所示

五、实体展示

六、小车运行过程

打开开关超声笔测量障碍物距离s判断s>30厘米No左电机反转,小车向左转向Yes小车继续前进

七、经费使用情况

八、程序代码

#include

#include

#define uint unsigned int #define uchar unsigned char #define ufloat unsigned float #define s0 30

sbit Rin=P1^0; // 控制超声波的发射 sbit Rout=P1^1; // 接受超声波 float s;//前方障碍到小车距离

uint time;//超声波由发送到接收的时间 void init();//变量初始化函数

void delay(uint z);//0.5毫秒延时函数 void delayus(uchar us); //微秒级延时函数,延时时间t=(11+6*us)微秒 void sendpulse();//给P1^0口发送一个11微秒脉冲 void readtime();//读取计时器时间 void distance();//计算距离

void judgedirection();//判断是否转向 void main() { init(); // 初始化 while(1) { readtime(); //发送超声波并完成计时 distance(); judgedirection();//判断是否转向(默认右转) delay(50);//延时25ms } }

void init() { Rin=0; Rout=0; P2=0xf5;//11110101,控制左右电机都正转,P2.0、P2.1控制左轮,P2.2、P2.3控制右轮 TMOD=0x01;//设置定时器0为工作方式1 TH0=0; TL0=0; //定时器初始化,一次50ms }

void delayus(uchar us) { while(us--); }

void delay(uint z) { uchar j; uint i; for(i=z;i>0;i--) { for(j=120;j>0;j--); } }

void sendpulse() { Rout=1; delayus(0); Rout=0; }

void distance() { time=TH0*256+TL0;//获取计时时间,单位:微秒 TH0=0; TL0=0; s=(time*1.7)/100;//计算距离,单位:cm }

void readtime() { sendpulse(); //发送一个10微秒的信号 delayus(0);//延时10微秒,防止信号直接发送到接受端 while(!Rin); //Rin为0时等待 TR0=1; //Rin为1时开定时器0 while(Rin); //等待直到Rin为0 TR0=0; //关闭定时器0,停止计时 }

void judgedirection() { if(s

九、感想:

通过做这次电工小项目,我知道了做项目的流程,对单片机有了更深的了解,并熟悉了开发环境Keil uvision3和烧程序的软件STC,能编辑出一般难度的程序了,在一定程度上,复习了C语言。更重要的是,学会了有条理的表达自己的想法和进行有效的沟通,潜移默化中培养了团队合作精神,这一切,会使我终身受益的。还有,在制作小车的过程中,我们三个合作的很轻松快乐,真心享受他们的陪伴。

值得一提的是,运用所学的单片机,我还编程了一个功能很全面的智能抢答器,出色完成了电工自主创新实验。不得不感慨,真是艺不压身啊!最后说一句,没能实现小车的追踪功能,我颇感遗憾。


智能避障小车报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四年级下册品社复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: