基于ARM芯片S3C4510的步进电机加减速控制

  随着工业的发展,嵌入式技术应用日益广泛和成熟。ARM嵌入式处理器作为一种32位高性能、低功耗的RISC芯片,支持多种操作系统、主频高、运算处理能力强,并可兼容8/16位器件,还能带海量低价的SDRAM数据存储器。得到各行各业的青睐,已经显示出强大的功能和巨大的商业价值。尤其在控制领域获得了越来越为广泛的应用。利用以ARM为内核的嵌入式微处理器进行运动控制系统的开发,有着广阔的发展空间。
  在一些要求低成本的运动控制系统中,经常用步进电机做执行元件。步进电机在这种应用场合下最大的优势是:可以开环方式控制而无需反馈就能对位置和速度进行控制。但也正是因为负载位置对控制电路没有反馈,步进电机就必须正确响应每次励磁变化。如果励磁频率选择不当,电机不能够移到新的位置,那么实际的负载位置相对控制器所期待的位置出现永久误差,即发生失步现象或过冲现象。因此步进电机开环控制系统中,如何防止失步和过冲是开环控制系统能否正常运行的关键。

步进电机加减速控制原理
  失步和过冲现象分别出现在步进电机启动和停止的时候。一般情况下,系统的极限启动频率比较低,而要求的运行速度往往比较高。如果系统以要求的运行速度直接启动,因为该速度已超过极限启动频率而不能正常启动,轻则可能发生丢步,重则根本不能启动,产生堵转。系统运行起来以后,如果达到终点时立即停止发送脉冲串,令其立即停止,则由于系统惯性作用,会使步进电机转子转到接近终点平衡位置的下一个平衡位置,并在该位置停下,从而产生过冲现象。因此,在步进电机启动或停止时就需要进行加、减速控制。加减速控制多采用软件来实现,分为加速、匀速和减速三个阶段。其控制曲线如图1所示。

图1 步进电机加减速控制曲线

加减速控制方法
  采用微处理器对步进电机进行加减速控制,实际上就是改变输出脉冲的时间间隔,升速时脉冲频率逐渐加快,减速时脉冲频率逐渐变慢。采用恒加速度算法,易操作性强,效果也很好。如图2所示,Δtm时间内相邻脉冲变化完成时,即步进电机转过一步,所以,图2中阴影部分面积为1。

图2 步进电机加减速时脉冲频率变化图


  设电动机的加速时的第m步频率为Fm,第m-1步频率为Fm-1。加速度是F的斜率,设为a,则
a=(Fm-Fm-1)/Δtm;
  另有((Fm + Fm-1)Δtm)/2=1;
  由以上两式可推出:
Fm=(当F0为零时)
A=((fmax-f0)*(fmax+f0))/(2*trans);

软件实现
  采用定时器中断方式控制电机变速时,实际上是不断改变定时器装载值的大小。控制脉冲由ARM芯片S3C4510的定时器发出,则定时器的溢出频率应为二倍的控制脉冲频率。实现函数如下:
void pulse (REG16 f0,REG16 fmax,REG16 tran,REG16 steep)
{ UINT16 I,A;
SysDisableInt(INT_TIMER0);
SysSetInterrupt(INT_TIMER0,OnTimer2);
trans = tran;
A = ((fmax-f0)*(fmax+f0))/(2*trans);
for(i=0;i <= trans;i++)
{ f[i] = sqrt_16(2*A*i+f0*f0);
}
f0 += f0; //2f0
TMOD=0x00; //disable timer0 and timer1
TDATA0=0x2FAF080/f0;//f0=50,000,000/TDATA0
TMOD=0x03; //enable timer0 and timer1 in interval mode
step = steep+steep; //2step
trans = trans+trans;
tempstep=0; //the number of pulse
output = 0;
status = 0; //the state of pulse,high or low
SysEnableInt(INT_TIMER0); }
  其中f0为起始脉冲频率,fmax为到达匀速运行状态时的最大脉冲频率,tran为加速或减速时的过渡脉冲步数,steep为该程序段总的脉冲步数。

结语
  采用以ARM为内核的微处理器主频高、指令执行速度快,能输出较高的脉冲频率,并采用加减速控制方法控制步进电机能平稳高速的运行,因此非常适合用于经济型数控机床中,代替原来基于PC机的数控机床,降低成本。
  另外需要注意的是,嵌入式数控系统的开发一般都是基于嵌入式实时操作系统的,比如UC/0S-II。而操作系统的本身都要依赖于定时中断作为调度的基础,在移植操作系统和选择控制步进电机的定时器时要特别小心,两者不能产生冲突和影响,否则整个系统将会崩溃。