白话学习Arduino:42步进电机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16942|回复: 9

白话学习Arduino:42步进电机

[复制链接]
发表于 2018-12-5 14:35 | 显示全部楼层 |阅读模式
本帖最后由 IOT专业户 于 2018-12-5 14:34 编辑
Arduino控制42步进电机
1、项目总览
QQ截图20181205142508.jpg
2、42步进电机
图片2.png
可以看到这个是四线步进电机,内部两两短接,可以通过万用表测出,相同相的线随意接入驱动器的A+,A-B+,B-即可。
图片3.png
3、驱动器
驱动器侧面有一排按钮,往上拨为OFF,往下为ON,其中看驱动器界面标识可见,        SW1-SW3:为步进电机驱动器电流控制按钮,电流越大步进电机就越有劲,不容易丢步。
SW4:是控制限时电流按钮,即电机不转时是否给电机电流按钮,据说开启OFF可以更好的保护电机,但是为了更好地控制步进电机建议打开。
SW5-SW8:是控制电机精度的,Pulsw/rev表示的是多少个脉冲为一圈,数字越小即转的越快,数字越高越精确转的越慢。
PUL+,PUL-:步数控制,输入脉冲信号,一个脉冲(一高一低)走一步。
DIR+,DIR-:方向控制,接入高电平即正转,接入低电平则反转。
ENA+,ENA-:使能控制,一般情况悬空(都不接)即可,接入高电平步数控制失效,可以手动转动,当接入低电平恢复原有的步数控制,此时无法手动转动。
图片4.png

4、程序代码
保证线路连接正确的情况下,以下程序就能简单控制步进电机的运动,如果要精确控制等更精确的控制,或者用库控制的话需要更深入的研究。
[mw_shl_code=arduino,true]int x;//定义发射方波次数

//SW 往上是off往下是on

#define enaPin 6

#define dirPin 22

#define pulPin 7

void setup()

{

  Serial.begin(115200);

  pinMode(enaPin, OUTPUT); // Enable

  pinMode(pulPin, OUTPUT); // Step

  pinMode(dirPin, OUTPUT); // Dir

  digitalWrite(enaPin, LOW); // Set Enable low

}

void loop()

{

  digitalWrite(dirPin, HIGH); // Set Dir high

  for (x = 0; x < 256; x++) // Loop 200 times

  {

    //    digitalWrite(pulPin, HIGH); // Output high

    //    delayMicroseconds(800); // Wait 1/2 a ms

    //    digitalWrite(pulPin, LOW); // Output low

//    delayMicroseconds(800); // Wait 1/2 a ms

//这里两种驱动方式任选其一即可,上面的这个语句可以精确控制到几步,缺点:占用CPU时间,这个控制下CPU无法进行其他运算。

analogWrite(pulPin, x);//如果用analogWrite则注释掉上面的,优点不占用CPU,写法简单,缺点,不能精确控制到几步,下同。

    Serial.println(x);

  }

   delay(1000); // pause one second

  digitalWrite(dirPin, LOW); // Set Dir low

  for (x = 0; x < 255; x++) // Loop 2000 times

  {

    //    digitalWrite(pulPin, HIGH); // Output high

    //    delayMicroseconds(800); // Wait 1/2 a ms

    //    digitalWrite(pulPin, LOW); // Output low

    //    delayMicroseconds(800); // Wait 1/2 a ms

analogWrite(pulPin, x);

    Serial.println(x);

  }

  delay(1000); // pause one second

}[/mw_shl_code]

发表于 2019-7-25 11:24 | 显示全部楼层
并不能反转啊
 楼主| 发表于 2019-8-20 16:49 | 显示全部楼层

肯定可以的哦,建议你再试试
发表于 2020-8-10 23:55 | 显示全部楼层
想问一下,我把for循环里面的延迟改成delay(1)之后没问题,但是改成delay(2)之后就丢步了,就是延迟时间大于1ms之后就会丢步了,这个是电流不够的原因吗
发表于 2021-4-21 16:27 | 显示全部楼层
请教一下,你这里只用了三条线,#define enaPin 6 #define dirPin 22   #define pulPin 7   那驱动器接线图却有四个线PUL+,PUL-,DIR+,DIR-,ENA+,ENA-怎么理解呢?这样理解对吗?比如enaPin 6接ENA+或ENA-都任意一根都可以吗?dir的也一样吗
发表于 2021-5-31 15:58 | 显示全部楼层
我看到图片是也是四根线接Arduino,所以请教一下,驱动器上的DIR-、DIR+、PUL-和PUL+分别对应接Arduino哪个脚,可以分享一下吗?谢谢!!
发表于 2021-5-31 15:59 | 显示全部楼层
qq308644097 发表于 2021-4-21 16:27
请教一下,你这里只用了三条线,#define enaPin 6 #define dirPin 22   #define pulPin 7   那驱动器接线图 ...

你知道什么接线了吗?
发表于 2021-9-5 23:00 | 显示全部楼层
qq308644097 发表于 2021-4-21 16:27
请教一下,你这里只用了三条线,#define enaPin 6 #define dirPin 22   #define pulPin 7   那驱动器接线图 ...

这个应该是共负极连接,dir- pul-并在一起连地线
发表于 2021-12-14 15:59 | 显示全部楼层
本帖最后由 bgsdd 于 2021-12-14 16:00 编辑

准备用4个28步进电机+4个驱动器做个手机蓝牙控制小车,为制作步进电机的机械臂屯点经验,在关注这个步进电机的共阳极和共阴极两种接法,不知道有什么区别:
共阳极是不是把END+,PUL+,DIR+ 都接在一起控制板的END引脚?END-,PUL- DIR-分别接在控制板的3个输出引脚上??
共阴极是不是把END-,PUL-,DIR- 都接在一起控制板的END引脚?END+,PUL+, DIR+分别接在控制板的3个输出引脚上??

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:26 , Processed in 0.136709 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表