基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx

上传人:b****4 文档编号:16570842 上传时间:2022-11-24 格式:DOCX 页数:10 大小:67.80KB
下载 相关 举报
基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx_第1页
第1页 / 共10页
基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx_第2页
第2页 / 共10页
基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx_第3页
第3页 / 共10页
基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx_第4页
第4页 / 共10页
基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx

《基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

基于编码器电机测量转速及转角课程设计Word文档下载推荐.docx

处理器——————89C52

显示设备———————LCM1602

编码器————————欧姆龙H38S6-2000-3-2-24

电机——————————GM12F-N20VA08260/298-R

要求:

利用C语言设计,基于单片机实现简易的电机转速和转角测量。

当电机转动时能够实时的显示转角和转速,转角要求有正负(以初始位置为0度)。

当电机停止转动时,用手拧动编码器的轴也可实现转角测量。

日程安排:

12月19---12月20,查阅资料,确定课设题目

12月23---12月26,进行电机测转速的编程及仿真工作。

12月27---12月31,进行电机测角度的编程及仿真工作。

1月2,老师进行检查

1月3----1月7日,进行最后的补充与修改及写报告

摘要。

3

一、总体方案。

4

1.方案一。

2.方案二。

3.方案选择。

二、编码器介绍。

5

1.编码器原理。

2.编码器选型。

三、编码器测量电机转速。

6

1.原理介绍。

2.程序框图。

3.编程实现。

4.改错心得。

7

四、编码器测量电机转角。

9

10

五、实验检测。

11

1.实验描述。

2.实验结果。

六、总结。

摘要

本文介绍了基于89C52单片机的测量电机转速和转角的系统,概述了编码器的工作原理和应用,详细阐述了测速及测转角的基本原理、实现的步骤和软硬件的设计,采用C语言编程,用1602液晶屏显示数据,结果表明该方法具有简单、精度高、稳定性好的优点。

关键词:

89C52单片机测速测转角编码器电机

一、整体方案

1.方案一

采用红外光电对管数据采集电路,红外对管根据电机转动时开口遮光片的位置,每转一圈输送几个低脉冲实现转速及转角的测量。

2.方案二

采用编码器采集信号,将编码器的轴与电机的轴通过联轴器固定,电机带动编码器转动,同时想单片机发出信号,经过单片机处理测出转速及转角。

3.方案选择

采用编码器测量系统具有低惯性、低噪声、高分辨率和高精度的优点,光栅的成功应用使编码器在检测和控制领域得到了广泛的应用。

选择编码器做传感器使得系统拥有测量准确度高、采样速度快、测量范围宽和测量精度与被测速度无关等优点。

所以选择方案二。

二、编码器介绍

1.编码器原理

编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。

编码器把角位移或直线位移转换成电信号。

按照读出方式编码器可以分为接触式和非接触式两种;

按照工作原理编码器可分为增量式和绝对式两类。

增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。

绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。

现在编码器的厂家生产的系列都很全,一般都是专用的,如电梯专用型编码器、机床专用编码器、伺服电机专用型编码器等,并且编码器都是智能型的,有各种并行接口可以与其它设备通讯。

编码器由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差,将C、D信号反向,叠加在A、B两相上,可增强稳定信号;

另每转输出一个Z相脉冲以代表零位参考位。

优点:

体积小,精密,本身分辨度可以很高,无接触无磨损;

同一品种既可检测角度位移,又可在机械转换装置帮助下检测直线位移;

多圈光电绝对编码器可以检测相当长量程的直线位移(如25位多圈)。

寿命长,安装随意,接口形式丰富,价格合理。

成熟技术,多年前已在国内外得到广泛应用。

缺点:

精密但对户外及恶劣环境下使用提出较高的保护要求;

量测直线位移需依赖机械装置转换,需消除机械间隙带来的误差;

检测轨道运行物体难以克服滑差。

2.编码器选型

选型的三个要素是机械安装尺寸,分辨率和电气接口。

我选用了欧姆龙H38S6-2000-3-2-24这款编码器。

外径38mm,止口20mm,轴径6mm,电缆侧出,标准配线2米。

尺寸符合标准。

选用2000转的高分辨率,完全可以测角度,单片机也可计算。

集电极开路是常用的一般电路选择。

图2.2

三、采用编码器测量电机转速

1.原理介绍

利用编码器的Z轴每当转一圈会发一个脉冲,将Z轴信号接到外部中断0引脚,每当有下降沿信号则使变量加1。

同时采用定时器中断,每隔一秒查看变量增加的个数,即可算出每秒转过的圈数。

再把这个转速送给显示函数,用数码管显示出来。

2.程序框图否

是否

图3.2

3.编程实现

