首页 > 请教一个关于步进电机转速的问题

请教一个关于步进电机转速的问题

大家好,小弟在一个项目中用到这个步进电机,程序是javascript写的 ,用ULN2003驱动板,树莓派控制,设置了个setTimeout不停的给4相不同的高低电平,大概这样:

gpio.write(pins[p],0,function()
{
    gpio.write(pins[(p+1)%4],1,function()
    {
        console.log(p);
        p++;
        if(p==4)
        {
            p=0
        }
        setTimeout(_f,10)
    });
});

但是这个间隔小于10左右就效果很不明显了,不知道是程序的问题还是这款步进电机的硬件参数限制的,看了一些优酷上网友做的这种步进电机的demo,速度也差不多,想请教一下专业高手是什么问题,如果程序上的可以如何改进,如果是硬件的限制就不纠结了,或者可不可以把这个四相变成两相,应该如何调整?麻烦大家了!!!!


树莓派运行的是linux操作系统,实时性不高。
要精确的定时要么使用DMA模块,要么就用树莓派+Arduino的组合。


我在公司里问了一下 @Integ

setTimeout理论上的确是没有最小值限制的。

但SOF等网站上都反映,实际上根据JS的运行环境不同而客观上有。就是说Interval值低于多少再往下调就失效了。我估计10有可能就是减小到了这个限度值以下。

这种事情不能理论分析。你应当使用逻辑分析仪直接查看你的节拍信号是否符合你的预期,在Interval减小时是否成功缩减了。

用JS这种高层手段给这种直接驱动硬件的信号似乎不是一个好主意。你也许应该考虑JS提供高层服务,C底层驱动硬件。


步进电机磁场旋转速度过快,转子由于惯性失步了吧。


不用,你那个驱动板不就带了4个LED嘛,你肉眼观察下LED的闪动频率跟你调节后的频率差,估计肉眼就能看出来。


首先 在去掉负载(电机)的情况下 请使用示波器看看2803/2003驱动芯片输出的波形的高电平是不是你需要的高电平

如果空载正常的话 那就是这个时间太小。 电机有惯性的。

【热门文章】
【热门文章】