基于FPGA的步进电机变速控制系统研究
2013-03-31马帅旗
马帅旗
(陕西理工学院电气工程学院,陕西汉中723003)
步进电机是一种将电脉冲信号转变为旋转运动角位移或线位移的数字式传动装置,在额定负载范围内,步进驱动器每接收到一个脉冲信号,驱动步进电机按设定的方向转动一个固定的步进角 (细分时为细分步距角)。因而,步进电机的控制不需要额外的测量反馈单元,只需调节驱动步进电机的脉冲频率和周期,间接地控制电机转动的速度和加速度,从而实现准确定位和调速的目的[1-2]。
在控制多台步进电机生成复杂的速度曲线时,由于步进电机驱动信号的时序要求苛刻,速度计算复杂,从而使得调速过程复杂。文献[3]给出了基于PIC18F252微处理器的步进电机变速控制方法,该方法直观、简洁,但不适于对多步进电机进行实时速度控制。文献[4]给出了基于积分定时和梯形近似调频法的步进电机速度控制方法,该算式调速精确,但涉及大量除法运算,不适合用并行处理的现场可编程逻辑阵列控制步进电机[5]。作者采用CYLONEIII系列FPGA芯片,对现有步进电机速度控制算法进行简化和改进,充分发挥FPGA高速、并行处理能力,实现双步进电机精确定位和实时速度控制,提高了系统的控制性能,降低了系统成本[6]。
1 步进电机加减速策略
在步进电机控制中,为了使步进电机沿一定方向旋转,必须依一定顺序轮流给定子绕组通电。根据输入的驱动脉冲信号及运转方向信号,由驱动模块产生变化电流序列,驱动脉冲的频率和个数决定步进电机转动速度和停止位置。在实际应用中,驱动的脉冲信号启动频率不能太高,一般为几百到三四千赫兹之间[7]。能量的作用过程需要时间,步进电机不可能从静止状态直接进入高速工作状态。如果以较高频率启动,容易产生堵转或失步现象。通常步进电机的启动频率低于最高空载频率,而稳定运行的工作频率远大于启动频率。步进电机的速度控制过程由升速、高速和降速3个运行阶段组成[8],步进电机的速度与驱动脉冲的频率成正比,升速过程是从突跳频率起始,逐渐升频至高速运行频率,然后高速运行;降速过程是从高速运行的频率降速经突跳频率,然后停止运行。起步时的突跳频率不能过大,否则会导致堵转或失步。升降速曲线会影响电机的定位精度和运行平稳性,通常采用阶梯型、直线型、指数型或抛物型等进行变速控制[4]。如图1所示为直线型升、降频曲线,其中C0为突跳频率处对应计数值,Cr为高速运行时对应计数值,T为总线时钟周期。
图1 步进电机直线型升降频曲线
利用计数器产生步进电机驱动脉冲信号,为了使步进电机的速度尽快逼近期望速度曲线,需要准确地计算驱动脉冲的延迟时间。若计数模块的时钟周期为T,计数值为c,步进角为α,则延迟时间Δt=cT;若运行的步数为n,步进电机的位置因而角速度
考虑到理想步进电机、步进角α和脉冲个数n,则第一个脉冲的计数值到达角度φ的时刻写成差分方程:
则
在步进电机的控制中,现场可编程逻辑器件擅长于逻辑处理,进行乘除法运算时将消耗大量的逻辑资源,利用泰勒级数展开Cn表达式,忽略展开式的高次余项来降低计算的复杂性,因为:
所以
这种计算计数值的方法比求平方根速度要快,但在n=1时引入0.448 5的误差[9],通过给C1乘以0.676补偿这种误差,即系统的简化处理及误差补偿结果如表1所示。
表1 角速度近似误差表
2 系统硬件设计
多步进电机调速系统结构框图如图2所示,主要由现场可编程逻辑器件FPGA、高速光耦、步进电机细分驱动器和三相反应式步进电机等组成。FPGA采用EP3C25芯片,该芯片内部含有24 KB的LE单元、594 KB RAM资源、66个硬件乘法器、4个硬件乘法器、20个全局时钟网络,NIOS II核可在120M时钟下稳定工作,具有性能高、成本低、功耗低的特点。该系统利用FPGA接收主机发送的控制信号,并由内部两个并行处理模块产生驱动脉冲信号,经过高速光耦HCPL063输入给环形分配器,进行放大后驱动步进电机运行。
图2 系统结构框图
3 系统软件设计
软件设计时,首先根据x-y两个轴向运行的轨迹,分别计算出x-y轴向需要运行的步数;然后根据步进角、角加速度和时钟周期,计算初始时刻计数值C0;再采用迭代法计算出在加减速过程中每个步进脉冲期间的计数值;最后根据计数值大小产生PWM波,实现步进电机升 (降)速控制。
3.1 指令接收模块
为了提高系统开发效率,在FPGA中嵌入32位软核处理器NIOS II,配置软核的UART端口,编写指令串行接收程序。串口通信协议约定如下:每帧数据包含6个字节,第一个字节为帧头标志24H,后续4个字节依次为x向、y向运动的步数,运行的步数为16位数据,按照低8位字节在前、高8位字节在后的原则,最后一个字节为结束标志00H。若接收到完整的帧头和帧尾,认为接收的为有效帧,解析轴向的控制指令,进行容错和滤波处理,将其存入相应轴向的FIFO缓冲单元,指令接收状态机如图3所示。
图3 接收模块状态机
3.2 步进电机调速模块
图4 速度控制模块状态机
步进电机调速模块根据当前步进电机运行的状态及接收的运行指令,决定步进电机下一步运行的状态。假设系统从跳变频率升速至最高速时需要加速nu步,从最高速降速至停止时需要减速nd步。若前一时刻接收到的指令需要运行步数为np,已运行至第k步。若加速阶段接收到新的运行总步数nn,则执行加速步数为nu-k步,高速运行步数为nn-nu+k-nd步,减速步数为nd;若高速运行阶段接收到新指令运行总步数nn,则不执行加速过程,高速运行步数为nn-nd步,减速步数为nd步;若减速阶段接收到新指令运行总步数nn,则加速步数为nu+k-np步,高速运行步数为nn-nu-k+np-nd步,减速步数为nd。具体状态机如图4所示。
4 实验验证与分析
在系统实验测试过程中,采用Altera公司的FPGA EP3C25开发平台进行步进电机变速控制实验,外接25 M有源晶振。通过锁相环获得100 M计数时钟信号,利用FPGA高速计数器产生两路脉冲信号,经过高速光耦隔离模块HCPL-2631驱动x-y轴向坐标仪,x-y轴向步进电机的步距角为3°,步进电机转矩在 800 Hz后随频率增加迅速减小,因而驱动脉冲周期最长为2 ms,计数值最大为2 000,设计16位计数器可以满足系统要求。图5为某次试验中给定不同步数对应的加减速运行轨迹。
图5 不同步数对应加减速曲线
5 结论
给出了一种基于FPGA的双轴步进电机线性调速方法,并在EP3C25实验平台上进行验证,结果表明该方法运行稳定可靠,满足现有步进电机调速和精确定位要求,在工业现场有一定的应用价值。
【1】陈飞,易春峰.两自由度步进滑台点位控制系统设计[J].机床与液压,2009,37(1):133-135.
【2】刘俊,刘京诚,谢磊,等.太阳光自动跟踪装置的设计[J].机床与液压,2010,38(9):45-48.
【3】AUSTIN David.Generate Stepper-motor Speed Profiles in Real Time[EB/OL].[2005-01-06].http://www.eetindia.co.in/ARTICLES/2005JAN/EEIOL_2005JAN03_ EMS_TA.pdf.
【4】何平,李岳,徐小军.基于DSP的步进电机高精度变速控制研究[J].兵工自动化,2007(11):86-87.
【5】贾达,邹益民.基于FPGA的电机控制模块[J].计算机工程与设计,2010(14):3237-3240.
【6】杨秀增.基于FPGA的高速五轴步进电机运动控制卡设计[J].机床与液压,2012,40(4):66-68.
【7】马刚,曾平,吴自力.基于FPGA多轴差补控制器设计与实现[J].计算机工程与设计,2008(15):3912-3914.
【8】刘慧英,范宝山.基于STM32的多步进电机控制系统研究[J].测控技术,2010(6):54-57.
【9】Atmel.AVR446:Linear Speed Control of Stepper Motor[EB/OL].http//www.atmel.com/dyn/resources/prod_ documents/doc8017.pdf.