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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

智能循迹避障小车控制系统设计最终版.docx

1、智能循迹避障小车控制系统设计最终版大学2016 2017 学年 秋季 学期研究生课程考试课程名称: 微机接口技术与数字控制 课程编号: 09Z077005 论文题目: 基于STC89C52单片机自动避障循迹小车控制系统的设计 研究生: 肖青峰、徐鹏、付高峰 学 号: 16721678 论文评语:成 绩: 任课教师: 林勇 评阅日期: 基于STC89C52单片机自动避障循迹小车控制系统设计肖青峰、徐鹏、付高峰大学 机电工程与自动化学院,200072摘要:本设计是基于STC89C52单片机的自动循迹避障小车的控制系统设计。利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小

2、汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。关键词:循迹避障小车 ; STC89C52单片机; 红外对管;pwm调速1 设计目标和任务制定 随着社会水平提高与电子商务的快速发展,大型化集成化商品多元化的仓储集散中心应运而生。这些仓库通常面积巨大,(有的可达上万平方米,)并且物品种类繁多,仓储流量大,可是当前大多数仓储中心依旧采用传统的人工管理,工人管理工作繁琐且工作效率低下,综上所述,现代仓储业正面临着发展瓶颈,制约着仓储行业的进一步发展。如果有一种智能仓储,使得我们能够在实际的物流活动中提高仓储的效率,减少仓储的人力资源

3、成本和仓库的直接成本,解决绝对人力不能满足大型物流中心运作的情况,那么我们的仓储行业又能向前迈进一个新阶。因此,基于上诉当前仓管配货工作的任务繁忙,减小仓管员工作量,提高仓储管理工作效率,我们决定制作一智能避障循迹小车,用于仓库不同货架间货物的自动配送。我们的小车能实现循迹移动,在不同工作点之间穿梭。借助我们的小车,仓管员只需轻松输入目标代码,就可以实现将货物自动送达目标货架或者将不同货架的货物收集到配送点。同时为了避免小车在行进过程中撞击到人员、货物或者货架等障碍物,我们的小车具有自动避障和自动停车功能。2 设计方案的拟定2.1 整体系统设计 该整个系统由控制模块、光电传感器检测模块、电源模

4、块、电机及驱动模块等子模块组成。如框图所示:2.2 控制模块设计针对本设计特点多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。根据这些分析,我选定了STC89C52单片机作为本设计的主控装置,52单片机具有功能强大的位操作指令,I/O口均可按位寻址,并具有如下性能优点:(1)微处理器 该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。(2)数据存储器 片为128个字节,片外最多可外扩至64

5、k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。(3)程序存储器 由于受集成度限制,片只读存储器一般容量较小,如果片的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。(4)中断系统 具有5个中断源,2级中断优先权。(5)定时器/计数器 片有2个16位的定时器/计数器,具有四种工作方式。(6)串行口 1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。(7) P0口、P1口、P2口、P3口 为4个并行8位I/O口。 (8

6、) 特殊功能寄存器 共有21个,用于对片的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。 由上可见,STC89C52单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。对于本设计该单片机绰绰有余,更可贵的是52单片机价格非常低廉。 STC89C52引脚图2.3 光电传感检测模块循迹方案设计:方案一:采用摄像头

7、循迹法:利用摄像头对赛道提取信息,分有数字式和模拟式。方案二:红外对管循迹法:利用黑白色对红外线的吸收作用不同,其由发射管和接收管配对组成,发射管发射出红外线,当发射到黑色轨道时,被黑色轨道所吸收,当发射到白色跑道外时,会发射回来,接收管接收到光线信号,产生一电压信号给单片机,从而实现对轨迹信息的读取。方案三:激光管循迹法:其循迹原理与红外对管相同,不同的是其测距比较远。 综上所述,又考虑到成本的原因,本次设计采用红外对管循迹法。采用脉冲调制的反射式红外发射接收器。由于采用带有交流分量的调制信号,则可大幅度减少外界的干扰;此外红外发射接收管的工作电流取决于平均电流,如果采用占空比小的调制信号,

