自主识别路线智能小车设计.docx
《自主识别路线智能小车设计.docx》由会员分享,可在线阅读,更多相关《自主识别路线智能小车设计.docx(30页珍藏版)》请在冰豆网上搜索。
![自主识别路线智能小车设计.docx](https://file1.bdocx.com/fileroot1/2023-5/15/720456dd-0521-4fb3-a3a8-a7208156bbee/720456dd-0521-4fb3-a3a8-a7208156bbee1.gif)
自主识别路线智能小车设计
编号:
毕业论文(设计)
题目自主识别路线智能小车设计
指导教师王慧
学生姓名王振坤
学号200801703242
专业机械设计制造及其自动化
教学单位德州学院机电工程系(盖章)
二O一二年五月三日
德州学院毕业论文(设计)开题报告书
2011年10月28日
院(系)
机电工程系
专业
机械设计制造及其自动化
姓名
王振坤
学号
200801703242
论文(设计)题目
自主识别路线智能小车设计
一、选题目的和意义
自工业机器人诞生以来,机器人已经分布遍及各个行业及领域。
机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:
一是电子装置占汽车整车(特别是轿车)的价值量比例逐渐高,汽车将以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。
为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:
通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。
所以立“智能循迹小车”一题作为尝试。
二、本选题在国内外的研究现状和发展趋势
现智能小车发展很快,从智能玩具到其它各行业都有实质成果。
其基本可实现循迹、避障、寻光入库、检测贴片等基本功能,这几节的电子设计大赛智能小车又在向声控系统发展。
比较有的飞思卡尔智能小车更走在前列。
我此次的设计主要实现循迹这个功能。
三、课题设计方案[主要说明:
研究(设计)的基本内容、观点及拟采取的研究途径和方法。
]
该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制。
四、计划进度安排[主要说明:
起止时间及分阶段的进度要求。
]
起止时间:
2011年10月13日至2012年5月3日
2011.10.13-2011.10.30收集资料和文献,在教师指导下选题和构思论文;
2011.11.03-2011.11.20进一步收集、分析资料,清理思路,完成开题报告;
2011.12.21-2012.03.30整理资料,确定论文内容,完成论文初稿;
2012.04.01-2012.04.12根据导师提出的意见,对论文做进一步的修改和完善;
2012.04.16-2012.04.30完成中期检查表,根据导师提出的定稿意见,做最后完善;
2012.05.04-2012.05.10提交论文定稿的电子版给导师,准备论文答辩。
五、主要参考文献
[1]宋健,姜军生,赵文亮.基于单片机的直流电动机PWM调速系统[J].农机化研究,2006,
(1):
102~103.
[2]边春元李文涛江杰杜平等;C51单片机典型模块设计与应用;机械工业出版社;2008.4:
88~120
[3]李华.MCS-51系列单片机实用接口技术[M].北京:
航空航天大学出版社,2003
[4]楼然苗.51单片机设计实例[M].北京:
航空航天大学出版社,2005.8:
35~60
[5]王晶,翁显耀,梁业宗自动寻迹小车的传感器模块设计.武汉理工大学自动化学院 湖北武汉,2009.6:
5~12
[6]刘迎春.传感器原理设计与应用[M].长沙:
国防科技大学出版社,2009.5:
77~110
指导教师意见及建议:
签名:
年月日
教学单位领导小组审批意见:
组长签名:
年月日
德州学院毕业论文(设计)中期检查表
院(系):
机电工程系专业:
机械设计制造及其自动化2012年04月18日
毕业论文(设计)题目:
自主识别路线智能小车设计
学生姓名
王振坤
学号
200801703242
指导教师
王慧
职称
讲师
计划完成时间:
2007年5月10日
毕业论文(设计)的进度计划:
2011.10.13-2011.10.30收集资料和文献,在教师指导下选题和构思论文;
2011.11.03-2011.11.20进一步收集、分析资料,清理思路,完成开题报告;
2011.12.21-2012.03.30整理资料,确定论文内容,完成论文初稿;
2012.04.01-2012.04.12根据导师提出的意见,对论文做进一步的修改和完善;
2012.04.16-2012.04.30完成中期检查表,根据导师提出的定稿意见,做最后完善;
2012.05.04-2012.05.10提交论文定稿的电子版给导师,准备论文答辩。
完成情况:
到目前为止下文内容的详细资料已基本整理完成,且在老师的指导帮助下已经撰写完成论文初稿,现在正进一步的收集更多相关的资料,并根据指导教师的修改意见进行论文修改。
指导教师评议(指出优点和不足,如有其它建议,可另附页)
签名:
年月日
备注:
目录
目录1
摘要:
2
1.引言3
2.系统设计方案3
2.1小车循迹原理3
2.2控制系统总体设计3
3.模块设计4
3.1寻迹传感器模块4
3.1.1红外传感器ST188简介4
3.1.2比较器LM324简介5
3.1.3具体电路5
3.1.4传感器安装6
3.2控制器模块6
3.3电源模块7
3.4电机及驱动模块8
3.4.1电机8
3.4.2驱动8
3.5自动循迹小车总体设计9
3.5.1总体电路图9
3.5.2系统总体说明11
4.软件设计11
4.1PWM控制11
4.2总体软件流程图12
4.3小车循迹流程图12
4.4中断程序流程图13
4.5单片机测序14
结束语17
参考资料19
谢词19
自动循迹小车
王振坤
(德州学院机电系,山东德州253023)
摘要:
本课题是基于AT89C51单片机的智能小车的设计,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。
小车以AT89C51单片机为系统控制处理器;采用红外传感器获取赛道的信息,来对小车的方向和速度进行控制。
此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。
关键词:
单片机AT89C51光电传感器直流电机自动循迹小车
1.引言
利用红外采集模块中的红外发射接收对管检测路面上的轨迹,将接收到的轨迹信息输送到单片机,单片机采用模糊推理求出转向的角度和行走速度,然后去控制行走部分,最终完成智能小车可以按照路面上的轨迹运行。
系统方案方框图如图1所示。
图1系统方案方框图
2.系统设计方案
2.1小车循迹原理
该智能小车在画有黑线的白纸上行驶,黑线和白纸对光线的反射系数不同,可根据接收到的反光强弱来判断“道路”—黑线。
该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法是利用红外线在不同颜色的物理表面具有不同的反射性质的一种方法。
小车在行驶过程中不停地向地面发出红外光,红外光遇到白色地面发生漫发射,红外线反射到装在小车上的接收管;如果黑线将红外线吸收,则小车上的接收管收不到信号。
2.2控制系统总体设计
自动循迹小车控制系统由主控制电路模块、电机及驱动模块、稳压电源模块、红外检测模块等部分组成,控制系统的结构图如图2所示。
1、主控制电路模块:
AT89C51单片机、复位电路,时钟电路
2、红外检测模块:
光电传感器ST188,比较器LM324
3、电机及驱动模块:
电机驱动芯片L298N、两个直流电机
4、电源模块:
双路开关电源
3.模块设计
3.1寻迹传感器模块
我们采用ST188作为红外检测传感器。
在黑线检测的测试中,若检测到白色区域,接收管没有接收到发射管发射的红外线,测量接收管的电压为4.8V,若检测到黑色区域,红外线反射到接收管,电阻发生变化,所分的电压也就随之发生变化,测的接收管的电压为0.5V,测试基本满足要求。
判断有无黑线我们用的比较器LM324,比较基准电压由30K的变阻器调节,各个接收管的参数都不相同,每个传感器的比较基准电压也不尽相同,我们为每个传感器配备了一个变阻器。
3.1.1红外传感器ST188
含一个发光二极管和一个光敏三极管,发光二极管为反射模块光敏三极管为接收模块。
通过发射红外信号,看接收信号变化判断检测物体状态的变化。
A、K之间接发光二极管,C、E之间接光敏三极管(二者在电路中均正接,但要串联一定阻值的电阻)
图3ST188实物图图4ST188管脚图及内部电路
3.1.2比较器LM324简介
LM324内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立,为四运放集成电路。
LM324电路具有电源电压宽,静态功耗小,可单电源使用,价格低廉等优点,被广泛应用在各种电路中。
在检测电路中用来确定红外接收信号电平的高低,以电平高低来判定黑线有无。
在电路中,LM324的一个输入端需接滑动变阻器,通过改变滑动变阻器的阻值来提供合适的比较电压。
图5LM324内部电路图6集成运放的管脚图
3.1.3具体电路
通过ST188检测黑线,输出接收到的信号传递给LM324,接收电压与比较电压比较后,输出信号变为高低电平,再输入单片机中,来判定是否检测到黑线。
图7传感器模块电路图
3.1.4传感器安装
在小车具体的循迹行走过程中,为了能精确测定黑线位置并确定小车行走的方向,需要同时在底盘安装4个红外探测头,进行两级方向纠正控制,以提高其循迹的可靠性。
这4个红外探头的具体位置如图8所示。
图8传感器安装图
图中循迹传感器安装于同一条直线上。
其中左X2与右Y2为第二级传感器,左X1与右Y1为第一级传感器,同侧传感器之间间隙应小于黑线宽度。
小车前进时,始终保持如图8中所示的轨迹黑线,黑线位于第一级和第二级传感器之间,小车偏离轨迹,第一级或第二级传感器会检测到黑线,然后将信号传送给控制器,控制系统发出信号对小车轨迹予以纠正。
如果四个传感器都未探测到黑线,即小车回到了轨道上。
此处第二级传感器的作用是防止小车惯性过大,纠正过度,起到一个保险的作用。
3.2控制器模块
Atmel公司的AT89C51单片机是一个低功耗,高性能的8位单片机,片内含32k空间的可反复擦写100,000次Flash只读存储器,具有4K的随机存取数据存储器(RAM),32个I/O口,2个8位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试,所以选取它作为主控制器。
时钟电路和复位电路如图9(与单片机构成最小系统)
1)采用外部时钟,晶振频率为12MHZ
2)采用按键复位
图9时钟电路和复位电路
3.3电源模块
电源采用双路开关电源。
D-30W双路开关电源。
输出(5V、12V)。
实物图如图10所示。
图10双路开关电源
该开关电源尺寸为129X98X38mm,交流输入转换由开关选择,具有过流短路保护功能,能自冷散热。
低价位、高可靠。
输入电压范围----85~132VAC/175~264VAC,47~63Hz开关选择;
冲击电流----冷起动电流15A/115V30A/230V;
直流电压可调范围----额定输出电压的10%;
启动、上升、保持时间----200ms,100ms,30ms;
耐压性---输入输出间;输入与外壳1.5KVAC,输出与外壳,0.5KVAC,历时一分钟;
工作温度、湿度-----10℃~+60℃,20%~90%RH;
安全标准----符合CE标准;
EMC标准----符合CE标准;
连接方法----7位9.5mm接线端子;
质量/包装----0.41Kg,45PCS/19.5Kg/1.2CUFT
表1输出电压
型号
输出
差值
范围
效率
D-30A
5V,0.5V~4.04A
±2%
50mV
72%
12V,0.1~1.0A
±3,-7%
100mV
3.4电机及驱动模块
3.4.1电机
电机选取直流减速电机,相比步进电机其价格低廉,安装简单,内部经过减速齿轮减速扭力较大。
可选用减速比为1:
74的直流电机,减速后电机的转速为100r/min。
如果车轮直径为6cm,则小车的最大速度可以达到
V=2πr·v=2*3.14*0.03*100/60=0.314m/s
能够较好的满足系统的要求。
3.4.2驱动
电机驱动一般采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。
单片机给予L298N电路PWM信号来控制小车的速度,起停。
其引脚图如11。
图11L298N外部引脚
驱动电路的设计如图12所示:
图12L298N电机驱动电路
L298N的5、7、10、12四个引脚接到单片机上,通过对单片机的编程就可实现两个直流电机的PWM调速控制。
3.5自动循迹小车总体设计
3.5.1总体电路图
图13总体电路图
如图13所示,当光电传感器开始接受信号,通过比较器将信号传入单片机中。
小车进入寻迹模式,即开始不停地扫描与探测器连接的单片I/O口,如果检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的运行轨迹。
单片机采用T0定时计数器,通过来产生PWM波,控制电机转速。
4.软件设计
4.1PWM控制
PWM的中文名就是脉宽调制,通过调节脉冲信号的占空比来实现调节直流电机的转速的。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。
因此,PWM又被称为“开关驱动装置”。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
本系统中通过控制51单片机的定时器T0的初值,从而可以实现P0.4和P0.5输出口输出不同占空比的脉冲波形。
定时计数器若干时间(比如0.1ms)中断一次,就使P0.4或P0.5产生一个高电平或低电平。
将直流电机的速度分为100个等级,因此一个周期就有个100脉冲,周期为100个脉冲的时间。
速度等级对应一个周期的高电平脉冲的个数。
占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。
一个周期加在电机两端的电压为脉冲高电压乘以占空比。
占空比越大,加在电机两端的电压越大,电机转动越快。
电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。
调整占空比时,就能得到不同的电机平均速度,来实现调速。
精确地讲,在一般的应用中,可以将平均速度和占空比近似地看成线性关系,因为两者之间并不是严格的线性关系。
4.2总体软件流程图
小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。
软件的主程序流程图如图14所示:
4.3小车循迹流程图
小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4哪个传感器探测到了信号,如果小车左偏,即右一或右二检测到信号,则做出调整,右转;反之向左转。
完成方向调整后,小车继续前进并重复额黑线。
循迹流程图如图15所示
两个等机件的转向力度需要配合,第二级方向控制是第一季的后备。
为了保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级,第二级是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,即Turn_left2>Turn_left1,Turn_right2>Turn_right1(其中Turn_left2,Turn_left1,Turn_right2,Turn_right1为小车转向力度,其大小通过单片机输出的占空比来决定,其大小在试验中决定。
4.4中断程序流程图
这里利用的是51单片机的T0定时计数器,从而让单片机P0口的P0.4和P0.5引脚输出占空比不同的方波,然后经驱动芯片放大后控制直流电机。
定时计数器若干时间(比如0.1ms)比如中断一次,就使P0.4或P0.5产生一个高电平或低电平。
中断程序流程图如图4-3所示:
图16中断程序流程图
4.5单片机测序
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedcharzkb1=0;//**左边电机的占空比**//
unsignedcharzkb2=0;//**右边电机的占空比**//
unsignedchart=0;//**定时器中断计数器**//
sbitRSEN1=P1^0;
sbitRSEN2=P1^1;
sbitLSEN1=P1^2;
sbitLSEN2=P1^3;
sbitIN1=P0^0;
sbitIN2=P0^1;
sbitIN3=P0^2;
sbitIN4=P0^3;
sbitENA=P0^4;
sbitENB=P0^5;
//****************延时函数****************//
voiddelay(intz)
{while(z--);}
//**********初始化定时器,中断***********//
voidinit()
{TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
}
//***********中断函数+脉宽调制***********//
voidtimer0()interrupt1
{if(tENA=1;
else
ENA=0;
if(tENB=1;
else
ENB=0;
t++;
if(t>=100)
{t=0;}
}
//******************直行******************//
voidqianjin()
{zkb1=30;
zkb2=30;
}
//***************左转函数1***************//
voidturn_left1()
{zkb1=0;
zkb2=50;
}
//***************左转函数2***************//
voidturn_left2()
{zkb1=0;
zkb2=60;
}
//***************右转函数1***************//
voidturn_right1()
{zkb1=50;
zkb2=0;
}
//***************右转函数2***************//
voidturn_right2()
{zkb1=60;
zkb2=0;
}
//***************循迹函数*****************//
voidxunji()
{ucharflag;
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
{flag=0;}//*******直行*******//
elseif((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
{flag=1;}//***左偏1,右转1***//
elseif((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1))
{flag=2;}//***左偏2,右转2***//
elseif((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1))
{flag=3;}//***右偏1,左转1***//
elseif((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))
{flag=4;}//***右偏2,左转2***//
switch(flag)
{case0:
qianjin();
break;
case1:
turn_right1();
break;
case2:
turn_right2();
break;
case3:
turn_left1();
break;
case4:
turn_left2();
break;
default:
break;
}
}
//****************主程序****************//
voidmain()
{init();
zkb1=30;
zkb2=30;
while
(1)
{IN1=1;//******给电机加电启动******//
IN2=0;
IN3=1;
IN4=0;
ENA=1;
ENB=1;
while
(1)
{xunji();//*********寻迹**********//
}
}
}
结束语
通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。
本次毕业设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Protel设计电路。
本次毕业设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。
还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。
通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。
总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅。
这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。
参考文献:
[1]宋健,姜军生,赵文亮.基于单片机的直流电动机PWM调速系统[J].农机化研究,2006,
(1):
102~103.
[2]边春元李文涛江杰杜平等;C51单片机典型模块设计与应用;机械工业出版社;2008.4:
88~120
[3]李华.MCS-51系列单片机实用接口技术[M].北京:
航空航天大学出版社