基于51单片机的红外反射式光电传感器测速机的简易方案设计书Word文档下载推荐.docx
《基于51单片机的红外反射式光电传感器测速机的简易方案设计书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于51单片机的红外反射式光电传感器测速机的简易方案设计书Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
(1)LM339工作原理及管脚图:
LM339类似于增益不可调的运算放大器。
每个比较器有两个输入端和一个输出端。
两个输入端中的一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。
当用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压,当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。
当“-”端电压高于“+”端时,输出管饱和,相当于输出端接高电位。
两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。
LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻(称为上拉电阻,选3-15K)。
选不同阻值的上拉电阻会影响输出端高电位的值。
因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。
下图(1a)给出了一个LM399的基本单限比较器。
输入信号Uin为待比较电压,把它加到同相输入端,在反相输入端接一个参考电压(门限电平)Ur。
当输入电压Uin>
Ur时,输出为高电平UOH。
图(1b)为其传输特性。
图(1c)为LM339的管脚图。
(c)
图
(1)LM339工作原理图及管脚图
(2)整体连线图:
如下图
(2)所示:
图
(2)比较型光电传感器整体电路图
在上图中,LED灯相当于一个红外线发射管,JP1是红外线接收管,接收光强在上面转换成电流,在R上成为电压信号。
当光线照射到白色面上时,光线反射强烈,光线照射到黑色面上时,光线反射较弱。
因此当光照在不同颜色面上时,阻值会发生明显的变化。
将阻值的变化值与RA1的标准值进行比较,就可以从LM339输出逻辑电平给单片机。
(二)单片机部分
(1)单片机外部连线图:
如下图(3)所示
图(3)单片机连线图
在上接线图中,可在数码管与单片机之间接上一个分压电阻,起到保护作用。
单片机型号选89C51或89C52都行。
在实验板上把图
(1)中的2管脚(逻辑电平输出管脚)和图
(2)中的12管脚(中断输入管脚)连接,即可构成整个测速系统。
(2)单片机内部主程序流程图
主程序是控制单片机系统按照预定的操作方式运转,它完成人机对话和各种控制功能,是单片机系统程序的框架。
主程序的主要任务是完成系统自检、初始化、处理键盘命令等功能。
在本实验中,未涉及到键盘命令。
本系统的主程序流程如下图(4)所示。
图(4)主程序流程图图(5)外部中断0中断程序流程图
在该测速系统的程序中,主程序执行的过程中共执行了3个中断程序,即外部中断0中断、外部脉冲计数0中断和定时器1中断。
图(5)所示为外部中断0中断程序流程图。
外部中断0中断程序主要用于测速起始。
当测速开始时,执行外部中断0中断,外部脉冲计数加1,并判断T0、T1是否开启,若没有开启则开启,再判断1S定时到了没有,若1S定时到计算转速,并关INT0、T0、T1软件清零。
图(6)为T0中断程序流程图。
T0对内部时钟脉冲计数,T0为8位定时器,1S定时的内部时钟脉冲超过了T0上限,故采用软件延时计数。
图(7)为T1中断程序流程图,T1定时1S,当一秒定时到,则置位标志位。
图(6)T0中断程序流程图图(7)T1中断程序流程图
三:
测速原理
首先,选一小型直流电机,在其轴上固定一张圆形硬纸片,以此来代替被测物。
其次把此圆形纸片平均分成6等分,并把其中的三块涂黑(具体见实物)。
再次,用光电管正对圆形纸片。
最后,启动整个系统就可以进行测速了。
因为当红外线照到面黑色时,反射光很弱,接收端检测到的光线可以忽略,当照到白色面时,反射光强烈,发射端发射的红外线几乎被接收端全部接收,因此,检测到的信号经过比较电路输出后,会给单片机输入高低两种电平。
所以,在编程中,假定在1S时间内共检测到n个低电平信号,那么此电机的转速为
。
四:
整体电路图及实物图
见附一图所示。
五:
所需器件
名称
型号
个数
价格
51单片机
STC89C51RC
1件
9元
光电管
1套
5元
四电压比较器
LM339
1.5元
四位数码显示管
12管脚
1/4电阻
0.47K,1K,3.3K,10K,
各10个(备用)
0.8元
电位器
103(10K)
2个
1元
瓷片电容
22PF,104(100nF)
2元
万用版
1块
3元
电池盒
1个
PIC座
20,40脚
(2+1)个
排针
40PIN
2排
晶振
12M
复位开关
0.1元
LED灯
5个
0.5元
共计:
31.9元
六:
总结
本设计的光电传感器测速机能够快速检测到电机横截面上的黑白相间的面,并通过单片机编写测速程序,用数码管显示。
但本设计的测速系统的整体性能只能满足一般小型电机和一些要求不高的测速,并且在其测速时,还需要在被测物上安装一个黑白相间的圆盘,这对某些被测物体来说是不太好实现的,即其是存在一定的局限性的。
除此之外,其精确度也不尽完美。
但整体来说,此测速系统还是具有可行性的。
当我们需要知道某电机的转速而又缺少测速装置时,就可以用此套系统来进行测速。
它的简单性,方便性和快捷性也是某些测速装置不可比拟的。
至于其缺点,由于设计者水平目前有限,暂不能完美解决,只待以后对此方面有较多理解后在解决,同时也希望对此精通的师生给予指点,从而进行改进测速方法,提高整个系统的测速性能。
附一:
整体电路图
附二:
程序源代码
#include<
reg52.h>
#defineuintunsignedint
uinttemp,qian,bai,shi,ge,aa,n。
sbitdula=P0。
sbitwela=P1。
sbitzd=P3^2。
uintcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。
voiddisplay(uintqian,uintbai,uintshi,uintge)。
voiddelay(uintz)。
voidinit()。
voidmain()
{
EA=1。
//开总中断
EX0=1。
//开外部中断0
init()。
//初始化子程序
while
(1)
{
display(qian,bai,shi,ge)。
}
}
voiddelay(uintz)
{
uintx,y。
for(x=z。
x>
0。
x--)
for(y=110。
y>
y--)。
voiddisplay(uintqian,uintbai,uintshi,uintge)
P0=table[qian]。
P1=0xf7。
delay
(1)。
P0=table[bai]。
P1=0xfb。
P0=table[shi]。
P1=0xfd。
P0=table[ge]。
P1=0xfe。
voidexter0()interrupt0
n++。
while(zd==0)。
voidinit()
wela=0。
dula=0。
temp=0。
TMOD=0x01。
TCON|=0X04。
TH0=(65536-50000)/256。
TL0=(65536-50000)%256。
ET0=1。
TR0=1。
timer0()interrupt1
aa++。
if(aa==20)
aa=0。
temp=20*n。
n=0。
qian=temp/1000。
bai=temp%1000/100。
shi=temp%100/10。
ge=temp%10。
}