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

IOT专业户 发表于 2018-12-5 14:35

白话学习Arduino:42步进电机

本帖最后由 IOT专业户 于 2018-12-5 14:34 编辑

Arduino控制42步进电机1、项目总览 2、42步进电机 可以看到这个是四线步进电机,内部两两短接,可以通过万用表测出,相同相的线随意接入驱动器的A+,A-和B+,B-即可。 3、驱动器驱动器侧面有一排按钮,往上拨为OFF,往下为ON,其中看驱动器界面标识可见,      SW1-SW3:为步进电机驱动器电流控制按钮,电流越大步进电机就越有劲,不容易丢步。SW4:是控制限时电流按钮,即电机不转时是否给电机电流按钮,据说开启OFF可以更好的保护电机,但是为了更好地控制步进电机建议打开。SW5-SW8:是控制电机精度的,Pulsw/rev表示的是多少个脉冲为一圈,数字越小即转的越快,数字越高越精确转的越慢。PUL+,PUL-:步数控制,输入脉冲信号,一个脉冲(一高一低)走一步。DIR+,DIR-:方向控制,接入高电平即正转,接入低电平则反转。ENA+,ENA-:使能控制,一般情况悬空(都不接)即可,接入高电平步数控制失效,可以手动转动,当接入低电平恢复原有的步数控制,此时无法手动转动。
4、程序代码保证线路连接正确的情况下,以下程序就能简单控制步进电机的运动,如果要精确控制等更精确的控制,或者用库控制的话需要更深入的研究。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

}

jim夏 发表于 2019-7-10 17:43

6666:D:):):):):):):):)

leverleong 发表于 2019-7-25 11:24

并不能反转啊

IOT专业户 发表于 2019-8-20 16:49

leverleong 发表于 2019-7-25 11:24
并不能反转啊

肯定可以的哦,建议你再试试

LYH辉 发表于 2020-8-10 23:55

想问一下,我把for循环里面的延迟改成delay(1)之后没问题,但是改成delay(2)之后就丢步了,就是延迟时间大于1ms之后就会丢步了,这个是电流不够的原因吗

qq308644097 发表于 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的也一样吗

Scottwei 发表于 2021-5-31 15:58

我看到图片是也是四根线接Arduino,所以请教一下,驱动器上的DIR-、DIR+、PUL-和PUL+分别对应接Arduino哪个脚,可以分享一下吗?谢谢!!

Scottwei 发表于 2021-5-31 15:59

qq308644097 发表于 2021-4-21 16:27
请教一下,你这里只用了三条线,#define enaPin 6 #define dirPin 22   #define pulPin 7   那驱动器接线图 ...

你知道什么接线了吗?

dcwyxtay 发表于 2021-9-5 23:00

qq308644097 发表于 2021-4-21 16:27
请教一下,你这里只用了三条线,#define enaPin 6 #define dirPin 22   #define pulPin 7   那驱动器接线图 ...
这个应该是共负极连接,dir- pul-并在一起连地线

bgsdd 发表于 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个输出引脚上??

页: [1]
查看完整版本: 白话学习Arduino:42步进电机