沈宝诚 , 吴剑飞 , 朱 嘉
(1.中国电子科技集团公司第41研究所,安徽 蚌埠 233010;2.江西中烟工业有限责任公司赣州卷烟厂,江西 赣州 341000;3.重庆中烟工业有限公司重庆卷烟厂,重庆 南岸 400000)
编码器[2]是一种重要的工业辅助装置,常用来进行位置检测、速度控制等,根据其刻度方法和信号输出形式可分为增量式和绝对式两种。增量编码器是用脉冲的个数来表示位移的大小,具有安装简单、价格便宜以及后续数据处理工作量小等优点。绝对编码器直接输出数字量信号,其具有无需记忆、无需找参考点、无需计数、精度高,电源切除后位置信息不会丢失等优点。
由于绝对编码器[3]在定位方面明显地优于增量式编码器,其广泛应用于对精度要求比较高的系统中。而在某些场合,只需通过采集增量编码信号就可获取机械转轴的位移变化量。如果在已装有绝对编码器的系统中二次安装增量编码器,或者重新搭建模拟现场的机械传动装置来获得增量编码信号,不但要求要有合适的安装位置和空间,而且也会增加整体布线数量,随之也会降低系统的可靠性,增加安装和改造成本。
增量式编码器旋转时输出两路相位信号和一路复位信号,分别为A、B、Z,其中,信号A和B的波形相同,仅存在1/4周期的相位差。正转时,A相信号超前B相信号1/4周期,反转时,A相信号滞后B相信号1/4周期,Z信号用于标记零相位,即起点位置。根据两种编码器的原理及功能要求,本装置需要既包含绝对编码器的输入电路,又包含分析处理和对外模拟输出电路。
本装置主要由STM32单片机、电源芯片、串口芯片、驱动电路等组成,如图1所示。采用STM32单片机作为数据采集和控制芯片,并分配STM32单片机的PA0引脚输入绝对编码最低位(C0)格雷码数据,PA1引脚输入绝对编码最高位(Cn-1)格雷码数据, PA3、PA4、PA5输出信号经驱动电路输出增量Z、B、A信号为负载所用,PA7、PA8引脚为串口通信引脚,用芯片MAX3232作为与上位机RS232串行通信的接口。本装置可以通过串口与PC机通信,把编码器的相位信息传给PC机[4]显示供分析所用。STM32单片机根据得出的绝对角度和其相关的时钟脉冲,运算处理输出三相脉冲,每相脉冲经过驱动电路放大、转换,最后输出的A相、B相、Z 相三相信号就是需要的增量编码信号。
图1 电路原理框图
为适应多场合应用要求,输出驱动电路包含三路NPN类型输出电路和三路PNP类型输出电路。为保证系统稳定性和可靠性,NPN型和PNP型驱动芯片选用英飞凌公司制造的BTS3408和BSP742智能功率开关,其均具有电流限制、短路保护、过压保护、过载保护、输出开路诊断等功能。由于单片机和PC机采用的通信标准不一样,所以在串行通信时需要进行转换。如上图所示,串口通信芯片选用MAXIM公司制造的MAX3232串口芯片。
本装置软件主要涉及STM32单片机程序,该程序主要是实现对绝对编码器信号的采集以及逻辑判断分析后的输出。为提高开发效率、方便软件维护,选用的编程工具为Keil,编程语言为C,其软件流程图如图2所示。
在图2中,单片机上电后先进行初始化,并且设定A、B、Z三相信号初始电平均为低电平。单片机读取绝对编码器送来的最低位信号,当其检测到最低位信号的上升沿时,对A相信号进行取反,当单片机检测到最低位信号的下降沿时,对B相信号进行取反,当单片机检测到最高位信号的下降沿时,对Z相信号进行取反,然后对A相、B相、Z相三相信号进行清零(表示完成一个周期或者一圈的信号采集)并循环重复上面步骤。
图2 软件流程图
并行绝对编码器输出格雷码图如图3所示。C0、C1、C2……Cn-1分别为绝对编码器完整输出格雷码数据所对应的最低位、第“1”位、第“2”位……到最高位。绝对编码器旋转一周,每个低位高低电平变化总数是其相邻高位高低电平变化总数的2倍,方波上部0-(2n-1)数字为其各组n位格雷码对应的十进制数。每个t时间输出一组数据,n位绝对编码器步长为2n,其旋转一圈则输出2n组数据,其测角分辨率为360/2n,最高位 Cn-1每来一次脉冲下降沿,则表明绝对编码器完成旋转一周,或者回到其零点,其可作为增量编码Z信号。
图3 并行绝对编码器输出格雷码图
A相、B相信号产生原理图如图4所示。A相信号、B相信号是单片机通过接收到绝对编码最低位(C0)格雷码数据后,模拟输出得到的。在模拟A相、B相信号输出时,把绝对编码器最低位第一个上升沿到第二个上升沿之间的时间作为增量编码A相信号的高电平时间,把绝对编码器最低位第二个上升沿到第三个上升沿之间的时间作为增量编码B相信号的低电平时间,一个完整的脉冲周期为T=8t。从绝对编码器最低位第一个下降沿到第二个下降沿之间的时间作为增量编码A相信号的高电平时间,从绝对编码器最低位第二个下降沿到第三个下降沿之间的时间作为增量编码B相信号的低电平时间,一个完整的脉冲周期也为T=8t,并且获得的A相信号与B相信号相差1/4周期。转换后的增量信号的步长只有原来的绝对编码器步长的1/8,测角分辨率为360/2n。
图4 A相、B相信号产生原理图
增量信号输出相位示意图如图5所示。A相信号、B相信号和Z相信号是就是通过接收到绝对编码其最低位和最高位格雷码数据后,经过单片机计算处理模拟输出得到的。A相信号和B相信号是两组信号波形相同,并且仅存在1/4周期相位差的脉冲信号,Z相信号为复位信号,当单片机判断出绝对编码器完成旋转一周或者回到零点则控制输出Z相信号,其表示零相位,用于调零、对位。
图5 增量信号输出相位示意图
由绝对编码器的原理及波形图可以看出,单片机接收完八组绝对编码器格雷码数据,单片机才能完成控制输出一个完整的编码脉冲信号。绝对编码器的数据传输周期为t,位数为n,步长为2n,转换后的增量编码A相信号和B相信号周期都为T=8t,步长为2n-3,即转换后的增量编码信号的步长是绝对编码器步长的1/8,测角分辨率也是绝对编码器的1/8。根据单片机接收到的绝对编码器最低位格雷码信号脉冲是上升沿还是下降沿,来模拟输出增量编码的A相信号和B相信号,然后再根据绝对编码器最高位格雷码信号脉冲信号的下降沿,输出增量编码的Z相信号。
基于STM32的绝对编码器信号转换为增量编码器信号的装置,可用于需要将绝对编码器信号转化为增量编码器信号且对精度要求不高的控制系统中,采用上述方法不仅能避免重复安装编码器,而且降低了系统信号处理的复杂度,提高了控制系统的灵活性和安装调试效率。