Arduino Stepper Library Working / AccelStepper不工作

时间:2016-04-28 05:37:23

标签: arduino

我正在尝试使用ArduinoMega 2560(R3)控制24V NEMA23步进电机。
我使用的是ST-M5045驱动程序。

当我使用默认的Arduino Stepper库时,电机运行正常。

我使用引脚31作为步骤,使用引脚30作为方向。

我的代码如下:

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution

void setup() {
  pinMode(30,OUTPUT);
  pinMode(31,OUTPUT);
  digitalWrite(30,LOW);
  digitalWrite(31,LOW);
}

void loop() {
  digitalWrite(31,HIGH);
  digitalWrite(31,LOW);
}

现在,我想使用AccelStepper操作相同的电机,但无法得到任何响应。

我的代码看起来很谎言:

#include <AccelStepper.h>

AccelStepper stepper3(1, 31, 30);

void setup()
{ 
    stepper3.setMaxSpeed(400.0);
    stepper3.setAcceleration(100.0);
    stepper3.moveTo(100000);
}

void loop()
{
    stepper3.run();
}

有关为什么这不起作用的任何想法? 我在这里尝试了几种变化而没有运气。

提前感谢您的帮助。

此致 詹姆斯

1 个答案:

答案 0 :(得分:2)

经过一些测试,看起来问题只是速度。

原始代码(带有手动引脚移动的代码)为步骤生成了一个非常高频的时钟(我认为接近1MHz)。

因此,当使用400步/秒的最大速度时,用户可以认为电机已停止。事实上,电机正在旋转,速度太慢。

为确保电机正常工作,检查控制器上的步进针是否为脉冲就足够了。或者,只需提高速度即可看到电机实际旋转。

但是,有一句话。所有这些步骤真的有必要吗?我的意思是,如果电机转动的速度很慢,可能是因为你将驱动器置于微步进模式(每步可能是32或64个脉冲)。如果是这种情况,也许你应该降低这个,除非你真的需要非常精确的动作(但那时你将不得不牺牲速度)