ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:393.84KB ,
资源ID:10356658      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10356658.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自动追光自动避障电动小车.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自动追光自动避障电动小车.docx

1、自动追光自动避障电动小车自动追光自动避障电动小车摘 要 本设计基于AT89S52单片机为控制器,设计实现了一个带有自动寻光、自动避障、自动追光太阳能充电系统的电动小车。本系统包含控制器、步进电机及驱动、小车寻光、超声波避障、太阳能板充电以及太阳能板自动追光等模块。该电动小车能够在2m*2m的场地内自动寻找光源前进;能够检测前方多个障碍物并能绕道前行;车上太阳能板能够自动追光始终对准光源并给锂电池充电,且有LED显示充电状态;小车能在规定的时间内跑完全程并能自行停止。整个系统实现了全部功能要求,运行稳定。关键词:AT89S52 步进电机 寻光 避障 太阳能板1.引言随着生产自动化、环保的发展需要

2、,电动车、太阳能已经越来越广泛地应用到实际中。随着科学技术的发展,电动车的传感器种类也越来越多,其中红外传感器、超声波传感器已经成为自动行走和避障的重要部件;太阳能技术也渐渐地进入人类的生活。设计小车必须能够在2m2m的场地内自动寻找光源前进;能够检测前方多个障碍物并能绕道前行;车上太阳能板能够自动追光始终对准光源并给锂电池充电,且有显示充电状态;小车能在规定的时间内跑完全程并能自行停止。为实现设计要求,电动小车必须由多种多个传感器控制完成,寻光、避障传感器的选择及电路设计是本设计的关键,而实际的检测对此类的传感器的要求较高,怎样避免和解决上述问题也是本次设计的难点。因此,本设计将围绕这些方面

3、展开。系统的设计框图如图1所示。图1 电动小车系统框图本设计电动小车由步进电机驱动后轮前行,通过车头的红外对管电路寻找光源,在遇到路障时通过超声波传感器电路能够检测障碍并绕道继续寻光前进。在小车行进过程中,由车顶的三个红外对管电路追踪光源,通过转动步进电机控制太阳能板旋转,并面对光源给蓄电池充电。在整个过程中,控制器控制各模块的协调运行。2.方案设计2.1方案比较与选择2.1.1小车寻光、太阳能板追光模块方案一:采用普通发光二极管及光敏电阻组成的发射接收方案。该方案在实际使用时,容易受到外界光源的干扰,有时甚至检测不到。主要是因为可见光的反射效果跟地表的平坦程度、地表材料的反射情况都有直接关系

4、。虽然可采取超高亮度发光二极管降低一定的干扰,但这又增加额外的功率损耗。方案二:采用红外接收管,虽然易受环境的影响,识别的可靠程度不高,但是由于其结构简单,体积小巧,易于安装,完全能用多个该传感器构成高精度的控制辐射网络提高识别的可靠性、准确性。考虑到红外接收管接收光源的灵敏度较高,价格便宜,电路较简单,结合实际的应用环境,因此我们采用方案二。2.1.2避障模块方案一:用超声波传感器进行避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。超声波传感器在避障的设计中应用广泛。方案二:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线发

5、射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通而检测物体的有无。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。考虑到本系统需要迎光检测障碍物,环境复杂。白炽灯对光电开关的接收干扰较大,为了使用方便,便于操作和调试,系统最终选择了方案一。2.1.3电机模块 方案一:采用直流电机。直流电机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转;能满足生产自动化系统各种不同的特殊运行要求。方案二:采用步进电机。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况

6、下,电机的转速、启停的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机一个脉冲信号, 电机则转过一个步距角。因此,步进电机具有快速启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能立即使步进电机启动或反转,而且步进电机的转换精度高,驱动电路简单,非常适合定位控制系统。基于以上分析,选择方案二。2.2硬件模块设计2.2.1小车寻光电路为了达到准确的寻找光源,电路采用红外接收电路(如图2)。当小车在行进中,我们考虑到光源的固定位置,且有障碍物的影响,进而在小车的头部位置左、右、前三个侧放置五个接收管。接收管接收到光源发出的红外光时,接收管不导通,正向输入的电压大于基准电压

