caihongxiaozu 发表于 2014-7-15 10:22:44

用2560+A4988+两相步进电机,写了个测试程序,但电机总是再抖动

本帖最后由 caihongxiaozu 于 2014-7-15 10:46 编辑

用2560+A4988+两相步进电机,写了个测试程序,但电机总是再抖动,稍后上代码,数字引脚D3接微动开关(常闭合,分别接D3脚和GUN),代码如下:

int Pin_IN = 3;
int Pin_STEP = A0;
int Pin_DIR = A1;

void setup()
{
pinMode(Pin_IN, INPUT);
pinMode(Pin_STEP, OUTPUT);
pinMode(Pin_DIR, OUTPUT);
}

void loop()
{
digitalWrite(Pin_DIR, true);

int n = digitalRead(Pin_IN);
if(n == HIGH)
{   
      digitalWrite(Pin_STEP, HIGH);
      delayMicroseconds(700);
      digitalWrite(Pin_STEP, LOW);
      delayMicroseconds(700);
}
}

hp198969 发表于 2014-7-15 12:19:59

只有if(n == HIGH)的动作啊……要是下一步是if(n == LOW)呢?程序里面就没有任何动作啊……这样子好像不严密哦……

caihongxiaozu 发表于 2014-7-15 13:48:39

if(n == HIGH)
{   
      digitalWrite(Pin_STEP, HIGH);
      delayMicroseconds(700);
      digitalWrite(Pin_STEP, LOW);
      delayMicroseconds(700);
}
else
{
      digitalWrite(Pin_STEP, LOW);
}

uvvvvw 发表于 2014-7-15 14:03:33

试试将电机其中一相的两条电线对掉接驳。

caihongxiaozu 发表于 2014-7-15 14:17:21

我是按照A4988说明文档来接线的,以下代码可以使电机正常运转




int Pin_STEP = A0;
int Pin_DIR = A1;

void setup()
{

pinMode(Pin_STEP, OUTPUT);
pinMode(Pin_DIR, OUTPUT);
}

void loop()
{
digitalWrite(Pin_DIR, true);

      digitalWrite(Pin_STEP, HIGH);
      delayMicroseconds(700);
      digitalWrite(Pin_STEP, LOW);
      delayMicroseconds(700);
}

上述代码去掉了数字引脚 3脚的判断操作,电机运转正常,但按之前的写入,电机也会转动,但就是抖的严重,嘚瑟的厉害 哈......

布列松 发表于 2015-1-7 17:14:55

caihongxiaozu 发表于 2014-7-15 14:17 static/image/common/back.gif
我是按照A4988说明文档来接线的,以下代码可以使电机正常运转




你的电机是多少V的 官方介绍:

功能特色:
1、适合驱动8V~35V 2A以下的步进电机;

凯风自北来 发表于 2015-7-22 15:17:50

请问为什么接的模拟口

123000000 发表于 2015-10-31 17:16:29

我也遇到了这个问题
页: [1]
查看完整版本: 用2560+A4988+两相步进电机,写了个测试程序,但电机总是再抖动