首先要在初始化函数里打开定时器0中断和外部0中断,并且给定时器设定初始值,由于目标为定时1秒大于65535,可以实行定时50ms,然后在定时器中断服务程序里设一个变量,每进一次中断变量加一,加到20次,即时间过1秒后,查看变量y,把y的值赋予给转速v,并且使y=0,意义为每秒重新计数。

外部中断0要设置成下降沿中断,服务程序为y++,即每转一圈变量加一。

voidquanshu()interrupt0//外部中断0计C相脉冲数

{

y++;

}

voidzhuansu()interrupt1//定时器0中断每隔1秒查一次转过的圈数

{

TR0=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

v=y;

y=0;

count=0;

}

TR0=1;

4.改错及心得

进行测量时出现误差,并且转速值不稳定。

原因有两个:

第一个是使用过多的外部中断占用了CPU过多的时间,使一些信号采集不准确,导致误差。

第二个是Z轴信号本身的缺陷,只有到一个固定位置时才会发一个脉冲信号,使得无法实时的计算速度,即如果1s内没转够1圈,无论速度多快或多慢,系统就认为速度是零。

经过重新思考,决定不用Z轴做采集信号,而是用A轴。

这样做既减少了一个中断处理,又避免了误差,大大提高了系统的稳定性与实时性。

根据这样的思路更改程序框图如下:

图3.4

当然程序也要做相应的改变。

首先把外部中断0全部关断,在外部中断1中加一句话y++;

,由于转速的定义为每秒转的圈数,我每0.5秒查看一次y的数值,转换公式为v=y/(2000*0.5),即v=y*0.001,因为显示方便,这里使v=y*0.01,然后把个位赋值给小数点后一位,把十位赋值给个位就可以正确显示了,更改后的程序如下:

voidjiaodu()interrupt2//外部中断1计A相脉冲数

voidzhuansu()interrupt1//定时器0中断每隔0.5秒查一次A转过的脉冲数

if(count==10)

v=y*0.01;

//转速换算

经过如此的更改就解决了之前的问题,显示非常稳定,误差也减小了很多。

再给51系列单片机编程时应尽量的减少中断的使用,尤其是输入信号频率高,要求精度高,硬件设备质量低的情况。

最好是根据有用信号,即用最少的输入信号得到最多的有用信息,通过编程减少外部设备,这样做不仅能够有效的减少误差,还可以节约资源。

四、采用编码器测量电机转角

1.原理介绍

利用编码器的A轴和B轴来判断正反转和角度。

这里的正反是以开机时电机的初始位置为标准的。

正反转的判别方法:

因为A和B相差90度,假设正转时A超前B90度,则反转时B超前A90度,利用这一特点可以判断正反。

把A接到外部中断1,B接到P0^0口,当进入中断时,判断B轴是高电平还是低电平就可以判断正反了。

角度的计算方法:

电机转一圈是360度,编码器转一圈发出2000个矩形波,有这个关系就可以计算角度,即角度=计数个数*360、2000.

2.程序框图

是否

图4.2

3.编程实现

首先在初始化函数里要打开外部中断1,并且设置成下降沿触发。

但A轴有信号来临时,进入到外部中断1服务程序,先判断P0^0口的高低电平,若为高电平,则计数变量加一,反之,计数变量减一。

如果计数变量X大于2000或小于-2000,则使X等于0.这样做减轻了变换角度的计算量,使系统认为编码器一直在正一周或负一周之内活动。

接下来就可以将计数变量通过公式转换成角度显示了。

显示正负角则可以判断计数变量的正负来确定。

if(d1==1)

x++;

else

x--;

if((x>

2000)||(x<

(-2000)))

x=0;

uintjiaodujisuan()//角度计算

{uintj;

if(x<

0)

{

wela=1;

//显示角度符号位

P0=0xfb;

wela=0;

dula=1;

P0=0x40;

dula=0;

delay(3);

}

j=fabs(x);

j=j*0.18;

//角度转换公式

returnj;

4.改错及心得

开始没有设置计数变量的上下限,使测量角度大于360度,改正后效果正确。

开始角度转换公式为X=X*360/2000,结果显示不正确,后来改为X=X*0.18,显示正确。

这段程序很考察细节,一个注意不到的地方有可能使程序出错。

五、试验检测

1.实验过程

把编码器与直流电机用联轴器固定在一起,通过改变只直流电压改变直流电机的转速,观察数码管显示的变化。

停止直流电机,用手拧动编码器,可方便观察转角的变化。

2.实验结果

系统可以实时的显示电机的转速及转角。

六、总结

这次课程设计让我学到了很多。

对于编码器与电机的应用又多了一层的认识,在编程上也有了大大的提高,对单片机的理解,尤其是对中断的处理加深了认识。

在实验过程中,我曾经出现了很多次错误,大多数都是很细节的东西,这时就需要耐心与分析问题的能力来一次次的解决,也正是因为无数次的改正错误才使最后的程序调试成功。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1