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

上传人:b****7 文档编号:22143881 上传时间:2023-02-02 格式:DOCX 页数:20 大小:528.60KB
下载 相关 举报
毕业设计基于单片机的运水机器人设计Word文档格式.docx_第1页
第1页 / 共20页
毕业设计基于单片机的运水机器人设计Word文档格式.docx_第2页
第2页 / 共20页
毕业设计基于单片机的运水机器人设计Word文档格式.docx_第3页
第3页 / 共20页
毕业设计基于单片机的运水机器人设计Word文档格式.docx_第4页
第4页 / 共20页
毕业设计基于单片机的运水机器人设计Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

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

《毕业设计基于单片机的运水机器人设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业设计基于单片机的运水机器人设计Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

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

附件三:

元器件清单16

摘要:

命题要求设计自动运水机器人。

本设计是以STC89C52单片机为核心器件,应用红外开关,直流电机等器件,实现命题要求。

经过测试,该机器人达到所有命题所要求的技术指标。

在此基础之上,本设计添加了计时模块,使设计更具实用性。

关键词:

运水;

电机驱动;

探测传感器

运水机器人

Ⅰ、设计任务与要求

本任务为F题:

运水机器人。

设计任务具体内容如下:

图1-1参考图

图1-2路线图

1.1基本设计任务

依据命题题意,本设计采用直流电机带轮式小车带实现机器人的运动。

机器人上面要装有盛水容器,以便完成在A-C之间的运水任务。

当红外光电开关探测到黑色边线的时候停止小车运动,小车停在A区是通过手动控制小车重新运动,小车停在C区通过软件延时控制小车重新运动,这样达到循环运动,进而完成运水任务。

1.2控制设计任务

由于本设计采用手动完成整个过程中的装水、卸水任务,因此控制任务即为控制A-C之间的距离。

这里通过红外光电开关扫描是否达到黑色边线,即为判断是否达到题目要求的2000mm(黑色边线即为图1-2中的起始/返回边线),通过与软件配合,以完成要求。

1.3软件设计任务

机器人的所有动作由都要由软件控制实现。

用软件对红外开关扫描所得信号进行对比,以控制直流电机的停止/正反转。

通过软件对按键的识别控制硬件启动。

用软件来控制时间显示模块的计数周期。

Ⅱ、方案设计与论证

本设计主要需要完成运水小车在A-C之间运水任务。

利用红外光电开关对由黑色电胶布制作的起始/返回边线进行探测,再通过软件的配合,对探测结果进行分析,并控制小车车轮的停止/正反转,让小车在A-C之间固定距离内行进。

通过单片机与软件的集合对时间显示模块进行控制,达到显示时间的任务。

2.1电源选择方案

方案一:

采用双电源供电,在设计中,将CPU电源和电机驱动电源完全靠光电耦合器隔离,这样电机启动时的冲击信号就不会对CPU有影响,增加了系统的可靠性。

缺点是电路设计复杂,电路成本较高。

设计要求较低,且此方案较为复杂、成本高,故放弃。

方案二:

采用单电源供电,电机的驱动和CPU逻辑控制电源采用同一个电源。

该方案设计简单,而且成本较低,缺点是电机启动的瞬间电流过大,容易对上一级电路产生冲击,电路的稳定性不好。

这个方案已经可以满足实验的要求了,采用此方案。

2.2驱动电路选择方案

采用三极管驱动电机,滤波效果好,在单片机跟电机共用一个电源,在电流较高的情况下,单片机仍能不受干扰而正常工作。

优点:

电路压降较小,所以在大电流的情况下,发热很小。

缺点:

电路连接较为复杂,驱动功率较小,不适于大功率驱动。

该驱动电路的功率不能满足要求,故放弃此方案。

使用专用芯片L298所组成的电机驱动电路。

驱动芯片L298是驱动步进电机的专用芯片,我们利用它内部的桥式电路来驱动直流电机。

控制比较简单,电路简单,集成芯片简化了电路的复杂性,驱动功率大。

电路发热较大,成本略高。

结合作品要求,采用此方案。

2.3距离控制方案

直接采用软件控制距离,即:

