自-自动追光自动避障电动小车1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自动追光自动避障电动小车
参赛队号:2010224
自动追光自动避障电动小车
摘要:随着汽车产业的快速发展,汽车产业目前已经进入调整期,目前,全球石油资源紧缺,且油价不断上涨,冲击了各个行业,尤其是汽车产业,同时人类面对着全球变暖、水平面上升等世界性问题。

因此未来的汽车将走向电动汽车的时代,而太阳能是目前作为最清洁的能源,对人类来说无疑是一种新型的能源。

此次设计的简易电动小车的动力来自于太阳能转换的电能,是基于单片机控制及传感器技术,实现的功能是小汽车可自动寻光,并且能够利用红外传感器检测道路上的障碍,以及电动小车的自动停车。

电动小车由单片机STC89C52控制电动小汽车的自动寻光、自动避障、及自动停车。

关键字:太阳能电池板;单片机;红外传感器;光敏二极管
1、引言
该电动小车的主要实现的功能有:实验中使用100W的白炽灯作为电源,通过太阳能电池板收集电能,然后通过升压电路给蓄电池充电,再由蓄电池给电动小车供电。

小车在启动以后,使用光敏二极管寻找光源,发现光源后,由单片机STC89C52控制,驱动电动小车沿着光源方向运动。

在沿光源运动的道路上,放置3个障碍物,电动小车前端使用红外传感器,红外传感器发现障碍物后,将信号传给单片机STC89C52,驱动电动小车能够自动避开,然后继续沿光源方向运动,同时太能能板始终都能正对着光源。

运动到一定距离以后,利用热敏电阻距离光源远近不同而电阻阻值不同,利用此原理实现对电动小车的自动停车。

2、设计方案
2.1、设计要求:
电动小车在行进路线上不能有任何引导物体,更不得使用无线遥控装置,具体基本要求如下:
(1)小车发现光源后沿光源方向前进。

(2)遇到障碍物,小车应绕道前进;在小车绕道过程中,太阳能板应始终对准光源。

(3)到达离光源一定位置后,小车应停止前进。

(4)小车前进直线距离应大于1.2米,时间不大于2分钟。

(5)能显示太阳能为蓄电池供电状态。

2.2、总体设计方案:
电动小车采用太阳能收集光源,然后通过升压电路给蓄电池供电,由蓄电池给电动小车提供动力,实验中使用100W的白炽灯作为光源。

自动避障使用红外传感器,红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,发出的红外线照射到黑色的平面后红外线被吸收。

若红外接收管能接收到反射回的红外线则检测出白线继而输出低电平,若接收不到红外线则检测出黑线继而输出高电平。

寻光采用的光电传感器光敏二极管,其工作原理是光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。

无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止;当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。

自动停车是利用热敏电阻距离光源远近不同而电阻阻值不同,利用此原理使电动小车停止。

系统结构图如图1所示:
图1系统结构图
2.3、单元模块电路设计:
(1)电源模块:
太阳能电板收集由白炽灯散发的光能,随之转换为电能,每一块太阳能电板的电压随着距离光源的远近而不同,使用四块太阳能电板串联以提高电压。

但在给蓄电池充电时需要升压电路,给太阳能的输出电压进行升压,然后给蓄电池供电。

升压电路有如下两种设计:
方案一:使用MC34063 DC/DC升压电路,此芯片能在3.0v-40V的输入电压下工作,短路电流受到限制,在无外接三极管输出的情况下,输出开关电流可达1.5A,输出电压可调,工作振荡频率从100HZ到100KHZ。

方案二:使用TPS61200 DC/DC升压电路,输入电压的范围为0.3-5.5V,输出的电压稳定在6V左右,
测试发现,四块太阳能电板串联在距离较远时仍达不到3V,由于方案一种的
MC34063的输入电压最小在3V,而方案二中的升压电路可以满足,因此选择方案二。

(2)自动避障模块的设计:
方案一:利用超声波传感器进行检测,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点,超声波传感器主要采用直接反射式的检测模式。

位于传感器前面的被检测物通过将发射的声波部分地发射回传感器的接收器,从而使传感器检测到被测物。

还有部分超声波传感器采用对射式的检测模式。

一套对射式超声波传感器包括一个发射器和一个接收器,两者之间
持续保持“收听”。

位于接收器和发射器之间的被检测物将会阻断接收器接收发射的声波,从而传感器将产生开关信号。

方案二:使用红外传感器,它是一种集发射与接收于一体的光电传感器,检测距离可以根据要求进行调节。

该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点。

红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,发出的红外线照射到黑色的平面后红外线被吸收。

若红外接收管能接收到反射回的红外线则检测出白线继而输出低电平,若接收不到红外线则检测出黑线继而输出高电平。

考虑使用的方便性、稳定性和检测具体的可调性,选择方案二,该小车使用红外避障传感器,在使用的时候可根据要求自行的调节检测距离,更好地实现小车避开障碍物而继续行驶的功能。

