查看: 192|回复: 5

[未解决] Arduino使用编码器控制步进电机转速和方向问题

[复制链接]

该用户从未签到

发表于 2019-1-12 12:11 | 显示全部楼层 |阅读模式
本帖最后由 passiflora 于 2019-1-12 12:16 编辑

尝试用Arduino控制步进电机,换了42步进电机(盛龙SL42STH34-1504A)和之前买的57步进电机(VEXTA C9829-9112K),电源使用的是24VAC,编码器型号是SH2034D,细分设置为默认设置(1),电流按照电机的额定电流设置成1.2A,驱动板为Arduino UNO R3,预期实现目标:正向转1圈(200脉冲),反向转3圈(600脉冲)的循环,当前问题:电机只转很小的角度,并且不接受方向位的控制,只朝一个方向转,但是比例是对的,第二次角度是第一次的3倍左右。经示波器检测Arduino所发出的脉冲信号均正常。代码如下:

kittenblock中小学创客名师推荐的图形化编程软件


#define STEPPIN 9
#define DIRPIN 8
//方向位为8,脉冲位为9

void setup() {
  pinMode(STEPPIN, OUTPUT);
  pinMode(DIRPIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Enables the motor to move in a particular direction
  Serial.println("Forward Begins");
  digitalWrite(DIRPIN, HIGH);
  // 正向转1圈(200脉冲)
  for (int x = 0; x < 200; x ++) {
    digitalWrite(STEPPIN, HIGH);
    delayMicroseconds(500);
    digitalWrite(STEPPIN, LOW);
    delayMicroseconds(500);
  }
  Serial.println("Forward Ends");
  delay(1000); // Delay for one second

  // Changes the rotation direction or rotates in opposite direction
  Serial.println("Backward Begins");
  digitalWrite(DIRPIN, LOW);
  // 反向转3圈(600脉冲)
  for (int x = 0; x < 600; x ++) {
    digitalWrite(STEPPIN, HIGH);
    delayMicroseconds(500);
    digitalWrite(STEPPIN, LOW);
    delayMicroseconds(500);
  }
  Serial.println("Backward Ends");
  delay(2000); //Delay for two seconds
}


请教论坛里的各位大大,这是怎么回事,该如何解决?
  • TA的每日心情
    郁闷
    2019-1-18 00:00
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2019-1-12 13:19 来自手机 | 显示全部楼层
    接线图有没有???或者照片,能清楚看到接线的!还有就是步进电机的说明文档,驱动的说明文档,你这个感觉还是接线的问题
  • TA的每日心情
    郁闷
    2019-1-18 00:00
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2019-1-12 13:20 来自手机 | 显示全部楼层
    使用的是共阳的接线方法还是共阴的接线方法啊?
  • TA的每日心情
    开心
    2018-9-20 15:06
  • 签到天数: 279 天

    [LV.8]以坛为家I

    发表于 2019-1-12 13:48 | 显示全部楼层
    估计是DIR的接线问题,共阴或共阳~
    打赏一点,努力一点

    该用户从未签到

     楼主| 发表于 2019-1-12 22:51 | 显示全部楼层
    共阳和共阴我都试过了,一个结果,然后接线的话电机那边就是红接B+,蓝接B-,黑接A+,绿接A-

    该用户从未签到

     楼主| 发表于 2019-1-13 15:53 | 显示全部楼层
    已部分解决,是因为没注意到拨位设定里面ON=0,OFF=1,然后就是需要改成单脉冲,之后一切正常,不过目前还有一个问题就是57电机如果使用1细分的话就震动不转,但是其他细分档位却正常工作。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    游戏机和开发板脑洞一下;这个本来就是开源的。
    游戏机和开发板脑洞一下;
    这个开发板和标准UNO是1;1的;通用。做在一起是因为可以不用游戏机时可以切换回来做开
    新人求助,关于舵机和限位开关。
    新人求助,关于舵机和限位
    新人求助社区各位哥哥姐姐,具体需要用航模遥控器的3段开关控制Arduino nano控制一个3
    基于MWC开源飞控DIY关键总结分享:
    基于MWC开源飞控DIY关键总
    很早就已经很想写这么一个帖,但总是由于各种原因没能落实,但最后还是找了时
    有关函数返回值的问题
    有关函数返回值的问题
    求助大神们,这个程序中有return返回值,但为什么有这个“ warning: return-statement
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表