如何使用A4988驱动程序和Arduino控制步进电机

在这个arduino教程中,我们将学习如何控制一个步进电机使用A4988步进驱动器。您可以观看以下视频或阅读下面的书面教程。

概述


A4988是一种用于控制具有内置转换器的双极步进电机的微步进驱动器,便于操作。这意味着我们可以从我们的控制器中使用2个引脚控制步进电机,或者用于控制旋转方向,另一个用于控制步骤。

A4988-Stepper-Driver

驱动程序提供五个不同的步骤分辨率:全步,蜂章步骤,四分之一步骤,八步和十六步。此外,它具有用于调节电流输出,过度温度热关断和交叉电流保护的电位器。

其逻辑电压从3到5.5 V,如果提供良好的附加冷却,每相的最大电流是2A或1A连续电流每相没有散热片或冷却。

A4988-Specifications

A4988步进驱动器引脚


现在让我们仔细查看驱动器的引脚并用步进电机和控制器挂钩。因此,我们将从右侧右侧开始使用2个引脚,以供电,我们需要将它们连接到3到5.5 V的电源,以及我们的控制器,Arduino将成为我们的控制器电路板将提供5 V.以下4个引脚用于连接电机。1A和1B销将连接到电动机的一个线圈和2A和2B销上的电动机的另一个线圈。为了为电机供电,我们使用下一页,地面和VMOT,我们需要将它们连接到8到35 V的电源,我们还需要使用至少47μF的去耦电容,用于保护驱动板免受电压尖峰。

A4988电线图

接下来的两个引脚,步骤和方向是我们实际上用来控制电机运动的引脚。方向引脚控制电机的旋转方向,我们需要将它连接到微控制器上的一个数字引脚,或者在我们的情况下,我将它连接到我的Arduino板的引脚4。

使用步进引脚,我们控制电机的mirosteps,并且每个脉冲发送到该引脚电机移动一步。因此,这意味着我们不需要任何复杂的编程,阶段序列表,频率控制线等,因为A4988驱动程序的内置转换器会负责一切。在这里,我们还需要提到这2个引脚没有在内部的任何电压下拉,因此我们不应该将它们漂浮在我们的程序中。

接下来是睡眠销和逻辑低电平放置电路板以最小化电机不使用时的功耗。

接下来,复位引脚将转换器设置为预定义的家庭状态。从A4988数据表的这些数字可以看出这个家庭州或家庭Microstep位置。因此,这些是电机启动的初始位置,并且根据MicroStep分辨率,它们不同。如果输入状态为此引脚是逻辑低,所有步骤输入都将被忽略。RESET引脚是浮动引脚,因此如果我们没有意图在我们的程序中控制它,我们需要将其连接到睡眠PIN,以便使其高并使能电路板。

A4988-Truth-Table1

接下来的3个引脚(MS1,MS2和MS3)用于根据上述真理表选择五步分辨率中的一个。这些引脚具有内部下拉电阻,如果我们将它们断开连接,则板将以完整的步进模式运行。

最后一个,使能引脚用于打开或关闭FET输出。因此,逻辑高将使输出处于禁用状态。

此Arduino教程所需的组件


您可以从以下任何网站获取组件:

必威外围提钱披露:这些是附属链接。作为一个亚马逊助理,我从合格的购买中赚取。

电路原理图


这是完整的电路图。完整步骤中我将使用驱动模式,所以我将离开3针女士断开连接,连接的方向和开车到针的针步数字3和4在Arduino董事会和地面和驱动板的5 V别针。此外,我将使用100µF电容器去耦和12V, 1.5A适配器为电机供电。我将使用NEMA 17双极步进电机,其线a和C将连接到引脚1A和1B, B和D线连接到2A和2B引脚。

控制步进电机电路 - 方法

限流


在连接电机之前,我们应该调整驱动器的电流限制,以确保电流在电机的电流范围内。我们可以通过使用电路板上的电位器调整参考电压并考虑该等式来实现这一点:

当前限制= Vref x 2

参考电压测量3

然而,随着A4988驱动板的不同制造商,这种等式并不总是正确的。这是我的案例的演示:我调整了电位器,测得0.6V参考电压。因此,电流限制应为0.6 * 2,等于1.2 A.

参考电压测量4

现在因为我是在Full Step Mode下使用驱动器,根据A4988 Datasheet,在Full Step Mode下绕组电流只能达到电流限制的70%,所以1.2A*0.7等于0.84A。为了检查这一点,我上传了一个简单的代码,发送连续的逻辑高步进引脚(以便我们可以更好地注意到电流),并将我的仪表串联与电机的一个绕组,并供电。我得到的是0.5A,这意味着这个方程对我的情况不正确。