(3)自动寻光模块的设计:
方案:寻光主要也是由光电传感器来完成,使用的是光敏二极管。

光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。

无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止;当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。

输出经LM393电压比较器,然后将LM324输出的波形输入单片机STC89C52中,进而控制小车寻找光源。

因此可以利用此特性进行自动寻找光源。

(4)太阳能电池板旋转模块的设计:
方案一:在小车行驶时,遇到障碍物时,若小车向左避开障碍物,则由步进机旋转带动太阳能电池板向右旋转一定的角度;若小车向右旋转一定的角度,则由步进机旋转带动太阳能电池板向左旋转一定的角度。

这样就可以确保太阳能电池板始终正对着光源。

方案二:在太阳能电池板正对着光源时,此时太阳能电池板的采光面最大,如果太阳能电池板不正对着光源,此时采光面减小,因此可以利用此原理,在行驶过程中,对太阳能电池板是否正对光源进行判断,然后通过单片机进行控制。

综合可知,方案二实现比较困难,而且成本较高,因此选用方案一。

(5)自动停车模块的设计:
方案一:利用超声波传感器测距技术,当小车行驶到一定的距离后,若满足要求即可停车。

超声波测距技术是一种有源非接触测距技术,是利用超声波在空气中的定向传播和固体反射特性,通过接收自身发射的超声波反射信号,根据超声波发出及回波接收时间差和传播速度,计算出传播距离,从而得到障碍物到研究平台的距离。

方案二:利用太阳能电池板的电池电压随距离光源的远近而不同,设定一定距离后,当太阳能电池板的电压达到设定电压,利用电压比较器LM324与参考电位进行比较,然后输入单片机STC89C52进行控制电动小车的行驶。

方案三:使用热敏电阻,当电动小车到达距离光源一定距离后,光敏电阻感热,阻值发生变化,因此可以使用此原理控制电动小车自动停车。

综合考虑方案三,电路简单,容易搭建,且成本不高,易于控制,选择方案三。

3、硬件电路设计
太阳能电池板收集的光能转换为电能,由于其电压较低,因此需要升压电路进行升压后,方能使用,电路图如图二所示,使用升压芯片TPS61200,使输出电压升高,供蓄电池充电。

电路原理如图2所示:
图2 蓄电池充电的升压电路
主要参数计算:
R1=R2*(Vout/Vbf-1);R3=R4*(Vinmin/Vuvlo-1);Lmi
n=Vun*0.5 ;
Lmax=(Vout*Iout/0.8Vin)+[Vin*(Vout-VIN)]/(2Vout*f*L)
由使用手册得知:R4理论不超过250K、Vuvlo取典型值250mv、Vbf=0.5V。

自动寻光电路:此电路中LM324由单电源供电,R1和R2的阻值实现了分压,光敏二极管根据是否检测到光源而电压不同,光敏二极管上的分压与R2上的分压进行比较,然后输入单片机STC89C52中判断,以至控制电动小车的行驶方向。

电路图如图3所示:
图3 自动寻光电路
4、硬件的功能调试与测试结果:
设计所用的主要仪器如表一所示:
硬件的功能调试如表二所示:
系统调试:
太阳能电板可以显示给蓄电池充电的状态,小车可以自动寻光、自动避障,电动小车的直线行驶距离大于1.2米,行驶时间小于120秒。

到达一定的位置时,电动小车能够自动停车。

测试结果分析:经过调试测试后,使用光敏二极管可以使小车能够寻找光源,如果使用光敏三极管的话,可以使的寻找光源更加精确。

电动小车沿光源方向运动时,
红外传感器进行障碍物检测,实现自动避障,太阳能电池板可以在壁障的时候,太阳能电池板不能对准光源,使用步进电机,调整太阳能电池板使它始终对准光源。

使用热敏电阻控制小车自动停车,到达距离光源一定位置时,热敏电阻工作,控制电动小车自动停止。

各个模块工作正常,单片机也能正确控制电动小车的运动,系统比较稳定。

5、结论
经过几天的努力,完成了模块的设计与制作,完成了整个系统的编程、组装与调试。

基本上满足竞赛的要求,使用模块时,综合考虑电路的简单、电路的成本、以及电路的性能。

此次设计仍有一些问题没有得到完全解决,对一些器件的应用还不是很熟悉,因此在今后的学习中,更要好好学习知识,增加技能训练。

通过这一次竞赛学习了很多知识,比如红外传感器的原理与应用的知识,光敏二极管的原理与应用电路等,当我们遇到不懂不会的问题时,我们能通过图书馆、网络等各种渠道学习想要知道的知识,有时候虽然只是一个很简单的小车模块,但使我们认识到自己所学的专业知识在实践中所出现的很大的不足。

在实际的设计当中也应注意到的许多问题,如在焊接时应提前布线、制图,以免在调试过程时无从下手。

虽然在这次设计中对于知识的运用和衔接还不够熟练,但是我们将在以后的工作和学习中继续努力、不断完善。

学习自己的专业知识,加强自己的动手实践,努力提高自己的专业技能,能在今后的生活学习中更好的应用。

