首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino Stepper库工作/AccelStepper不工作

Arduino Stepper库工作/AccelStepper不工作
EN

Stack Overflow用户
提问于 2016-04-28 05:37:22
回答 2查看 3.6K关注 0票数 0

我试图控制一个24V的NEMA23步进电机使用ArduinoMega 2560 (R3)。

我用的是ST 5045的司机。

当我使用默认的Arduino步进程序库时,马达运行良好。

我用引脚31作台阶,用引脚30作方向。

我的代码看起来是:

代码语言:javascript
复制
#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操作同样的马达,但是没有任何反应。

我的代码看起来是假的:

代码语言:javascript
复制
#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();
}

知道为什么这不管用吗?我在这里尝试过几种变体,但没有运气。

提前感谢您的帮助。

你好,詹姆斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-28 20:14:00

经过一些测试,看起来问题就在于速度。

最初的代码(有手动引脚移动的代码)为这些步骤(我认为接近1 1MHz)产生了一个非常高频率的时钟。

因此,当使用400步/秒的最高速度时,用户可以认为电机停止了。实际上,马达在旋转,只是太慢了。

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

不过有句话要说。这些步骤真的有必要吗?我的意思是,如果马达的转动速度真的很慢,也许是因为你把驱动器设置为微步模式(可能是32或64脉冲/步)。如果是这样的话,也许你应该降低这个值,除非你真的需要非常精确的动作(但这样你就不得不牺牲速度)。

票数 2
EN

Stack Overflow用户

发布于 2022-10-11 03:16:30

我在这里参加球赛有点晚了,但6年后我遇到了一个类似的问题,其他的网络信息也不多,所以我想我应该把它发出去。

我使用的是一个DM320T步进驱动器,我的马达没有旋转。我不得不使用这个: setMinPulseWidth(20)。它解决了我所有的问题,现在起作用了。

这个步进驱动程序的最小脉宽大约为每文档2.5微秒,但我必须将其设置为20才能达到预期的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36906090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档