【发布时间】:2016-04-28 05:37:22
【问题描述】:
我正在尝试使用 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();
}
知道为什么这不起作用吗? 我在这里尝试了几种变体,但都没有运气。
提前感谢您的帮助。
问候, 詹姆斯
【问题讨论】:
-
你试过图书馆的constant speed example吗?当然,您应该将您的定义用于步进驱动程序..
-
我也尝试过,包括我将 1、2 和 4 作为 AccelStepper 定义的第一个参数的变体。
-
好吧,不,如果您有一个带有“STEP”和“DIR”输入的步进驱动器,
AccelStepper stepper3(1, 31, 30);应该保持这种状态......所以它适用于您的原始代码,但不适用于示例?你让它运行了很长时间吗?因为看起来你的电机真的很慢(在你的代码中你每秒发送大约 1M 步),所以它可能只是在缓慢移动...... -
就是这样。在原始代码中,我将 maxspeed 增加到 4000,现在我可以看到它移动得很慢。所以,我只会玩速度,直到我得到我想要的。非常感谢。如果您将您的评论作为答案,我可以接受并且您获得积分(如果您想要的话)。再次感谢。
标签: arduino