循迹小车.docx
- 文档编号:13043614
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:21
- 大小:614.16KB
循迹小车.docx
《循迹小车.docx》由会员分享,可在线阅读,更多相关《循迹小车.docx(21页珍藏版)》请在冰豆网上搜索。
循迹小车
南京工程学院
课程设计报告
课程名称单片机原理及应用
班级
姓名
学号
起止日期2011.11.5~2011.11.16
指导教师孙来业
一、系统方案
1.1设计要求
设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶。
系统方案方框图如图1-1所示。
图1-1系统方案方框图
1.2.方案论证与比较
1、小车循迹原理
这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断“道路”。
通常采取的方法是红外探测法。
红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。
单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。
红外探测器探测距离有限,一般最大不应超过3cm。
但是由于我们的传感器离地面距离较近,所以,用红外探测器就足够实现寻迹功能。
2、小车变速原理
采用PWM调速法进行调速,利用单片机输出端输出高电平的脉宽及其占空比的大小来控制电机的转速,从而控制小车的速度。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
本系统中通过控制单片机的定时器T0的初值,从而可以实现P1.0、P1.1、P1.2和P1.3输出口输出不同占空比的脉冲波形来控制电机驱动。
3、控制系统总体设计
自动循迹小车控制系统由有以STC89C52作为核心的主控器模块、稳压电源模块、红外检测模块、电机及驱动模块、显示模块、声光报警模块等部分组成,控制系统的结构框图如图所示。
从单片机发出PWM波,驱动直流电机对小车进行加减速控制以及控制电机对小车进行转向。
为了对小车的速度进行控制,在小车电机齿轮旁安装编码盘,采集电机转速的脉冲信号,经光电传感器捕获后来进行速度的一系列计算,完成小车速度的闭环控制。
控制系统结构框图
1、主控制电路模块:
用STC89C52单片机、复位电路、时钟电路
2、传感检测模块:
光电传感器RPR220
3、电机及驱动模块:
电机驱动电路、两个直流电机
4、电源模块:
LM7805
1.3系统方案选择与论证
1、车体设计
方案一:
自己动手制作电动车,由于制作过程要花费大量的时间,也受到手艺不好的影响,制作出来的小车还可能机械性能不好。
考虑到时间与性能这两方面,我们放弃了这一方案。
方案二:
购买玩具电动车,购买的小车具有组装完整的车架车轮、电机及其驱动电路。
易改装,好控制,机械性能有保障。
但选择购买时应注意有的玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。
综上考虑,我们选择了方案2。
2、电源模块
单片机系统、路径识别的传感器等均需要5V电源,市场上5V的稳压芯片有很多,例如LM2940、LM7805、开关型LM2575、LM2596,其中2940和7805转换效率比较低,只有40%左右,但是输出纹波很小,对于单片机这种对电源要求比较高的元件而言很适合,而2575和2596是开关型的稳压芯片,转换效率可以达到75%甚至80%以上,最大过流1A。
但是输出有纹波,很可能让单片机出现重启现象。
7805输入7.5V以上可以稳定输出5V,所以我们决定选用LM7805作为稳压芯片。
3、寻迹传感器模块
方案1:
用光敏电阻组成光敏探测器。
光敏电阻的阻值可以跟随周围环境光线的变化而变化。
当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。
因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。
将阻值的变化值经过比较器就可以输出高低电平。
但是这种方案受光照影响很大,不能够稳定的工作。
因此我们考虑其他更加稳定的方案。
方案2:
用红外发射管和接收管自己制作光电对管寻迹传感器。
红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。
这样自己制作组装的寻迹传感器基本能够满足要求。
因此我们选择了方案2。
5、电机模块
对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。
由于本实验要实现对路径的准确定位和精确测量,我们综合考虑了一下两种方案。
方案1:
采用步进电机作为该系统的驱动电机。
由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。
虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。
经综合比较考虑,我们放弃了此方案。
方案2:
采用直流电机。
直流电机转动力矩大,体积小,重量轻,装配简单,使用方便。
由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。
能够较好的满足系统的要求,因此我们选择了此方案。
6、驱动模块
方案1:
采用专用芯片L298N作为电机驱动芯片。
L298N是一个具有高电压大电流的全桥驱动芯片,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,性能优良。
但是该芯片成本较高,不符合实际情况。
方案2:
对于直流电机用分立元件构成驱动电路。
由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛,也完全符合题目要求。
因此我们选用了方案2。
二、模块介绍与电路
2.1传感器模块电路设计
1.光电传感器RPR220简介
含一个反射模块(发光二极管)和一个接收模块(光敏三极管)。
通过发射红外信号,看接收信号变化判断检测物体状态的变化。
A、K之间接发光二极管,C、E之间接光敏三极管(二者在电路中均正接,但要串联一定阻值的电阻)
RPR220实物图
2.具体电路
通过RPR220检测黑线,输出接收到的信号给非门,接收电压与比较电压比较后,输出信号变为高低电平,再输入到单片机中,用以判定是否检测到黑线。
传感器模块电路图
如果输出加施密特触发器就可以实现良好的输出波形。
但是这种电路用电量比较大,给此种传感器调理电路供电的电池压降较快。
究其原因,是因为光敏三极管和三极管VT1导通时的导通电流较大。
考虑用比较器的方案,图中可调电阻可以调节比较器的门限电压,经示波器观察,输出波形相当规则,可以直接够单片机查询使用。
而且经试验验证给此电路供电的电池的压降较小。
因此我们选择此电路作为我们的传感器检测与调理电路。
此光电对管电路简单,工作性能稳定。
3.传感器安装
我们用一个字节来代表车底的3个光电传感器。
用每一个位来代表当前传感器的检测状态。
我们把小车直线行进时分成三种状态,当中间2个传感器都检测到白线时,小车在跑道的正上方,这时控制两电机同速度全速运行。
当检测到有一个传感器或者同侧的两个传感器偏出白线时,小车处于微偏状态,这时将一个电机速度调慢,另一电机速度调快,完成调整。
当检测到有三个电机偏出时,小车处于较大的偏离状态,这时把一个电机的速度调至极低,另一电机全速运行,从而在较短时间内完成路线的调整。
用这种三级调速的寻迹算法同单纯的判断检测到对管的位置并作出判断的方法相比,程序思路清晰,程序执行结果较好。
该检测传感器子程序的流程图如图所示:
在小车具体的循迹行走过程中,为了能精确测定黑线位置并确定小车行走的方向,需要同时在底盘装设3个红外探测头,进行两级方向纠正控制,提高其循迹的可靠性。
这3个红外探头的具体位置如图所示
传感器安装图
图中循迹传感器全部在一条直线上。
其中X1与Y1为方向控制传感器。
小车前进时,始终保持(如图3-6中所示的行走轨迹黑线)在X1和Y1这两个第一级传感器之间,当小车偏离黑线时,把检测的信号送给小车的处理、控制系统,控制系统发出信号对小车轨迹予以纠正。
若小车回到了轨道上,即2个探测器都只检测到白纸,则小车会继续行走。
2.2控制器模块
采用STC89C52单片机作为主控制器。
它是一个低功耗,高性能的8位单片机,片内含32k空间的可反复擦写100,000次Flash只读存储器,具有4K的随机存取数据存储器(RAM),32个I/O口,2个8位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试。
时钟电路和复位电路如图(与单片机构成最小系统)
1)采用外部时钟,晶振频率为12MHZ
2)采用按键复位
时钟电路和复位电路
单片机构成最小系统实物图
2.3电机驱动模块
驱动:
用分立元件搭建的H桥驱动电路。
驱动电路的设计如图3-10所示:
图3-10电机驱动电路
电机转动状态编码:
左电机
右电机
左电机
右电机
电动车运行状态
Z1
Z2
Y1
Y2
0
1
0
1
正转
正转
直走
1
0
0
1
正转
反转
左转
0
1
1
0
反转
正转
右转
1
1
1
1
杀停
杀停
立刻停止
电机驱动模块实物图
2.4系统总体说明
当光电传感器开始接受信号,通过比较器将信号传如单片机中。
小车进入寻迹模式,即开始不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。
单片机采用T0定时计数器,通过来产生PWM波,控制电机转速。
小车总实物图
三、系统测试
测试工具:
仪器名称
用途
电脑
调试及下载程序
数字万用表
测量各种电路工作情况
单元模块的测试
(A)电源测试:
用数字万用表电压档测量电路输出的电压值是否正常。
(B)光电对管线路寻迹模块测试:
通电后,在光电对管下面放一张白纸是,用电压表测量输出端是不是为高电平;在放一张贴有黑胶布的纸张在光电对管下面,看电压表的的电压是否为低电平;来回移动带有黑胶布的纸张,看电压表的电压值是否高低电平的变化。
(C)电机驱动模块电路测试:
给电路通电以后,分别对2电路每个输入端一个高低电平,看电机是否转动;然后在反接试下,电机是否和开始的运转方向相反。
四、软件设计流程图
4.1PWM控制
本系统采用PWM来调节直流电机的速度。
PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。
PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。
因此,PWM又被称为“开关驱动装置”。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
本系统中通过控制51单片机的定时器T0的初值,从而可以实现P1.0和P1.1输出口输出不同占空比的脉冲波形。
定时计数器若干时间(比如0.1ms)中断一次,就使P1.2或P1.3产生一个高电平或低电平。
占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。
一个周期加在电机两端的电压为脉冲高电压乘以占空比。
占空比越大,加在电机两端的电压越大,电机转动越快。
电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。
当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。
精确地讲,平均速度与占空比并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。
4.2小车循迹流程图
小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定5个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。
在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。
循迹流程图如图所示
4.3中断程序流程图
这里利用的是51单片机的T0定时计数器,从而让单片机P1口的P1.0、P1.1、P1.2和P1.3引脚输出占空比不同的方波,然后经驱动芯片放大后控制直流电机。
定时计数器若干时间(比如0.1ms)比如中断一次,就产生一个高电平或低电平。
中断程序流程图如图所示
P1.0
P1.1
P1.2
P1.3
状态
控制左电机
控制右电机
0
1
0
1
直走
0
1
1
0
右转
1
0
0
1
左转
1
1
1
1
停止
五.设计感想
本次单片机课程设计我是选择自主命题,自己画电路板,这样可以提高我的动手能力和实践应用能力。
我以前看到过别人的寻迹小车,感觉很好玩,很想自己也做一辆,所以我就选择做寻迹小车了。
刚开始做时,基本没有什么思路,所以我只好通过上网,去图书馆找资料来搜集信息,这让我对传感器知识有了很多了解。
我和我们班几个同学是自己做电路板,自己画电路图并自己画pcb板,由于我们是用单层板腐蚀制板,pcb图比较困难,要通过不同的修改,有的地方还要用跳线,所以通过这次课程设计,我的pcb画图能力得到很大提高。
板子制好后要用多用表测量有没有短路的电路,所以检查要十分细心。
然后打孔也十分困难,如果打孔时钻头稍微偏一点,就会是线路破坏,板子可能就没用了。
焊接元件也十分小心,由于没有阻焊层,电路很容易短路,连接完后一定要记得检查是否短路,不然会烧毁器件。
对于每一个硬件模块,我都要用程序去检查调试,以此来发现问题,然后在合起来一起测试。
所以模块化设计是一个很好的设计思路,可以使问题化解,把复杂的问题简单化。
其实寻迹小车的设计,硬件部分比较难,软件部分相对简单。
我是采用PWM技术来进行速度调试的,只要控制电压的占空比来调节速度的,所以只要通过开关的延时来调节。
通过查询探头的状态然后用switch语句来判断,可以实现不同速度的转换,从而控制左转,右转等运动。
从这次课程设计中我收获颇多。
虽然遇到了很多困难,但从解决困难中是自己的工程实践能力得到显著提高,自己分析解决问题的能力也得到提高。
书本上很多语句只有在实际应用中才能采能发现它的具体用法,在实践中才能真正检验自己的能力。
六.参考资料
[1]宋健,姜军生,赵文亮.基于单片机的直流电动机PWM调速系统[J].农机化研究,2006,
(1):
102-103.
[2]边春元李文涛江杰杜平等;C51单片机典型模块设计与应用;机械工业出版社;2008.4
[3]李华.MCS-51系列单片机实用接口技术[M].北京:
航空航天大学出版社,2003
[4]楼然苗.51单片机设计实例[M].北京:
航空航天大学出版社,2005.8
[5]王晶,翁显耀,梁业宗自动寻迹小车的传感器模块设计.武汉理工大学自动化学院 湖北武汉
[6]刘迎春.传感器原理设计与应用[M].长沙:
国防科技大学出版社,1992.
七.程序附件:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitz1=P1^0;
sbitz2=P1^1;
sbity1=P1^2;
sbity2=P1^3;
voiddelay(ucharspeed)
{
uintt;
t=65536-1000*speed;
TMOD=0x01;
TH0=t/256;
TL0=t%256;
EA=1;
ET0=1;
TR0=1;
while(TF0!
=1);
TF0=0;
TR0=0;
}
voidzuodianji(ucharx,uchary)
{
y1=0;
y2=1;
delay(x);
y1=1;
y2=1;
delay(y);
}
voidyoudianji(ucharx,uchary)
{
z1=0;
z2=1;
delay(x);
z1=1;
z2=1;
delay(y);
}
voidstop()
{
z1=1;
z2=1;
y1=1;
y2=1;
}
voidzhizou()
{
zuodianji(10,10);
youdianji(10,10);
}
voidxunji()
{
uchartemp,a;
uchari=50;
P0=0xff;
a=P0;
temp=(a&0x07);
switch(temp)
{
case0x05:
zhizou();break;
case0x00:
zhizou();break;
case0x04:
zuodianji(30,60);youdianji(60,30);break;
case0x06:
zuodianji(10,60);youdianji(60,10);break;
case0x01:
zuodianji(60,30);youdianji(30,60);break;
case0x03:
zuodianji(60,10);youdianji(10,60);break;
case0x07:
stop();break;
default:
break;
}
}
voidmain()
{
while
(1)
{
xunji();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车