7、,通过电压比较器进行比较输出高电平,接收管未接收到光源发出的红外光后,接收管导通,正向输入的电压将会小于基准电压,通过电压比较器进行比较输出低电平。单片机可直接对接收到的信号进行判断是否检测到光源,并通过对检测到的信号进行处理来决定小车的运动方向。图2 寻光电路图2.2.2避障电路超声波传感器有发送器和接收器,它是利用压电效应的原理将电能和超声波相互转化。超声波测距的原理一般采用渡越时间法,首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物的距离。超声波传感器具有测量一定的测量范围,一般从几厘米到几米不等。本系统采用专门的超声波传感器集成模块(实物图见

8、附录图1),通过设定一定的距离来进行避障,在设计过程中,采用两个该超声波传感器来进行较大范围的避障,从而保障小车正常行驶。2.2.3太阳能板追光电路 本设计太阳能板由八块小规格太阳能板并联而成。该电路由步进电机、太阳能板、红外接收管电路组成,电路框图如图3所示。图3 太阳能板追光电路框图通过固定在太阳能板上的红外接收管电路(原理图详见图2)寻找光源,反馈信息给单片机,由控制器控制太阳能板下面的步进电机带动太阳能板来跟踪光源。2.2.4太阳能板充电电路该电路设计由太阳能板接收光源后通过充电控制器给单节锂电池(3.7V 750mA)充电,电路框图如图4所示。图4太阳能板充电电路框图在充电过程中,锂

9、电池自身具有过冲过放保护,因此电路在充电控制部分增加了反接、短路等保护模块,原理图见附录2。2.2.5采样电路采用ADC0809采集太阳能板给锂电池提供的电压值,反馈单片机控制实现小车停止前进、显示蓄电池充电状态以及小车沿自然光源方向前进等功能,其工作原理框图如图5所示,图5 采样电路原理图2.2.6电机驱动模块本设计使用的步进电机是两项六线式,用L297和L298N驱动芯片驱动,其中单片机AT89S52通过I/O口向L297的17和18脚发送驱动控制信号,从而控制步进电机的速度及正反转。LM297、298是具有高电压大电流的全桥驱动芯片,它相应频率高,且还带有控制使能端。用该芯片作为电机驱动

10、,操作方便,稳定性好,性能优良。电路图如附录3所示:2.2.7电源模块 电动小车的电机驱动电源采用12V 12A的开关电源(原理图见附录4)。而单片机及各电路模块所需电源均由5V电源提供,该电路由开关电源作输入,由三端稳压芯片7805、LM317起稳压作用,2200uf电解电容、100uf和0.33uf瓷片电容起滤除纹波作用,输出+5V电源(原理图见附录5)。2.3系统软件设计 本系统软件主要流程图如图6所示:图6 系统软件流程图3.设计实现 1、小车自动寻光与太阳能板追光。设计在实际的小车寻光过程中,对红外接收管的灵敏度要求是相当高的,在测试时红外接收管很容易接收不到红外光,此外障碍物与光源

11、之间的高度差产生了一段盲区,影响对管的工作,因此在调试接收管的高度与灵敏度是关键的。太阳能板追光原理与小车寻光几乎一致,问题均是接收管的灵敏度和检测方向引起,实时调节接收管的接收和摆放方向才能很好的保证寻光与追光。2、小车自动避障。设计避障的方法较多,在开始阶段设计尝试了红外对管避障,但很容易发现光源的红外管会影响对管的工作,此后方案便选择了超声波避障的方法,虽然超声波传感器对环境的要求也较高,但相比红外对管在白炽灯照射的情况下,超声波避障还是很好实现的。通过避障电路的测距原理,通过限定一定的距离范围,当超声波检测到该段范围便认定为有障碍物,另通过安置左右两个传感器可以更有效地完成避障任务。4

