数字式光电转速计的设计论文.docx
《数字式光电转速计的设计论文.docx》由会员分享,可在线阅读,更多相关《数字式光电转速计的设计论文.docx(23页珍藏版)》请在冰豆网上搜索。
数字式光电转速计的设计论文
沈阳航空航天大学北方科技学院
课程设计说明书
课设题目数字式光电转速计的设计
专业测控技术与仪器
班级B141402
学号B********
学生姓名韩智
指导教师刘利秋
日期2015年1月16日
沈阳航空航天大学北方科技学院
课程设计任务书
课程设计题目数字式光电转速计的设计
教研室工学一部专业测控技术与仪器
班级11测控2学号B********姓名韩智
课程设计时间:
2014年12月29日至2015年1月16日
课程设计的内容及要求:
1.内容
设计采用单片机、光电传感器的数字式光电转速计。
实现转速的实时测量和LED显示,键盘设定转速上限值,并能给出转速超标报警提示。
2.技术指标
(1)测量范围:
0~50转/秒(r/s)
(2)LED显示:
××r/s。
(3)键盘设定上限阈值。
(4)能给出转速超标的声、光报警提示。
3.要求
(1)制定设计方案,并绘制出系统工作框图。
(2)绘制电路原理图,并将传感器、单片机实验箱、电源等硬件正确可靠地连接。
(3)用单片机实验箱进行程序设计与系统调试。
(4)撰写一篇6000字到8000字的课程设计报告。
指导教师刘利秋2014年12月28日
数字式光电转速计的设计
韩智沈阳航空航天大学北方科技学院测控技术与仪器
摘要:
本文设计了由单片机控制的数字式光电转速计,由光电传感器、单片机、键盘设置报警和LED数码显示组成,主要使用了、LED主要器件,主要解决方案是利用光电传感器、单片机学习板等设计一个由LED显示物体转速的转速计。
此转速计具有测量精度高,操作简单明了等优点。
在选择设计方案时,除了要考虑能否实现测速性能,还要考虑价格以及测量精度问题,通过对转速测量资料的查阅还有我们的构思和设计,从而经过分析和比较,从实现难度、对器材的熟悉程度、器件用量、价格等方面进行综合考虑,然后最终确定方案。
关键词:
光电传感器;单片机;AT89C51;LED液晶显示
0前言
在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。
目前国内外测量电机转速的方法有很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。
计数测速法又可分为机械式定时计数法和电子式定时计数法。
其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点。
加之激光光源、光栅、光学码盘、CCD器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。
而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。
这次设计的内容包含了多个方面,从脉冲信号的产生模块(即光电传感器部分)、脉冲信号的处理模块和转速的显示模块三个模块入手,全面锻炼了我们信号采集,处理和分析的工作能力。
本次用AT89C51单片机的两个定时器/计数器来实现转速测量,用单片机电子计数法测量频率有测量频率法和测周期法两种方法。
单片机具有体积小、价格低廉、可靠性高、开发较为容易。
测量频率主要是在单位定时时间里对被测信号脉冲进行计数。
定时和计数功能最终都是通过计数来实现的,若周期的事件源是周期固定的脉冲,则可以实现定时功能,否则只能实现计数功能。
1总体方案设计
针对本课题的设计任务,进行分析得到:
本次设计用光电传感器进行电压脉冲频率的测量,将电压频率转化为模拟电信号,再用单片机学习板够成一个能显示转速的测量仪器。
系统原理图如图1所示
图1系统原理图
整个电路的工作原理是用光电传感器将光电传感器产生的脉冲信号经单片机控制送入LED数码显示,用键盘设置上限阈值,超出设定值有报警电路LED灯和蜂鸣器报警。
光电传感器测量方案整个测量系统的组成框图如图2所示。
从图中可见,转子由一直流调速电机驱动,可实现大转速范围内的无级调速。
转速信号由光电传感器拾取,使用时应先在转子上做好光电标记,具体办法可以是:
将转子表面擦干净后用黑漆(或黑色胶布)全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头)固定在正对光电标记的某一适当距离处。
光电头采用低功耗高亮度LED,光源为高可靠性可见红光,无论黑夜还是白天,或是背景光强有大范围改变都不影响接收效果。
光电头包含有前置电路,输出0—5V的脉冲信号。
接到单片机89C51的相应管脚上,通过89C51内部定时/计时器T0、T1及相应的程序设计,组成一个数字式转速测量系统。
图2测量系统的组成框图
2硬件电路设计
本设计通过单片机对LED显示、键盘、报警等电路控制将由光电测得的电信号转化为脉冲频率显示,以达到测量转速的目的。
硬件原理框图如图3所示
图3硬件原理框图
2.1测量原理
本设计中采用直射式光电传感器测量转速和采集信号。
光电传感器采集信号,这种传感器是把旋转轴的转速变为相应频率的脉冲,然后用测量电路测出频率,由频率值就可知道所测转速值。
这种测量方法具有传感器结构简单、可靠、测量精度高的特点。
是目前常用的一种测量转速的方法。
从光源发出的光通过测速齿盘上的齿槽照射到光电元件上,使光电元件感光。
测速齿盘上有n个齿槽,当测速齿槽旋转一周,光敏元件就能感受与开孔数相等次数的光次数。
被测电机转动m-M转每秒,每转一周产生N个电脉冲信号,因此,传感器输出波形的频率的大小为:
m/nHz≤f≤M/nHz测速齿盘装在发射光源(红外线发光二极管)与接收光源的装置(红外线接收二极管)之间,红外线发光二极管(规格IR3401)负责发出光信号,红外线接收三极管(规格3DU12)负责接收发出的光信号,产生电信号,每转过一个齿,光的明暗变化经历了一个正弦周期,即产生了正弦脉冲电信号。
2.2放大电路
由于光电传感器测得的信号较小,所以用放大器放大,采用仪表放大器,电路图如5所示该电路中U1和U2两个运算放大器及其附属电路构成了差动放大电路,此电路有较强的共模抑制比,输入电阻较高。
图中放大电路放大倍数Au=-R3/R4(1+2R1/R7),其中调节R7阻值可以改变放大倍数。
图5放大电路
2.3单片机系统
单片机(single-chipmicrocomputer)是一块集成芯片,但不是一块实现某一个逻辑功能的芯片,而是在这块芯片当中,集成了一个计算机系统。
如中央处理器(CPU),存储器(ROM,RAM),I/O接口,定时器/计数器,中断系统等。
中央处理器是单片机的核心单元,他由运算器和控制器组成,他的主要功能是实现算术运算、逻辑运算、和控制。
51系列是基本型,包括8051,8751,8031,8951这四个机种区别,仅在于片内程序储存器。
8051为4KBROM,8751为4KBEPROM,8031片内无程序储存器,8951为4KBEPROM。
其他性能结构一样,有片内128BRAM,2个16位定时器/计数器,5个中断源。
其中,8031性价比较高,又易于开发,目前应用面广泛。
本系统采用CPU为89C51的单片微机,89C51本身带有8K的内存储器,可以在编程器上实现闪烁式的电擦写达几万次以上,比以往惯用8031CPU外加EPROM为核心的单片机系统在硬件上具有更加简单,方便等优点,而且完全兼容MCS51系列单片机的所有功能。
下面介绍89C51的主要管脚功能如下:
VCC(40):
电源+5V;VSS(20):
接地;XTAL1(19)和XTAL2(18):
外接石英晶体振荡器;P0口(32-39):
双向I/O口,既可作低8位既可作低8位地址和8位数据总线使用,也可作普通I/O口;P1口(1-8):
准双向通用I/O口;P2口(21-28):
既可作高8位地址总线,也可作普通I/O口;P3口(10-17):
多用途端口,既可作普通I/O口,也可按每位定义的第二功能操作;RST(9):
复位信号输入端;ALE/PROG:
地址锁存信号输出端;PSEN:
内部和外部程序存储器选择线。
如图5所示
图5最小系统
2.4LED数码管显示
显示设计采用LED七段数码管显示,本电路数码管为共阴极接法。
两个74HC573数字锁存器分别对数码管的段选码、位选码锁存,由LE接口控制。
单片机P2.6接口控制段选,P2.7接口控制位选。
LED数码管显示电路如图6
图6 LED数码管显示电路
2.5键盘和报警电路
键盘按键采用独立式按键。
当按键被按下或释放时,按键触电的弹性会产生一种抖动现象。
当按键按下时,触点不会迅速可靠地接通;当按键释放时,触电也不会立即断开,而是要经过一段时间的抖动才能稳定下来。
而本次设计采用软件延时法来消除键抖动现象。
如图7,为独立式按键,P3.2口用来设置报警上限值。
超过上限值P1.1口为低电平D1灯亮报警。
声光报警电路如图8所示
图7独立式键盘
图8声光报警电路
3软件设计
软件在现代仪器中起到了至关重要的作用,在智能仪器设计中硬件与软件是紧密结合起来的,软件的设计减少了硬件设备的使用,既降低了成本,又提高了效率,传统仪器的许多硬件设备已经被软件所取代,使现代仪器更加智能化。
软件的设计包括程序的总体设计和对程序的模块化设计。
按整体功能分为多个不同的模块,单独设计,编程,调试,然后将各个模块装配联调,组成完整的软件。
在本设计中软件起着决定性的作用,下面为本次课设总设计图和各部分软件设计。
总设计图如图9所示
图9主程序流程图
3.1显示程序设计
将转速测量值在LED上显示出来的程序。
如图10所示
图10显示程序设计框图
3.2键盘和报警程序设计
键盘报警程序由键盘程序(如图11所示)和报警程序(如图12),通过按键设置上限阈值,当测量值超过设定值启动报警程序进行声光报警。
图11按键字程序流程图
图12报警程序流程图
3.3频率测量
该部分程序是对方波输入信号进行处理,通过测周期法测出频率。
流程图见图13
图13频率测量模块流程图
4调试分析
由传感器发送来的采样信号通过接口电路传送到单片机里,单片机通过对信号的处理来控制光电传感器对转速的测量并且测量的数据通过LED显示出来。
本设计在硬件选配、软件编程方面都出现过问题。
(1)在调试过程中出现了LED液晶显示器所显示的数值过小,甚至是无法显示数值。
过修改脉冲信号的周期,将周期减小,使所显示的数值增大。
(2)测量值无变化,通过调节电位器解决了此问题。
(3)由于按键抖动是键盘显示的不稳定因素。
通过加入延时消抖程序解决了此问题。
5结论及进一步设想
根据实验结果,本次实验基本完成了设计要求,实现了转速在LED上的显示,并且能够通过按键调整设定报警上限阈值。
不过本次实验只是要求了在理想环境下的50转/秒上限阈值,并未结合到实地生产生活中进行应用,所以只能作为理论上的模拟。
更需要从多角度出发,可以进一步进行一个控制转速的设计,让反馈信号成为限制转速的输入信号,在很多有关安全生产运行的领域都会有所应用。
也可以加大环境要求,设计和完善如汽车轮机等测复杂环境下的高转速功能,让设计真正的融入到实地的生产生活中。
参考文献
[1]刘复华.单片机及其应用系统.北京:
清华大学出版社,1992
[2]楼然苗.51系列单片机设计实例.北京航空航天出版社,2003
[3]刘瑞新.单片机原理及应用教程.机械工业出版社,2003
[4]吴国经.单片机应用技术.中国电力出版社,2004
[5]马忠梅.单片机C语言应用程序设计.北京航空航天大学出版社,2003
[6]周润景.基于proteus的电路及单片机设计与仿真(第二版).北京航空航天大学出版社,2009
[7]谭浩强.C程序设计.清华大学出版社,2005
[8]付小宁,孔英会.C51基础与应用实例.电子工业出版社,2009
[9]丁峰,郝立果,卢胜利.单片机原理与应用技术实践.机械工业出版社.2009
[10]冯建华,赵亮.单片机应用系统设计与产品开发.人民邮电出版社.2004
课设体会
本次课程设计已经结束,在此过程中,从构思到设计再到实验,付出了不少的努力,学到了很多知识。
尤其是在硬件设计和软件编程方面,我下了不少的功夫。
我的实验目的是要用光电传感器和单片机实现测量转速的功能,这样,我在信号处理和数字显示的方面花了不少心思,平日里学到的知识加上这一个多星期的努力,我有机会亲自动手动脑,自己设计而且顺利完成一项任务,理论与实践相结合,我终于实现了预定目标。
本次课程设计不仅用到了近期学的智能仪器单片机方面的知识,还用到了之前掌握的C语言等计算机的应用技术,并且对之前不太熟练掌握keil也有了更加深入的了解和练习。
可谓受益匪浅。
这是一次综合知识的锻炼,我在进行简单课程的同时,也在思考着对我所设计的产品的进一步开发,让设计适用于社会发展,适用于人们的生活。
虽然我在做课程设计的过程中遇到了很多的挫折,但是通过自己脚踏实地的学习,我还是收获很多知识。
作为电类专业的测控学生,单片机是我们再熟悉不过的电子器件了。
简单的单片机就有很多,加之数码管,A/D转换器,锁存器等各种元器件,以及它们的原理用途等,这样我们要掌握的东西就非常非常多。
纸上得来终觉浅,绝知此事要躬行。
我们既然有这个机会,就要把它做的最好。
通过查阅相关书籍和其他资料,请教老师,以及与同学的讨论,我都能学到很多知识。
把大家的思路作为参考和借鉴,用自己的想法进行拟合,我相信通过自己不断的完善,我会做得越来越好,并且越来越有自信。
最后,向在课设期间给予我帮助关心和悉心教导我的老师、同学衷心的说声谢谢。
[2014年1月10日完成]
附录1电路原理图
附录2程序清单
#include
#defineuintunsignedint
#defineucharunsignedchar
#include
#include
#include
ucharTab[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x00,
0x77,0x6d};
uchardispcount;
ucharcount;
uchartimecount;
ucharnum;
bitflag;//将flag定义为位变量
bitflag1;//用于显示界面的切换变量
floata1;
inta2;
uintshi;
uintge;
uchartemp=50;
sbitled=P1^1;//红灯光报警
sbitbeep=P1^2;//蜂鸣器声报警
sbitkey1=P3^1;//设置键
sbitkey2=P3^2;//加1
sbitkey3=P3^3;//减1
voiddelay_ms(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidkey()
{
if(key1==0)//进入设置
{
delay_ms(10);
if(key1==0)
{
num++;
num=num%2;
switch(num)
{
case0:
flag1=0;break;//显示转速界面
case1:
flag1=1;break;//调整转速界面
}
}
while(!
key1);
}
if(flag==1)
{
if(key2==0)//进入设置
{
delay_ms(10);
if(key2==0)
{
temp++;
if(temp>50)
{
temp=0;
}
}
while(!
key2);
}
if(key3==0)//进入设置
{
delay_ms(10);
if(key3==0)
{
temp--;
if(temp<0)
{
temp=50;
}
}
while(!
key3);
}
}
}
voiddisplay1()//调整转速界面
{
TR0=0;
beep=0;
led=1;
shi=temp/10;
ge=temp%10;
switch(dispcount)//4位动态扫描显示//
{
case0:
P2=0xFF;P0=Tab[shi];P2=0xfe;break;//1
case1:
P2=0xFF;P0=Tab[ge];P2=0xfd;break;//2
case2:
P2=0xFF;P0=Tab[11];P2=0xfb;break;//3
case3:
P2=0xFF;P0=Tab[12];P2=0xf7;break;//4
}
}
voiddisplay()//显示转速界面
{
if(flag==1)
{
flag=0;//位变量清0//
a1=count*65536+TH0*256+TL0;//计算脉冲个数//
a2=(int)a1;
shi=a2/10;
ge=a2%10;
timecount=0;//重新使T0计数//
count=0;
TH0=0;
TL0=0;
TR0=1;
}
switch(dispcount)//4位动态扫描显示//
{
case0:
P2=0xFF;P0=Tab[shi];P2=0xfe;break;//1
case1:
P2=0xFF;P0=Tab[ge];P2=0xfd;break;//2
case2:
P2=0xFF;P0=Tab[11];P2=0xfb;break;//3
case3:
P2=0xFF;P0=Tab[12];P2=0xf7;break;//4
}
if(a2>temp)
{
beep=1;
led=0;
}
else
{
beep=0;
led=1;
}
}
voidmain(void)
{
IP=0x02;//将T0定义为高优先级,使CPU优先响应其中断//
count=0;//计数脉冲赋初值0//
TMOD=0x15;//给TOMD送方式控制字,使T0为计数方式,T1为定时方式//
TH0=0;
TL0=0;
TH1=0XF0;
TL1=0X60;
TR1=1;
ET1=1;
TR0=1;
ET0=1;
EA=1;
while
(1)
{
key();
if(flag1==1)
{
display1();
}
else
display();
}
}
voidto(void)interrupt1using0//中断服务函数说明//
{
count++;//溢出的次数//
}
voidt1(void)interrupt3using1//中断服务函数说明//
{
TH1=0XF0;//重新给T1填装定时初值//
TL1=0X60;
timecount++;
dispcount++;
if(dispcount==4)
{
dispcount=0;//6位扫描完后清0//
}
if(timecount==250)
{
TR0=0;//时间到1秒关掉计数器//
timecount=0;
flag=1;//位变量置1//
}
}