摘 要: 直流无刷电机(BLDCM)兼有交流电机的结构简单和普通直流电机的高运行效率以及极佳调速性能等特点;尤其在精确定位的伺服系统中得到广泛应用。但在BLDCM高精度伺服定位中起着关键作用的光电编码器码盘在实际安装中常会因为操作不当而对其造成损伤,增大了电机产品的出厂故障率。介绍了基于FPGA设计的光电码盘损伤检测方案,可以快速准确地检测待测BLDCM光电编码器码盘的受损程度。
关键词: 直流无刷电机; FPGA; 增量式光电编码器; 码盘
直流无刷电机(BLDCM)是利用电子换向装置驱动电机转子的一种常用动力设备,由于其可方便实现精确定位功能,使其在伺服系统得以广泛应用[1]。BLDCM转子运行位置的精确反馈是整个伺服系统的关键,因此转子位置的检测在BLDCM电机伺服控制系统中有着十分重要的作用。光电码盘位置检测法是通过光电对管计数电机转子带动码盘旋转时发出的脉冲数,计算得到电机运行过程中的转子位置。光电管的物理特性决定其具有高测量精度、高检测速度;因此光电码盘位置检测法能快速准确地反应电机转子的机械位置,在伺服系统中得到广泛的应用。
光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。典型的光电编码器由码盘、检测光栅、光电转换电路(包括光源、光敏器件、信号转换电路)、机械部件等组成[2]。码盘上刻有间距相等的辐射状透光缝隙,相邻两个透光缝隙之间代表一个位置增量。它通过物理连接如“连轴器”与电机的转轴同心连接,被转轴带动旋转,在透光和不透光的情况下便会通过转换电路输出连续的脉冲信号,在BLDCM运行中根据脉冲计数即可计算出转子的位置,通过算法还可以精确地得到电机的运行速度和旋转方向[3]。光电编码器原理示意图如图1所示。
增量式编码器是直接利用光电转换原理输出两组方波脉冲A、B,其中A、B两组脉冲相位差90°,从而可方便地判断出旋转方向。其优点是原理构造简单,机械平均寿命可在几万小时以上,抗干扰能力强,可靠性高,并适合于长距离传输[2,4]。增量式编码器码盘属于高精度仪器,然而在现场操作中往往会因为机械装配原因而使码盘受到损伤(如扭曲变形),特别是光栅受损错位等,这就会使转子位置反馈信号出现不同程度的偏差,严重情况下甚至会导致整个伺服系统的失败,造成不必要的故障和损失。为此,本文着重介绍了基于可编程逻辑器件FPGA设计的BLDCM整机光电编码器码盘检测系统。
1 系统方案的确定
本系统是BLDCM整机测试方案, BLDCM带有待测的增量式编码器码盘,且待测码盘在测试台上被电机后座封闭。为了得到准确的测量结果,测试系统提供待测电机恒定的旋转速度,未受损的增量式编码器通过光电对管和光栅的配合,输出连续占空比为50%的方波信号。测试系统控制器通过驱动步进电机控制器使得BLDCM按恒定的转速旋转,设BLDCM转速为Kround/Min,编码器码盘光栅分辨率为N,则正常码盘输出的脉冲周期宽度为:
式(2)说明在正常情况下,每个电平持续的时间约为0.83 ms,为了提高系统检测准确性,应该进一步提高测试系统的时钟频率,使得光电管单个脉冲输出期间检测系统所得的高频时钟计数越多,系统可以得到更真实的码盘输出脉冲宽度信息,因此提高时钟频率是有效的方法。若采用传统的单片机设计光电编码器码盘检测系统,由于单片机时钟频率较低,外设速度较慢。若码盘出现损坏则输出不规则的波形,如图2(b)所示,此时会出现电平持续时间长短不一的情况,若码盘分辨率稍高,某些检测时刻甚至会处于数十微秒的数量级上,易造成检测错误。FPGA属于高速并行器件,运行频率高,内部存储容量大,所有模块都是并行运行[5],这就极大地减少了内部延时,因此它更适应于检测码盘损伤。
系统中BLDCM为被动旋转运行方式,但需通过接口向光电对管提供+5 V直流工作电压,以供输出检测脉冲信号。控制器通过控制步进电机的启停来控制待测BLDCM的旋转和停止。在启动测试系统阶段,系统从静止开始加速旋转BLDCM,待转速稳定在控制器根据编码器设定的速度后,正式开始进入码盘测试阶段,并通过外接LED指示说明系统运行状态,目前为满足不同分辨率的码盘测试要求,测试系统通过编码器可以设定3种速度,即K=25,50,100。码盘输出的脉冲信号经简单的调理电路后直接连接到FPGA的引脚提供给控制器进行运算,所得结果输出并通过LED和蜂鸣器进行故障指示。图3为测试系统的功能简图。
2 码盘损伤检测系统整体方案的实现
本系统采用Xilinx的Spartan3E型号为XC3S500E[6]的FPGA,系统流程图如图4。整个系统采用Top-Down的设计思想,把系统划分为几个基本单元,顶层采用原理图的输入方式如图5所示。
2.1 时钟计数模块
系统采用50 MHz时钟对码盘输入的波形进行计数。在正常情况下,光电对管输出的待测信号(本系统中为CP)应该为标准的方波,若码盘被损坏则输入的方波也必然会变得不规则。控制器用CLK对待测信号进行宽度计数,CP上升沿和下降沿来时将计数器内的值分别输入FPGA的RAM中。
2.2 单口RAM模块
采用Xilinx ISE9.1的单口RAM IP核对时钟模块输出的计数值进行存储,RAM Core原理图符号如图6[7]。为了在每个时钟沿触发时使存储器的利用率最大化,XC3S500E提供的RAM块支持3种不同的写模式。根据需要系统选择写优先模式(Write First mode),当WE为高电平时向RAM中写入数据,当WE为低电平是根据输入的地址ADDR将存储器内的数据读出,其时序如图7[7]。
为了提高测试的精度,保证测试结果的可靠性,系统设定了采样3周待测码盘输出信号,也就是先把电机转动完整3周所输出的计数值全部存入RAM中,然后再读取需要的值进行运算。设计中分别用两个模块对RAM的WE和ADDR取值进行了控制,以保证电机在此3周转动中WE始终是高(即为写),地址始终递增,3周以后WE变为低(即为读),地址从0开始递增。
2.3 减法及存储模块
由于RAM模块内存储的分别为CP上升和下降沿到来时的时钟数计数值,此模块递增改变读地址,实现RAM数据的减法运算,即可得到CP在每个高电平或低电平对应的时钟计数值。此时钟计数值的多少反应了它们在高低电平的持续时间。将所得的结果再次存入一单口RAM中,以便后续的比较运算。
2.4 比较模块
此模块用于比较CP在前一个高电平(或低电平)与后一个高电平(或低电平)持续的时间是否一致。对于不同的时钟频率所得的计数精确度不一样,因此相邻两个同样电平持续的时间也不可能完全相同,本系统中设定的计数差值为±10,即相邻两个同样电平计数值之差在±10之间,模块输出低电平,测试系统判断码盘是正常未受损;一旦计数值之差超过10,模块将会输出一个高电平,用以记录码盘出现受损的情况。然后再比较下一个相邻高电平(或相邻低电平),由此类推。分析模块的输出端(q)可以发现,如果码盘是正常的,则q全为低电平;反之,则会出现高电平,并可计数分析高电平的个数,计算出码盘损坏的严重程度。码盘受损的仿真比较结果如图8所示。
2.5 驱动及复位模块
为了便于用户观察,系统加入了驱动复位模块,用以驱动故障指示LED和蜂鸣器。其设计思想是,一旦输入端出现高电平,且整个系统在不复位的情况下,模块输出两路周期为1 s的方波,驱动LED灯和蜂鸣器指示故障并报警,并可以使用一复位按钮人工复位停止LED和蜂鸣器。程序仿真结果如图9所示。
3 系统仿真和实验结果
系统程序采用Verilog HDL硬件描述语言编写,并在ISE 9.1i环境下综合成功,其ModelSim仿真结果如图10所示。由图可知,当相邻两个同电平的脉冲计数差值在±10时,输出端q为低电平,一旦超出预定范围则输出高电平,且驱动LED和蜂鸣器动作。
实际使用证明,本文设计的光电编码器的码盘损伤检测系统可以快速准确地检测出已完成安装的BLDCM光电码盘,并可以根据待测码盘的分辨率要求和检测的计数要求,通过编码器方便快捷地调整设置驱动转速和误差比较阈值。经过实际使用的反馈分析,本系统将在码盘的故障定位上开展研究,满足系统在快速检测出故障码盘的前提下,可以准确定位故障光栅的位置,为实际的检修提供信息。
参考文献
[1] 刘刚 王志强.永磁无刷直流电机控制技术与应用[M].北京:机械工业出版社,2008.
[2] 陈先锋. 伺服控制技术自学手册[M].北京:人民邮电出版社,2010年第1版.
[3] 卢志刚.数字伺服控制系统与设计[M].北京:机械工业出版社,2007.
[4] HEDS-9700 シリーズ2チャンネル光学式,小型エンコーダモジュール(リニアタイプ/ ロータリタ
イプ),Agilent Technologies.
[5] 黄智伟.FPGA系统设计与实践[M].北京:电子工业出版社,2005.
[6] XILINX Corporation[Z].Spartan-3E FPGA Family Complete Data Sheet.
[7] XILINX Corporation[Z].Libraries Guide ISE 9.1i.