参考电压测量5

Arduino和A4988代码


下面是一个示例代码。首先,我们必须定义步骤和方向针。在我们的例子中,它们是Arduino Board上的引脚3和4,它们被命名为stepPin和dirPin,在设置部分,我们必须将它们定义为输出。

/ *简单的步进电机控制Exaple Code * * by dejan nedelkovski,www.www.mfxpo.combet188官方网站 * * ///定义PINS Number Const Int Spepin = 3;const int dirPin = 4;void setup(){//将两个引脚设置为输出pinmode(steppin,输出);pinMode (dirPin、输出);} void循环(){digitalwrite(Dirpin,高);//使电动机能够以特定方向移动//使200个脉冲进行200个脉冲(Int x = 0; x <200; x ++){digitalwrite(steppin,高);Delaymicroseconds(500);DigitalWrite(Spepin,低);Delaymicroseconds(500);延迟(1000); // One second delay digitalWrite(dirPin,LOW); //Changes the rotations direction // Makes 400 pulses for making two full cycle rotation for(int x = 0; x < 400; x++) { digitalWrite(stepPin,HIGH); delayMicroseconds(500); digitalWrite(stepPin,LOW); delayMicroseconds(500); } delay(1000); }

在回路部分,首先我们将设置方向引脚在高状态,将使电机在一个特定的方向移动。现在使用这个for循环,我们将使电机做一个完整的循环旋转。驱动器设置为Full Step Mode,步进电机的步进角为1.8度,即200步,我们需要向Step Pin发送200个脉冲来完成一个完整周期的旋转。所以for循环将有200次迭代,每次它将设置步进针高然后低的状态,以制造脉冲。在每个数字写入之间,我们需要增加一些延迟,从这将取决于电机的速度。

在这个完整周期的旋转之后,我们将做一秒的延迟,然后通过将dirPin设置为低状态来改变旋转的方向,现在做两个完整周期的旋转,这个循环有400次迭代。最后还有一秒的延迟。现在让我们上传代码,看看它是如何工作的。

我为本教程做了一个例子,其中我使用电位器控制电机的速度。下面是那个例子的源代码:

/*简单步进电机控制示例代码* * by Dejan Nedelkovski, www.HowToMechatronics.com * */ //定bet188官方网站义引脚数const int stepPin = 3;const int dirPin = 4;int customDelay customDelayMapped;//定义变量void setup(){//设置两个引脚为输出pinMode(stepPin,OUTPUT);pinMode (dirPin、输出);digitalWrite (dirPin、高);void loop() {customDelayMapped = speedUp();//从自定义的speedUp函数获取自定义的延迟值,根据电位器,电机的速度取决于digitalWrite(stepPin, HIGH);delayMicroseconds (customDelayMapped);digitalWrite (stepPin、低); delayMicroseconds(customDelayMapped); } // Function for reading the Potentiometer int speedUp() { int customDelay = analogRead(A0); // Reads the potentiometer int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000) return newCustom; }

