基于STM 32的二维滑台不规则轨迹精密控制
2015-01-29陈炳超庄泉洁刘洪英
陈炳超,庄泉洁,刘洪英,房 娟
(1.上海市华东师范大学多维度信息处理重点实验室,上海 200241;2.捷普科技(上海)有限公司 上海 200241)
在现代工业控制中步进电机的控制是滑台控制的执行机构。区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机转速由脉冲信号的频率决定[1-3]。
在很多情况下需要让步进电机控制滑台运动非常精确的距离,且运行轨迹是不规则的,运行时速度需可调。本文首先介绍系统的硬件电路原理;分析了控制滑台运行不规则轨迹的计算方法;在此基础上提出了用定时器中断的方法精确控制PWM数量;介绍了具体的软件实现方法并分析了系统测试结果。
1 系统硬件设计
本论文基于机车牵引梁数控磨削设备的电控设计,此设备用来磨削一个带弧线的六边形物体,因此要求设计两维滑台的电控部分,以精密控制磨削头的运行轨迹,经分析此轨迹呈不规则路线。系统硬件框图如图1所示,本系统的主控芯片是STM32F407,该芯片主频高达168 MHz,PWM定时器的频率同样可以达到168 MHz,在频率要求较高的设计中有较显著的优势。同时对于定时器中断控制PWM数量可以防止中断嵌套,且可以显著减少中断现场保护的开销,且该芯片支持SPI、CAN、I2C 等多种协议。
主机和从机分别用两台两相步进电机来带动X轴和Y轴滑台,步进电机用M860驱动器来驱动。STM32主控板给驱动器发送PWM信号、方向和使能信号,驱动器经过光耦隔离并细分后来驱动步进电机。本系统主机和从机之间用CAN总线来进行通信,CAN总线具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点[4]。主机和从机可以单独运行,只有当需要的时候采用CAN总线来进行同步。主机设置PWM的频率、滑台位置等数据以及发送开始运行、停止运行等信号,从机通过CAN总线接收相关数据和指令。当从机结束运行就会发送结束信号给主机。主机和从机之间通过CAN总线进行同步。
图1 系统硬件框图Fig.1 The system hardware block diagram
2 系统软件设计
2.1 二维滑台的运行模式
以二维滑台为研究对象,滑台由步进电机带动,滑台的运行模式中包含了二维滑台的单独运行和同时运行,假设滑台的齿距为10 mm(步进电机转动一圈,滑台前进10 mm)。假设目标滑台前进距离为L。驱动器细分倍数为、步进电机总步数、PWM脉冲总个数为别为n、N、P[5]。 则
为了便于计算,此次设计将驱动器细分倍数设为5,则
即当滑台需要前进距离为L mm时,则步进电机总步数以及PWM脉冲总个数也应该为100 L。
图2 二维滑台不规则运动轨迹Fig.2 Irregular track of the two-dimensional ramp
如图2所示是二维滑台的不规则运动轨迹,轨迹由直线、斜线、圆弧组成。各种轨迹实现方法如下:
1)斜线轨迹
由图2可知,二维滑台有同时运动和结束的过程,对于斜线部分X轴滑台运距离为n1的过程中Y轴滑台同时运行距离为n2。有公式2可知X轴滑台和Y轴滑台运行n1和n2的距离所需要的PWM的脉冲个数分别为P1、P2则有 P1=100n1,P2=100n2,以 X 轴为基准,则
STM32定时器产生的PWM频率由系统时钟f、预分频值M、计数周期T决定[3],系统时钟f和和预分频值M不变,以改变计数周期T来改变PWM的频率。
以X轴滑台为基准,Tx、Ty分别为X和Y轴定时器计数周期,Vx、Vy分别为X轴和Y轴定时器频率,则有
因X轴和Y轴同时运行相同的时间,则有
由公式(4)~(7)可得,Y轴定时器的计数周期Ty为
2)单滑台运动轨迹
如图2所示,对于距离为n3的部分,由于只需要在X轴方向上运动,由公式2可知需要的PWM数量为100n3,因此只需要设置X轴定时器的PWM频率为固定值。并且计数100n3个PWM数量然后停止,轨迹在X轴方向上运动的距离就为n3。
而对于距离为n4的部分,和n3部分唯一不同的地方就是此时只需在Y轴方向运动。因此只需要设置Y轴定时器的PWM频率为固定值,并且计数100n4个PWM然后停止。
3)圆弧轨迹
而圆弧部分是以直线切割的方式实现的,圆弧角度为90度,D点是圆弧的中心点,圆弧半径为55 mm。
D点以上以X轴为基准,假设X轴定时器产生的PWM频率为,每输出100个PWM时Y轴定时器频率变换一次。假设A点变换了n-1次PWM,而B点变换了n次PWM,则A点坐标为(100(n-1),Ya),B点坐标为(100n,Yb),圆弧半径为R,则有
由公式(9)和(10)可得,A点和B点在Y轴上的变化值为△y
由公式(5)~(11)可得Y轴定时器的计数周期Ty为
但是由于圆弧中点对应的X轴的PWM数量往往不是100的倍数,所以假设C点是离中点D最近的点,C点变换了m次PWM,则C点X轴坐标为100m,D点X和Y轴的坐标R都为,则有
以X为基准时最后变换的一步计数周期T为
在D点以下以Y轴为基准,假设Y轴定时器产生的PWM频率为Vy固定不变,每输出100个PWM时X轴定时器频率变换一次。假设E点变换了i-1次PWM,而F点变换了i次PWM,则E点坐标为(X e,Y d-100(i-1)),F点坐标为(X f,Y d-100i),圆弧半径为 R,则有
由式(16)和(17)可得,E点和F点在X轴上的变化值为
由式(5)、(6)、(7)、(18)可得 X 轴定时器的计数周期 Tx 为
通过式(8)、(1)1、(19),在程序的每一步中设置 Tx、Ty 的值来实现X、Y轴滑台以所要求的轨迹运动。
2.2 统软件流程图
如图3所示是系统软件的流程图,系统在初始化时为了防止意外的碰撞,需要寻找零点,寻找零点结束后进行滑台转速、轨迹中每一步PWM数量的设置,并通过CAN总线将设置的数据发送给从机。设置完成后,当主机检测到物件过来的信号后,将开始运行的信号通过CAN总线发送给从机,使主机与从机同时开始运行,当从机运行完成后发送反馈信号给从机,主从机同时停止运行。当一次运行完成以后看情况确定是否需要重新设置参数,如果需要重新设置则进入滑台运行轨迹参数设置狂态,否则进入等待运行状态。
图3 系统软件的流程图Fig.3 Flow chart of system software
在主从机运行过程中,由滑台运行模式可知,滑台是以不规则的轨迹运行的。因此根据滑台的运行模式,在每一步运行之前需要计算滑台运行的距离及两个滑台的PWM频率。
3 系统测试
将该系统运用到实际的环境中,以垂直于地面放置的二维滑台为研究对象,使滑台以图2中的轨迹运行。在设备运行的起始点做标记,设置滑台运行在90秒/圈,45秒/圈,30秒/圈三种速度下,并且分别运行10圈,15圈,20圈,25圈得到运行结束时与起始点的距离,如表1所示,同样转速时转动圈数越多误差越大;转动相同圈数的情况下,滑台转速越高误差也是越大。
表1 系统误差Tab.1 System error
经过实际分析得出,这些误差是由两方面造成的。一方面,由于滑台是垂直于地面放置,滑台在下降过程中难免会因为重力的作用而下降。另一方面,在定时器输出PWM数量固定的情况下,由于在系统运动过程中需要改变经常需要改变PWM的频率,而改变一次PWM的频率会有1个CLOCK的延迟。
4 结束语
本文介绍了用STM32控制滑台运行不规则轨迹的计算方法,在此基础上提出了用定时器中断的方法精确控制PWM数量。通过精密控制X轴和Y轴的滑台,使磨削头能以直线、斜线和弧线的轨迹精确运动,达到成功磨削工件的目的。经过实际的测试表明该系统工作稳定,精确度较高。
本次设计是二维的滑台,但设计的思想和方法也可推广到三维滑台的控制设计。要想获得更精确的步进电机控制,可考虑使用DSP作为主控芯片,从而可以有更高的运算速度和控制精度[8-9]。本论文精确控制两维滑台运行轨迹的方法可推广应用到许多步进电机控制的项目中,比如本实验室另一个项目---显微镜电动载物台的精密控制。
[1]梁军龙.基于STM32F407的永磁同步电机伺服控制器设计[J].山西电子技术,2014(1):28-30.LIANG Jun-long.The Design on Servo Controller of Permanent Magnet Synchronous Motor Based on STM32F407[J].Shanxi Electronic Technology,2014(1):28-30.
[2]刘慧英,范宝山.基于STM32的多步进电机控制系统研究[J].测控技术,2010,29(6):54-57.LIU Hui-ying,FAN Bao-shan.Study of Control System of Multiple Step Motors Based on STM32 [J].Measurement&Control Technology,2010,29(6):54-57.
[3]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天出版社,2008.
[4]王永虹,徐炜,郝立平.STM32系列ARM Cortex_M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.
[5]章欢.基于CAN总线的火灾报警系统的设计与实现 [D].武汉:武汉理工大学信息工程学院,2008.
[6]宋锦.步进电机的单片机控制方法[J].武汉工程职业技术学院学报,2006,18(3):59-63.SONG Jin.Discussion on control of the step by step motor through single chip computer[J].Journal of University for Staff and Workers of Wuhan Iron and Steel(Group)Corporation,2006,18(3):59-63.
[7]金元郁,李勇,李园园.基于FPGA的步进电机控制器设计[J].单片机与嵌入式系统应用,2007(3):70-71.JIN Yuan-yu,LI Yong,LI Yuan-yuan.Design of step motor controller based on FPGA[J].Microcontrollers&Embedded Systems,2007(3):70-71.
[8]任明岩,孙金英.基于PIC16C621A和A3955的步进电机驱动器设计[J].电子产品世界,2007,3(22):98-101.REN Ming-yan,SUN Jin-ying.Design of stepper motor driver based on PIC16C621A and A3955 [J]. Electronic Engineering&Product World,2007,3(22):98-101.
[9]高琴,刘淑聪,彭宏伟.步进电机控制系统的设计及应用[J].制造业自动化,2012,34(1):150-152.GAO Qin,LIU Shu-cong,PENG Hong-wei.Design and application of control system of stepper motor[J].Manufacturing Automation,2012,34(1):150-152.