8、在平均电流不变的情况下,瞬时电流很大(50100mA)(ST-188允许的最大输入电流为50mA),则大大提高了信噪比。避障方案设计:方案一:红外线避障。方案二:超声波避障。 本次设计本打算利用两种方案混合使用,但是由于后期制作过程中,超声波模块损坏,只能使用红外线避障。其也是由发射管和接收管组成,工作原理与循迹的相同,发射管发出红外线,当遇到障碍物时就会反射回来,接收管接收到反射的信号就会产生一电压信号给单片机,从而实现对障碍物的检测。 红外线传感器模块实物图2.4 电源模块电源模块,用9V的锌电源给前、后轮电机供电,然后使用7805稳压管来把高电压稳成5V分别给单片机和电机驱动芯片供电。

9、7805电源模块2.4 电机及电机驱动模块 电机方案的选择:方案一:采用直流电机,优点在于硬件电路设计简单。当外加额定直流电压时,转速几乎相等,调速性能较好,且性价比高。对于小车的行驶,能够很好的控制。 方案二:采用步进电机,步进电机可以实现精确的转角输出,只要施加合适的脉冲序列,电机可以按照人们的预定的速度或方向进行连续的转动,便于控速,但是软件程序的编写较直流电机稍显复杂。表2.1电机性能对比表对比项直流电机步进电机调速性能较好较差位置控制精度较差好控制难易程度简单较难价格低中综合考虑,本智能车决定采用直流电机作为只能车的动力电机。 电机采用直流减速电机,直流减速电机转动力矩大,体积小,重

10、量轻,装配简单,使用方便。由于其部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。可选用减速比为1:74的直流电机,减速后电机的转速为100r/min。若车轮直径为6cm,则小车的最大速度可以达到0.314m/s能够较好的满足系统的要求。下图为电机的实物图 直流减速电机电机驱动方案的选择:方案一:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。方案二:采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂

11、贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅回降低效率,而且实现很困难。方案三:采用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的 H型桥式电路(如图2.1)。用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的 PWM调速技术。现市面上有很多此种芯片,我选用了L293专用驱动器。所用芯片L293属于H桥集成电路,其输出电流为1000mA,最高电

12、流2A,最高工作电压36V,可以驱动感性负载,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动小型直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。本模块具有体积小,控制方便的特点。采用此模块定会使您的电机控制自如,应对小车题目轻松自如。 L293D电机驱动模块电机调速系统的设计:方案一:串电阻调速系统。方案二:静止可控整流器。简称V-M系统。 方案三:脉宽调速系统。 旋转变流系统由交流发电机拖动直流电动机实现变流,由发电机给需要调速的直流电动机供电,调节发电机的励磁电流即可改变其输出电压,从而调节电动机的转速。改变励磁电流的方

13、向则输出电压的极性和电动机的转向都随着改变,所以G-M系统的可逆运行是很容易实现的。该系统需要旋转变流机组,至少包含两台与调速电动机容量相当的旋转电机,还要一台励磁发电机,设备多、体积大、费用高、效率低、维护不方便等缺点。且技术落后,因此搁置不用。 V-M系统是当今直流调速系统的主要形式。它可以是单相、三相或更多相数,半波、全波、半控、全控等类型,可实现平滑调速。V-M系统的缺点是晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是运行条件要求高,维护运行麻烦。最后,当系统处于低速运行时,系统的功率因数很低,并产生较大的谐波电流危害附近的用电设备。 PWM 调速系统

