好文档 - 专业文书写作范文服务资料分享网站

基于光电传感器的转速测量系统设计单片机光电转速传感器转速测量数据处理

天下 分享 时间: 加入收藏 我要投稿 点赞

流稳压电源的稳压部分,确保在其输出端的电压稳定在1.25V左右。D1~D4对LM317和LM337具有短路保护作用。通过对电位器R3、R4的调节来获得所需的电压,即±15V稳定的直流电压。

图3.13 ±15V直流稳压电源

4 系统软件设计 4.1程序模块设计

软件部分由数据处理程序、按键程序设计、中断服务子程序、LED显示程序等几个部分组成。

数据处理完成对各种测量数据的处理,如各种数据的计算、数据格式的转换等。 按键程序包括按键防抖动处理、判键及修改项目等。按键流程图如图4.1所示。 定时器1服务子程序设计,流程图如图4.2所示。定时器1完成定时功能,定时2Oms,并每隔20ms进行一次显示,每隔1秒读一次计数结果。单片机对在1秒内计数的值进行处理,转换成每分钟的速度送显存以便显示。

具体算法如下:主程序在对定时器、计数器、堆栈等进行初始化后即判断标志是否为 1,如果为 1,说明要求对数据进行计算处理,首先将标志清零,以保证下次能正常判断,然后进入数据处理程序,由于这里的闸门时间为 1s,而显示要求为转/分,因此,要将测到的数据进行转换,转换的方法是将测得的数据乘以60,但由于转轴上安装有11只孔,每旋转一周可以得到11个脉冲,因此,要将测得的数据除以11,所以综合起来,将测得的数据乘以5.4545即可得到每分钟的转速。计算得到的结果是二进制的整数,要将数据送往显示缓冲区需要将该数转化为BCD码。运算得到的是压缩BCD码,需要将其转换为非压缩BCD码,从标号CBCD开始的一段程序即作了这样的处理。需要说明的是,这里多位二进制乘法

和多位二进制到BCD码的转换都是用了现成的成熟子程序,因此,首先将二进制数转换为压结合实际BCD码,然后再转换成非压缩BCD码,看似多写了些程序,实际上这对于保证程序的质量很有好处。定时器T1用作定时发生器,在定时中断程序中进行数码管的动态扫描,同时产生1s的闸门信号。1s闸门信号的产生是通过一个计数器Count,每次中断时间为20ms,每计50 次即为1s,到了1s后,即清除计数器Count,然后关闭作为计数器用的T0,读出TH0、TL0中的数值,分别送入SpCount和SpCoun+1单元,将T0中的值清空,置标志为1,要求主程序进行速度值的计算。

P1.1=0?N按键是否存在?YNP1.0=0?P1.0=1?N设置修改项目Y相应项目值的设定再读键判断N判断有无键按下Y延迟10 ms防抖取反后取有效按键位读P1口 返回

图4.1 按键流程图

中断程序开始T1重装初值保护现场定时单元+1NY读取TH0满1S恢复现场图4.2定时器1服务子程序流程图

4.2 数据处理过程

在系统开始工作,或者完成一次频率测量,系统软件都进行测量初始化。测量初始化模块设置堆栈指针(SP) 、工作寄存器、中断控制和定时/ 计数器的工作方式。定时/ 计数器的工作首先被设置为计数器方式。

在对定时/ 计数器的计数寄存器清0 后,置运行控制位TR 为1 ,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值开始,也就是从测量频率的高量程开始。计数闸门结束时TR 清0 ,停止计数。计数寄存器中的值通过16进制数到10进制数转换程序转换为10进制数。对10进制数的最高位进行判别,若该位不为0 ,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0 ,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。

当上述测量判断过程直到计数闸门宽度达到1s ,这时对应的频率测量范围为100Hz - 999Hz ,如果测量结果仍不具有3 位有效数字,频率计则使用定时方法测量待测信号的周期。定时/计数器的工作这时被设置为定时器方式,在对定时/ 计数器的计数寄存器清0 后,判断待测信号的上跳沿是否到来。待测信号的上跳沿到来后,置运行控制位TR 为1 ,以单片机工作周期为单位,启动对待测信号的周期测量。然后判断待测信号的下跳沿是否

