姜礼杰,王勇,徐健,刘建华
(合肥工业大学机械与汽车工程学院,安徽合肥290003)
三维移动平台是一种集光、电、机等多技术领域于一体的运动装置,广泛应用于医疗器械、先进制造、工业检测、实验设备等多个领域[1-2]。传统的三维移动平台常采用开环控制方式,根据控制器所发信息来控制运动平台的运动,信息流是单向[3]。随着定位精度要求的提高,这种控制方式已不能满足人们增长的精密需求[4-6]。越来越多的平台开始使用光栅尺进行位置和速度的检测,以构成闭环或半闭环控制方式,从而取代开环控制方式[7]。这种方式主控制器需要对光栅尺输出信号进行滤波、鉴向、细分和计数等处理。这些处理可以由数字集成电路来完成,但这种设计方法所需芯片多,结构复杂,可靠性差[8-9]。也可以通过专用芯片 (如CPLD、FPGA等)和一些外围电路来实现,但这种方法编程复杂,增加功耗,实时性差[10]。
传统的8位或16位的单片机也很难满足这种大数据量、复杂算法控制方式的实时性要求,随着嵌入式技术的发展,32位单片机广泛应用于工业自动化、智能仪器、家电产品等领域[11-12]。文中探索了一种以STM32微处理器做主控制器的光栅尺信号处理方法,实现了外部信号直接与微处理器连接,不需要其他外部逻辑接口,优化了结构,并提高实时性。经实验证明,该方法具有编程简单、可靠性高、实时性好等优点。
利用STM32微处理器进行光栅信号处理虽简单方便、实时性好,但也存在以下一些问题,限制这种使用范围。
(1)一般光栅尺的信号输出正弦信号或者脉冲信号,均属于弱电信号。由于现场的电磁、噪声、振动等干扰因素,使光栅信号带有一些毛刺或抖动,会造成计数器计数不准,甚至无法计数的现象。也就无法实时地将工作台运动情况反馈给控制器,因此需要对光栅尺的信号进行滤波处理。
(2)光栅信号选择有效端口接入微处理器,微处理器设置在编码器模式下,根据输入有效边沿和两路信号的相对电平,进行向上或者向下计数。但是,微处理器的计数器位数是16位,计数只能在0~65 535范围内进行,最大计数值65 535,低于0或超过65 553会产生溢出。计数向上产生溢出,计数器会接着向下计数;如图1所示,假如工作台向左运动,计数器计在点B到最大值65 535后,继续向左运动至点C,则此时计数器值可能变成60 000;当向下计数到0溢出后,会接着向上计数,这时候直接读取计数器的数值当做工作台的运动位移量是不准确的。
图1 工作台运动图
(3)微处理器的计数器在编码器模式下,依据两个输入信号的跳变顺序,硬件实时地对控制寄存器中的DIR位进行相应的设置。一般可以通过采取读出DIR位的值,判断工作平台的运动方向。这种方法虽能确定工作台的运动方向,但不能确定工作台所处在机械原点的那个方向。如图1所示,假设点O为机械原点,OA与OB是等距离的。开始时,工作台处在机械原点,向右运动至点 A,计数值为50 000,DIR的值为1;然后向左运动至点C,计数器值为55 000,DIR的值为0;接着向右运动,至点B,则计数器的值也为50 000,DIR值也为1;此时,处在A、B两点的计时器值和DIR的值都是相同的,主控制器则无法辨别工作台到底是运动到点A还是点B。
光栅尺是一种集光、机、电为一体的高性能数字化位置测量工具。它主要由标尺光栅和指示光栅两部分组成,二者发生移动时,在光的干涉与衍射共同作用下产生明暗相间的莫尔条纹。光电器件将明暗相间的摩尔条纹,通过光电转化,再经过放大器放大和整形电路整形后,得到两路相位差为90°的正弦波。后续电路对正弦信号进行滤波、插值等处理输出脉冲信号。然后经信号处理装置的整形、放大及微分处理后,即可输出与检测位移成比例的脉冲信号。
该模块所选用的STM32是一款32位基于ARM Cortex-M3内核的微控制器。它的定时器主要由一个16位计数器和相关自动装载寄存器组成,由可编程的预分频器进行驱动。这个计数器可选择编码器模式进行向上/向下计数,如图2所示。在编码器模式下,将信号输入微处理器的有效端口,根据输入信号的跳变顺序,产生计数脉冲和方向信号。当有边沿跳变产生时,硬件对定时器的控制寄存器TIMx_CR1的DIR位进行相应的设置,DIR位会被置为0或1。当DIR位为0时,计数器自动向上计数,直至自动重装值-1,产生一个计数器溢出事件,接着向下计数,至0,则产生一个计数器下溢事件,接着向上计数;而当DIR位为1时,计数器计数情况类似。只要有边沿跳变产生,就会重新计算DIR位,通过读取DIR位的数值来判断机床运动方向。当定时器被设置在编码器模式下,计数器的内容是依照光栅尺运动速度和方向而被实时地自动修改。
图2 定时器在编码器模式下计数方式
三维移动平台要求定位精度高,使用光栅尺作为位置检测器件进行反馈。主控制器根据计数器采集到的光栅尺脉冲边沿个数计算工作台的实际位移量,以消除系统的传动链误差,减小系统的惯性,提高定位精度。三维移动平台三轴的行程分别为150,150和50 mm,根据移动平台的定位精度要求,为每个轴分别选配了分辨率为:0.5、0.5和0.1 μm的光栅尺。每个轴所选丝杠的导程均为5 mm/r。经计算,一个导程光栅尺理论产生脉冲的边沿数为10 000、10 000和50 000,而整个运动行程理论上产生的脉冲数边沿数分别是280 000、280 000和50 000。这些值远远超过微处理器中计数器的最大计数值,无法准确计算平台移动位移量,不满足光栅尺作为位置检测元件的要求。
光栅尺信号因现场的电磁、噪声、振动等影响,可能会使TTL信号带有一些毛刺或抖动,造成计数器计数不准。根据信号的波形质量,可选择通过软件设置数字滤波器的带宽的方式,对输入的信号进行滤波处理。数字滤波器就是由一个事件计数器组成,它记录到N个事件后会产生一个输出的跳变。例如一个脉冲波形对高电平进行判断,在某个时间段内进行若干次检测,这若干次中至少N次都为真则为真,产生一个跳变,否则认为为假,不产生跳变。可以这样配置输入滤波器对输入波形信号进行滤波处理。滤波器的滤波效果如图3所示。
图3 滤波器滤波效果图
采用定时查取计数器数值的方法,通过软件编程使计数器扩展到32位,是一种简单有效的方法。采用定时查取方式进行扩展,根据机床的运动速度和实际测量需要设定查询周期。假定每10 ms查询一次,设S为光栅尺移动的实际位移量,a为计数器的实时值。每隔10 ms对计数器里的值进行一次查询,将计数器的值赋予a并清零,同时查询控制寄存器的DIR的值。假如DIR=0时,S的值将变为S加a的值,同时将a的值清零;如果DIR=1时,S的值将变为S减a的值,同时将a的值清零。显示器不断地显示S的值,S可为正值也可为负值。假如当S的值大于零时认为工作台的位置处在机械原点的右边,S的值小于零时认为机床是在机械原点左边,S的值为零时则处于机械原点。这样不断地进行定时查询直至机床停止工作。
主控制器对计数器的值定时进行查取和清零,查取周期的选择是该方法的一个关键。查取周期是依据平台运动最大速度和光栅尺分辨率计算所得。根据运动平台设计要求,三轴运动最大速度为30 mm/min,定位精度控制在0.01 mm以内,三轴的光栅尺分辨率依次为0.5、0.5和0.1 μm。经计算得,在每轴上每毫秒所产生的脉冲边沿数分别为:1个、1个和5个,对应的位移量均为0.5 μm。若要保证定位精度在0.01 mm以内,则在每个查询周期的运动位移不超过0.01 mm,根据最大速度计算,主控制器对计数器的查询周期要小于20 ms,否则,光栅尺不能有效地发挥反馈作用。该平台选择的查询周期是10 ms。
三位移动平台的的运动控制系统主要是通过C语言编程来实现的,光栅尺信号的处理,也是通过C语言配置微处理器中寄存器完成信号处理。图4是计数器位数扩展和辨向的主要程序的流程图。
采用上述设计方案对光栅尺信号进行处理,经过单片机定量发出PWM脉冲进行实际测试,实验结果显示计数器计数的个数与发出个数是一致的。另与数显表对比结果显示误差在1/10 000内。通过这两个实验,间接地验证了该方法计数准确。
图4 计数器扩展算法部分流程图
经验证,基于STM32微处理器的光栅信号处理方法简单可靠、技术准确、灵活性好。满足三位移动平台的的定位精度要求,达到预期设计目的,同时也为其他数据采集模块设计提供了参考。
【1】杜春梅.三维激光扫描技术的研究[D].西安:陕西科技大学,2010.
【2】徐丽莉.基于ARM9的数字超声检测系统的研制[D].南京:东南大学2007.
【3】周赞,周骥平,朱兴龙,等.应用运动解耦的三维动力平台的设计与研究[J].现代制造工程,2009(3):115-117.
【4】何丽娇.宏微结合精密定位平台运动控制研究[D].广州:华南理工大学,2008.
【5】李军.精密定位伺服控制系统的研究与应用[D].武汉:湖北工业大学,2006.
【6】孙中良.光栅检测及定位控制技术的研究[D].南京:东南大学,2005.
【7】赵从福,陈安,胡跃明.基于STM32的点对点运动控制器设计[J].计算机测量与控制,2012,20(4):994 -995.
【8】杨雷,激光微加工系统中若干关键技术的研究[D].郑州:郑州大学,2003.
【9】但永平,杨雷.基于 FPGA的光栅尺信号智能接口模块[J].国外电子元器件,2004(12):4-6.
【10】金锋,卢杨,王文松,等.光栅四倍频细分电路模块的分析与设计[J].北京理工大学学报,2006,26(12):1703-1076.
【11】吴焕荣.基于msp430单片机的多功能tig焊控制器[D].北京:北京工业大学,2005.
【12】李艳,李华,谢鸥.基于ARM的精密内圆磨床嵌入式数控系统结构研究[J].机电产品开发与创新,2008,21(4):171-173.