14、:其实现方式有两种,一是采用晶闸管的直流斩波器基本原理,将晶闸管处在开关状态,当晶闸管被触发导通时,电源电压加到电机上,当晶闸管关断时,直流电源与电机断开,电动机经二极管续流,两端电压接近于零,脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速;二是利用软件方式实现,采用两个定时器,其中一个用来控制脉冲频率,另一个控制占空比,这种实现方式快捷且有效。 与V-M系统相比,PWM调速系统有下列优点: (1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速围较宽,可达1:10000左右。由于电流波形比

15、V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。 根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了采用了程序的方法实现PWM脉冲宽度调试。 3 硬件系统的设计3.1 总体设计智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万象轮,起支撑的作用。将循迹光电对管分别装在车体下的左右。当车身下左边的传感器检测到黑线

16、时,主控芯片控制左轮电机停止,车向左修正,当车身下右边传感器检测到黑线时,主控芯片控制右轮电机停止,车向右修正。避障的原理和循线一样,在车身右边装一个光电对管,当其检测到障碍物时,主控芯片给出信号报警并控制车子倒退,转向,从而避开障碍物。表3.1 元件清单元件数量元件数量元件数量直流电机2只电阻若干集成电路芯片若干单片机1 块二极管若干电容若干红外对管3只蜂鸣器1只电位器若干12M晶振1只杜邦线若干玩具小车1个排针若干3.2 光电传感检测模块采用四路红外对管传感器,其中两路置于小车中间,用于循迹检测,另外两路用于避障信号检测,置于小车两侧。其工作原理如下:小车循迹原理是小车在画有黑线的白纸 “

17、路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法红外探测法。红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号,再通过LM324作比较器来采集高低电平,从而实现信号的检测。避障亦是此原理。电路图如图,我们将其接于单片机P3口。 3.3 电源模块电路设计采用7805稳压模块为系统提供5V的稳定电压,并设计有电源指示二极管

18、,用以提示电源是否供电正常。3.4 电机驱动模块设计电机驱动模块采用专用驱动器L293D,所用芯片L293属于H桥集成电路,其输出电流为1000mA,最高电流2A,最高工作电压36V,可以驱动感性负载,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。其工作电路如下图所示,其中EN1、EN2为左右电机使能端,IN1、IN2、IN3、IN4为电机正反转引脚端,它们分别与P1口各引脚相连。3.5 主控电路主控电路复位电路的设计,采用上拉电复位,设计有按钮,按下即可实现复位。 复位电路时钟电路的设计,采用DS1302时钟模块,接于单片机P2.0和P2.1口。 蜂鸣器电路,接于单片机P2.

19、3口 4 软件系统的设计4.1 主程序的设计 否 否 是 否 是 是 否 是 是 是 是 是 否 否 否 否 否 是 是 否 是 主程序流程图如主程序流程框图所示,主程序主包括了系统的初始化,小车的启动,和循迹避障动作实现程序。这里需要说明一点:之所以将避障程序放在主程序而将循迹作为一子程序这样设计,一是为了方便实现小车在自动循迹的基础上实现自动避障并能够在避障后自动找回轨迹继续循迹移动;二是实现程序模块化,以便以后再开发。具体算法思路是小车启动后,首先判断轨迹前方有无障碍物。无障碍物时直接执行循迹移动。有障碍物时,判断是那一侧有障碍物,然后根据传感器采集的障碍物信息作出指令,比如右侧有障碍物

20、时,先执行停止、报警、降速、后退等指令,其次先左转再直行左转、直行直至绕开障碍物,然后右转、直行再右转、直行直至重新回到轨迹上,循迹移动。左侧或者前方有障碍物时程序算法类似于前者,不同在于执行的动作顺序不同。在程序的最后又补充添加了一红外遥控控制,以方便人为地控制随时停车。详细程序设计如下:#include#define uchar unsigned char#define uint unsigned intsbit IN1=P12; /定义电机驱动控制引脚sbit IN2=P13;sbit IN3=P16;sbit IN4=P17;sbit EN1=P14;sbit EN2=P15;sbit

21、 BUZZ=P23; /定义蜂鸣器接线sbit DU=P26 ; /定义显示控制引脚sbit WE=P27;#define left_x P3_4 /传感器引脚 #define right_x P3_3 #define left_b P3_6#define right_b P3_5#define left_moto_pwm P1_4 /PWM信号端#define right_moto_pwm P1_5 unsigned int pwmsd; /定义pwm转速变量unsigned int count;unsigned int i;unsigned char code table=0x3f,0x0

22、6,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fvoid delay_nms(unsigned int n) /延时n ms unsigned int i,j; for(i=0;in;i+) for(j=0;j125;j+) void mingdi(void) / 蜂鸣器嘀的一声响 BUZZ=0; delay_nms(50); BUZZ=1;void disp(unsigned int j)void qianjin(void) /前

23、进void turnleft(void) /左转void turnright(void) /右转void houtui(void) /后退void stop(void) /停止void timer0_Int()interrupt 1 /定时器中断void Timer1_Int() interrupt 2void xunji(void)void main(void) P0=0X00; /关数码管 P1=0XF0; /关电机 B: for(i=0;i50;i+) /判断启动开关是否按下 delay_nms(1); if(P3_7!=1) goto B; mingdi(); /启动小车,鸣笛 pwm

24、sd=6; /设置初速度 TMOD=0X11; TH0= 0Xfc; /1ms定时 TL0= 0X18; TR0= 1; ET0= 1; EA = 1; /开总中断 TH1=0xff; /0.5ms定时 TL1=0xce; ET1=0; TR1= 0; while(1) /无限循环 disp(pwmsd) ; /调显示 if(left_b=1) /判断左面是否有障碍物 if(right_b=1) /判断右面是否有障碍物 xunji(); /两面都没有障碍物,继续循迹移动 else stop(); /右面有障碍物,先停车 delay_nms(1000); mingdi(); /再报警 delay

25、_nms(50); mingdi(); houtui(); /其次后退 delay_nms(500) ; pwmsd=3; /降速 do /左转、直行、左转、直行直到没有障碍物; turnleft(); delay_nms(100); qianjin(); delay_nms(500); while(left_b&right_b=1); do /绕开障碍物后,右转、直行、右转、直行 /直到找到轨道; turnright(); delay_nms(100); qianjin(); delay_nms(500); while(left_x=0|right_x=0); xunji(); /继续循迹移

26、动; else /左侧有障碍物; stop(); /先停车, delay_nms(1000); mingdi(); /再报警; delay_nms(50); mingdi(); houtui(); /其次后退; delay_nms(500) ; pwmsd=3; /降速, do /右转、直行直到绕开障碍物, turnright(); delay_nms(100); qianjin(); delay_nms(500); while(left_b|right_b=1); do /绕开障碍物后,左转、直行直到找到轨迹; turnleft(); delay_nms(100) ; qianjin();

27、delay_nms(500); while(left_x|right_x=0) ; xunji(); /继续循迹移动; 4.2 循迹子程序的设计循迹子程序流程图:循迹子程序流程图 根据前一节介绍的红外对管循迹原理,设计了如上图所示的循迹算法,首先判断两路循迹传感器的状态,根据传感器状态做出相应的指令,驱动电机转动,以实现小车循迹移动。基本设计如下:当左右循迹传感器状态为1、1时,即未偏出轨迹,直行移动;当传感器状态为 0、 1时,左侧偏出,微右转;当传感器状态为1、0时,右侧偏出,微左转;当传感器状态为0、 0时,两侧均偏出,但是为了保障主程序能够自我找回轨迹,而不对其运行造成指令干扰,这里就

28、将这一状态给屏蔽,不将其视为控制状态信息。详细程序设计如下:void xunji(void) if(left_x=1&right_x=1) qianjin(); /调用前进函数 delay_nms(20); if(left_x=0&right_x=1) /左边检测到黑线 turnright(); /调用小车右转函数 delay_nms(20); if(right_x=0&left_x=1) /右边检测到黑线 turnleft(); /调用小车左转函数 delay_nms(20) ; 4.3 电机驱动子程序的设计 电机动作实现,前进:左电机往前转,右电机往前转;左转:左电机往后转,右电机往前转;

29、右转:左电机往前转,右电机往后转;后退:左右电机都往后转;停止:电机使能端为零。具体程序设计如下:void qianjin(void) /前进 IN1=1; IN2=0; IN3=1; IN4=0; void turnleft(void) /左转 IN1=0; IN2=1; IN3=1; IN4=0;void turnright(void) /右转 IN1=1; IN2=0; IN3=0; IN4=1;void houtui(void) /后退 IN1=0; IN2=1; IN3=0; IN4=1;void stop(void) /停止 EN1=0; EN2=0;4.4 中断子程序的设计 设有两个定时器中断T0、T1,用来实现电机的PWM调速,其中定时器T0用于控制频率,定时器T1用于控制占空比。具体思路是T0中断让一个IO口输出高电平,并在这个T0中断中启动定时器T1,T1中断让这个IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变

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

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