到来,待测信号的下跳沿到来后,运行控制位TR 清0 ,停止计数。16 位定时/ 计数器的最高计数值为65535 ,这样在待测信号的频率较低时,定时/ 计数器将发生溢出。当产生定时/ 计数器将溢出,程序进入定时器中断服务程序,中断服务程序对溢出次数进行计数。待测信号的周期由3个字节组成:定时/ 计数器溢出次数、定时/ 计数器的高8 位和低8 位。信号的频率f 与信号的周期T 之间的关系为: f = 1/ T 完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。为提高运算精度,这里采用浮点数算术运算。浮点数用3个字节组成,第一字节最高位为数符,其余7 位为阶码;第二字节为尾数的高字节;第三字节为尾数的低字节。待测信号周期的3个字节定点数首先通过截取高16 位、设置数符和计算阶码转换为上述格式的浮点数。然后浮点数算术运算对其进行处理,获得用浮点数格式表达的信号频率值。浮点数到BCD 码转换模块把用浮点数格式表达的信号频率值变换成测转速的显示格式,送到显示模块显示待测信号的频率值。

4.3 浮点数学运算程序

STC89C51 系列单片机属于微控制器,由于其CPU字长和指令功能的限制,它适用于控制领域,在信号处理方面不很擅长。在频率计中需要完成周期到频率的换算,为保证测量结果的准确,这里应用了浮点数数学运算。从周期到频率的换算过程包括: 3字节定点数到浮点数的转换、浮点数数学运算和浮点数到十进制码的转换。

5 制作调试

在硬件调试与制作方面,可从下面系列着手考虑。

信号盘可用一般钢板制成,这个信号盘就是发动机实验时所用的转盘,盘上共有11个齿,每个大孔直径为6mm,盘中心还有一个中心孔。中心孔主要用于在固定发动机上。将信号盘与电机安装在一起,使其随电机转动;传感器固定在支架上,垂直于转速盘,当转速盘旋转时,光电传感器就输出矩形脉冲信号,每11个脉冲对应发动机1个工作循环,其中的2个宽脉冲信号配合上止点信号可精确确定上止点的位置。

此检测装置完全按照发动机上传感器的实际安装位置进行安装。如图5.1,将信号盘固定在电动机转轴上,光电转速传感器正对着信号盘。光电转速传感器接有4根导线,其中黑线、黄线为电源输入线,红线为信号输出线,白线为共地线。测量头由光电转速传感器组成,而且测量头两端的距离与信号盘的距离相等。测量用器件封装后,固定装在贴近信

号盘的位置,当信号盘转动时,光电元件即可输出正负交替的周期性脉冲信号。信号盘旋转一周产生的脉冲数,等于其上的孔数。因此,脉冲信号的频率大小就反映了信号盘转速的高低。此转速测量装置可以实现数字显示,成为数字式转速表。

图5.1 转速测速示意图

LM324整形电路调试。在焊接硬件电路时需细心排除元器件和焊接等方面可能出现的故障,元器件的安装位置出错或引脚差错可能导致电路短路或实现不了电路本身的功能,甚至烧坏元器件。单片机部分最容易出现的问题为元器件引脚的虚焊。

被测物理量经过传感器变换后,往往成为电阻、电流、电压、电感等某种电参数的变化值。为了进行信号的分析、处理、显示和记录,须对信号作放大、运算、分析等处理,这就引入了中间变化电路。查阅有关资料结合选用的光电传感器相关参数,我们设计了如图3.6所示的中间变换电路。当调制盘上的圆形孔旋转至与光电开关的透光位置重合时,触发器输出高电平;当通光孔被遮住时,触发器输出低电平。输出的信号经LM324电路整形调试,可以将信号源完好的整形成矩形脉冲信号。在把矩形脉冲信号输入单片机之前,先把矩形脉冲信号接入示波器进行调试。

除了要考虑到硬件方面,对软件调试也不能忽视。

程序应该模块化,便于修改。使用RAM或IO,必须先定义再使用,避免直接引用。将来需要调整时,只要修改定义部分就好了。写程序要有足够的注释、说明文档、流程图、原理图。每次修改程序,应该同步更新相关的注释、说明文档、流程图、原理图。免得下次再改时对不上号。

实验板与

PC机连接时一定要先连接串行通信电缆,然后再将其电源线插入USB借口;

拆除时先断开其电源,再断开串行通信电缆。否则极易损坏PC机的串口。

在进行软件编程调试时需要用到单片机的集成开发环境MedWin V2.39 软件,编程时

7x45m30gvc01k8300wxv0h1ll01f5u01c0r
领取福利

微信扫码领取福利

微信扫码分享