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

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

概述


A4988是一款微步进驱动器,用于控制双极步进电机,其内置翻译程序便于操作。这意味着我们可以控制步进电机仅从我们的控制器的两个引脚,或一个控制旋转方向,另一个控制步骤。

A4988-Stepper-Driver

驱动提供了五种不同的步骤决议:全步,半步,四分之一步,八步和十六步。此外,它有一个电位器调整电流输出,超温热关机和交叉电流保护。

其逻辑电压为3至5.5 V,如果提供良好的添加冷却或每相1A连续电流而无散热或冷却,则每相的最大电流为2A。

A4988-Specifications

A4988步进驱动器引脚


现在让我们仔细看一下驱动器的引脚,并将其与步进电机和控制器连接起来。我们将开始与2针右侧按钮给司机,VDD和地面销,我们需要将它们连接到电源的3 - 5.5 V,在我们的案例中,将我们的控制器,将提供5 V的Arduino电路板。以下4个引脚用于连接电机。1A和1B引脚连接到电机的一个线圈上,2A和2B引脚连接到电机的另一个线圈上。为了给电机供电,我们使用接下来的2个引脚,接地和VMOT,我们需要将它们从8到35v连接到电源,我们还需要使用至少47µF的解耦电容,以保护驱动板免受电压尖峰。

A4988电线图

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

通过步进引脚,我们控制电机的微步,每个脉冲发送到这个引脚,电机移动一步。这意味着我们不需要任何复杂的编程,相序表,频率控制线路等,因为内置的翻译的A4988驱动器照顾一切。这里我们还需要提到,这两个引脚没有被拉到任何电压内部,所以我们不应该让他们浮动在我们的程序。

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

接下来,RESET引脚将转换器设置为预定义的Home状态。这个Home状态或Home Microstep位置可以从A4988 Datasheet的这些数据中看到。这些是马达启动的初始位置它们根据微步分辨率的不同而不同。如果这个引脚的输入状态是一个低逻辑,所有的STEP输入将被忽略。Reset引脚是一个浮动引脚,所以如果我们不打算在我们的程序中控制它,我们需要将它连接到睡眠引脚,以便使它高,并使板。

A4988-Truth-Table1

接下来的3个引脚(MS1, MS2和MS3)是根据上面的真值表选择五个步骤中的一个分辨率。这些引脚有内部下拉电阻,所以如果我们离开他们断开,板将在全步进模式。

最后一个,ENABLE引脚用于打开或关闭FET输出。所以逻辑高会使输出失效。

这个Arduino教程需要的组件


你可以从以下任何一个网站获得组件:

yaboAG娱乐城披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

电路示意图


这是完整的电路原理图。我将在完整的步骤模式下使用驱动器,因此我将留下3毫秒的引脚断开连接,只需将驱动器的方向和步进引脚连接到Arduino板上的引脚3和4,以及地面和5 V用于供电板的引脚。此外,我将使用100μF电容器去耦和12V,1.5A适配器,用于为电机供电。我将使用NEMA 17双极步进电机,其导线A和C将连接到引脚1a和1b,b和d导线到2a和2b销。

Controlling-Stepper-Motor-Circuit-Schematics

限流


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

电流限制= VRef x 2

Reference-Voltage-Measurement3

然而,这个等式并不总是正确的,因为A4988驱动板有不同的制造商。下面是我的例子:我调整了电位器并测量了0.6V参考电压。所以电流的极限应该是0。6*2,等于1。2 A。

Reference-Voltage-Measurement4

现在因为我在Full Step模式下使用驱动程序,并且根据A4988数据表在这种模式下绕组电流只能达到电流限制的70%,1.2A*0.7将等于0.84A。为了检查这个,我上传了一个简单的代码,发送连续的逻辑高到Step引脚(这样我们可以更好地注意到电流),并将我的仪表与电机的一个绕组串联起来,并给它供电。我得到的是0。5a这意味着方程对我的情况不正确。

Reference-Voltage-Measurement5

Arduino和A4988代码


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

