Arduino中使用步进电机

2023-12-22 18:33:07

目录

一、硬件介绍

1、型号

(1)步进电机

(2)驱动器

2、接线图

3、电机旋转圈速和位置

(1)电机旋转一圈对应脉冲数设置

(2)电机旋转速度设置

二、功能代码和测试

1、代码

2、测试效果

(1)转速1

(2)转速2


一、硬件介绍

1、型号

(1)步进电机

(2)驱动器

2、接线图

采用共阳极极限方式。

3、电机旋转圈速和位置

(1)电机旋转一圈对应脉冲数设置

如果所示拨码开关S1、S2、S3对应脉冲数设置。S1设置ON、S2和S3设置OFF,对应800。电机转一圈脉冲:800*2=1600。

(2)电机旋转速度设置

修改脉冲周期时间,即可改变旋转速度。具体见程序。

二、功能代码和测试

控制器上电以后,电机正转一圈、等待一秒,反转一圈、等待一秒。如此一直循环运行。

1、代码


#define Puls  7       //脉冲位为引脚7
#define Dir   6       //方向位为引脚6(高电平正转、低电平反转)
#define Ena   10      //使能位为引脚10。(低电平电机禁止运动,高电平电机有效)
#define bushu 1600    //脉冲步数  1600个脉冲转一圈()

const int pulsTime=1000;    //脉冲高低电平时间(延时大转速降低)

void setup() 
{
  //
  Serial.begin(9600);
  //
  pinMode(Puls, OUTPUT);
  pinMode(Dir, OUTPUT);
  pinMode(Ena, OUTPUT);
  //
  digitalWrite(Ena, HIGH);
  
}

void loop() 
{
  //正转
  //使电机向特定方向运动
  Serial.println("Forward Begins");
  digitalWrite(Dir, HIGH);//方向引脚高电位,正转
  // 正向转(bushu脉冲)
  for (int x = 0; x < bushu; x ++) {
    digitalWrite(Puls, HIGH);
    delayMicroseconds(pulsTime);       //500微秒延时,即0.5毫秒
    digitalWrite(Puls, LOW);
    delayMicroseconds(pulsTime);
  }
  Serial.println("Forward Ends");
  delay(1000); // Delay for one second

  //逆转 
  //使电机向反方向运动
  Serial.println("Backward Begins");
  digitalWrite(Dir, LOW);//方向引脚低电位,逆转
  // 反向转(bushu脉冲)
  for (int x = 0; x < bushu; x ++) {
    digitalWrite(Puls, HIGH);
    delayMicroseconds(pulsTime);
    digitalWrite(Puls, LOW);
    delayMicroseconds(pulsTime);
  }
  Serial.println("Backward Ends");
  delay(1000); //Delay for two seconds
}



2、测试效果

串口接收到反馈的运行状态

(1)转速1

const int pulsTime=500;

0.5ms脉冲电机速度

(2)转速2

const int pulsTime=250;

0.25ms脉冲电机转速

文章来源:https://blog.csdn.net/panjinliang066333/article/details/135157368
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。