在这次竞赛中,团队合作精神起到了关键性的作用,队员之间合理分工,共同配合,不仅可以发挥每个人的不同优点,而且更可以锻炼各个队员之间的配合,提高了效率。

不仅在比赛中学到了知识,而且学到了不同的学习方法,尤其在方案讨论中,队员提出不同的方案,经过论证之后,可以取得更好的方案,也在竞赛中彼此的学习。

参考文献:
张毅刚《单片机原理与应用设计》电子工业出版社
姜志海赵艳雷《单片机的C语言程序设计与应用》电子工业出版社
康华光《电子技术基础模拟部分》高等数学出版社
康华光《电子技术基础数字部分》高等数学出版社
附录
附录A:
总电路系统图:图四
图四:总电路系统图
附录B:
1、检测光源程序流程图:图五

否 是

左转正转 寻光 左转反转 检测光源 检测光源
图五:光源程序流程图
2.、总程序流程图:图六

图六:程序总流程图

附录C:
程序清单
#include <REG51.H>
sbit LEDL=P3^5;
sbit LEDM=P3^6;
sbitLEDR=P3^7;
sbit STOOP=P3^1;
sbit ZHONGDUAN=P3^0;
sbitENA = P1^0;
sbit IN1=P1^1;
sbit IN2 =P1^2;
sbit ENB = P1^3;
sbit IN3 =P1^4;
sbit IN4=P1^5;
#define uintunsignedint
#define uchar unsignedcharvoid DelayMS(uint ms)

ﻩuchar i;
ﻩwhile(ms--)

ﻩfor(i=0;i<120;i++);
ﻩ}
}voiddianchil(uchars)

while(s--)
{P2=0x08;
ﻩDelayMS(40);
P2=0x04;
ﻩDelayMS(40);
P2=0x02;
ﻩDelayMS(40);
ﻩP2=0x01;
DelayMS(40);
}
}
void dianchir (uchar p)
{
while(p--)
{ P2=0x01;
DelayMS(40);
P2=0x02;
DelayMS(40);
P2=0x04;
DelayMS(40);
P2=0x05;
DelayMS(40);

}
void turn1(uchar a)
{ P1=0x03;
DelayMS(90*a);
ﻩP1=0x1b;
}
voidturn2(uchar b)
{ P1=0x18;
ﻩDelayMS(90*b);

P1=0x1b;
ﻩ}
void scan(void)
{
if(LEDL==1&&LEDM==0&&LEDR==0)
ﻩ{ turn2 (4);
ﻩﻩ
ﻩﻩ}
ﻩif(LEDL==1&&LEDM==1&&LEDR==0)ﻩ{turn2 (2);
ﻩﻩ
ﻩﻩ}

ﻩif(LEDL==0&&LEDM==0&&LEDR==1) ﻩ{turn1 (4);
ﻩﻩ
ﻩﻩ}
ﻩif(LEDL==0&&LEDM==1&&LEDR==1) ﻩ{ turn1(2);
ﻩﻩﻩ}
if(LEDL==0&&LEDM==1&&LEDR==0)ﻩ{P1=0x1b;
ﻩﻩ
ﻩ}

voidchushi (void)
{P1=0x03;
ﻩDelayMS(400);
P1=0X00;
DelayMS(1);
ﻩif(LEDL==0&&LEDM==0&&LEDR==0)
{ P1=0x03;
ﻩDelayMS(300);
P1=0X00;
ﻩDelayMS(2);
if(LEDL==0&&LEDM==0&&LEDR==0)
ﻩ{P1=0x05;
DelayMS(1180);
ﻩﻩ P1=0X00;
ﻩDelayMS(1);
if(LEDL==0&&LEDM==0&&LEDR==0)
{ P1=0x05;
DelayMS(360);
ﻩP1=0X00;
ﻩﻩﻩDelayMS(1);
ﻩ}ﻩ
ﻩ}
ﻩ}
scan();
}
void INT0_ISR() interrupt 0
{if(ZHONGDUAN==0)
{ P1=0X00;
while(1);
}
P1=0x03;
dianchir(5);
P1=0x1b;
dianchil(2);
P1=0x18;
dianchil(3);
scan();
ﻩ}
voidINT1_ISR()interrupt 2
{if(ZHONGDUAN==0)
{ P1=0X00;
while(1);
}
P1=0x18;
dianchir(5);
ﻩP1=0x1b;
dianchil(2);
ﻩP1=0x03;
dianchil(3);
ﻩscan();ﻩ
ﻩ}
main()
{EA=1;
ﻩEX0=1;
ﻩEX1=1;
IT0=0;
IT1=0;
if(LEDL==0&&LEDM==0&&LEDR==0) ﻩ{chushi();
ﻩﻩ
}
ﻩwhile(1)
{ P1=0x1b;
scan();
if(ZHONGDUAN==0&&STOOP==0)
{ P1=0X00;
while(1);
}
DelayMS(1000);
ﻩ}
ﻩ}。

相关文档
最新文档