12、.系统测试4.1测试条件与测试仪器系统容易受到光源(除测试光源)的干扰,测试时必须在无其他光源干扰的条件下进行,并要确保供电电源的稳定性,测试使用的仪器设备如下表1所示。表1 测试使用的仪器设备序号名称数量备注(规格、作用)1白炽灯1100W以下2障碍物5个以上不小于15cm*15cm*15cm 3秒表 1测试时间4米尺1测量场地大小4.2测试方法与测试结果(1)用小于100W的白炽灯做引导光源,高度不高于25cm,场地不小于2m*2m,且场地中放置5个障碍物。(2)小车寻光。在场地内,随意将光源放置在小车前方2米的不同的位置,测试记录如表2所示。表2 测试寻光光源位置次数备注正前方33次均能

13、寻光前行左前方33次均能寻光前行右前方 3次均能寻光前行测试结果:小车能够寻到光源并追踪光源,比较稳定。(3)小车避障。在尺寸为2m*2m的场地内,随意将障碍物放置在场地不同的位置,测试记录如表3所示。表3 测试避障障碍物个数形状时间31字形48S3品字形 53S3 任意形 54S5一字形59S5任意形 64S 测试结果:小车基本能在规定时间内走完全程,但有时不稳定。(4)太阳能板追光。将光源固定在场地边,通过改变太阳能板的位置来追寻光源,测试记录如表4所示。表4 测试太阳能板追光光源位置次数备注直射太阳能板3太阳能板能直射光源并小车寻光前进左偏太阳能板3太阳能板左偏且小车左转右偏太阳能板 3

14、太阳能板右偏且小车右转背对太阳能板32次太阳能板能自动寻找到光源测试结果:太阳能板追光完全能够实现自动追光。(5)太阳能板给锂电池充电供电状态显示。 通过AD采样电压值,若太阳能板与锂电池之间的电压发生变化,单片机便控制外部LED点亮。测试结果:LED灯在太阳能板迎光时点亮,不迎光时灭掉。(6)小车逆光前进,并绕过障碍物。将太阳能板背对白炽灯光源,小车正对光源。测试结果:在自然光状态下,让太阳能板自检周围环境,通过AD0809采集太阳能板之间的电压,根据电压的大小来判断自然光的强弱。5.总结“四天三夜”对于参加电子设计大赛的参赛者来说,它的含义就是将大家所学的知识发挥到极致,做出最优秀的电子作

15、品!逆水行舟,仍需坚持到最后一秒!根据大赛的时间期限,设计小组在最终完成了小车的制作和程序的编写。小车能以一定速度追着光源行进,太阳能板始终能面对光源给蓄电池充电。小车行进过程中如果遇到路障,小车能避开路障绕道找到光源并继续追光前进。制作过程中,成员们克服了许多困难,完成了小车主体的器件分布规划和焊接。期间出现了很多错误,例如红外接收管不能稳定工作等,但都被及时发现并纠正了。从中受益最深的是步进电机驱动电路、超声波避障使用、红外接收管寻光等。在这次的故障排查中,大家体会到前期规划的重要性,在焊之前考虑一下器件的焊接顺序和可能出现的问题,这样在焊的时候才会比较流畅,布线也比较清楚,查错也很容易。

16、对于这次比赛,设计小组深刻的理解了“信念”这个词,坚持到最后一秒,也是大赛里所要学的最终的道理!通过实际操作加深了大家对理论知识的理解和运用能力,相信本组的努力会取得好的成绩。参考文献1赵建领.51系列单片机开发宝典.北京:电子工业出版社,2007年.2余锡存,曹国华著.单片机原理与接口技术西安:西安电子科技大学出版社,2003年.3田良,黄正谨.综合电子设计与实践.南京:东南大学出版社,2003年.4赵亮,侯国锐.单片机C语言编程与实例.北京:人民邮电出版社,2004年.5黄智伟,王彦.全国大学生电子设计竞赛训练教程北京:电子工业出版社,2005年.附录1:超声波避障实物图附录2:充电控制电

