您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 基于编码器电机测量转速与转角课程设计
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.课程设计报告课程名称:专业课课程设计II课设题目:简易测量电机转速和转角装置专业班级:电子信息工程1001姓名:郭阳学号:4课设时间:2013.12批阅时间:指导教师:桂珺成绩:文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.任务书题目:简易测量电机转速和转角装置参数:处理器——————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一、总体方案。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。41.方案一。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。42.方案二。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。43.方案选择。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4二、编码器介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。51.编码器原理。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。52.编码器选型。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5三、编码器测量电机转速。。。。。。。。。。。。。。。。。。。。。。。。。。。61.原理介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.2.程序框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。63.编程实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。64.改错心得。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7四、编码器测量电机转角。。。。。。。。。。。。。。。。。。。。。。。。。。91.原理介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。92.程序框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。93.编程实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。94.改错心得。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10五、实验检测。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。111.实验描述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。112.实验结果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11六、总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11简易测量电机转速和转角装置摘要本文介绍了基于89C52单片机的测量电机转速和转角的系统,概述了编码器的工作原理和应用,详细阐述了测速及测转角的基本原理、实现的步骤和软硬件的设计,采用C语言编程,用1602液晶屏显示数据,结果表明该方法具有简单、精度高、稳定性好的优点。关键词:89C52单片机测速测转角编码器电机一、整体方案1.方案一采用红外光电对管数据采集电路,红外对管根据电机转动时开口遮光片的位置,每转一圈输送几个低脉冲实现转速及转角的测量。2.方案二采用编码器采集信号,将编码器的轴与电机的轴通过联轴器固定,电机带动编码器转动,同时想单片机发出信号,经过单片机处理测出转速及转角。3.方案选择采用编码器测量系统具有低惯性、低噪声、高分辨率和高精文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.度的优点,光栅的成功应用使编码器在检测和控制领域得到了广泛的应用。选择编码器做传感器使得系统拥有测量准确度高、采样速度快、测量范围宽和测量精度与被测速度无关等优点。所以选择方案二。二、编码器介绍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.程序框图否文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.是是否图3.23.编程实现首先要在初始化函数里打开定时器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轴。这样做既减少了一个中断处理,又避免了误差,大大提高了系统的稳定性与实时性。根据这样的思路更改程序框图如下:否开始显示函数时间是否过了1s是否进入外部中断y++V=y;y=0;文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.是是否图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相脉冲数{y++;}voidzhuansu()interrupt1//定时器0中断每隔0.5秒查一次A转过的脉冲数{TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==10){v=y*0.01;//转速换算y=0;count=0;}TR0=1;}经过如此的更改就解决了之前的问题,显示非常稳定,误差也减小了很多。再给51系列单片机编程时应尽量的减少中断的使用,尤其是输入信号频率高,要求精度高,硬件设备质量低的情况。最好是根据有用信号,即用最少的输入信号得到最多的有用信息,通过编程减少外部设备,这样做不仅能够有效的减少误差,还可以节约资源。四、采用编码器测量电机转角1.原理介绍利用编码器的A轴和B轴来判断正反转和角度。这里的正反是以开机时电机的初始位置为标准的。正反转的判别方法:因为A和B相差90度,假设正转时A超前B90度,则反转时B超前A90度,利用这一特点可以判断正反。把A接到外部中断1,B接到P0^0口,当进入中断时,判断B轴是高电平还是低电平就可以判断正反了。角开始显示函数时间是否过了0.5s是否进入外部中断1y++V=y*0.01;y=0;文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.度的计算方法:电机转一圈是360度,编码器转一圈发出2000个矩形波,有这个关系就可以计算角度,即角度=计数个数*360、2000.2.程序框图否是否图4.23.编程实现首先在初始化函数里要打开外部中断1,并且设置成下降沿触发。但A轴有信号来临时,进入到外部中断1服务程序,先判断P0^0口的高低电平,若为高电平,则计数变量加一,反之,计数变量减一。如果计数变量X大于2000或小于-2000,则使X等于0.这样做减轻了变换角度的计算量,使系统认为编码器一直在正一周或负一周之内活动。接下来就可以将计数变量通过公式转换成角度显示了。显示正负角则可以判断计数变量的正负来确定。voidjiaodu()interrupt2//外部中断1计A相脉冲数{if(d1==1)x++;elsex--;if((x2000)||(x(-2000)))x=0;}uintjiaodujisuan()//角度计算{uintj;if(x0){wela=1;//显示角度符号位P0=0xfb;wela=0;dula=1;P0=0x40;dula=0;delay(3);}j=fabs(x);j=j*0.18;//角度转换公式开始显示函数是否进入中断X++P0^0是否为1X--X=|x|*360/2000文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.returnj;}4.改错及心得开始没有设置计数变量的上下限,使测量角度大于360度,改正后效果正确。开始角度转换公式为X=X*360/2000,结果显示不正确,后来改为X=X*0.18,显示正确。这段程序很考察细节,一个注意不到的地方有可能使程序出错。五、试验检测1.实验过程把编码器与直流电机用联轴器固定在一起,通过改变只直流电压改变直流电机的转速,观察数码管显示的变化。停止直流
本文标题:基于编码器电机测量转速与转角课程设计
链接地址:https://www.777doc.com/doc-7039740 .html