王真旭,万在红,熊文华,蒋乐云,杨超然
(南昌航空大学信息工程学院,南昌 330000)
光电编码器是一种通过光电转换技术将输入的角度信息转换为相应的数字脉冲的传感器,其具有体积小、精确度高、操作方便等优点。在过去几十年中,已经发展为一种成熟的多规格、高性能的系列工业产品,主要用于检测角度位置,也可以通过机械联动装置测量直线位移。因为光电编码器测量速度、角速度和位移都很简单,相关的文献也有很多,但缺少实际的硬件制作和软件设计,所以本文基于STC89C52 单片机和光电旋转编码器设计一个位移测量系统,希望能提供一些光电编码器的硬件使用方法和测量位移的软件设计思路[1-3]。另一方面,在工业生产中,流水线上的货物往往需要精确的位移控制才能被送到相应处理的环节,为了提高物体传送的精确性,降低操作人员的失误率,本文采用增量型光电旋转编码器对物体进行位移实时显示,并且通过警报灯和蜂鸣器来提醒操作人员进行做出相应的措施[4-5]。本文首先介绍光电旋转编码器的工作原理,然后介绍硬件系统的组成和部分重要模块的实现,最后再讲解软件的流程图,比如如何将采集到的编码器数据转化为位移量。本文只是对编码器的使用,并未考虑一些误差,比如电机减速时由于惯性导致多运动一段的误差距离,关于光电编码器的误差分析可以参考其他文献[6-8]。
光电编码器分为增量型、绝对型以及混合型等,本文只简单介绍增量型光电编码器。增量型光电编码器通过光电转化技术,把转轴的几何位移量转化为等宽脉冲进行输出,即把连续的位移量离散化为一个个的等大的脉冲,而且产生的脉冲与位移大小一一对应,因此一个脉冲对应的位移量越小则越精确,记录的脉冲之和就对应了位移之和。通常情况下,增量型光电编码器输出两个相差90°的脉冲信号(记为A 相、B 相)和每旋转一圈就产生一个的Z 脉冲信号。通过分析A 相和B 相的相位关系可以方便地判断出旋转方向,Z 相可以用来减少累计误差。增量型光电编码器由光源、码盘、检测光栅、光电检测器件和转换电路等组成,如图1所示。
图1 增量型光电编码器的组成
码盘上有很多个的透光缝隙,相邻两个透光缝隙间距大小相同,并且代表一个周期。检测光栅上有两组间距相差刚好1/4 间距的透光缝隙,检测光栅的透光缝隙和码盘的透光缝隙间距相同。增量型光电编码器正常工作时,检测光栅固定不动,而码盘被转轴带动旋转,此时由编码器内部光源发出的光线周期性地穿过码盘和检测光栅并且照射到光电检测器件上时,光电检测器件将会输出两个相位相差90°的正弦信号。紧接着这两个正弦信号通过转换电路转化为方波,即A 相脉冲和B 相脉冲。增量型光电编码器输出信号的波形如图2所示。
图2 增量型光电编码器输出的波形
增量型光电编码器的具有体积小、精度高、操作方便等特点,而且既可以用来测量角位移,又可以通过加上联轴器来测量直线位移。其缺点是:因为测量直线位移时必须安装联轴器,所以需要考虑由机械摩擦产生的误差。
准确地计算产生的脉冲个数是使用增量型光电编码器测量位移的关键。计算光电编码器输出的脉冲个数主要分为以下两个步骤:因为在实际操作过程中,电机既能正向旋转,又能反向旋转转,所以首先对编码器输出的A、B 相脉冲进行方向判别,即判断电机此时是正向旋转还是反向旋转;然后根据正反转得出计数器是加一还是减一,如果是正转则计数器加一,如果是反转那么计数器减一。如图3所示,当编码器正转时,A 相超前B相90°,A 相的每一次上升沿处B 相都正好为低电平;当编码器反转时,A 相滞后B 相90°,A 相的每一次上升沿处B 相都正好为高电平。如果A 相以下降沿为判断依据,B相的电平相反即可[9-10]。
图3 编码器正反转示意图
相应的计数方式主要有软件方式和硬件方式两种方式。硬件计数方式是在外部接上由多个可加可减的双时钟计数器(如74LS193 芯片)级联而成的加减计数电路,优点是执行速度快;软件方式是将A 相脉冲接单片机INT0 引脚,B 相接单片机P1.0 引脚,设置外部中断0 为下降沿触发,当A 相出现下降沿时,进入外部中断0,判断B 相电平高低,若为高电平则为正转,脉冲数数加一,为低电平则相反。软件方式在光电编码器脉冲方向判别以及系统控制方面的实时性不及硬件方式,而且编码器的数量与系统的可靠性成反比。但是因为它的电路设计相对于硬件方式更简单,而且本次只使用了一个编码器,所以本文选用软件计数方式。
系统硬件主要包含以下部分[11-13]:(1)单片机最小系统板,选用STC89C52 作为控制核心;(2)编码器模块,将位移转化为脉冲输出;(3)报警模块,当位移超过某些值时产生相应的报警;(4)报警值存储模块,当单片机突然掉电,设置的报警值也不会丢失;(5)液晶显示模块,采用1602显示当前位移和,3个报警值;(6)按键模块,可以根据需求设置不同的报警值;(7)模拟工业位移测量模块,用直流电机带动齿轮和皮带旋转,模拟工业中机器运转;(8)光电检测模块:判断系统开始测位移和结束测位移,这样可以计算出开始和结束之间的位移。系统总体框架如图4所示。
图4 机械位移测量系统总体框架
整体原理图如图5所示。
图5 系统原理
用一个红外发光二极管和一个红外接收管组成一个电路,用来检测是否有物体通过,当没有物体通过时输出低电压,当有物体时则输出高电压。这个信号转到单片机中进行判断开始或者停止计算位移。将START 端口与单片机的P2.2 引脚相连,END 端口与单片机的P2.4 引脚相连,当光电检测装置检测到高电平时,单片机启动位移测量模块。硬件原理图如图6所示。
图6 光带检测装置
为了真实模拟电机带动编码器进行测距,选用了一个联轴器把编码器和电机连接在一起,并且选用的是双出轴直流电机,在电机的另一侧接上孔径一致的齿轮,齿轮上加一根皮带,当电机旋转时,一端带动编码器测距,另一端带动皮带向前转动,它们都是和直流电机同轴旋转,同轴旋转距离与半径成正比,所以进行位移测量的时候,要乘上齿轮半径与编码器半径之比。
电机的选择:因为测量的是两个光电开关的距离,当经过第一个开始光电开关时,单片机开始测距,当到达第二个光电开关时结束测距,与电机的减速过程没有关系,所以选择最简单控制的直流电机,直流电机的转速与输入的电压有关,考虑到电机转速太快,将电机输入电压减小到1 V 以下,以方便测量。模拟工业电机实物如图7所示。
图7 模拟工业电机实物
本次选用的编码器的分辨率是600 个脉冲每圈,电源电压为5 V,孔径6 mm,有4 根不同颜色的线,不同颜色有特定的作用,绿色的线代表A 相脉冲输出,白色的线代表B 相脉冲输出,红色的线接5 V 电源,黑色的线接地。编码器输出的A 相脉冲接到单片机的外部中断P3.2 引脚,B 相脉冲接到I/O 端口P3.3 口(虽然P3.3引脚有外部中断功能,但不使用此功能)。当位移测量系统启动时,首先将INT0 端口设置为下降沿触发方式,然后打开相应的中断。 当INT0 引脚出现下降沿时,单片机程序触发外部中断0,执行外部中断0 的处理程序,此时判别P3.3 引脚是低电平还是高电平。 若该引脚是高电平,则说明此时编码器正转,脉冲个数加一;若该引脚是低电平,则说明此时编码器反转,脉冲个数减一。
如果位移记录采用一般的存储器,在突然掉电时必须使用备用电池来供电,并且需要在硬件上加入一个检测掉电的电路,但会出现电池不可靠等特点,为了防止突然掉电导致位移信息丢失的情况发生。此次使用AT24C02 存储芯片,它是由Atmel 公司生产的一款CMOS型的存储器,具有2 kbit 的存储容量,存储的数据不易丢失,并且能够反复擦写很多次,通常能擦写10 000 次以上。硬件连接图如图8所示。
图8 AT24C02硬件
系统的软件设计主要包括:数据采集和处理程序、报警程序、LCD1602 显示程序、键盘扫描程序、外部存贮和读取程序。整体流程如图9~11所示。
图9 主程序流程
图10 定时器T0流程
图11 外部中断0流程
本文将光电旋转编码器与单片机结合起来设计了一个机械位移测量系统,该系统通过电机带动皮带工作模拟了工业旋转设备的正常运行,具有体积小、精度高、既能够测量角位移又可以通过机械转换装置测量直线位移的特点,成功实现了实时数据显示和报警等功能。本文也简单介绍编码器的工作原理并且提供了一些简单的硬件和软件使用方法,但是本文并没有考虑联轴器与编码器机械摩擦产生的误差,相关的分析可参考其他论文介绍。总体来说,该系统提高了位移测量的准确度,有效减少了测量误差。