根据小车的平均速度设定相应前进/后退时间,达到控制前行/后退目的。

无需其他硬件支持,节约成本,制作简单。

不易自动控制,距离控制不精确,多次循环后会导致小车偏离预定路径。

考虑到设计要求的距离控制精度较高,放弃此方案。

采用光电传感器根据固定在地面上的两个边线的探测(如:

固定在地面的两条黑色胶带)进行探测,通过固定边线之间的距离来达到距离控制的距离的目的,进而达到要求。

增加成本,增加软件设计难度,制作较为困难。

距离控制精确,易于自动控制。

由于本设计对距离有较高的要求,故采用此方案。

Ⅲ、总体设计

经过对各个方案分析比较,最终确定总方案如图3-1所示。

该系统所有模块都由主单片机控制。

其中,设计各个模块,包括单片机、显示模块、电机驱动、光电探测由四节AA电池供电。

电机驱动采用L298驱动芯片控制。

用光电传感器对边线的探测来控制距离。

通过单片机的机器周期计算时间计数周期,以达到计时目的。

图3-1系统方案图

3.1系统硬件电路设计

3.1.1探测传感器

探测传感器采用CNY-70反射式光电开关。

红外线光电开关属于光电接近开关,它利用被测物体对红外光束的遮光或反射,对所有能反射光线的物体均可检测,根据检测方式的不同,分为漫反射式、镜反射式、对射式、槽式、光纤式光电开关等。

图3-2为CNY-70的输入输出特性曲线:

图3-2CNY70特性曲线

从图3-2可以看出,随着发光管电流逐渐增加,输出电流逐渐变大,因此我们选择输入电流为20mA。

CNY-70的发光管的导通压降大约为1.5V,输入电压选择5V,因此电阻我们选择200

图3-3探测传感器

通过电压比较器,将传感器的输出电压转换成逻辑电平,通过单片机判断探测是否有黑线,然后通过软件调整,使小车能够完成B区的动作。

由于CNY-70受自然光影响,因此在使用时比较器比较电压采用电位器调节,通过手动调节适应不同的光照环境。

3.1.2电机驱动模块

L298芯片是一种高电压、大电流、高功率驱动器,其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电动机和步进电动机。

每桥的三级管的射极是连接在一起的,相应外接线端可用来连接外设传感电阻。

可安置另一输入电源,使逻辑能在低电压下工作。

L298芯片是具有15个引出脚的多瓦数直插式封装的集成芯片。

图3-4电机驱动模块

3.2系统软件设计

3.2.1软件计时的分析与计算

单片机内部定时器有4种工作模式,方式0是13位计数器,由于计时时间过短,中断频率高,所以不选用此模式;

方式2是自动重装式计数器,是8位计数器,同样中断频率过高;

方式3也是8位计数器;

方式1是16位计数器,综合考虑,选用方式1做精确计时。

由于51单片机是12分频,因此机器周期=晶振频率/12。

在该设计中,选用频率为12MHz的晶振,因此机器周期=1μs。

定时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端。

③、根据测试场地光照条件,将小车的探测器调试到最佳状态。

4.2.2正式测试

①、将小车置于初试边线,即有水的水桶的一端,启动小车电源。

②、用量筒量取100ml水置于小车上的水杯里。

按下出发键,同时秒表开始计时。

小车从A端,经过B区域到C端停止。

③、小车在C端停止后,数码管显示卸水倒计时8S,此时,取下车上的水,倒入空桶内,并将水杯放回小车,8S结束后,小车返回,数码管显示小车前进时间与卸水时间(8S)之和,并在此基础上继续计时。

④、小车返回A端后,秒表停止计时。

⑤、循环②-③-④步骤若干次。

⑥、关闭电源,清空水杯中的水。

清理测试现场。

4.3测试结果如下表

项目

趟次

小车显示运行一个周期时间(S)

实际运行一个周期时间(S)

运水量(mL)

第一趟

14S

14.56S

100mL

第二趟

14.23S

第三趟

15S

15.19S

第四趟

14.86S

第五趟

14.35S

第六趟

14.66S

第七趟

14.85S

第八趟

14.88S

第九趟

15.26S

