Arduino单片机控制步进电机

文章来源:锐特步进电机 时间:2019-12-20 09:48:46 浏览:

  步进电机是一种将电脉冲转化为角位移的执行机构。当步进电机的驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步长)。通过控制脉冲个数来控制角位移量,达到准确定位的目的;通过控制脉冲频率来控制电机转动的速度和加速度,达到调速的目的。

  下面是连接图,右上角是 Arduino 与驱动器的连线,VCC、脉冲、方向、使能是单片机提供的 4 个引脚,字面意思是对于驱动器而言,与 Arduino 无关,选择 4 个输出引脚就行。VCC 与三个 +端 相连。

  

 

  控制程序

  这里使用 2、3、4、5 四个引脚与驱动器连接,只需要控制脉冲的次数和频率就能够控制电机转动的角度和速度。本来 Arduino 有专门的 Stepper 库来驱动步进电机,但功能比较简单,就自己写了,还有一个 tone() 频率函数,如果只控制速度可以使用一下。

  代码如下:

  #define VCC 2

  #define PLS 3

  #define DIR 4

  #define ENA 5

  void setup() {

  pinMode(VCC, OUTPUT);

  pinMode(PLS, OUTPUT);

  pinMode(DIR, OUTPUT);

  pinMode(ENA, OUTPUT);

  }

  void loop() {

  digitalWrite(VCC, HIGH);

  digitalWrite(ENA, HIGH);

  digitalWrite(DIR, HIGH); //正转

  //正转一圈,用时1s

  //此处驱动器定义1600步为1圈

  //本来1600X625微秒=1秒,因为时间间隔太短,程序运行也需要时间,间隔时间/2之后总时间差不多1秒

  for(int x=0; x<1600; x++){

  digitalWrite(PLS, HIGH);

  delayMicroseconds(625/2);

  digitalWrite(PLS, LOW);

  delayMicroseconds(625/2);

  }

  delay(1000); //停1s

  digitalWrite(DIR, LOW); //反转

  //反转一圈,用时1s

  for(int x=0; x<1600; x++){

  digitalWrite(PLS, HIGH);

  delayMicroseconds(625/2);

  digitalWrite(PLS, LOW);

  delayMicroseconds(625/2);

  }

  delay(1000); //停1s

  }

  上面的代码是让步进电机正转 1 圈后停 1 秒,再反转 1 圈后停 1 秒,转 1 圈的时间也是 1 秒,如此循环,可根据需要自己更改。

  程序说明:VCC 给驱动器提供电源引脚,PLS 给步进电机提供脉冲引脚,DIR 决定电机是正转还是反转,ENA 是步进电机驱动器的开关,如果控制电路给 ENA 引脚高电压那么就相当于让驱动器接受控制信号,如果 ENA 提供低电压,无论怎么给脉冲信号电机都不会动。在 PLS 引脚产生一定频率的脉冲,并控制脉冲时间,就可控制步进电机。

TAG 步进电机
更多信息请关注 深圳锐特步进电机 http://www.szruitech.com/
上一篇:步进电机的使用方法及问题解决   下一篇:在步进电机运行中提供最佳的衰减解决方案

自动化领域,锐特机电为您选择合适的步进电机产品