121年响应

  1. andres tejada

    你好
    我有一个问题,你能用电位器展示这个方案吗?
    我不知道是怎么联系的。

    thaks很多

    andres.

    回复
  2. 阿克塞尔

    嗨,谢谢你的良好教程。我正在使用你用电位器写的代码。但是,即使我改变了

    digitalWrite (dirPin、高);//使电机能够以特定方向移动

    digitalWrite (dirPin、低);//使电机能够以特定方向移动

    马达一直朝着同一个方向前进,知道为什么吗?

    谢谢

    回复
    • Dejan Nedelkovski.

      这是奇怪的。尝试重新连接驱动程序,并再次尝试代码。除此之外你什么也做不了,因为驱动程序的DIR pin就是为此而设计的。低或高,电机应朝不同方向运动。

      回复
  3. Berat USLU.

    你好,德扬,

    谢谢你的伟大的tut。我跟随你的脚。但结果就像视频一样。在将步进电线连接到A4988之后,它就像振动一样。它喜欢影响种类的磁场。它很奇怪。在我连接之后,Arduino结果就像视频一样。什么可能是问题。
    https://www.youtube.com/watch?v=QeQ7apxoEZs

    谢谢。

    回复
      • Berat USLU.

        现在它的工作!我做了一切。它是如何可能的。我使用12V来为逻辑供电5V供电。但我并不舒缓哪个线圈电缆。我尝试了所有的组合。但现在它的工作......很棒!

        非常感谢。

      • Berat USLU.

        不同的是,我之前从另一个来源获得了逻辑能力。现在我从Arduino上拿走了。给遇到同样问题的人。

        干杯!

  4. 拉尔夫布朗

    你好'
    谢谢你的教程。我一直在努力用电机屏蔽和A4988在UNO上运行3个脚步。我对所有人都没有成功,想我炸了一切,购买了完全替代品,结果相同。感谢您的教程,我终于设法获得了积极的结果。我现在也能够测试所有A4988S,我的2个Uno Boards和Stepers。有趣的是,我没有任何东西!我现在需要考虑如何测试盾牌。
    再次感谢,拉尔夫

    回复
  5. 郭进隆译

    您好,我试图用操纵杆,DRV8825和Arduino Uno控制步进电机。我用电位器使用你的教程,但我的速度有一些困难。在您的教程中,您只有一个方向,您的值为0到1023.我想向右和向左移动电位器,任何关于如何做到的建议?此外,我的电机上的速度比你的教程慢(当电机顺时针且逆时针转动时)。提前致谢,您的教程仍然非常熟练。

    回复
    • Dejan Nedelkovski.

      嗯,您应该调整适合您的驱动程序和步进功能的步骤之间的延迟时间并匹配所需的速度。至于电位器,您应该使用Map()函数并尝试将从电位计的值映射到合适的延迟时间,也可能与“如果”语句有一半值制作“dir”可变正面或负面。

      回复
      • 郭进隆译

        谢谢你的回复,我已经修好了,运行得很顺利。再次感谢一个漫游式教程!

  6. 郭进隆译

    你好,在您的代码与电位器,在您的函数中,您有以下代码://将电位器的读取值从0到1023转换为所需的延迟值(300到4000)。我的问题是,你是如何找到理想的延迟值的?我的电机是Nema 17步进电机。谢谢in advance (I’m trying to control 3 motors wireless in my project )

    回复
  7. 缺口

    伟大的教程!我用电位器玩了一会儿之后,得到了所有的工作。现在我想在同一个Arduino板上再加一个电机/电位器。我试着复制电位器代码中的所有内容,只是重新命名并添加了一些变量。我成功地将我的代码闪到我的Arduino Uno上,但当我改变一个电位器时,两个电机的速度会同时改变。我不知道如何使每个马达独立工作。有什么建议吗?

    回复
    • Dejan Nedelkovski.

      它必须是代码。在具有电位计值的教程示例中,我们更改步骤之间的延迟时间。因此,您需要为两个电机进行单独的延迟变量。如果您可以实现两个电机的主“循环”之外的单独自定义函数,以便它们具有单独的延迟变量,因此您只需在要执行的主“循环”中调用这些自定义函数。
      你懂我的意思了吗?

      回复
      • 缺口

        我想我有你。这是我有的。仍然学习Arduino代码。我的步进电机不想独立工作。

        无效循环(){

        customDelayMappedFeed = speedUpFeed ();//从自定义speedUp函数获取自定义延迟值
        //根据电位计,通过电位计,电机的速度取决于定制延迟的脉冲
        DigitalWrite(STEPPINFEED,高);
        delaymicroseconds(customdelaymappedfeed);
        digitalWrite (stepPinFeed、低);
        delaymicroseconds(customdelaymappedfeed);

        customDelayMappedCut = speedUpCut ();//从自定义speedUp函数获取自定义延迟值
        //根据电位计,通过电位计,电机的速度取决于定制延迟的脉冲
        digitalWrite (stepPinCut、高);
        delaymicroseconds(customdelaymapedcut);
        digitalWrite (stepPinCut、低);
        delaymicroseconds(customdelaymapedcut);

        //读取电位器的函数
        int speedupfeed(){
        int customDelayFeed = analogRead(A0);//读取电位器
        int newcustomfeed = map(customdelayfeed,0,1023,300,4000);//将电位计的读取值从0到1023判断到所需的延迟值(300至4000)
        返回newcustomfeed;

        //读取电位器的函数
        int speedupcut(){
        int customDelayCut = analogRead(A1);//读取电位器
        int newcustomcut = map(customdelaycut,0,1023,300,4000);//将电位计的读取值从0到1023判断到所需的延迟值(300至4000)
        返回newCustomCut;

    • 大卫

      嗨尼克,
      我做了同样的,但似乎第一罐延迟时间被添加到第二罐延迟时间。
      你是怎么处理的?
      我似乎无法对您的帖子进行任何更新。

      回复
  8. 罗伯特弗里伯格

    嗨,我正在构建一个魔方解决机器人使用A4988驱动器和双极步进电机为立方体的每个面,所以这篇文章对我来说是完美的!我正在推特上记录这个项目,请看@robertfriberg

    问题:我看到了一个不同的教程,其中电源和逻辑电路之间的接地。似乎你没有连接地面。有什么不同?

    回复
  9. GermánFernández.

    谢谢,优秀的导师,我的问题是ningún。

    Saludos Protiales.

    回复
  10. Steve Obrien,悉尼,澳大利亚

    感谢您的教程,我使用了您的信息来成功获得我的A4988电路板和步进电机项目的工作。它救了我很多时间!但我确实必须改变步进接线,插图显示了从电机直接通过电机进入A4988板的电线,但我不得不穿过它们。我的步进是一个NEMA 17HS3001-20B,它有4个电线和类似的电机连接。在您页面的下一个版本中是否值得在这方面添加警告?

    回复
    • Dejan Nedelkovski.

      我很高兴听到你觉得它有用!这些马达有很多不同的制造商,所以每一个都可能有不同的引脚顺序。因此,在连接之前,你应该总是检查电机的数据表。

      回复
  11. 马纳斯玻色

    尊敬的先生,

    我已经看到了你的视频如何控制步进电机,这是一个很好而漂亮
    教程。

    先生,我有个问题,先生,我想控制步进电机的旋转角度
    0到360和360到0,带有电位器。先生,Arduino软件里有一个skech的例子,叫做
    步进motorknob。先生在这个例子中,Skech四个控制输入有,
    通过使用A4988驱动板,skech不会运行电机。

    先生,请解释一下。

    或者你可以在没有使用图书馆的情况下提出一些傻瓜

    感谢你
    曼斯

    回复
    • Dejan Nedelkovski.

      我可没有这样的准则。但这里有一个技巧,你如何做到:映射电位器的值从0到步进电机需要的步数,使一个完整的360周期。

      回复
  12. 米格尔

    我有一个疑问,可以用我电脑的4个字母来调节unnema 17的速度,例如字母a = 0速度,b= 25%, c = 50% d= 100,我不想用电位器

    回复
      • 米格尔

        你能帮助我吗?我很困惑,我不知道去过哪里明星,我有这种材料,测试A4988 + NEMA17 + Arduino,我不知道如何规范速度

      • 米格尔

        我认为可以控制电机双极U.u的电机CD和你有一个Razon我需要使用串行端口

  13. sc

    你好,漂亮的教程。请问在全步骤模式和MicroStep模式下驱动电机的差异是什么区别,以及如何在模式之间改变?

    回复
    • Dejan Nedelkovski.

      检查我的步进电机-如何工作的文章,以了解模式的差异betway。至于这个驱动,选择不同的模式已经在帖子里解释过了。

      回复
  14. 马纳斯玻色

    尊敬的先生,

    我自己是曼斯·贝塞,先生,我正在研究一个项目,我必须在电位器的帮助下控制步进电机步骤控制,而Arduino先生我已经写了一位索利奇,其中一位骗子附着在这里,它正在工作美好的。

    先生现在我想制作这个东西是无线的,先生,我想使用2个Arduino和2个Xbee,在发送侧面A Arduino,Xbee和电位器将在那里。在接收方面,Arduino,Xbee和步进电机将在那里。早些时候我用伺服电机制作的一个设置。

    先生,我和我的朋友没有足够的c++知识,特此请求您的帮助
    在编码中,或者至少如果你可以抛出一些光线。

    希望得到宠爱
    感谢您
    曼斯

    #包括
    int current_position = 0;
    Const char direction_pin = 2;
    const char step_pin = 3;
    Const char pot_pin = 1;/ /模拟输入1
    无效的设置()

    pinMode (direction_pin、输出);
    PINMODE(STEP_PIN,输出);
    pinMode (pot_pin、输入);

    void循环()

    int ReadValue = Analogread(Pot_pin);
    ReadValue = Map(ReadValue,0,1023,0,1151);
    If (readvalue > current_position)

    step_motor_forward();
    current_position + = 1;

    否则if(ReadValue
    step_motor_back ();
    current_position - = 1;

    } //循环结束

    空白step_motor_forward ()

    digitalWrite (direction_pin、低);
    DigitalWrite(Step_pin,高);
    DigitalWrite(STEP_PIN,LOW);

    void step_motor_back()

    digitalWrite (direction_pin、高);
    DigitalWrite(Step_pin,高);
    DigitalWrite(STEP_PIN,LOW);

    回复
  15. 吉米

    嗨Dejan Nedelkovski,祝贺并感谢您分享本教程。
    根据延迟控制代码中步进电机的速度,您写了一个延迟(500微秒)。电位计的映射延迟在(300; 4000)之间。
    我的问题是,你是在哪里发现这些价值观及其局限性的?

    谢谢您的回答

    吉米

    回复
    • Dejan Nedelkovski.

      嗨。我做了测试。例如,如果我设置延迟时间低于250,我想,步进根本不会启动。我尝试的最低延迟时间(最快速度)是90,但在开始时延迟更高,超过300,然后降低电位器到90。
      你也可以在步进驱动的数据表中找到更多关于这个的细节,计时。

      回复
      • 吉米

        感谢您的回复和分享本教程。

        最良好的问候。

  16. 奥拉夫

    嗨Dejan,

    感谢分享本教程。

    只是想知道;你用的是NEMA 17 42BYGHW609(“get one”链接指的是这种类型)?额定电压为3.4 V、1.68 A。

    现在,A4988的最小工作电压为8v。实际上,你规定了一个12v, 1.5 a的电源。这不会导致任何冲突吗?

    干杯,奥拉夫

    回复
    • Dejan Nedelkovski.

      是的,8V - 35v是电机供电电压,所以你可以连接任何适配器,你想在这个范围内。驱动器将负责用适当的电压驱动步进器。

      回复
  17. 洛蒂

    我应该用什么类型的电容器,因为你说要用47微移的电容器,但图表上说要用100微移的。我应该使用什么电容器

    电机:[链接]

    干杯

    回复
  18. 丹尼尔

    德州,

    非常感谢,但是关于电流限制的那部分你能解释的更好吗?我有电源12V 1500mA(电机和你一样),我应该测量什么,需要改变什么?我不明白,谢谢

    回复
  19. 肯尼斯

    非常棒的教程,谢谢。多亏了你,我才重新振作起来。

    我唯一的问题是我的NEMA 17在A4988控制器和UNO板上运行的是它只会运行一个方向。更改代码没有任何内容。我可以通过在控制器上切换电线来获得方向改变,但不是通过更改代码来改变。

    我在这方面是新手,所以希望是简单的东西。

    回复
  20. 疯狂

    嗨Dejan,

    谢谢你这个伟大的教程。我有两个问题:在视频中,电路图(看起来像熏蒸图像的那样)并不显示睡眠和步进销。但它看起来好像在视频的末尾?你能澄清一下是正确的电路吗?

    其次,更重要的是,我发现我的步进电机,一个FSM0815-KD95越来越热。在检查1A-2B驱动引脚的电压后,我发现即使我的代码只是循环“DigitalWrite(Septpin,Low);”两个引脚仍在接收电压。无论如何我可以在电机未运行时使所有引脚的电压为0?这样它不会过热。

    回复
    • Dejan Nedelkovski.

      嗨,谢谢!
      当然,“Step”脚连接到Arduino上,因为它可以控制电机的步长。
      “Sleep”引脚连接到驱动器的“Reset”引脚。
      A4988驱动器的电机电源电压为8 - 35 V ACCROSS VMOT和GND,因此您的电机可能不适合此驱动程序。

      回复
  21. 马克·格兰杰

    德扬,伟大的教程。你介意回答一下这个司机和28bjy-48步车的司机有什么区别吗?它们是可互换的还是每个步进都需要有自己的驱动板?视频里用的那个要便宜得多。”

    谢谢,
    标记

    回复
    • Dejan Nedelkovski.

      谢谢。当然,司机之间是有区别的。即使你只看司机的基本数据,你也能注意到很大的不同。仅仅因为一个更便宜并不意味着它的性能更差。

      回复
  22. 克里斯蒂安

    嗨Dejan!

    首先,感谢你分享你的教程。它非常有用。

    我有一个问题与脚本在我必须使用电位器,¿有没有办法测量电机转速?我的意思是,当我将电位器设置为特定状态时,我想知道每分钟的每分钟是多少。

    谢谢!

    回复
  23. viwawa.

    你好,Dejan,感谢你有用的教程。

    我有一个问题,是否可以用两个驱动器同时控制两个步进电机?电机旋转不一样,比如我想让第一个电机旋转400步CW,其他的同时启动800步CCW。
    我已经试着为它写代码了,但是它的电机不是一起旋转的,电机B只有在电机A完成旋转后才会开始旋转。

    谢谢您的帮助!!

    回复
  24. 肖恩

    刚刚发现您的网站和对步进电机令我困扰的答案。我想说感谢你的精确解释事情的精确解释,更重要的是背景中发生的事情,不仅有你的知识,而且你还花了时间来回答问题。这应该用作其他互联网网站/论坛应该如何的基准标记。谢谢你花时间教他别人!!

    回复
  25. Brian Tozer.

    嗨Dejan。

    arduino是新的,请你向我解释。在第一个示例中,我假设电机在“全速”一直被驱动。然后在第二个例子中,使用电位器改变电机的速度。我的问题是我希望电机一直以缓慢的速度工作,电位器可以被确定的电阻替换,也可以通过初始草图中的额外代码线控制?

    回复
    • Dejan Nedelkovski.

      嗨。在我的例子中,电机的速度是通过调整电机各步之间的延迟时间来控制的,或者如果你知道的话,看看下面的代码:
      Delaymicroseconds(500);

      所以你所要做的就是根据你的需要设置这个值。

      回复
  26. JensBjørn.

    非常好的教程 - 展示如何调整电流限制。一个人应该谨慎而不是在GND和VDD之间制作短路 - 就像我一样。这让我成为一个arduino nano ......

    回复
  27. 詹姆斯泰勒

    有谁知道我可以在哪里获取用于A4988的库文件,用于DipTrace PCB艺术品计划。谢谢

    回复
  28. mark

    很棒的教程,谢谢发布!
    我想用一个Arduino和2 A4988运行两个山步,但有一个电源。你能告诉如何插入第二步吗?
    非常感谢!
    最好的祝福
    mark

    回复
    • Dejan Nedelkovski.

      谢谢!
      这应该是个大问题。您只需要添加另一个驱动程序,并以与第一个相同的方式连接它。也可以用类似的方法修改代码。
      你可以使用相同的电源为电机,但只是要确保它有足够的电力,以供电两个电机。

      回复
      • mark

        你好,德扬,
        谢谢你的回复。
        因此,通过其中一个驱动程序连接电源不是问题?第二步是通过Arduino和驾驶员编号实现权力吗?您将在微控制器上使用哪些引脚?P3 / P4和VDD / GND用于驱动程序编号1.当然我可以使用驾驶员编号2.但是有第二对VDD和GND引脚吗?
        非常感谢!

  29. mark

    你好,德扬,
    谢谢你的回复。
    因此,通过其中一个驱动程序连接电源不是问题?第二步是通过Arduino和驾驶员编号实现权力吗?您将在微控制器上使用哪些引脚?P3 / P4和VDD / GND用于驱动程序编号1.当然我可以使用驾驶员编号2.但是有第二对VDD和GND引脚吗?
    非常感谢!

    回复
  30. Gui

    你好,

    我打算用Arduino Uno使用它,但是,A4988步进驱动程序表示它与Arduino Mega2560兼容。这是否与Arduino Uno合作?

    先感谢您。

    回复
  31. 汉米德

    嗨兄弟

    谢谢你的实用教程和视频。我已经做了同样的程序,但我有一个单极5线步进电机,它只是振动,而不是旋转。我能感觉到马达的微小运动。

    你能帮我吗?

    回复
  32. mavci

    I’m using 17hd1402-01n model step motor.and I also using your codes the above.but when I try to use delay time as 500ms my motor never turn any direction .it is only vibrating.if I set delay time to 1000ms my motor turning . I want to ask you,why my motor don’t turn below 1000ms delay time?I also using a4988 .what is the actual problem.is it step motor or what ?
    谢谢和最好的问候

    回复
  33. 穆罕默德

    大家好你们好
    我有个问题
    我的继电器模型是23HS,并且在其数据表中写入,它需要12 V和3个安置电流。现在我们应该连接12V,3个适配器???

    回复
  34. Kc

    我尝试了与NEMA 17的相同电路。步进没有旋转,但只是造出一些噪音。略微压力切向于轴,它正在制作微电梯运动。我使用3 HW 9Volt电池作为外部电源到VMOT和GND的步进。应该做什么?

    回复
  35. 穆罕默德

    你好,德扬
    我想用这些设备来做这项工作。你能告诉我步进电机的数据表(或在这个项目中用于旋转2kg板的型号)和适配器的电压和安培数吗?因为我是初学者。谢谢

    回复
  36. Stelios.

    你好和好工作!我试试这个tut,但差异很小(32μF帽和9V电池)。
    我上传代码,我可以听到的步骤(500微秒),但电机不转。电路正确。有没有可能电机的4根线和你的示意图不一样?

    回复
  37. 亚历克斯

    如何将12V 2A电源线连接到面包板?你剪了电线,然后插上正极和负端吗?我可以在图片/视频中看到的只是两个红色和黑色电线,但绝不是它们如何连接到电源供应商。我购买了通过上面的链接提供的相同电源供应商。

    回复
    • Dejan Nedelkovski.

      是的,我就是这么做的,剪断电线,然后焊上两根跳线,这样更容易连接到面包板上。然而,不需要这样做,只要得到一个12V适配器插孔。我应该早些添加一个链接到它,但现在更新了。
      顺便说一句,谢谢你的支持!

      回复
  38. 约瑟夫

    伟大的指导!我即将建立我自己的数控2D绘图仪使用DVD驱动器电机+ A4988。我是否需要预先设定X轴和Y轴的位置?我担心会损坏步进电机。电机想要在x轴上移动,但它已经在范围的末端=损坏的电机会发生吗?我需要停止阻止这一切吗?谢谢!

    回复
  39. 本杰明格哈特

    您提供的信息非常好,不仅在这里,而是您发布的所有项目。bet188me我正在寻找带有Arduino Mega的4个独立的步进电机,但LCD使用所有可用的PWM引脚,执行步骤,Dir PIN必须是PWM引脚,或者我可以使用任何数字销(如销22-53)?我注意到我发现的所有步进图书馆都需要使用PWM引脚来工作。

    谢谢你的伟大工作!

    回复
    • Dejan Nedelkovski.

      谢谢!好,STEP和DIR引脚实际上不需要连接到PWM引脚,以便能够控制电机与A4988驱动器。但是,可能有一些库使用它们来控制步进。

      回复
  40. 斯托伊

    Nedelkovski先生你好,
    我的名字是Hristo,来自保加利亚普罗夫迪夫。我在机电一体化的经验太短,但这
    物质对我来说很有趣。
    我看过你的视频“如何使用A4988驱动程序和Arduino控制步进电机”
    并对一台步进电机进行了成功的尝试。你的程序代码很简单
    可以理解。我可以用任何类似的方式旋转2或3个步道“同时”?
    祝您享有HRISTO

    回复
  41. 柯蒂斯v哈里森

    优秀的教程!!!我确实有一个问题。对于我的申请,我有电机来回来回左右,我重复这个5000次,然后我希望它停止。

    我可以在代码中停止它,但电机被锁定在位置上,而且越长时间地插入,温度就越高。有没有一种方法在代码中释放或断开电机,这样它就不会继续变热?

    回复
    • Dejan Nedelkovski.

      为了让马达保持运转,你需要让马达一直保持活跃。你可以试着通过调整A4988驱动器上的电位器来降低电机的电流,这样就降低了电机的热量。

      回复
  42. 卡洛马拉拉德

    你好,先生。如果步进电机连接皮带,位置(步距和方向)是用按钮控制的怎么样?是可能的吗?如果可能的话,你能给我一些建议或东西来记住吗?我正在开发一个自动仲裁的游戏的将军(如果你熟悉这个游戏)和步进电机是需要的位置机械手臂在8排的棋盘。

    回复
    • 德国

      这肯定是有可能的。你只需要指定一个按钮被按下时步进应该做什么。你可以看到上面解释的代码中的命令(改变方向,让步进移动一个步骤,多个步骤等等),所以你只需要在按下特定按钮时适当地实现它们。

      回复
  43. 皮特·科勒

    你好,德扬,

    尝试用手动脉冲发生器(手轮式)控制步进电机。A4988可以吗?如果是这样,我们将非常感谢在这方面的任何帮助。谢谢。

    回复
    • 德国

      好,你可能已经注意到A4988有一个STEP引脚,触发从低到高它移动电机一步。所以如果你制造出这样一个发生器来产生那种类型的脉冲你应该能够手动控制步骤。

      回复
  44. 亚当Maassingale

    你好。
    伟大的教程!我跟着一切工作。你介意使用MS PINS解释如何将其转换为1/16微步骤?需要添加哪些代码?谢谢您的帮助!

    回复
    • 德国

      嘿,谢谢!对于1/16微步骤分辨率,您只需要将高电平或5V连接到三个MS引脚,就像在文章中的MS真相表上看到。

      回复
  45. 缺口

    对我的Picaxe项目非常有用。bet188me你以清晰简洁的方式解释。非常感谢您努力制作这件事如何引导。

    回复
  46. 卢卡斯·科恩

    嘿,很棒的视频!我可以用足够的AA电池供电来产生12V吗?如果我使用电池,我还需要电容吗?还有,我能添加一个电阻,用同样的电池为电路板创建5V吗?
    谢谢!

    回复
    • 德国

      嘿,不,你不能真的用AA电池供电NEMA 17步。这个步进器能产生1A的电流。你可以使用锂离子18650电池或锂- po电池。

      回复
  47. 嗨,谢谢你的有趣报道。一个快速的(也许是愚蠢的)问题-马达刹车时,你不切换步骤输入?也就是说,电流还在绕组中流过吗?

    如果是这种情况(我认为必须是)睡眠输入引脚是否允许您释放电机?

    干杯!

    回复
    • 德国

      嘿,谢谢!是的,是的,当电机不动时,电流仍然流过绕组,它保持它的位置。是的,睡眠或使能引脚可以用来释放电机。

      回复
  48. 要添加(如果您发现对未来项目有用)。我刚刚实现了一个适当的双流限制。这允许您运行高电流进行移动,(因此您可以加速质量快速等)和用于制动的低电流。

    我在一个小型机器人项目的线性阶段使用这个,如果没有双重电流限制,我将被迫在芯片/散热器的热性能设置的电流限制下运行。有许多方法来实现可切换限制,但对于许多项目,具有高峰值电流和低保持电流是有利的热/性能。bet188me

    再次感谢
    抢,

    回复
  49. 尼玛

    伟大的理论和实践解释。易于理解和遵循。你将是一个很好的讲师。最好

    回复
  50. 丝薇

    你好,德扬,
    我试图运行三个步进电机Wth Arduino Mega 2560.我的目标是一起运行所有三个电机,但步骤数量会不同。I’ve tried using Adafruit Motor Shield V2, A4988 driver and also by directly connecting to Arduino, but so far all motors are not running simultaneously and with shield, they run together but just one step at a time and it takes a long time to reach my desired steps. can you just share how can I solve this?
    我的步进电机:赛亚UCD10N28R,步进角度7.5,额定电压6V,线圈电阻24欧姆,步进/转速48
    目的:最大1200级步进电机所需时间应小于5秒(全部三个)

    回复
    • 德国

      嘿,我建议你试试AccelStepper库,它有很好的功能来控制多个步进电机。你可以查看我使用这个库的其他教程/项目,例如相机滑块、线折弯机等。bet188me

      回复
  51. 杰伊·艾顿

    我一直在研究你们的4988板/arduino系统,用来控制步进电机。我已经按照你的图纸把arduino/4988板和电机连接好了。我的问题是你发布的代码无法加载到arduino上。它在最后一行挂断:delayMicroseconds(500);
    它说“a”;预计在微秒之前。”
    这是什么治疗方法?我尝试了我能想到的一切都没有运气。
    谢谢,我发现你的项目写得很好。bet188me

    回复
    • 德国

      嘿,我刚检查了密码,一切正常。您的错误似乎是由于在某一行的末尾缺少了“;”字符。

      回复
  52. 罗兰

    德詹,这有助于这么多!

    我有一个问题:

    我希望触发我的步进直线执行器打开,移动一个方向,然后反向,回到原来的开始位置。我想用一个微开关来触发这个过程。

    这是所有的代码吗?我是否需要配置与本教程展示不同的引脚?

    再次感谢!!

    回复
    • 德国

      好吧,我猜你会需要一些“如果”声明告诉步进什么时候微开关被触发。驱动器的引脚配置将是相同的,你只需要定义微开关触发器作为数字输入,并使用“如果”语句告诉步进器要做什么。

      回复
  53. 斯特凡•斯科特

    嘿,德扬,

    只是想说谢谢你做的所有伟大的项目和内容。bet188me我是一名高中教师,教机器人已经有几年了(计算机科学是我的主要领域)。无论如何,我已经让我的一些2和3级学生创造了一些你的项目,他们已经非常受欢迎到目前为止(应变波发生器,彩色糖果分类器)。bet188me

    真棒的工作!

    回复

留下一个回复

您的电子邮件地址将不会被公布。

推荐

2019年初学者和爱好者的最佳进入级示波器

为初学者和爱好者最好的示波器

推荐

2019年最佳Arduino入门套件

初学者的8个最佳Arduino Starter Kits

推荐

最佳3D打印机为初学者和爱好者- 3D打印

最好的3d打印机为初学者和爱好者