/*简单步进电机控制示例代码* * by Dejan Nedelkovski, www.HowToMechatronics.com * */ //定亚搏手机版官方下载义引脚数const int stepPin = 3;const int dirPin = 4;void setup(){//设置两个引脚为Outputs pinMode(stepPin,OUTPUT);pinMode (dirPin、输出);} void loop() {digitalWrite(dirPin,HIGH);//使电机向特定方向移动//使200个脉冲旋转一个全周期为(int x = 0;x < 200;x + +) {digitalWrite (stepPin、高);delayMicroseconds (500);digitalWrite (stepPin、低); delayMicroseconds(500); } delay(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循环,我们将使电机制作一个完整的循环旋转。由于驾驶员在全步骤模式下设置,我们的步进电机有1.8度的步长角度,或200步,我们需要将200个脉冲发送到步进引脚以使一个完整的循环旋转。因此for循环将具有200次迭代,每次都会将步骤引脚设置为高电平,然后在低状态下设置脉冲。在每个DightWwrite之间,我们需要添加一些延迟电机的速度取决于。

在此全周期旋转之后,我们将通过将Dirpin设置在低状态下,然后将2个全周期旋转设置为400次迭代的循环来改变旋转方向。最后还有一个延迟。现在让我们上传代码,看看它将如何工作。

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

/ *简单的步进电机控制Exaple Code * * by dejan nedelkovski,www.www.kuaixg.com亚搏手机版官方下载 * * ///定义PINS Number Const Int Spepin = 3;const int dirPin = 4;int customdelay,customdelaymapped;//定义变量void setup(){//将两个引脚设置为输出pinmode(steppin,输出);pinMode (dirPin、输出);digitalWrite (dirPin、高);//使电机能够在特定方向上移动} void循环(){customdelaymapped = speedup();//从自定义加速功能//获取自定义延迟值//根据电位计,通过电位计,电机的速度取决于幂仪(Spepin,高);delaymicroseconds(customdelaymapped);DigitalWrite(Spepin,低); 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; }

