本实训基于stc89c52单片机的循迹小车.docx
- 文档编号:5605968
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:13
- 大小:116.70KB
本实训基于stc89c52单片机的循迹小车.docx
《本实训基于stc89c52单片机的循迹小车.docx》由会员分享,可在线阅读,更多相关《本实训基于stc89c52单片机的循迹小车.docx(13页珍藏版)》请在冰豆网上搜索。
本实训基于stc89c52单片机的循迹小车
循迹小车设计说明书
课题名称:
智能循迹小车
学院(系):
电子工程学院
专业:
应用电子技术
班级:
1753班
指导教师:
姚老师
分组成员:
王强软件(XX)
周聪硬件(XX)
薛研露调试(XX)
起讫时间:
2016年4月27日~2016年5月4日
基于STC89C52单片机的智能循迹小车设计
摘要
智能循迹小车是一种在控制系统的作用下,可以准确沿既定路线自动行驶的系统。
本设计中,采用STC89C52单片机为主控制芯片,结合直流减速电机、传感器、电源电路及其他外围电路,设计实现了小车沿黑色轨迹行走的智能循迹小车,其中小车循迹功能由红外式光电传感器完成。
针对学生的能力和财力情况,只能制作有基本寻迹功能的智能小车。
因此本设计的控制核心采用价格便宜、性能良好的8位CPU单片机芯片——STC89C52,驱动部分采用学校里经常教到直流减速电机,传感部分采用对光的暗亮程度比较敏感的红外式光电传感器。
关键词:
机械设计;STC89C52;直流减速电机;红外光电传感器等
第1章绪论2
1.1引言2
1.2主要机械结构分析2
第2章结构设计5
一、结构设计5
二、程序设计8
第1章绪论
1.1引言
机器人技术的发展是一个国家高科技水平和工业自动化程度的重要标志和体现。
机器人在单线生产生活中的应用越来越广泛,整在替代人发挥着日益重要的作用。
机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高薪技术,集成了多学科的发展成果,代表高技术的发展前沿,是当前科技研究的热点方向。
随着计算机、微电子、信息技术的快速进步,机器人技术的开发速度越来越快,智能度越来越高,应用X围也得到了极大的扩展。
在海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域,机器人都有着广阔的发展空间与应用前景。
机器人正朝着智能化和多样化方向发展。
同时,机器人设计到的技术也不断扩展,如多传感器信息融合、;路径规划、机器人视觉、智能人机接口等,产生了一系列研究课题。
目前,国内对机器人的研究不断深入,已经开发出各式各样的具有感知、决策、行动和交互能力的特种机器人和各种智能机器人,推出了各种样机,如移动机器人、微型机器人、水下机器人、军用机器人、服务娱机器人、仿人机器人等。
对不同任务和特殊环境的适应性,是智能机器人与一般自动化装备的重要区别。
智能机器人从外观上已远远脱离了最初的工业机器人所具有的形状和局限,更加符合各种不同应用环境的特殊要求,其功能和智能程度大大增强,从而为机器人技术开辟出更加广阔的发展空间。
其中智能车系统将在未来工业生产和日常生活中扮演重要的角色,是以后的发展方向。
智能小车的巡线功能在生产生活中都有着广泛的用途。
例如:
可以用在大的生产车间的物流系统中,按照预先设定的路线来传输货物;可以用在赛车比赛中能够按照轨道行驶,从而更加安全;还可以用在导航系统中等等。
1.2主要机械结构分析
目前智能小车的主要完成寻迹功能,是由机械结构和控制单元两个部分组成,而机械结构由一个由底盘、控制板、传感器支架、左右驱动轮、直流减速电机等组成,所以主要机械结构有车后驱动轮的驱动方式选择与安装、传感器的安装、电机的选择与安装以及机械设计原则,这四大部分组成。
1、车后驱动轮的驱动方式选择与安装
1.驱动方式选择
小车采用的是后左右两轮驱动的设计,而前轮起舵机的作用,并没有参与驱动功能,驱动功能就只由车后左右两轮来实现,同时又考虑到小车拐弯时的作用力也来自于车后左右两轮,所以,驱动方式必须采用左右两轮单独驱动。
而影响小车转弯的重要因素是差速,小车转弯不灵活、转弯时振动较大都有可能是受差速的影响,必须要在调试过程中自己把握,不宜过松也不宜过紧,最好的标准是小车在拐S弯时,能灵活自如。
考虑到小车的检测性能,所以使用双轮反向这种差速转向方式。
2、传感器的的选择与安装
智能小车的传感器大都会选择以下三种传感器:
1.采用光敏电阻组成光敏传感器。
光敏电阻原理简单,使用方便,价格低廉,但受光照强度影响很大,可靠性不高。
2.采用角度传感器。
实用角度传感器来测量车体水平方向和竖直方向的角度,感测到的倾角信号经编码后传感给单片机,由单片机控制电动机的运行。
角度传感器灵敏度合适,响应速度好,但使用复杂,价格高昂,且不易购买。
3.采用红外光电传感器。
光电传感器原理简单,实现方便,价格低廉,可集发射器和接收器于一体。
使用这类光电传感器电路简单,工作性能稳定,能完成需要的信号检测功能。
综上分析,本设计选择方案三。
传感器的抖动对检测稳定性的影响很大,前瞻增大后传感器的抖动很大地影响了检测的稳定性能,所以必须加固传感器的安装,以此来保证检测的稳定性。
保证检测的稳定性,则必须保证车的稳定性,因此,必须将车身尽量压低,降低车的重心。
采用三只TCRT5000型号的红外光电传感器,呈一字排布。
这种方法检测连贯简单,程序控制算法简单,使小车控制稳定。
电路图如下图所示:
3、电机的选择与安装
智能小车的减速电机是由一个普通电机和减速齿轮箱组成,齿轮箱在减速的同时可以增加扭矩。
常用的减速电机有两种:
1.L型直流减速电机,只有一边有轮轴,即只有一边可以安装轮子。
如图1-3所示:
图1-3
这种电机不能加测速模块,只能作为动力电机使用,但是可以在轮子上面安装霍尔元件或者光电测速元件。
2.T型直流减速电机,两边都有轮轴,即两边都可以装轮子。
如图1-4所示:
图1-4
这种电机可在轮子的对面的电机轴上安装光电码盘,可用于侧速。
但是有一点请注意,不是所有底盘板都支持这种T型测速。
所以,综上所诉,选择第一种电机。
电机在安装时必须考虑到啮合角和差速。
啮合角没有调整好,会导致点击声音特别大,同时不仅会影响电机的声音强度,而且更会直接影响了电机对整车的驱动性,因此啮合富不应太松也不宜太紧,这在调试过程中应准确去把握。
4、机械结构的设计原则
机械结构在设计时,必须遵循重量适当、降低重心、加固安装这三个原则。
1)重量适当。
在小车运动时是很重要的,这影响到了小车的运动性能,以及爬斜坡的抓地力。
众所周知,小车的车身过重,会影响到小车在运动时的动能;车身过轻,则会影响到小车在爬斜坡的抓地力,直接导致小车的车轮会打滑。
这点应在调试时适当去把握。
2)降低重心。
这不仅能更好地增加小车的抓地力,而且更能保证检测的稳定性能。
3)加固安装。
这直接决定了小车的质量高低,所以在安装时,必须加固装。
第2章结构设计
一、结构设计
通过查阅资料,浏览X文,以及根据设计任务及扩展功能,确定此设计小车是以STC89C52单片机为检测和控制核心,由轨迹探测模块、后轮驱动兼转向模块及电源模块等四大模块组成。
如下图所示:
首先必须将各个模块按照其功能组成一个有机的整体,系统各模块之间是紧密结合在一起完成工作的,各个模块通过单片机组成一个完整的硬件系统,通过各自不同的功能,使智能小车进行前进转向,达到实现运动控制的目的。
1、检测与控制核心
单片机是整个系统的核心,实现各模块传输的信息的处理,调用相应的子程序,实现控制信息处理,控制电机正反转等。
系统采用STC的8位微控制器STC89C52单片机作为核心控制单元用于智能小车运动系统的控制。
在选定智能车系统采用红外式光电传感器检测后,路径信号经STC89C52的I/O口输入处理后,用于小车的运动控制决策,由P0口输出电机控制信号
单片机接线图如下图所示:
2、轨迹探测模块(检测方式)
利用红外接收装置,判断有外界控制信息的输入,并与单片机相连,传递相应控制信息。
该智能小车在画有黑线的白纸“路面”上行驶由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”——黑线.判断信号可通过单片机控制驱动模块修正前进方向,以使其保持沿着黑线行进。
所用的黑线宽度大约为1cm,判断黑线的方案采用红外光电传感器作为传感器,三个红外光电传感器并排放置于小车的前部进行线路跟踪——正常行驶时,中间红外光电传感器应位于黑色轨道上,而左右两个红外光电传感器应位于白色轨道上。
电开关脱离轨道时,等待外面任意一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。
3、后轮驱动兼转向模块
驱动包括电机和电源
电机选择。
由于直流电机转动力矩大,响应快速,体积小,重量轻,较大的起动转矩使其有从零转速至额定转速具备可提供额定转矩的性能,又可用变速齿轮改变其速度来达到本系统要求,价格较低等特点,所以使用两个直流电机,由单片机发出信号控制其正传反转,实现智能小车前进和转向结合。
电机控制。
由于L293D芯片的驱动方式比较简单,直接驱动两只直流电机。
电源选择。
用4节五号电池串联6V直流电源。
在不超过单片机工作电压X围的情况下,又能驱动直流电机。
且这个电源结构简单,价格便宜,容易得到。
转向和动力结合的智能小车是使用两个独立的电动机各自带动一个轮胎位于两侧,通过两个轮胎速度的改变实现小车的转向,控制所用程序较少,控制器控制起来简单(这种转向方式类似于坦克的转向方式)。
电路图如下图所示:
4.小车的组装
根据“车后驱动轮的驱动方式选择与安装”,则可看出如果动力轮抓地力不够,那么车的转弯不会那么灵活,因此需要提高动力轮的摩擦力,而如果把驱动等必备部件安装在动力轮上面,那么既能解决抓地力的问题(三样东西的重量够大,尤其是电池),也能解决前面搭载平台的问题。
因此把电池放在最下面,然后用一块亚克力板,使用铜柱把驱动吊装在亚克力板下面(两套铜柱足够),把最小系统支撑在亚克力上面(两个足够,也可以用四个),最后用长铜柱把整块结构支撑在导向轮上面,注意,不要挂到轮子。
这样的话,在前面安装了传感器之后,重心基本是在底盘中心上,同时后轮有足够的重量来保证抓地力。
二、程序设计
小车程序:
/*功能:
循迹小车
使用芯片:
AT89S52或者STC89C52或AT89S51STC89C51
晶振:
12MHZ
编译环境:
Keil4
作者:
wangqiang*/
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
//=================电机驱动=====================
sbitdianji_r=P3^0;//右边电机控制口,低电平转
sbitdianji_l=P3^7;//左边电机控制口,低电平转
//=============循迹感应接口======================
sbitxjmk_r=P3^2;//右边寻迹模块检测口INT0
sbitxjmk_l=P3^3;//左边寻迹模块检测口INT1
voidcheck_righet();//右边时候检测到黑线测试程序
voidcheck_left();//左边时候检测到黑线测试程序
voiddelay_50us(uintt);
voiddelayms(uintMs);
ucharr_count;//右边传感器检测到的次数计数单元
ucharl_count;
uinttime;
//*************主程序****************
main()
{
time=50;
dianji_r=0;//上电时右侧电机运行
dianji_l=0;//上电时左侧电机运行
EA=1;
EX1=1;
EX0=1;
IT1=0;
IT0=0;
xjmk_r=1;//置IO为1,准备读取数据
xjmk_l=1;
_nop_();
r_count=0;
l_count=0;
while
(1)
{
_nop_();
//check_righet();//调用右边寻迹检测传感器
//check_left();//
if(r_count>=1)
{
delayms(time);
dianji_r=0;
dianji_l=0;
r_count=0;
_nop_();
}
if(l_count>=1)
{
delayms(time);
dianji_r=0;
dianji_l=0;
l_count=0;
_nop_();
}
}
}
voidinit0int()interrupt2
{
l_count=5;
dianji_l=1;
dianji_r=0;
if(r_count>0)
{EX0=0;
delayms(20);
if(time>=20)time-=19;
EX0=0;
}
return;
}
voidinit1int()interrupt0
{
r_count=5;
dianji_r=1;
dianji_l=0;
if(l_count>0)
{EX1=0;
delayms(20);
if(time>=20)time-=19;
EX1=1;}
return;
}
//**********************************************
//函数名称:
voidcheck_left()
//功能:
左边边时候检测到黑线测试程序
voidcheck_left()
{
if(xjmk_l==0)//检测右边的传感器是否感应到黑线
{
delay_50us
(1);//延时,去除机械振动
_nop_();
if(xjmk_l==0)//再次检测
{
delay_50us
(1);//延时,去除机械振动
if(xjmk_l==0)
{
l_count++;
xjmk_l=1;
}
}
}
}
//*****************************************************//函数名称:
voidcheck_righet()
//功能:
右边时候检测到黑线测试程序
voidcheck_righet()
{
if(xjmk_r==0)//检测右边的传感器是否感应到黑线
{
delay_50us
(1);//延时,去除机械振动
if(xjmk_r==0)//再次检测
{
delay_50us
(1);//延时,去除机械振动
if(xjmk_r==0)
{
r_count++;
xjmk_r=1;
}
}
}
}
//*****************************************************
//函数名称:
voiddelay_50US(unsignedintt)
//功能:
延时50*t(us)
voiddelay_50us(uintt)
{
ucharj;
for(;t>0;t--)
{
for(j=19;j>0;j--);
}
}
/*===========设定延时时间:
x*1ms=================*/
voiddelayms(uintMs)
{
uinti,TempCyc;
for(i=0;i { TempCyc=70; while(TempCyc--); } } 第3章结论 通过这两个星期设计,我们查了很多相关智能小车的资料,基本上清楚了当今移动机器人的发展现状,以及未来的发展方向。 刚开始时没有头绪,认为机器人是离我们很遥远的,是和我们生活交集并不大的高科技产物,但是后来才发现,其实机器人在我们的生活中无处不在,各种智能机器人已经活跃在我们的生活中。 时下盛行的机器人足球赛我一直很关注,现在从运动控制角度分析后,才有一种恍然大悟的感觉。 本设计采用的是STC89C52单片机制成移动机器人,这主要是因为该单片机的稳定性比较好。 还可以采用其它系列的单片机。 如采用凌阳单片机,就可以简化编程,但其稳定性不是很好。 通过设计发现模电数电知识有待提高,对三极管的认识很重要。 本文设计的移动机器人结构简单,较容易实现,总体设计合理,对研究移动机器人的控制过程很有益。 设计出来的移动机器人符合ITS的基本要求,是主流的智能化的信息融合技术设计理念,功能强大,模块化设计,可移植性强,功率较低,有很广泛的应用领域和发展前景。 同时,性格决定命运,气度影响格局,态度决定高度,细节决定成败。 我们应该有正确的认识,只有我们有丰富的知识和经验的积累,才能成功。 而且,此设计要求较强的动手能力,将理论转换为实际的操做,“纸上得来终觉浅,绝知此事要躬行”。 知识和经验需要我们在做课题时不断的积累,做课题时一定要合理分工,严格按要求完成,否则到比赛时就后悔莫及。 学会看英文文档,我们用到的芯片资料都是英文的,要学会找重点,找我们需要的东西,别人翻译的文档有可能错误或没说清楚。 编程软件也是英文的,如果是没人教,就得自己看资料学习。 智能小车是移动机器人的一种,从最简单的模型入手,体会到了运动控制的过程,利用我们熟悉的单片机作为控制芯片,找到了移动机器人与我们所学知识的结合点。 总的来说,此次设计完成了规定的各项要求,进一步学习并实践了程序编写、调试,电路板的制作,元器件的焊接等多种实用技术,成功设计出一个自动寻迹小车。 既学习了不少新的知识和技术,由亲身体验软件设计、开发的过程,个人觉得收获颇丰。 在实验室焊接小车的电路板时也发现不少问题。 我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。 有时是“虚焊”的原因,有时可能是阻值选错。 这使握深深感受到理论与实际间的差距和自身的不足。 通过这样的设计,提高了我的动手能力。 每天在实验室除了焊接线路板,还可以上机编程,不但让我熟悉了相关的专业软件也使我软件调试知识提高了。 从网络上找到了很多的资料,其中不少新颖的思路值得一试。 这次设计使我受益终身。 参考文献 [1]楼梦麟.变参数土层的动力特性和地震反应分析[J].同济大学学报,1997 [2]李刚.船用齿轮箱结构设计方法[M].: 机械工业,2007 [3]王秋爽,曾兆龙单片机开发基础与经典设计实例机械工业2008 [4]华成英童诗白模拟电子技术基础第四版高等教育 [5]吴锤红MCS-51微机原理与接口技术XX大学 [6]X毅刚单片机原理及应用2003年12月第一版高等教育 [7]杨江新单片机程序设计及应用从基础到时间,,电力电子, [8]李华MCS-51系列单片机实用接口技术,航空航天大学,2003 [9]王晓明电动机的单片机控制,航空航天大学,2002[10]杨子文单片机原理及应用XX电子科技大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc89c52 单片机 小车