我试图控制一个24V的NEMA23步进电机使用ArduinoMega 2560 (R3)。
我用的是ST 5045的司机。
当我使用默认的Arduino步进程序库时,马达运行良好。
我用引脚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();
}知道为什么这不管用吗?我在这里尝试过几种变体,但没有运气。
提前感谢您的帮助。
你好,詹姆斯
发布于 2016-04-28 20:14:00
经过一些测试,看起来问题就在于速度。
最初的代码(有手动引脚移动的代码)为这些步骤(我认为接近1 1MHz)产生了一个非常高频率的时钟。
因此,当使用400步/秒的最高速度时,用户可以认为电机停止了。实际上,马达在旋转,只是太慢了。
为了确保马达工作正常,检查控制器上的步进针是否脉冲就足够了。或者,只需提高速度,以查看电机实际旋转。
不过有句话要说。这些步骤真的有必要吗?我的意思是,如果马达的转动速度真的很慢,也许是因为你把驱动器设置为微步模式(可能是32或64脉冲/步)。如果是这样的话,也许你应该降低这个值,除非你真的需要非常精确的动作(但这样你就不得不牺牲速度)。
发布于 2022-10-11 03:16:30
我在这里参加球赛有点晚了,但6年后我遇到了一个类似的问题,其他的网络信息也不多,所以我想我应该把它发出去。
我使用的是一个DM320T步进驱动器,我的马达没有旋转。我不得不使用这个: setMinPulseWidth(20)。它解决了我所有的问题,现在起作用了。
这个步进驱动程序的最小脉宽大约为每文档2.5微秒,但我必须将其设置为20才能达到预期的结果。
https://stackoverflow.com/questions/36906090
复制相似问题