首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单销步进电机驱动

单销步进电机驱动
EN

Stack Overflow用户
提问于 2022-05-08 01:55:46
回答 1查看 235关注 0票数 0

我试图移动一个步进电机(12伏特28BYJ-48)与一个A4988驱动器使用Arduino。马达只会以一个速度向一个方向运动。,我想用一个引脚来驱动这个马达。

因为我不关心它移动的方向,所以我假设我不需要给"DIR“输入一个引脚,但是我似乎只有在包括它的情况下才能让它移动。我尝试过使用BasicStepperDriver/Stepper库,但它们似乎只能使用两个引脚。

是否有可能用一个引脚驱动步进电机?,如果有,我怎么做?

EN

回答 1

Stack Overflow用户

发布于 2022-05-08 02:48:02

您可以硬连接驱动器的DIR引脚,使其成为HIGHLOW,以设置一个固定的方向。不要让它保持浮动,因为它可能导致意外的方向变化。还可以使用限流电阻器。当然,您也可以在代码中设置DIR引脚状态。

步进驱动程序有一个简单的STEP/DIR接口,只有两个连接(如果包括GND)。在步进针上施加一个短电压脉冲,使其移动一步,通过驱动DIR引脚逻辑HIGHLOW来设置方向。

当你知道这一点时,将步进器朝一个方向行驶就像向你的司机的步进针发送一个短脉冲一样简单。当然,你也可以用一个简单的按钮代替一个微控制器,脉冲就是脉冲。

每台步进电机都有一步/转率,例如200/360°或一步角额定值,例如1,8°。因此,如果你在驱动器的步进针上脉冲200次,电机就会移动一个完整的旋转,或360°。当然也有镜像,但这是一个非常离题的话题。

在您的简单用法中,不需要使用库,只需:

代码语言:javascript
复制
int stepPin = 12;
int dirPin = 11;

void setup()
{
    pinMode(stepPin, OUTPUT);
    pinMode(dirPin, OUTPUT);
    digitalWrite(dirPin, HIGH); //set a fixed direction
}

void loop()
{
    digitalWrite(stepPin, HIGH);
    delay(50); //set HIGH pulse length/width
    digitalWrite(stepPin, LOW);
    delay(100); //set time between single steps
}

第一次延迟可以减少到尽可能短。如果你太短了,你的司机可能会错过步长信号。第二个延迟是步骤之间的间隔。这样你就可以调整电机的转速了。你设定的越低,你的马达就会跑得越快。在这个例子中,电机每150毫秒前进一步,当使用200步/旋转电机时,产生的速度将是150ms x 200 / rev = 30000ms / rev = 30s / rev = 2RPM

当然,对于阻塞代码,这只是一个非常简单的例子。要消除阻塞延迟,请在arduino IDE中查看File > Examples > 02. Digital > BlinkWithoutDelay

如果您感兴趣的是步进驱动器如何切换(双极)步进电机的两个线圈,请看一下这简化了交互式动画。

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

https://stackoverflow.com/questions/72157553

复制
相关文章

相似问题

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