125年响应

  1. Andres Tejada

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

    太多了

    安德烈斯

    回复
  2. 阿克塞尔

    嗨,谢谢你的好教程。我用的是你用电位器写的代码。然而,即使当我改变

    digitalWrite (dirPin、高);//使电机向特定方向运动

    digitalWrite (dirPin、低);//使电机向特定方向运动

    马达一直朝同一个方向运动,知道为什么吗?

    谢谢

    回复
    • 德扬Nedelkovski

      那很奇怪。尝试将驱动程序重新连接,如解释并再次尝试代码。没有别的你能做的,因为司机的dir引脚是意味着的。无论是低还是高,电机应以不同的方向移动。

      回复
      • 培拉特Uslu

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

        非常感谢。

      • 培拉特Uslu

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

        干杯!

  3. 拉尔夫•布朗

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

    回复
  4. 郭进隆译

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

    回复
    • 德扬Nedelkovski

      好吧,你应该调整步骤之间的延迟时间,以适应你的司机和步进能力,并匹配你的期望速度。至于电位器,您应该使用map()函数并尝试将从电位器获得的值映射到适当的延迟时间,还可以使用“if”语句,因为一半的值使“dir”变量为正或负。

      回复
      • 郭进隆译

        谢谢你的回复,我设法修好了,运行得很顺利。再次感谢您的漫游教程!

  5. 郭进隆译

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

    回复
  6. 尼克

    伟大的教程!我得到了一切与电位器工作后,玩了一段时间。现在我想在同一个Arduino板上添加另一个电机/电位器。我试图复制所有你在电位器代码,只是重命名和添加一些变量。我成功地闪过我的Arduino Uno代码,但当我改变一个电位器两个电机的速度将在同一时间改变。我想不出如何使每个马达独立工作。有什么建议吗?

    回复
    • 德扬Nedelkovski

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

      回复
      • 尼克

        我想我懂你了。这是我的资料。还在学习Arduino代码。我的步进电机不想独立工作。

        无效循环(){

        customDelayMappedFeed = speedUpFeed ();//从自定义speedUp函数中获取自定义延迟值
        //根据电位器,电机的速度取决于电位器,使脉冲具有定制延迟
        digitalWrite (stepPinFeed、高);
        delayMicroseconds (customDelayMappedFeed);
        DigitalWrite(STEPPINFEED,低);
        delayMicroseconds (customDelayMappedFeed);

        customDelayMappedCut = speedUpCut ();//从自定义speedUp函数中获取自定义延迟值
        //根据电位器,电机的速度取决于电位器,使脉冲具有定制延迟
        DigitalWrite(STEPPINCUT,高);
        delayMicroseconds (customDelayMappedCut);
        DigitalWrite(STEPPINCUT,低);
        delayMicroseconds (customDelayMappedCut);

        }

        //读取电位器的函数
        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;
        }

    • 大卫

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

      回复
  7. 罗伯特•弗里

    嗨,我正在使用A4988驱动器和双极步进电机构建Rubiks Cube解决机器人,为立方体的每张脸,所以这篇文章对我来说是完美的!我记录了Twitter上的项目,请参阅@RobertFriberg

    问:我看到一个不同的教程,电源和逻辑电路之间的接地是连接的。看来你没有把地面连接起来。有什么区别呢?

    回复
  8. Steve OBrien,悉尼,澳大利亚

    感谢本教程,我已经使用您的信息成功地得到我的A4988板和步进电机项目工作。这节省了我很多时间!但我确实必须改变步进接线,插图显示电线直接从电机到A4988板,但我必须跨越他们。我的步进器是一个NEMA 17HS3001-20B它有4根电线和类似的电机外观连接。是否值得在下一个版本的页面中添加关于此的警告?

    回复
    • 德扬Nedelkovski

      我很高兴听到你发现它很有用!嗯,这些电机的许多不同的制造商,所以它们中的每一个可能有不同的销钉。因此,在连接之前,应始终检查电机的数据表。

      回复
  9. 玛纳斯·鲍斯

    尊敬的先生,

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

    先生我有个问题,先生我想控制步进电机的旋转角度从
    0到360和360至0,具有电位计。先生,Arduino软件上有一个示例Skech,称为
    步进motorknob。长官,在这个例子中有四个控制输入,
    通过使用A4988驱动板,Skech不会运行电机。

    先生,请解释一下。

    或者你可以在不使用库的情况下提出一些建议

    感谢您
    马纳斯基地

    回复
  10. 米盖尔

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

    回复
      • 米盖尔

        你能帮我吗?我很困惑,我不知道从哪里开始,我有这个材料,测试A4988 + NEMA17 + Arduino,我不知道如何调节速度

      • 米盖尔

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

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

    回复
    • 德扬Nedelkovski

      检查我的步进电机 - 如何工作文章,以了解模式的差亚博88下载异。至于此驱动程序,在POST本身中已经解释了选择不同的模式。

      回复
  12. 玛纳斯·鲍斯

    尊敬的先生,

    我自己Manas Bose,先生我正在做一个项目,在那里我必须控制一个步进电机的步进控制与一个电位器的帮助,arduino先生我已经写了一个skech与附随的朋友的帮助,它是工作良好的。

    先生,现在我想让这个东西无线化,先生,我想用2个arduino和2个xbee,发送侧有一个arduino和xbee,还有一个电位器。在接收方arduino, xbee和步进电机将在那里。早些时候,我用伺服电机做了一个设置。

    先生,我和我的朋友没有足够的C ++了解,我在此请求你恳求
    在编码中,或者至少如果你能给它一些启示。

    希望得到宠爱
    感谢你
    马纳斯基地

    # include
    Int current_position = 0;
    const char direction_pin = 2;
    Const char ste_pin = 3;
    Const char pot_pin = 1;/ /模拟输入1
    无效的设置()
    {
    PinMode(Direction_pin,输出);
    pinMode (step_pin、输出);
    pinMode (pot_pin、输入);
    }

    无效循环()
    {
    int readvalue = analogRead(pot_pin);
    readvalue =地图(1023年readvalue 0, 0, 1151);
    如果(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、低);
    }

    void step_motor_back()
    {
    DigitalWrite(Direction_pin,高);
    digitalWrite (step_pin、高);
    digitalWrite (step_pin、低);
    }

    回复
  13. 吉米

    你好,Dejan Nedelkovski,祝贺你,感谢你分享这个教程。
    根据延迟控制代码中步进电机的速度,您写了一个延迟(500微秒)。电位计的映射延迟在(300; 4000)之间。
    我的问题是,你从哪里找到这些价值和它们的极限?

    谢谢你的回答

    吉米

    回复
    • 德扬Nedelkovski

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

      回复
      • 吉米

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

        最好的方面。

  14. 奥拉夫

    嗨,德扬,

    感谢您分享本教程。

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

    现在,A4988的最低工作电压是8伏。实际上,你需要一个12v, 1。5 a的电源。这不会导致任何冲突吗?

    欢呼,奥拉夫

    回复
    • 德扬Nedelkovski

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

      回复
  15. 洛蒂

    我应该使用哪种类型的电容器,因为您说使用47微生电容器,但该图表示使用100微生物。我应该使用什么电容

    电机:[链接]

    干杯

    回复
  16. 丹尼尔

    德扬,

    非常感谢你,但是,你能更好地解释一下当前限制吗?我有源12V 1500mA(电机与您相同),我应该如何衡量和改变什么?我不明白,谢谢

    回复
  17. 肯尼斯

    很棒的教程,谢谢。多亏了你,我才得以东山再起。

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

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

    回复
  18. 玛迪

    嗨,德扬,

    谢谢你给我这个很棒的教程。我有两个问题:在视频中,电路图(看起来像一个Fritzing图像)没有显示睡眠和步骤引脚是连接的。然而,他们似乎在视频的结尾?你能告诉我哪条线路是正确的吗?

    其次,更重要的是,我发现我的步进电机,一个FSM0815-KD95,正在变得非常热。在检查1A-2B驱动引脚的电压后,我发现即使我的代码只是简单地循环“digitalWrite(stepPin, LOW);”两个引脚仍然接收电压。我是否可以让所有引脚的电压为0,而电机不运行?这样就不会过热。

    回复
    • 德扬Nedelkovski

      大家好,谢谢!
      “步进”引脚是连接到Arduino,当然,因为它给控制电机的步骤。
      “休眠”引脚连接到驱动器的“复位”引脚。
      通过VMOT和GND, A4988驱动器的电机供电电压为8 - 35v,所以您的电机可能不适合这个驱动器。

      回复
  19. 马克·格兰杰

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

    谢谢,
    标记

    回复
    • 德扬Nedelkovski

      谢谢。司机之间当然是有区别的。即使你只看司机的基本数据,你也能发现很大的不同。便宜并不意味着性能更差。

      回复
  20. 克里斯蒂安

    嗨,德扬!

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

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

    非常感谢!

    回复
  21. Viwawa

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

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

    谢谢你的帮助!!

    回复
  22. 刚刚发现你的网站和答案什么一直困惑我有关步进电机。我想说,谢谢你对事情的运作方式进行了如此精确的解释,更重要的是,你不仅分享了你的知识,而且还花时间回答了问题。这应该作为其他互联网网站/论坛应该如何使用的一个基准。谢谢你花时间去教别人!!

    回复
  23. Brian Tozer.

    嗨,德扬。

    我刚接触arduino,你能给我解释一下吗?在第一个例子中,我假设电机一直以“全速”驱动。然后在你的第二个例子中,你改变电机的速度使用一个电位器。我的问题是我想要电机工作在一个缓慢的速度所有的时间,可以电位器被一个确定的电阻器取代,或者它可以控制在一个额外的代码在最初的草图?

    回复
    • 德扬Nedelkovski

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

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

      回复
  24. Jens Bjørn

    非常好的教程-展示了如何调整当前的限制。人们应该小心,不要像我一样在GND和VDD之间造成短路。这花了我一个Arduino Nano....

    回复
  25. 詹姆斯·泰勒

    有人知道在哪里我可以得到图书馆文件的A4988使用在Diptrace PCB artwork程序。谢谢

    回复
  26. 马库斯

    伟大的教程,谢谢出版!
    我想用一个Arduino和2 A4988运行两个山步,但有一个电源。你能告诉如何插入第二步吗?
    非常感谢!
    致以最亲切的问候
    mark

    回复
    • 德扬Nedelkovski

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

      回复
      • mark

        你好,德扬,
        感谢您的回复。
        那么通过其中一个驱动器连接电源不是问题吗?第二个步进器是通过arduino获得足够的能量和司机一号?你会在微控制器上使用哪个引脚?P3/P4、VDD/GND为1号驱动。当然,我可以用P5/P6作为2号司机。但是是否有第二对VDD和GND引脚?
        非常感谢!

  27. mark

    你好,德扬,
    感谢您的回复。
    那么通过其中一个驱动器连接电源不是问题吗?第二个步进器是通过arduino获得足够的能量和司机一号?你会在微控制器上使用哪个引脚?P3/P4、VDD/GND为1号驱动。当然,我可以用P5/P6作为2号司机。但是是否有第二对VDD和GND引脚?
    非常感谢!

    回复
  28. 吉伊

    你好,

    我计划使用Arduino UNO,然而,A4988步进驱动器说它与Arduino Mega2560兼容。这是否与arduino UNO工作?

    先谢谢你。

    回复
  29. 哈米德

    嗨兄弟

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

    你能帮我一下吗?

    回复
  30. mavci

    我使用的是17hd1402-01n型步进电机。我也使用你的代码以上。但当我试图使用延迟时间为500ms,我的电机从来没有转向任何方向,它只是振动。如果我设置延迟时间为1000ms我的电机转动。我想问你,为什么我的电机不能在1000ms延时下转动?我也用了a4988,实际问题是什么。是步进电机还是什么?
    谢谢和最好的问候

    回复
  31. 穆罕默德

    大家好你们好
    我有一个问题
    我的步进电机的模型是23Hs,在其数据表中写道,它需要12v和3安培电流。现在我们应该连接12V, 3a适配器??

    回复
  32. Kc

    我用NEMA 17试过同样的电路。步进器没有旋转,只是发出一些声音。与轻微的压力切向轴,它是做一个微步骤的运动。我使用设置一个3 HW 9Volt电池作为外部电源的步进器在VMot和Gnd。应该怎么做?

    回复
  33. 穆罕默德

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

    回复
  34. 斯特

    你好,干得漂亮!我试了一下,但差别不大(32μF帽和9V电池)。
    我上传代码,我可以听到步骤(500微秒),但电机不转动。电路是正确的。电机的4根电线是否可能不像您的原理图?

    回复
  35. 亚历克斯

    如何将12V 2A电源连接到实验板上?你是先剪断电线再把正极和负极插进去吗?在图片/视频中,我只能看到两根红黑线,但从来没有看到它们是如何连接到电源的。我通过上面的链接购买了你提供的相同的电源。

    回复
    • 德扬Nedelkovski

      是的,这就是我的确,将电线切割并焊接两个跳线,以便更容易地连接到面包板。然而,不必这样做,只需获得12V适配器杰克。我应该早点添加一个链接,但现在更新了它。
      对了,谢谢支持!

      回复
  36. 约瑟夫

    伟大的指南!我即将使用DVD驱动器电机+ A4988建立自己的CNC 2D绘图仪。我必须在一些预设的x和y轴位置吗?我害怕损坏步进电机。电机是否希望在X轴上移动,但它已经在范围内=损坏的电机?我需要尽可能停止防止这个吗?谢谢!

    回复
  37. 本杰明格哈特

    您提供的信息非常棒,不仅是这里,还有您发布的所有项目。足彩网女欧洲杯我正在看驱动4单独的步进电机与Arduino百万,然而液晶使用所有可用的PWM引脚,步骤和DIR引脚必须是PWM引脚,或我可以使用任何数字引脚(如引脚22-53)?我注意到我发现的所有步进器库都需要使用PWM引脚来工作。

    感谢您做的伟大工作!

    回复
    • 德扬Nedelkovski

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

      回复
  38. hristo.

    Nedelkovski先生你好,
    我叫赫里斯托,来自保加利亚普罗夫迪夫。我在机电一体化方面的经验太短了,但是这个
    物质对我来说很有趣。
    我看过你的视频“如何使用A4988驱动程序和Arduino控制步进电机”
    并成功尝试了一个步进电机。您的程序代码非常简单
    可以理解的。我能以类似的方式“同时”旋转2或3个步进器吗?
    赫里斯托献上最诚挚的祝福

    回复
  39. 柯蒂斯v哈里森

    优秀的教程! !我确实有一个问题。在我的申请中,我让马达来回转动大约1/4转我重复5000次,然后我想让它停止。

    我可以用代码阻止它,但马达被锁定在位置上插得越久,温度就越高。有没有办法在代码中释放或断开马达使它不再变热?

    回复
    • 德扬Nedelkovski

      为了使电机保持在发挥你需要保持电机活跃的所有时间。你可以试着通过调节A4988驱动器上的电位器来降低电机的电流,这样就降低了电机的热量。

      回复
  40. 卡洛Malalad

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

    回复
    • 德扬

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

      回复
  41. Pete Kohler.

    你好,德扬,

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

    回复
    • 德扬

      好吧,因为你可能注意到A4988有一个步进销,这是从低到高电平的,它移动电机一步。因此,如果您制作这样的生成器,可以生成那种脉冲类型,您应该能够手动控制步骤。

      回复
  42. 亚当·马萨诸塞州

    嗨。
    伟大的教程!我跟着去了,一切都运转起来了。你介意解释一下如何使用MS引脚将其转换为1/16微步吗?需要添加什么代码?谢谢你的帮助!

    回复
    • 德扬

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

      回复
  43. 尼克

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

    回复
  44. 卢卡斯·科恩

    嘿,很棒的视频!我可以用足够的AA电池来提供12V的电源吗?如果我用电池,我还需要电容吗?另外,我是否可以添加一个电阻,用同样的电池为电路板创造5V ?
    谢谢!

    回复
    • 德扬

      不,你不能用AA电池给NEMA 17步进供电。该步进器可输出高达1A的电流。您可以使用18650锂电池或Li-PO电池。

      回复
  45. 抢劫

    嗨,谢谢你的有趣报道。一个简短的(可能很傻的)问题-当你不切换步进输入时,马达会刹车吗?也就是说,电流还在通过绕组吗?

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

    干杯!

    回复
    • 德扬

      嘿,谢谢!是的,就是对,当电动机没有移动时,电流仍然流过绕组,它保持其位置。是的,睡眠或使能引脚可用于释放电动机。

      回复
  46. 抢劫

    添加(如果您发现它对未来的项目有用)。我刚刚实现了一个双电流限制,工作得很好。这允许你运行一个大电流移动,(所以你可以加速质量等)和一个小电流制动。

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

    再次感谢
    抢,

    回复
  47. 尼玛

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

    回复
  48. Sweta.

    你好,德扬,
    我试图运行三个步进电机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?
    我的步进电机:Saia UCD10N28R,步进角7.5,额定电压6V,线圈电阻24Ohm,步进/Rev 48
    步进电机所需时间应小于5秒(全部三个一起)

    回复
    • 德扬

      嘿,我建议尝试Accelstepper库,控制多个步进电机的功能非常好。您可以查看我使用此库的一些其他教程/项目,例如相机滑块,电线弯曲机等。足彩网女欧洲杯

      回复
  49. 杰伊·艾顿

    我一直在研究您的4988板/ Arduino系统,用于控制步进电机。我拥有Arduino / 4988板和电机根据您的绘图连接。我的问题是您发布的代码不会加载到Arduino。它挂在最后一行:Delaymicroseconds(500);
    它说是“;预计在微秒之前。“
    这种情况的治疗方法是什么?我试过了所有我能想到的办法,但都没成功。
    谢谢,我发现你的项目写得很好。足彩网女欧洲杯

    回复
    • 德扬

      嘿,我只是检查代码,他们工作正常。看起来你的错误来自错过“;”一些线结束时的字符。

      回复
  50. 洛伦

    德扬,这帮了我大忙!!

    我有一个问题:

    我希望启动线性驱动器上的步进器,向一个方向移动,然后反转,回到最初的位置。我想用一个微动开关来触发这个过程。

    这些都是通过代码完成的吗?我需要配置不同于本教程显示的引脚吗?

    再次感谢! !

    回复
    • 德扬

      我猜你需要一些“如果”语句来告诉步进器当微动开关被触发时该做什么。驱动程序的引脚配置都是相同的,你只需要将微动开关触发器定义为数字输入,并使用“if”语句告诉步进器该做什么。

      回复
  51. 斯蒂芬斯科特

    嘿德詹,

    只是想说谢谢你做的所有伟大的项目和内容。足彩网女欧洲杯我是一名高中教师,已经教了几年机器人(计算机科学是我的主要领域)。无论如何,我已经让我的一些2级和3级学生创建了一些您的项目,他们已经收到了很好的反响(应变波发生器,彩色糖果分类器)。足彩网女欧洲杯

    真的很棒的工作!

    回复
  52. c

    嗨,我连接一切正确和上传正确的代码,但什么都没有发生。你知道什么是对什么是错吗?我使用的是11v伏特的外部电源和100uf解耦电容器。

    回复
    • c

      更新:所以现在马达发出奇怪的嗡嗡声,振动了一点点,但没有移动,就像没有足够的电压一样。你的电源电压是多少?12v足够吗?

      谢谢

      回复
  53. 有没有

    所以我可以将PINS MS1 - MS3连接到Arduino输出引脚?例如P7-P9,不需要下拉电阻?
    感谢

    回复

留下一个回复

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

受到推崇的

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

最适合初学者和爱好者的示波器

受到推崇的

2019年针对初学者的8个最佳Arduino入门工具包

8个最好的arduino初学者工具包

受到推崇的

用于初学者和爱好者的最佳3D打印机 -  3D打印

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