请问用单片机控制步进电机的变速,其中加速恒速减速程序怎么写啊,在网上找不到实用的例子,只找到了一个例子但不大理解,谁讲解一下啊,谢谢 设电动机的加速时的第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++) { fi> = 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为该程序段总的脉冲步数。
|