基于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;由以上两式可推出: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; //2f0TMOD=0x00; //disable timer0 and timer1TDATA0=0x2FAF080/f0;//f0=50,000,000/TDATA0TMOD=0x03; //enable timer0 and timer1 in interval modestep = steep+steep; //2steptrans = trans+trans;tempstep=0; //the number of pulseoutput = 0;status = 0; //the state of pulse,high or lowSysEnableInt(INT_TIMER0); }其中f0为起始脉冲频率,fmax为到达匀速运行状态时的最大脉冲频率,tran为加速或减速时的过渡脉冲步数,steep为该程序段总的脉冲步数。结语采用以ARM为内核的微处理器主频高、指令执行速度快,能输出较高的脉冲频率,并采用加减速控制方法控制步进电机能平稳高速的运行,因此非常适合用于经济型数控机床中,代替原来基于PC机的数控机床,降低成本。另外需要注意的是,嵌入式数控系统的开发一般都是基于嵌入式实时操作系统的,比如UC/0S-II。而操作系统的本身都要依赖于定时中断作为调度的基础,在移植操作系统和选择控制步进电机的定时器时要特别小心,两者不能产生冲突和影响,否则整个系统将会崩溃。