基于光电传感器的转速测量系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
题目基于光电传感器的转速测量系统设计课程名称电力电子技术课程设计
院(系、部、中心)
专业电气工程及其自动化
班级
学生姓名
学号240102224
设计时间2013. 6.3 ~ 6.14
设计地点工程实践中心8—315
指导教师
课程设计任务书
课程名称检测技术与系统课程设计院(系、部、中心)电力工程学院
专业电气工程及其自动化班级电气101
起止日期13.6.3~6.14
指导教师许大宇
1、李现明,吴皓编著.自动检测技术.北京:机械工业出版社,2009
2、徐仁贵.单片微型计算机应用技术.北京:机械工业出版社.2001
3、陈爱弟.Protel99实用培训教程.北京:人民邮电出版社.2000
5.课程设计进度安排
起止日期工作内容
13年6月4日布置设计任务,熟悉课题,查找资料;
13年6月5日结合测控对象,选择合适的传感器,理解传感器性能;
13年6月6日设计传感器测量电路,选择合适的单片机,设计其外围电路;
13年6月7日设计电路参数,有条件情况下,在实验室进行实验,进一步理解测量电路输入输出关系;
13年6月8日继续设计论证电路参数,完善系统设计方案;
13年6月9日查找资料,理解系统各部分工作原理;
13年6月10日理清系统说明要点,着手设计说明书的书写;
13年6月11日书写设计说明书,充分理解系统每一部分作用;
13年6月12日完善设计说明书,准备设计答辩。
13年6月14日设计答辩。
6.成绩考核办法
目录
二、课程设计正文
1、光电传感器的应用概述
2、系统工作原理及方案
(1)系统框图
(2)光电传感器原理
(3)转速测量原理
3、系统硬件电路设计
(1)光电转换及信号调理电路
(2)脉冲产生电路设计
4、系统软件电路设计
(1)AT89C52基本性能及最小系统
(2)系统软件程序设计
(3)系统仿真结果
5、课程设计总结
6、主要参考文献
7、附录
1.概述
转速测量系统的发展背景
随着超大规模集成电路技术提高,尤其是单片机应用技术以其功能强大,价格低廉的显著特点,使全数字化测量转速系统得以广泛应用。
由于单片机在测量转速方面具有体积小、性能强、成本低的特点,越来越受到企业用户的青睐。
本设计课题的目的和意义
在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。
要测速,首先要解决是采样问题。
本课程设计使用单片机AT89C52采样信号。
因此转速的测试具有重要的意义。
2.系统工作原理及方案
1.系统框图
系统由传感器检测单元、信号调理放大电路,单片机AT89C52、LED显示模块、系统软件组成。
其中信号调理电路包含信号放大、波形变换和波形整形。
对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机匹配的TTL信号;通过对单片机的编程设置可使内部定时器T0对输入脉冲进行计数,这样就能精确地算出加到T0引脚的单位时间内检测到的脉冲数;系统的原理框图如下所示。
2.光电传感器的原理
检测原理
光电传感器是利用光电转换原理,来检测机械量转速的传感元件,将光源发出的光调制成与转速相关的光信号,再转换成电信号,通过检测信号频率或状态图形来测量转速。
光电光转速传感器主要由光源,调制盘,光电转换元件三个部分组成。
电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样。
光电传感器一般可以分为两大类:直射式、反射式。
基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。
脉冲发生源的硬件结构图如图所示。
图1脉冲发生源硬件结构图(左为正视图,右为侧视图)
直射式光电转速计的工作原理如图1和图2,被测转轴上装有调制盘,调制盘是带孔或者带齿的圆盘,带孔的如图1,带齿的如图3,调制盘的一边放置光源,另一边放置光电元件。
调制盘随轴转动,当光线通过小孔或齿缝时,光电元件就发生一个电脉冲。
转轴连续转动,光电元件就输出一列与转速及调制盘上的孔(或齿)数成正比。
电脉冲输入测量电路后经放大整形,再送入频率计技术现实。
图2光电传感器的原理图图3遮光叶片
转速测量原理
一般的转速长期测量系统是预先在轴上安装一个有60 齿的测速齿盘,当测速齿槽旋转一周,光敏元件就能感受与开孔数相等次数的光次数,即每转一周产生60个电脉冲信号。
临时性转速测量系统,多采用光电传感器,从转轴上预先粘贴的一个标志上获得一转一个转速脉冲,随后利用电子倍频器和测频方法实现转速测量。
不论长期或临时转速测量,都可以在微处理器的参与下,通过测量转轴上预留的一转一齿的鉴相信号或光电信号的周期,换算出转轴的频率或转速。
即通过速度传感器,将转速信号变为电脉冲,利用微机在单位时间内对脉冲进行计数,再经过软件计算获得转速数据。
即:
n=N/ (mT)
◆n ———转速、单位:转/ 分钟;
◆N ———采样时间内所计脉冲个数;
◆T———采样时间、单位:分钟;
◆m ———每旋转一周所产生的脉冲个数(通常指测速码盘的齿数) 。
通常m=60,那么1 秒钟内脉冲个数N就是转速n,即:
n=N/ (mT) =N/60×1/60=N
3.系统硬件电路的设计
系统硬件部分包含输入模块、显示模块、控制模块、测速模块等。
在硬件搭建前,先通过Proteus Pro 7.5进行硬件仿真实现。
光电转换及信号调理设计
由于系统需要将光信号转换为电信号,因而需要使用光电传感器并设计相应的信号调理电路,以得到符合要求的脉冲信号,送给单片机AT89C52进行计数,同时得到计数的时间,由单片机进行相关计算以得到电动机转速。
传感器将电机的转速信号转变成了电脉
冲信号,该信号经过LM358集成运放整形驱动,送到单片机进行脉冲计数,从而测出电动机转速。
介绍一下LM358,:LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用。
光电转换部分与单片机的连接框图如图所示
脉冲产生电路设计
由于proteus不能仿真光电传感器,则用一个方波代替光电传感器的将光信号转换成电信号的输出。
如图发现,方波电压的幅值已经被放大,将这个信号输入单片机中作脉冲计数。
4.系统软件电路设计
AT89C52基本性能
单片机我们选用AT89C52(引脚图如下)AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常
规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52引脚图
单片机最小系统
单片机最小系统包括时钟电路和复位电路。
单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。
单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。
内部时钟方式的原理电路如下图所示。
在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。
外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。
复位电路是利用电容充电来实现复位。
在电源接通瞬间,RST引脚上的电位是高电平(Vcc),电源接通后对电容进行快速充电,随着充电的进行,RST引脚上的电位也会逐渐下降为低电平。
最小系统如图所示
显示电路设计
led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
led数码管常用段数一般为7段有的另加一个小数点,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
共阴和共阳极数码管,它们的发光原理是一样的,只是它们的电源极性不同而已。
内部电路如下:
点亮LED显示器有两种方式:一是静态显示,二是动态显示。
动态显示,就一位一位地轮流点亮各位显示器(扫描),对于每一位显示器来说,每隔一段时间点亮
一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
调整电流和时间参数,可实现亮度较高较稳定的显示。
本文采用4位LED动态显示电路如图
图6 4位动态LED显示电路
根据设计的复位、晶振、显示电路电路,我们做了一张总电路图。
程序设计方案
本系统采用89C52中T0定时器和T1计数器配合使用对转速脉冲定时计数。
计数器T1工作于计数状态对外部脉冲进行计数;TO工作为定时器方式每
次定时50ms,采用60次中断,即在计数器T1在3秒钟内对外部脉冲进行计数,
然后
根据3秒钟内的计数值推算出。
(1)定时/计数器的初始化
定时/计数器的方式控制字TMOD,
TMOD是一个不可按位寻址的特殊功能
寄存器,其高四位专供T1作计数用,低
四位供T0作定时用。
(1)定时/计数器的启动方式为
GATE=0,用软件设置使
TOCN中的运行控制位TR0和
TR1为1,就可以启动T0和T1,
称为软启动。
(2)C/T: 定时/计数器方式选择位,C/T =0时作定时器用。
C/T=1作计数器用。
(3)M1M0工作方式选择位,这里我们选M1M0=01,方式一,作16位定时/计数器用。
综上所述,我们给TMOD应赋给二进制的01010001B,是十六进制的0x51。
TMOD=0x51.
TMOD寄存器如下表:
T1T0
对定时器T0与计数器T1的初始化程序如下
timer_init() //初始化子程序
{EA=1; //开中断总允许
ET0=1; //开定时器T0中断允许
ET1=1; //开计数器T1中断允许
TMOD=0X51; //TMOD=01010001B
TH0=(65535-50000)/256; //初值的高位。
定时器一个机器周期加1,一次中断为50ms 对应50000个机器周期(振荡频率为12MHZ)
TL0=(65535-50000)%256; //初值的低位
TH1=0; //T1作计数器用,初值定为0x00
TL1=0;
TR0=1; //软启动方式
TR1=1;
}
(2)定时器中断程序
中断部分要对单片机产生的中断次数计数,定时器每次触发中断需要的时间为50ms,我们需要单片机在3秒钟内对脉冲计数,所以要对中断计数60次。
中断程序要给TH0,TL0赋初
值,同时要开启定时器T0。
定时器中断程序
void timer0() interrupt 1
{n++;
TR0=0; //T0停止工作
TR1=0;
TH0=(65535-50000)/256; //赋初值
TL0=(65535-50000)%256;
if(n==60) //若n自加到60则停止计数,一次中断50ms则60次中断就为3s { mm=0;
mm|=TH1;
mm=(mm<<8)|TL1;
TH1=0; //赋初值0
TL1=0;
n=0; //n从头开始自加
}
TR0=1; //T0开始工作
TR1=1;
}
显示部分程序
本系统采用动态数码管显示,所以程序如下:
xian_shi()
{uchar qian,bei,shi,ge; //定义个十百千四个无符号整形参数
uint jj;
jj=mm;
jj=jj/3;
qian=jj/1000; //将个十百千位对应的数分别找出来
bei=jj%1000/100;
shi=jj%100/10;
ge=jj%10;
P2=0x10; //数码管的段选,如接线图P2.4=1,
则左起第一个数码管显示
P0=table[qian]; //将千位的值所对应的十六进制码点来亮该数码管的中的八个小二极管delay(1); //作延时
P2=0x20; //段选,则左起第二个数码管显示
P0=table[bei]; //将百位的值所对应的十六进制码来点亮该数码管的中的八个小二极管delay(1); //延时
P2=0x40;
P0=table[shi]; //十位
delay(1);
P2=0x80;
P0=table[ge]; //个位
delay(1);
}
5.仿真及结果
我们这里给单片机P3.5外接一个脉冲信号,来模拟关电开关给单片机的信号。
仿真时,设置脉冲频率为700Hz,如图所示,显示电路的LED数码管上显示700。
设置脉冲频率为3000Hz,如上图所示,显示电路的LED数码管上显示3000。
6.参考文献
1.李现明,吴皓编著.自动检测技术.北京:机械工业出版社,2009
2.徐仁贵.单片微型计算机应用技术.北京:机械工业出版社.2001
3. 陈爱弟.Protel99实用培训教程.北京:人民邮电出版社.2001
7.附录
总的电路图设计
总系统程序
单片机总体程序如下:
#include<reg51.h>
#define uchar unsigned char//宏定义
#define uint unsigned int
uint mm=0; //定义参变量
uchar n;
uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//定义编码表,给数码管复制
delay(uint m) //子程序调用,作延时用
{uint i,j;
for(i=m;i>0;i--)//i每加1,j经过60次自加
for(j=60;j>0;j--);
}
xian_shi()
{uchar qian,bei,shi,ge; //定义个十百千四个无符号整形参数
uint jj;
jj=mm;
jj=jj/3;
qian=jj/1000; //将个十百千位对应的数分别找出来
bei=jj%1000/100;
shi=jj%100/10;
ge=jj%10;
P2=0x10; //数码管的段选,如接线图中,P2.4=1,则左起第一个数码管显示
P0=table[qian]; //将千位的值所对应的十六进制码点来亮该数码管的中的八个小二极管
delay(1); //作延时
P2=0x20; //段选,P2.5=1则左起第二个数码管显示
P0=table[bei]; //将百位的值所对应的十六进制码来点亮该数码管的中的八个小二极管
delay(1); //作延时
P2=0x40;
P0=table[shi]; //显示十位的数
delay(1);
P2=0x80;
P0=table[ge]; //显示个位的数
delay(1);
}
timer_init() //中断初始化子程序
{EA=1; //开中断总允许
ET0=1; //开定时器T0中断允许
ET1=1; //开计数器T1中断允许
TMOD=0X51; //TMOD=01010001B
TH0=(65535-50000)/256; //初值的高位。
定时器一个机器周期加1,一次中断为50ms 对应50000个机器周期(振荡频率为12MHZ)
TL0=(65535-50000)%256; //初值的低位
TH1=0; //T1作计数器用,初值定为0x00
TL1=0;
TR0=1; //软启动方式
TR1=1;
}
main()//主函数
{
timer_init();//中断初始化
P0=0;
while(1) //永远循环显示和延时
{
xian_shi();
delay(2);
}
}
void timer0() interrupt 1//“1”表示定时器中断0 {
n++;
TR0=0;TR1=0; //T0停止工作
TH0=(65535-50000)/256; //赋初值
TL0=(65535-50000)%256;
if(n==60) //若n自加到60则停止计数,一次中断50ms则60次中断就为3s { mm=0;
mm|=TH1;
mm=(mm<<8)|TL1;
TH1=0; //赋初值0
TL1=0;
n=0; //n从头开始自加
}
TR0=1; //T0开始工作
TR1=1;
}
void timer1() interrupt 3 //“3”表示计数器中断
{TR1=0; //T1停止计数
TR0=0;
mm=0;
}
体会
这次自动检测技术课程设计我们做了光电传感器测速,其中涉及到了光电传感器的应用、单片机的使用以及LED数码管的应用,首先我学会了protues的使用方法,依据查找的相关资料画出了相应的电路仿真图;然后我学会看怎么使用keil软件编程,将输入好的程序生成hex文件,调用到protues中的单片机中,然而我发现脉冲信号经过放大器接到
单片机上会出现误差,相比脉冲经过放大电路后的波形的幅值小很多倍,虽然没能将脉冲放大电路与单片机连接仿真成功,但我还是收益很多。