17、路原理图附录3:步进电机驱动电路图附录4:开关电源原理图附录5:5V稳压电源原理图附录6:小车实物图1附录7:小车实物图2附录8:主要程序清单void AD0809(); /AD0809启动函数声明void Delay(unsigned int Delay_Time) while(Delay_Time-);void init() TMOD=0x01; TH0=(65535-m)/256; TL0=(65535-m)%256; TR0=1; ET0=1; EA=1;void main() LED=1; init(); if(xuanze=1) while(1) if(L2led=1&L1led=

18、1&Mled=0&R1led=1&R2led=1) EA=1; qianjin(); if(flag8=1) flag8=0; for(i=0;i5;i+) AD0809(); SHUJV1=shujv; if(shujv0) LED=0; if(DY22) while(1); if(ceshi=0|ceshi1=0) if(ceshi=0) for(i=0;i2000;i+) houtui(); for(i=0;i3500;i+) right2(); for(i=0;i6000;i+) qianjin(); if(ceshi1=0) for(i=0;i2000;i+) houtui(); f

19、or(i=0;i2500;i+) left2(); for(i=0;i6000;i+) qianjin(); if(L2led=1&L1led=0&Mled=0&R1led=0&R2led=1) EA=1; qianjin(); if(flag8=1) flag8=0; for(i=0;i5;i+) AD0809(); SHUJV1=shujv; if(shujv0) LED=0; if(DY22) while(1); if(ceshi=0|ceshi1=0) if(ceshi=0) for(i=0;i2000;i+) houtui(); for(i=0;i3500;i+) right2();

20、 for(i=0;i6000;i+) qianjin(); if(ceshi1=0) for(i=0;i2000;i+) houtui(); for(i=0;i2500;i+) left2(); for(i=0;i6000;i+) qianjin(); if(L2led=1&L1led=1&Mled=1&R1led=1&R2led=0) EA=1; for(i=0;i5000;i+) right2(); if(flag8=1) flag8=0; for(i=0;i5;i+) AD0809(); SHUJV1=shujv; if(shujv0) LED=0; if(DY22) while(1);

21、 if(ceshi=0|ceshi1=0) if(ceshi=0) for(i=0;i2000;i+) houtui(); for(i=0;i3500;i+) right2(); for(i=0;i6000;i+) qianjin(); if(ceshi1=0) for(i=0;i2000;i+) houtui(); for(i=0;i2500;i+) left2(); for(i=0;i6000;i+) qianjin(); if(L2led=0&L1led=1&Mled=1&R1led=1&R2led=1) EA=1; for(i=0;i5000;i+) left2(); if(flag8

22、=1) flag8=0; for(i=0;i5;i+) AD0809(); SHUJV1=shujv; if(shujv0) LED=0; if(DY22) while(1); if(ceshi=0|ceshi1=0) if(ceshi=0) for(i=0;i2000;i+) houtui(); for(i=0;i3500;i+) right2(); for(i=0;i6000;i+) qianjin(); if(ceshi1=0) for(i=0;i2000;i+) houtui(); for(i=0;i2500;i+) left2(); for(i=0;i6000;i+) qianjin

23、(); if(L2led=1&L1led=1&Mled=1&R1led=1&R2led=1) EA=1; for(i=0;i2500;i+) left2(); if(flag8=1) flag8=0; for(i=0;i5;i+) AD0809(); SHUJV1=shujv; if(shujv0) LED=0; if(DY22) while(1); for(i=0;i5;i+) EA=0; Delay(50000); if(ceshi=0) for(i=0;i2000;i+) houtui(); for(i=0;i2500;i+) left2(); for(i=0;i6000;i+) qia

24、njin(); void ser() interrupt 1 TH0=(65535-m)/256; TL0=(65535-m)%256; count+; if(count=1) count=0; flag=1; if(count1=921) flag8=1; count1=0; if(flag=1&flag1=1) flag=0; Clock=Clock; Clock1=Clock1; if(flag=1&flag2=1) flag=0; Clock=Clock; if(flag=1&flag3=1) flag=0; Clock1=Clock1; void AD0809() /AD0809启动函数 OE = 0; /以下三条指令为起启动AD0809 ST = 0; ST = 1; ST = 0; while(!EOC); OE = 1; / 取出所读到的数据 shujv = P0; OE = 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1