相位变换的时间太短了,因为电机属于惰性器件,不能马上响应你的指令,需要延迟时间 |
语句执行也需要时间,适当增加延时时间试试 |
可能是延时时间太短了。还没来的及转就跳到下一条指令去了 |
驱动电流够不够 |
如果步进的时序没有问题,你就要考虑是不是相位变化的时间间隔太快了,马达还没来得及不进一步呢,下一个相位脉冲就过来了. 你在j循环中执行P1 = FFW[j];,增大P1 = FFW[j]之间的时间间隔,你现在的代码,如果没有按键按下,循环周期是DelayMS(50);,是不是太短了? |
有没有虚拟示波器,用示波器测量一下P1.0--P1.3,看看时序是否正确 |