打印

步进电机

[复制链接]
1602|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfengcom|  楼主 | 2008-10-12 12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问用单片机控制步进电机的变速,其中加速恒速减速程序怎么写啊,在网上找不到实用的例子,只找到了一个例子但不大理解,谁讲解一下啊,谢谢
设电动机的加速时的第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为该程序段总的脉冲步数。

相关帖子

沙发
5880527| | 2008-10-12 12:56 | 只看该作者

查表是个不错的方法

我这样的笨人一直都用这样的笨方法,很好使

使用特权

评论回复
板凳
wenfengcom|  楼主 | 2008-10-12 14:03 | 只看该作者

楼上能不能给个例子学习一下啊,谢谢

使用特权

评论回复
地板
5880527| | 2008-10-12 14:21 | 只看该作者

把你那些数据用EXCEL做出来,放到程序里就可以了,很简单的

适时计算比较费劲,反正我用的51没那么快的速度

使用特权

评论回复
5
wenfengcom|  楼主 | 2008-10-12 19:11 | 只看该作者

fi = sqrt_16(2*A*i+f0*f0)这是怎么推导出来的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

217

帖子

2

粉丝