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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(毕业设计基于单片机的运水机器人设计Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

毕业设计基于单片机的运水机器人设计Word文档格式.docx

1、附件三:元器件清单 16摘要:命题要求设计自动运水机器人。本设计是以STC89C52单片机为核心器件,应用红外开关,直流电机等器件,实现命题要求。经过测试,该机器人达到所有命题所要求的技术指标。在此基础之上,本设计添加了计时模块,使设计更具实用性。关键词:运水;电机驱动;探测传感器运水机器人、设计任务与要求本任务为F题:运水机器人。设计任务具体内容如下:图1-1 参考图图1-2 路线图1.1 基本设计任务依据命题题意,本设计采用直流电机带轮式小车带实现机器人的运动。机器人上面要装有盛水容器,以便完成在AC之间的运水任务。当红外光电开关探测到黑色边线的时候停止小车运动,小车停在A区是通过手动控制

2、小车重新运动,小车停在C区通过软件延时控制小车重新运动,这样达到循环运动,进而完成运水任务。1.2 控制设计任务由于本设计采用手动完成整个过程中的装水、卸水任务,因此控制任务即为控制AC之间的距离。这里通过红外光电开关扫描是否达到黑色边线,即为判断是否达到题目要求的2000mm(黑色边线即为图1-2中的起始/返回边线),通过与软件配合,以完成要求。1.3 软件设计任务机器人的所有动作由都要由软件控制实现。用软件对红外开关扫描所得信号进行对比,以控制直流电机的停止/正反转。通过软件对按键的识别控制硬件启动。用软件来控制时间显示模块的计数周期。、方案设计与论证 本设计主要需要完成运水小车在AC之间

3、运水任务。利用红外光电开关对由黑色电胶布制作的起始/返回边线进行探测,再通过软件的配合,对探测结果进行分析,并控制小车车轮的停止/正反转,让小车在AC之间固定距离内行进。通过单片机与软件的集合对时间显示模块进行控制,达到显示时间的任务。2.1 电源选择方案方案一:采用双电源供电,在设计中,将CPU电源和电机驱动电源完全靠光电耦合器隔离,这样电机启动时的冲击信号就不会对CPU有影响,增加了系统的可靠性。缺点是电路设计复杂,电路成本较高。设计要求较低,且此方案较为复杂、成本高,故放弃。方案二:采用单电源供电,电机的驱动和CPU逻辑控制电源采用同一个电源。该方案设计简单,而且成本较低,缺点是电机启动

4、的瞬间电流过大,容易对上一级电路产生冲击,电路的稳定性不好。这个方案已经可以满足实验的要求了,采用此方案。2.2 驱动电路选择方案采用三极管驱动电机,滤波效果好,在单片机跟电机共用一个电源,在电流较高的情况下,单片机仍能不受干扰而正常工作。优点:电路压降较小,所以在大电流的情况下,发热很小。缺点:电路连接较为复杂,驱动功率较小,不适于大功率驱动。该驱动电路的功率不能满足要求,故放弃此方案。使用专用芯片L298所组成的电机驱动电路。驱动芯片L298是驱动步进电机的专用芯片,我们利用它内部的桥式电路来驱动直流电机。控制比较简单,电路简单,集成芯片简化了电路的复杂性,驱动功率大。电路发热较大,成本略

5、高。结合作品要求,采用此方案。2.3 距离控制方案直接采用软件控制距离,即:根据小车的平均速度设定相应前进/后退时间,达到控制前行/后退目的。无需其他硬件支持,节约成本,制作简单。不易自动控制,距离控制不精确,多次循环后会导致小车偏离预定路径。考虑到设计要求的距离控制精度较高,放弃此方案。采用光电传感器根据固定在地面上的两个边线的探测(如:固定在地面的两条黑色胶带)进行探测,通过固定边线之间的距离来达到距离控制的距离的目的,进而达到要求。增加成本,增加软件设计难度,制作较为困难。距离控制精确,易于自动控制。由于本设计对距离有较高的要求,故采用此方案。、总体设计经过对各个方案分析比较,最终确定总

6、方案如图3-1所示。该系统所有模块都由主单片机控制。其中,设计各个模块,包括单片机、显示模块、电机驱动、光电探测由四节AA电池供电。电机驱动采用L298驱动芯片控制。用光电传感器对边线的探测来控制距离。通过单片机的机器周期计算时间计数周期,以达到计时目的。图3-1 系统方案图3.1 系统硬件电路设计3.1.1 探测传感器探测传感器采用CNY-70反射式光电开关。红外线光电开关属于光电接近开关,它利用被测物体对红外光束的遮光或反射,对所有能反射光线的物体均可检测,根据检测方式的不同,分为漫反射式、镜反射式、对射式、槽式、光纤式光电开关等。图3-2为CNY-70的输入输出特性曲线:图3-2 CNY

7、70特性曲线从图3-2可以看出,随着发光管电流逐渐增加,输出电流逐渐变大,因此我们选择输入电流为20mA。CNY-70的发光管的导通压降大约为1.5V,输入电压选择5V,因此电阻我们选择200。图3-3 探测传感器通过电压比较器,将传感器的输出电压转换成逻辑电平,通过单片机判断探测是否有黑线,然后通过软件调整,使小车能够完成B区的动作。由于CNY-70受自然光影响,因此在使用时比较器比较电压采用电位器调节,通过手动调节适应不同的光照环境。3.1.2 电机驱动模块L298 芯片是一种高电压、大电流、高功率驱动器,其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电

8、动机和步进电动机。每桥的三级管的射极是连接在一起的, 相应外接线端可用来连接外设传感电阻。可安置另一输入电源,使逻辑能在低电压下工作。L298 芯片是具有15 个引出脚的多瓦数直插式封装的集成芯片。图3-4 电机驱动模块3.2 系统软件设计3.2.1 软件计时的分析与计算单片机内部定时器有4种工作模式,方式0是13位计数器,由于计时时间过短,中断频率高,所以不选用此模式;方式2是自动重装式计数器,是8位计数器,同样中断频率过高;方式3也是8位计数器;方式1是16位计数器,综合考虑,选用方式1做精确计时。由于51单片机是12分频,因此机器周期=晶振频率/12。在该设计中,选用频率为12MHz的晶

9、振,因此机器周期=1s。定时1s需要1000000个机器周期,因此通过20次定时器中断完成1s的定时,每次完成50000个周期的定时,因此每次给定时器的初值应该是TH0=B0H,TL0=3CH。3.2.3 系统软件流程图注:D为电机转动方向标记。图3-5 系统流程图、测试结果及结果分析4.1 测试仪器及工具测试仪器及工具: 100ml量筒两个,卷尺(两米以上)一把,黑色电胶布一卷,大号水桶两个,水量充足。4.2 测试步骤4.2.1 测试前预备工作、用卷尺在地面标出两米距离,并用黑色电胶布在两米的两端各粘贴一条纵边线。、将水桶装满水,置于A端,量筒也置于A端,空水桶置于另外C端。、根据测试场地光

10、照条件,将小车的探测器调试到最佳状态。4.2.2 正式测试、将小车置于初试边线,即有水的水桶的一端,启动小车电源。、用量筒量取100ml水置于小车上的水杯里。按下出发键,同时秒表开始计时。小车从A端,经过B区域到C端停止。、小车在C端停止后,数码管显示卸水倒计时8S,此时,取下车上的水,倒入空桶内,并将水杯放回小车,8S结束后,小车返回,数码管显示小车前进时间与卸水时间(8S)之和,并在此基础上继续计时。、小车返回A端后,秒表停止计时。、循环-步骤若干次。、关闭电源,清空水杯中的水。清理测试现场。4.3 测试结果如下表 项目趟次小车显示运行一个周期时间(S)实际运行一个周期时间(S)运水量(m

11、L)第一趟14S14.56S100mL第二趟14.23S第三趟15S15.19S第四趟14.86S第五趟14.35S第六趟14.66S第七趟14.85S第八趟14.88S第九趟15.26S第十趟14.79S表4-1 调试结果4.4 测试结果分析通过对测试数据的分析,可以看出,小车已经实现了在ABCBA区域较为稳定的循环运水过程,即小车已经实现了题目所给出的所有要求。另外,小车显示每周期时间与实际每周期所用时间误差小于1S,达到了额外添加计时模块的目的。通过计算,可得出小车的平均速度为0.63m/s,单位时间运水量大约为7mL/s。、创新点5.1 添加计时模块在题目要求之外,本设计增加了周期计时

12、装置,在此基础上,若通过进一步改进,可自动显示小车平均速度。据此又可以在没有其他额外装置的情况下大概知道电池电量(事先测量好小车在不同电量情况下的速度,并画出不同电量对应不同速度的曲线图,用实测速度与此曲线图对比可知大概电量)。另外,通过简单计算,还达到了计算单位时间运水量的目的。5.2 实用性、将该设计用于餐厅、酒吧等餐饮场所,所用于传菜、续杯等较为简单的服务。既可增加娱乐性和趣味性,亦可节省雇员成本。、用该设计取代某些高功耗、高压电机带动的传送带,降低能耗,增加安全系数。、总结与心得通过对该作品的制作,了解了各个模块之间相互协同工作的重要性,初步掌握如何控制好各个模块之间的关系。通过对探测

13、传感器的使用,了解了传感器在设计中的重要作用,有益于对传感器的进一步学习。本次电子综合实践也锻炼了我们的动手能力,但最重要的是锻炼了如何解决问题的能力。参考文献:1、胡汉才.单片机原理及其接口技术.北京:清华大学出版社,20052、阎石.数字电子技术基础.北京:高等教育出版社,20013、童诗白 华成英.模拟电子技术基础.北京:4、郁有文等.传感器原理及工程应用.西安:西安电子科技大学出版社,2008参考程序如下:#include #define SEGPORT0 P2#define SEGPORT1 P0#define MOTOR_PORT P3#define FRONT_SENSOR P1

14、_4#define BACK_SENSOR P1_5#define START_BUTTON P1_7#define STOP_TIME 8 /卸水延时#define T_H (65536-50000)/256#define T_L (65536-50000)%256/电机操作指令#define STOP_MOTOR 0X00#define RUN_FORWARD 0x05#define RUN_BACK 0X0Aunsigned char code disptab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40;/显示译码unsi

15、gned char count=0; /中断计数unsigned char min=0;unsigned char sec=0;unsigned char min_s;unsigned char sec_s;unsigned char success=0; /完成阶段标志bit input;bit direction=0;bit showflag=1;/*延时1ms*/void delay_ms(void)unsigned char i,j;for(i=5;i0;i-)for(j=98;jj-);/*延时n个ms*/void delay_nms(unsigned int t)for(;tt-)

16、delay_ms();/*定时器初始化*/void timer_init()TH0=T_H;TL0=T_L;TMOD=0X01;ET0=1;EA=1;TR0=0; /并不启动定时器/*外围硬件初始化*/void device_init()count=0;min=0;sec=0;success=0;direction=0;showflag=1;SEGPORT0=disptabsec%10; /显示初始化值SEGPORT1=disptabmin%10;P3=STOP_MOTOR; /停止马达/*时钟中断子程*/void timer() interrupt 1 count+;if(showflag=

17、1)if(count=20) sec+; if(sec=10) sec=0; min+; if(min=10) min=0; /*主函数*/void main(void)device_init();timer_init();/检测启动按键是否按下while(1) START_BUTTON=0; input=START_BUTTON; if(input) delay_nms(5); input=START_BUTTON; if(input) success=1; direction=0; break; TR0=1;delay_nms(1000);/待命延时MOTOR_PORT=RUN_FORWA

18、RD; /检测START 键完成启动马达前进 /屏蔽起始黑线的检测 switch(success) case 1: FRONT_SENSOR=0; /检测前面的传感器 if(FRONT_SENSOR=1) /已经检测到前面传感器过线 则开始检测后面的传感器 success=(direction)? 0:2; if(success=0) /返回时 前轮过线 则停止 MOTOR_PORT=STOP_MOTOR; TR0=0; else success=direction? 1:1; case 2: /已经检测到前面传感器过线 则开始检测后面的传感器 BACK_SENSOR=0; if(BACK_S

19、ENSOR=1)3; else success=(direction)? 2: case 3: MOTOR_PORT=STOP_MOTOR; delay_nms(1500); /刹车延时 min_s=min; sec_s=sec; sec=0; while(sec+min*10)=STOP_TIME) /目的地卸货倒计时 showflag=0; SEGPORT0=disptab(STOP_TIME-min*10-sec)%10; SEGPORT1=disptab(STOP_TIME-min*10-sec)/10; sec_s=sec_s+STOP_TIME+min_s*10; /累加前面的时间 min=sec_s/10; sec=sec_s%10; showflag=1; MOTOR_PORT=RUN_BACK; success=2; direction=1; delay_nms(1000); /屏蔽返回黑线检测; 总原理图如下: 附图一 总原理图元器件清单元器件用量双驱动轮式小车一辆共阴数码管两个电阻电容若干AT89S52一片万能板两块按键CNY-70发光二极管一个铜柱四个L298开关铜丝7805晶振矿泉水瓶OP07两片AA干电池小水杯附表一 元器件清单

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

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