求用Arduino 控制这种电机驱动器的方法-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6674|回复: 9

求用Arduino 控制这种电机驱动器的方法

[复制链接]
发表于 2013-10-8 15:38 | 显示全部楼层 |阅读模式
如图,请求用Arduino 控制这种电机驱动器。其中,DC+ DC-分别接12V GND ,PUL DIR分别接2 3号引脚,驱动器上的+5V接Arduino 上面的+V,enbl 悬空,不知道这种接法是否有问题?求控制程序
1.jpg
发表于 2013-10-9 13:36 | 显示全部楼层
知道怎么接了吗?分享一下
发表于 2013-10-10 09:29 | 显示全部楼层
请问是这么接的吗 哥们将程序分享下吧
发表于 2013-10-10 15:48 | 显示全部楼层
本帖最后由 袁培根 于 2013-10-10 15:55 编辑

接线 从上到下:
pul 控制电机转几圈的,一个脉冲信号,电机就转一步(一般1.8度)
dir 控制电机转动方向,如高电平正转,低电平反转
+5 arduino上VCC上接根线上去 就好了
使能信号 可以不接
-----------------------------
设置:里边的开关用来调节驱动器电流大小的,驱动器上印的有对照表,可自行摸索,
         电流太大、或太小,可能造成转不动、发热大、噪声大;
------------------------------
power:A+、A-是一对,B+、B-是另一对,电机上四根线 两两电阻较小的是一对,无穷大的就不是一对
DC+,DC-:分别接变压器的正、负,看你驱动器上标着:12-36V都可以的吧(要不先拿12V试试)
------------------------------步进电机有四相、五相、六相的,你的可以驱动四相和六相步进电机,驱动不了五相的
要确定你电机的相数
-------------------------------
http://www.arduino.cn/thread-3437-1-1.html
第6楼里,我玩的5相减速步进电机,有代码,可以参考下
控制方向的方式和你的不同,其他的和你的相同
--------------------------------
祝:玩的开心!
发表于 2013-10-10 15:55 | 显示全部楼层
461209238 发表于 2013-10-10 09:29
请问是这么接的吗 哥们将程序分享下吧

  int ledPin = 13;
  int pul_1 = 2; // pulse of moto 1
  int dir_1 = 3; //direction of mote 2
  int pul_2 =4; //pulse of mote 2
  
// String inputString = "";
  void setup()
{
   Serial.begin(9600);  //串口波特率为9600
   pinMode(pul_1, OUTPUT);
   pinMode(dir_1, OUTPUT);
   pinMode(pul_2, OUTPUT);
   
   digitalWrite(pul_1,LOW);
   digitalWrite(pul_2,LOW);
   
   digitalWrite(dir_1, HIGH);  
   
   digitalWrite(ledPin, HIGH);
  }

  int incomingByte;        // for incoming serial data


  void step(boolean dir,int steps)
  {   
  digitalWrite(dir_1,dir);
  for(int i=0; i < steps; i ++)
  {
   digitalWrite(pul_1, HIGH);
   digitalWrite(pul_2, HIGH);
   delayMicroseconds(50);
   digitalWrite(pul_1, LOW);
   digitalWrite(pul_2, LOW);
   delayMicroseconds(50);//50US脉冲
   // speed control
   delay(100);
  }
  }


void loop()
{
//int StartSign = inputString.indexOf('*');  
  if (Serial.available() > 0)
                {               
                // read the incoming byte:
                incomingByte = Serial.read();
                if(incomingByte=='l')  // indicate the arrival of the data.
                {
                  digitalWrite(ledPin, HIGH);
                }
                else
                digitalWrite(ledPin, LOW);            
                switch (incomingByte) // control the channel according to
                {
                 case '0':
                 step(true,1000);
                 break;
                 case '1':
                 //step(true,100);
                 //delay(10000);
                 step(false,1000);
                 break;
                 
                  
                }            
       }
       }

点评

delayMicroseconds(50);//50US脉冲,间隔太短,电机可能转不起来,建议先500或1000,然后把数值改小。小到一定值,电机就不转了,只“呅呅”的响。  发表于 2013-10-10 15:59
 楼主| 发表于 2013-10-10 15:57 | 显示全部楼层
袁培根 发表于 2013-10-10 15:48
接线 从上到下:
pul 控制电机转几圈的,一个脉冲信号,电机就转一步(一般1.8度)
dir 控制电机转动方向, ...

,谢谢喔
发表于 2013-10-10 16:12 | 显示全部楼层
mr.secret 发表于 2013-10-10 15:55
int ledPin = 13;
  int pul_1 = 2; // pulse of moto 1
  int dir_1 = 3; //direction of mote 2

谢谢,我正好也测试了一下,脉冲10US也可以转动,但是有个问题,就是电机机身一直很烫;还有,程序里还想请教您一个问题就是,我现在想在case ‘0’ 的情况下,马达1可以转半圈,然后停顿50S,再接着转动半圈;马达2可以一直转动,两者不互相联系,还望赐教,谢谢
发表于 2013-10-10 16:13 | 显示全部楼层
mr.secret 发表于 2013-10-10 15:55
int ledPin = 13;
  int pul_1 = 2; // pulse of moto 1
  int dir_1 = 3; //direction of mote 2

谢谢,我正好也测试了一下,脉冲10US也可以转动,但是有个问题,就是电机机身一直很烫;还有,程序里还想请教您一个问题就是,我现在想在case ‘0’ 的情况下,马达1可以转半圈,然后停顿50S,再接着转动半圈;马达2可以一直转动,两者不互相联系,还望赐教,谢谢
发表于 2013-10-10 16:56 | 显示全部楼层
谢谢哥们 我今天也刚刚试好了 现在正在摸索如何用定时器中断来产生脉冲 不知楼主是否有这方面的经验 一起分享下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-29 23:36 , Processed in 0.091793 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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