速度检测实验报告.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆邮电大学综合实验报告
基于旋转编码器的转速测量实验
姓名:魏敏
学号: 2012213148
班级: 0881202
组号:
专业:电气工程与自动化
指导老师:陈俊华
自动化学院检测与控制实验中心
2014
一、实验目的
1. 了解编码器工作原理
2. 掌握编码器速度检测的方法;
二、实验原理
1. 编码器
编码式数字传感器是测量转轴角位移的最常用的检测元件,它具有很高的分辨率、测量精度和可靠性。
在一个圆形玻璃盘的边缘开有相等角距的缝隙,成为透明和不透明的码盘,在此码盘开缝的两边,分别安装光源及光电元件。当码盘随被测物体的工作轴转动时,每转过一个缝隙,光电元件所获得的光强就发生一次明暗的转换,光电转换电路就产生一定幅值和功率的电脉冲输出信号。将这一脉冲信号送加法计数器进行记数,则所计数码就等于码盘转过的缝隙数目,在缝隙之间的角度已知时,码盘(被测物体)所转过的角度也就确定了。
旋转编码器E6C2-CWZ6C参数表
编码参数
器
电源
电压
DC5V~24V
消耗
电流
70mA以下
分辨
率(脉冲/
旋转)
100、200、300、360、400、500、600、720、800、1000、
1024、1200、1500、1800、2000
输出
相
A 、B、Z相
输出
方式
NPN集电极开路输出
输出
容量
外加电压:DC30V以下;同步电流35mA以下;残留电压:
0.4V以下(同步电流35mA)
最高
响应频率
100kHz
2.测量方法:
2.1编码器鉴相电路设计:
2.3测量原理:
检测光电式旋转编码器与转速成正比的脉冲,然后计算转速,有三种数字测速方法:即M法、T法和M/T法。
光电式旋转编码器是转速或转角的检测元件,旋转编码器与电机相连,当电机转动时,带动码盘旋转,便发出转速或转角信号。如图所示。
数字测速装置原理图
M
法测速
测取 Tc 时间内旋转编码器输出的脉冲个数
,用以计算这段时间内的平均转速,称作M法测速,如图所示。
M 法测速的分辨率: 电机的转速为 : r/min 601
c
ZT M n =
M 法测速的分辨率:c
c c ZT ZT M ZT M Q 60
60)1(6011=-+=
M 法测速误差率:
%1001
%10060 )
1(60 60%1111max ⨯=⨯-=M ZT M ZT M ZT M c
c c δ
M 法测速适用于高速段 T 法测速
记录编码器两个相邻输出脉冲的间的高频脉冲个数M2,f0为高频脉冲频率,如图所示。
T 测速法
电机转速
r/min 60602
ZM f ZT n t
==
T 法测速的分辨率:
)
1(6060)1(60220
2
020-=--=
M ZM f ZM f M Z f Q
T法测速误差率:
%10011%10060
60 )1(60%22
02
20max ⨯-=⨯-=M ZM f ZM f M Z f δ
T 法测速适用于低速段。 M/T 法测速
把M 法和T 法结合起来,既检测T C 时间内旋转编码器输出的脉冲个数M 1,又检测同一时间间隔的高频时钟脉冲个数M 2,用来计算转速,称作M/T 法测速。采用M/T 法测速时,应保证高频时钟脉冲计数器与旋转编码器输出脉冲计数器同时开启与关闭以减小误差。
c
T M/T 法测速原理图
电机转速
r/min 60 602
11ZM f M ZT M n t ==
三、实验内容
1. 根据旋转编码器的工作原理,设计基于旋转编码器的速度检测原理图;
2. 利于实验室提供的单片机最小系统,设计位置检测、速度检测系统的应用电路;画出系统框图;
3. 编写相关程序, 实现对位置及转速的测量,并显示;
程序设计:
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; sbit wela=P2^7;
sbit q1=P3^4; bit bit_0;
uint count_N,count_N1;
uint count_n8;//计数值
uchar T_N=20;
void msplay(uchar,uchar);
void INT_0_Init();
void Timer0_Init();
void Motor_Init();
ucharcode
x1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x40,0x7c,0x39,0x5e,0x3e,0x48};
uchar code x2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay(uint z) //延时函数
{
uint x; for(x=z;x>0;x--) ;
}
void INT_0_Init()
{
IT0=1; EX0=1;
}
void Timer0_Init()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; ET0=1; TR0=1;
}
void main()
{
uchar k6,k5,k4,k3,k2,k1,k0;
INT_0_Init(); Timer0_Init();
while(1)
{
k0=0x0e; k1=0x0f;
if(!q1) k6=0;
else k6=10;