寻光避障小车.docx
《寻光避障小车.docx》由会员分享,可在线阅读,更多相关《寻光避障小车.docx(26页珍藏版)》请在冰豆网上搜索。
![寻光避障小车.docx](https://file1.bdocx.com/fileroot1/2023-7/13/aa37484b-cc7b-4b03-8ccf-94fa5a5d8bd7/aa37484b-cc7b-4b03-8ccf-94fa5a5d8bd71.gif)
寻光避障小车
《自动追光避障电动小车》论文
学校:
华侨大学
学院:
信息科学与工程学院
班级:
10级集成电路设计与集成系统
组员:
熊梓淋、项传煜、崔冰
组号:
自控37组
摘要3
一、设计要求3
1.1基本要求…………………………………………………………………..…3
1.2发挥部分…………………………………………………………………..…4
二、系统方案设计4
2.1系统功能概述………………………………………………………………..4
2.2系统方案概括………………………………………………………………..4
2.3系统结构图………………………….……………………………………….5
三、模块设计方案选择………………….……………………6
3.1、电源模块的设计……………………………………………………….…6
3.2、自动避障模块的设计……………………………………….……………6
3.3、感光模块的设计……………………………………………………...…..6
3.4、自动停车模块的设计……………………………………………….……7
3.5、稳压模块的设计………………………………………………………….7
3.7、直流电机驱动模块的设计………………………………………….……8
3.8、太阳能电池板模块的设计………………………………………….……8
四、系统各模块电路图附件………………………………….9
4.1、中央控制模块……………………………………………………………9
4.2、太阳能电池板模块………………………………………………..…..…9
4.3、感光模块……………………………………………………………..…10
4.4、稳压电路…………………………………………………………….….10
4.5、步进电机驱动电路…………………..…………………………………11
4.6、直流驱动电路…………………………………….…………………….11
4.7、超声波模块原理图……………………………………………………..12
4.8、超声波使能模块原理图………………………………………………..12
五、软件设计.....................................12
5.1超声波控制………………………………………………………………12
5.2感光模块程序…………………………………………………………….14
5.3步进电机驱动程序………………………………………………………16
六、电路调试.....................................17
6.1追光系统调试…………………………………………………………….17
6.2避障系统调试………………………………………………………….....18
6.3太阳能电池板充电系统调试…………………………………………….18
6.4整体电路调试…………………………………………………………….18
七、总结.......................................18
摘要
随着汽车自动化、智能化程序的提高,新一代智能汽车的研发在国内外受到越来越多的重视。
目前,国内比较先进的智能车辆通过观测前方的路况,将路况信息输入到车内的电脑中,通过计算机控制方向盘的运动实现自动避障的目的。
然而随着汽车产业的快速发展,汽车产业目前已经进入调整期,目前,全球石油资源紧缺,且油价不断上涨,冲击了各个行业,尤其是汽车产业,同时人类面对着全球变暖、水平面上升等世界性问题。
因此未来的汽车必将趋于电气化、智能化。
众所周知太阳能是目前最为清洁的能源,对人类来说无疑是一种新型的能源。
此次设计的简易电动小车的动力来自于太阳能转换的电能,是基于单片机控制及传感器技术,实现的功能是小汽车可自动寻光,并且能够利用超声波传感器检测道路上的障碍,以及电动小车的自动停车。
电动小车由单片机STC89C52控制电动小汽车的自动寻光、自动避障、及自动停车。
关键字:
太阳能电池板;单片机;超声波传感器;光敏二极管
一、任务要求
设计制作一套自动追光太阳能充电系统放置在电动小车上。
小车以一定速度追着光源行进,太阳能板始终能面对光源给蓄电池充电。
小车行进过程中会遇到路障,小车必须能避开路障绕道找到光源并继续追光前进。
1.1.基本要求
(1)光源用不大于100W的白炽灯,场地不小于1.5m×1.5m,障碍物不小于15cm×15cm×15cm。
可以对光源进行聚光。
(2)光源在离小车大于1.5m的固定位置摆放,放置高度不高于25cm。
小车发现光源后沿光源方向前进。
(3)小车前进方向上至少随机放置三个障碍物。
遇到障碍物,小车应绕道前进。
(4)在小车绕道过程中,太阳能板应始终对准光源。
(5)到达离光源一定位置后,小车应停止前进。
(6)小车前进直线距离应大于1.2米,时间不大于2分钟。
(7)能显示太阳能为蓄电池供电状态。
1.2.发挥部分
(1)场地尺寸2m×2m,光源离小车2米以上。
(2)障碍物5个以上。
(3)能逆着光源前进,并绕过障碍物。
但太阳能板始终对准光源。
(4)完成时间不大于1分钟。
(5)在无白炽灯光源情况下,小车可以沿自然光源方向前进。
(6)其它。
二、系统方案设计
2.1系统功能概述
初始时刻小车置于起点,打开电源,启动小车。
小车会通过感光模块进行追光并检测前方障碍情况,太阳能板也能根据自己的感光模块自动正对光源。
当在前进过程中遇到障碍物时,小车会根据避障系统来选择左转或右转,以便避开障碍物。
在避开障碍物后,小车趋光前进。
同时太阳能板也时刻都正对光源,并能时刻显示充电状态。
到达终点时,小车自动停车。
2.2系统方案概括
主控制系统:
在此次设计中,涉及到一个外部中断,三个定时中断,所以采用常用的单片机STC89C52作为小车的主控制器,通过单片机来接收指令并发出指令,使小车的各项功能得以顺利完成。
(1).感光系统:
设计中不仅要求小车能够朝着光源前进,而且还要求太阳能板也要正对光源。
通过各方面的了解,比较,最终我们决定采用了两套独立感光系统,来完成小车追光与太阳能电池板对光。
这两个模块分别放在小车车头和太阳能板的左右两端,通过比较两边光敏电阻的电压,以此来判断是否正对这光源。
(2).避障系统:
设计中采用三个避障模块。
分别装在左,中,右,这样便可使小车顺利避障。
(3).能源系统:
使用一片LM2596-5(稳定5V输出)和LM2596_ADJ(可调输出)分别给芯片和电机供电。
(4).动力系统:
这次采用的是直接驱动两个直流电机的方式来解决小车动力问题。
通过分别控制两个直流电机的转速使小车前进、后退、转向、停止等功能。
2.3系统结构图
充电状态显示
太阳能电池板
蓄电池
升压模块
系统总流程图:
三、模块设计方案选择
3.1、电源模块的设计
方案一:
所有元器件采用单一电源。
它供电简单,方便灵活,减小了车载重量和摩擦阻力。
但是电机启动瞬间电流很大,会造成电压不稳定、有毛刺干扰等,不适用于要求电源稳压的CPU,严重时可能造成系统掉电。
方案二:
单片机必须与大电流器件分开供电,避免大电流器件对单片机造成干扰,采用两路供电,这样可以使用其中一路单独为单片、指示灯供电,另外一路提供L298N驱动直流电机使用。
介于设计稳定性考虑,采用方案二。
3.2、自动避障模块的设计
方案一:
采用超声波。
由于超声波指向性强,能量消耗缓慢,在介质中传播距离远且具有频率高、波长短、绕射现象小等诸多优点故而超声波已经广泛应用于现代社会之中。
超声波传感器主要采用直接反射式的检测模式。
位于传感器前面的被检测物通过将发射的声波部分地发射回传感器的接收器,从而使传感器检测到被测物。
还有部分超声波传感器采用对射式的检测模式。
一套对射式超声波传感器包括一个发射器和一个接收器,两者之间不断进行信息的传递。
位于接收器和发射器之间的被检测物将会阻断接收器接收发射的声波,从而传感器将产生高低电平的跳变进而由单片机对其进行相关处理。
方案二:
使用红外传感器,它是一种集发射与接收于一体的光电传感器,检测距离可以根据要求进行调节。
该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点。
红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,发出的红外线照射到黑色的平面后红外线被吸收。
若红外接收管能接收到反射回的红外线则检测出白线继而输出低电平,若接收不到红外线则检测出黑线继而输出高电平。
由于测试中使用的是白炽灯,产生的光中,红外光占有比例较大,如使用红外传感器,会有较大的干扰。
所以考虑到设计中对障碍物中尺寸和颜色上的要求以及使用的方便性、稳定性和检测具体的可调性,选择方案一,即使用超声波进行避障,在使用时可以方便的对最小避障距离进行调节,使得更好地实现小车避障功能而顺利趋光行驶。
3.3、感光模块的设计
方案一:
使用光敏二极管和A/D转换电路来实现自动寻光。
光敏二极管与半导体二极管在结构上是类似的,其内部是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。
无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止;当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。
输出经过ADC0832进行A/D转换后得到的电压变化量反馈给单片机进行处理,进而控制小车寻找光源。
因此可以利用此特性进行自动寻找光源。
方案二:
采用光敏电阻和A/D转换电路来实现自动寻光。
由于光敏电阻的阻值会随着光照强度的增加而迅速减小,我们可以应用此原理,通过一个A/D转换出来的电压变化量经过单片机的处理来实现自动寻光功能。
测试发现光敏二极管在对着光源移动时反应过于灵敏,在距离光源较近的位置会出现一个跳变,且在离光源较近时(大约70cm至100cm)对光源及其不敏感,而且A/D读书不稳定,波动较大,从而影响小车的前进。
光敏电阻虽然不如光敏二极管灵敏,但经过实际测试发现,其稳定性比光敏二极管好很多,经A/D转换后的数据线性性好,而且价格相对较低基本可以满足设计要求。
因而选择方案二。
3.4、自动停车模块的设计:
方案一:
采用热敏电阻,
该设计采用的光源是白炽灯,白炽灯是在照明的时候能够产生大量的热量,我们可以利用该特性,采用热敏电阻制作一个停车模块。
热敏电阻的阻值能够随着周围热的不同而改变。
然后通过比较器控制小车靠近光源时自动停车。
方案二:
利用感光模块上光敏电阻的感光效应,当小车离光源越近时,经A/D转换后的电压值就会越小。
因此可以利用此原理,给A/D设置一个初值,当达到这一初值时小车自动停止。
经过实践,我们利用热敏电阻制作的停车模块对热不是很敏感,而且我们已有四个感光模块,效果也不亚于热敏电阻。
因此我们选用了利用感光系统来进行停车。
3.5、稳压模块的设计
方案一:
采用LM2596稳压芯片对干电池输出电压进行稳压。
LM2596具有很好的线性和负载可调性。
有固定输出和可调输出,其固定输出有3.3V、5V、12V,可调可以输出1.2—37V的各种电压。
方案二:
采用LM7805三端稳压器件进行稳压。
其可固定输出5V稳定电压而且内部有过热保护和安全工作保护电路。
虽然LM7805器件是按照固定电压值来设计的,但当加载一些外部器件后,同样可以输出可变电压。
综合考虑上述两种方案,由于LM2596输出电压1.2—37V稳定可调内部有过热保护和限流保护电路,外围电路简单,仅需4位外接元件,且使用的电感是比较容易购买的标准电感,输出电压可调性好。
而LM7805是按固定输出5V电压值来设计的,常用于单片机的供电电路的设计。
虽可输出可变电压值,但是其输出电压可调性差,更主要的是其效率低,只能达到60%—75%,而LM2596最高效率可达90%。
相比之下我们选择了方案一。
3.6、步进电机驱动模块的设计
方案一:
采用ULN2003步进电机驱动驱动芯片。
ULN2003多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
通常芯片采用DIP封装。
方案二:
采用L298驱动芯片。
L298既可以驱动直流电机又可以驱动步进电机,常用于打字机、数字机床、复印机等控制电路中。
综合考虑上述步进电机的驱动芯片,ULN2003具有电流增益高、工作电压高、温度范围宽、带负载能力强、工作效率高、外围电路设计简单、价格较低、易于购买等优点。
所以本次设计中我们采用ULN2003作为步进电机的驱动芯片。
3.7、直流电机驱动模块的设计
直流电机驱动采用L298驱动芯片。
L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。
L298N芯片可以驱动两个直流电机,也可以驱动两个二相步进电机或一个四相步进电机,输出电压最高可达46V。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压范围VIH为+2.5~46V,输出电流可达2.5A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298N可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机。
5、7、10、12脚接输入控制电平,控制电机的正反转。
EnA,EnB接控制使能端,控制电机的停转,也可用于控制PWM调速。
3.8、太阳能电池板模块的设计
本次设计采用两块太阳能电池板并联的方式,通过吸收白炽灯散发的光能并随之转换成电能来供给蓄电池充。
经测试一块太阳能电池板距离100W白炽灯约1.5-2米的时候电压约为3V,且而两块串联时约有6V。
但是本次设计需要对太阳能电池板的输出电压进行升压处理,以供蓄电池充电。
而串联时电流很小,即使离光源很近也无法进行升压。
故采用两块太阳能电池板新并联的方式进行升压。
进而给蓄电池充电。
升压电路有如下两种设计:
方案一:
使用LM2577升压电路,输入电压,输出电压以通过电阻R1和电阻R2的比值进行调节(Vout=1.23(1+R1/R2))。
输入电压约5V,输出电压可达10V以上。
方案二:
使用TPS61200DC/DC升压电路,输入电压的范围为0.3-5.5V,输出的电压稳定在6V左右,
测试发现,两块太阳能电板并联在距离光源2米处可以达到5V,均满足两种芯片输入电压的要求,但由于方案二中的TPS61200的价格较高、不易购买,封装为贴片式,不易使用,且输出电压较低。
LM2577所需的最低电压为3V,但电流要求较高,在光强不够时,不能进行升压,但在离光源较近时可以将电压升至11V左右,以完成对8节电池充电,并能显示充电状态。
综合考虑上述两种方案选用LM2577升压模块较为合理。
四、系统各模块电路图附件
4.1、中央控制模块:
该模块由单片机最小系统、外加5组电源构成。
4.2太阳能电池板模块
太阳能电池板收集的光能转换成电能,由于电压较低,因此需要升压电路,给蓄电池充电。
升压电路原理图:
4.3、感光模块
感光电路采用光敏电阻和ADC0832组合电路。
通过A/D转换后的电压变换量反馈到单片机里进行寻光处理。
原理图:
4.4、稳压电路
本实验中的稳压电路采用两组LM2596芯片组合而成的稳压电路。
一组固定输出5V电压(上图),供芯片使用。
另外一组输出电压可调(下图),供电机使用。
原理图:
4.5步进电机驱动电路
本次设计中的步进电机驱动电路采用ULN2003芯片组合而成的驱动电路,原理图:
4.6、直流驱动电路
直流电机驱动电路,采用L298直流电机驱动芯片,具体电路如图:
4.7、超声波收,发电路
4.8、超声波使能模块
通过控制使能端口,使中断口只能接受相应端口的信号,避免左中右三组超声波检测障碍情况错误
五、软件设计
5.1超声波控制
本系统利用单片机控制超声波的发射和对超声波自发射至接受往返时间的计时,接受电路的输出端接单片机的外部中断源输入口。
系统定时发射超声波,在启动发射电路的同时启动单片机内部定时器,利用定时器的计数功能记录超声波发射的时间和接受到反射波的时间。
当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个中断请求信号,单片机响应外部中断请求,执行外部中断子程序,读取时间差,计算距离。
结构图如下
部分程序代码:
…
voidbarrier_detection(void)
{
uchari;
barrier_flag=0;
detector=4;
time_0_count=0;//定时器0工作在1ms障碍物检测
while(detector)
{
EX0=0;//关外部中断
IE0=0;//清除外部中断0标志位
TR0=0;//关闭定时器0
TH0=0xfc;
TL0=0x18;
leftTX=1;
MiddleTX=1;
rightTX=1;
switch(detector)
{
case4:
leftControl=1;MiddleControl=0;rightControl=0;
for(i=0;i<16;i++)
{
leftTX=!
leftTX;
}
break;//左侧超声波发波
case2:
leftControl=0;MiddleControl=1;rightControl=0;
for(i=0;i<16;i++)
{
MiddleTX=!
MiddleTX;
}
break;//中间超声波发波
case1:
leftControl=0;MiddleControl=0;rightControl=1;
for(i=0;i<16;i++)
{
rightTX=!
rightTX;
}
break;//右侧超声波发波
default:
break;
}
TR0=1;//定时器0开始计时
detector_busy=1;//超声波正在检测中....
_nop_();
_nop_();
_nop_();
IE0=0;//清除外部中断0标志位
EX0=1;//开外部中断;
while(detector_busy);//等待超声波检测障碍物完成
detector>>=1;
delay1ms(10);
}
EX0=0;//关闭外部中断
TR0=0;//关闭定时器1
TH0=0x3c;
TL0=0xb0;
time_0_count=1;//定时器0工作在定时50ms障碍物检测
TR0=1;//打开计数器,每50ms允许检测障碍一次
leftControl=0;
MiddleControl=0;
rightControl=0;
}
…
5.2感光模块程序
感光模块主要有ADC0832和光敏电阻组成。
正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。
当2位数据为“1”、“1”时,只对CH1进行单通道转换。
当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。
随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
时序图如下:
部分程序代码:
…
ucharAD0832_2(void)//太阳能充电板感光模块
{
uchardata_f,i,data_f1,i1,k1;
D1=1;
cs1=1;
cs2=1;
cs3=1;
cs4=1;
_nop_();
_nop_();
_nop_();
cs4=0;
D1=1;//芯片使能之前的初始化。
第一个下降沿
clk=1;
_nop_();
_nop_();
_nop_();
clk=0;//确定通道模式、第2个下降沿
_nop_();
_nop_();
_nop_();
clk=1;
D1=1;//设定通道初始化
_nop_();
_nop_();
_nop_();
clk=0;
_nop_();
_nop_();
_nop_();
clk=1;
D1=1;//设定通道初始化.第3个下降沿
_nop_();
_nop_();
_nop_();
clk=0;//AD转化的初始化完成。
for(i1=0;i1<8;i1++)//得到一个正常排序的8位数据
{
clk=1;
_nop_();
_nop_();
clk=0;
_nop_();
_nop_();
data_f1<<=1;
data_f1|=D0;
}
cs4=1;
a4=data_f1;//将第二个AD值存储在a2中
k1=abs(a4-a3);
returnk1;
}
…
5.3步进电机驱动程序
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。
。
。
),双(双相