第十趟

14.79S

表4-1调试结果

4.4测试结果分析

通过对测试数据的分析,可以看出,小车已经实现了在A-B-C-B-A区域较为稳定的循环运水过程,即小车已经实现了题目所给出的所有要求。

另外,小车显示每周期时间与实际每周期所用时间误差小于1S,达到了额外添加计时模块的目的。

通过计算,可得出小车的平均速度为0.63m/s,单位时间运水量大约为7mL/s。

Ⅴ、创新点

5.1添加计时模块

在题目要求之外,本设计增加了周期计时装置,在此基础上,若通过进一步改进,可自动显示小车平均速度。

据此又可以在没有其他额外装置的情况下大概知道电池电量(事先测量好小车在不同电量情况下的速度,并画出不同电量对应不同速度的曲线图,用实测速度与此曲线图对比可知大概电量)。

另外,通过简单计算,还达到了计算单位时间运水量的目的。

5.2实用性

①、将该设计用于餐厅、酒吧等餐饮场所,所用于传菜、续杯等较为简单的服务。

既可增加娱乐性和趣味性,亦可节省雇员成本。

②、用该设计取代某些高功耗、高压电机带动的传送带,降低能耗,增加安全系数。

Ⅵ、总结与心得

通过对该作品的制作,了解了各个模块之间相互协同工作的重要性,初步掌握如何控制好各个模块之间的关系。

通过对探测传感器的使用,了解了传感器在设计中的重要作用,有益于对传感器的进一步学习。

本次电子综合实践也锻炼了我们的动手能力,但最重要的是锻炼了如何解决问题的能力。

参考文献:

1、胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,2005

2、阎石.数字电子技术基础.北京:

高等教育出版社,2001

3、童诗白华成英.模拟电子技术基础.北京:

4、郁有文等.传感器原理及工程应用.西安:

西安电子科技大学出版社,2008

参考程序如下:

#include<

REGX51.H>

#defineSEGPORT0P2

#defineSEGPORT1P0

#defineMOTOR_PORTP3

#defineFRONT_SENSORP1_4

#defineBACK_SENSORP1_5

#defineSTART_BUTTONP1_7

#defineSTOP_TIME8//卸水延时

#defineT_H(65536-50000)/256

#defineT_L(65536-50000)%256

//电机操作指令

#defineSTOP_MOTOR0X00

#defineRUN_FORWARD0x05

#defineRUN_BACK0X0A

unsignedcharcodedisptab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};

//显示译码

unsignedcharcount=0;

//中断计数

unsignedcharmin=0;

unsignedcharsec=0;

unsignedcharmin_s;

unsignedcharsec_s;

unsignedcharsuccess=0;

//完成阶段标志

bitinput;

bitdirection=0;

bitshowflag=1;

/*******延时1ms***********/

voiddelay_ms(void)

{

unsignedchari,j;

for(i=5;

i>

0;

i--)

for(j=98;

j>

j--);

}

/*********延时n个ms***********/

voiddelay_nms(unsignedintt)

for(;

t>

t--)

delay_ms();

/********定时器初始化*********/

voidtimer_init()

TH0=T_H;

TL0=T_L;

TMOD=0X01;

ET0=1;

EA=1;

TR0=0;

//并不启动定时器

/******外围硬件初始化*********/

voiddevice_init()

count=0;

min=0;

sec=0;

success=0;

direction=0;

showflag=1;

SEGPORT0=disptab[sec%10];

//显示初始化值

SEGPORT1=disptab[min%10];

P3=STOP_MOTOR;

//停止马达

/********时钟中断子程********/

voidtimer()interrupt1

count++;

if(showflag==1)

if(count==20)

sec++;

if(sec==10)

{

sec=0;

min++;

if(min==10)

min=0;

}

/********主函数**********/

voidmain(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_FORWARD;

//检测START键完成启动马达前进

//屏蔽起始黑线的检测

{

switch(success)

case1:

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;

case2:

//已经检测到前面传感器过线则开始检测后面的传感器

BACK_SENSOR=0;

if(BACK_SENSOR==1)

3;

elsesuccess=(direction)?

2:

case3:

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