我正在尝试使用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();
}
有关为什么这不起作用的任何想法? 我在这里尝试了几种变化而没有运气。
提前感谢您的帮助。
此致 詹姆斯
答案 0 :(得分:2)
经过一些测试,看起来问题只是速度。
原始代码(带有手动引脚移动的代码)为步骤生成了一个非常高频的时钟(我认为接近1MHz)。
因此,当使用400步/秒的最大速度时,用户可以认为电机已停止。事实上,电机正在旋转,速度太慢。
为确保电机正常工作,检查控制器上的步进针是否为脉冲就足够了。或者,只需提高速度即可看到电机实际旋转。
但是,有一句话。所有这些步骤真的有必要吗?我的意思是,如果电机转动的速度很慢,可能是因为你将驱动器置于微步进模式(每步可能是32或64个脉冲)。如果是这种情况,也许你应该降低这个,除非你真的需要非常精确的动作(但那时你将不得不牺牲速度)