步进电机

步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角),多用于需要精确控制的设备,例如3D打印机、雕刻机等等。本篇使用ULN2003驱动五线四相步进电机。

每当步进电机接收到一个驱动信号后,步进电机将按照一定的方向转动一个固定的角度。步进电机每次能转动的最小角度叫做步距角。通过控制脉冲的个数来精确的控制步进电机的角位移量,通过控制脉冲的频率来控制电机转动的速度及加速度,从而达到调速的目的。步进电机按照相数不同分为单相、双相、多相三种,励磁方式分为1相励磁方式和2相励磁方式。

本篇使用的步进电机型号为28BYJ-48,1相励磁方式驱动,通过给ABCD四相依次通电来实现转自不停转动。

ULN2003驱动介绍

由于开发板的通用IO驱动能力有限,有些外设不能直接使用IO进行驱动,需要借助一些驱动电路间接控制大功率器件。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中,可直接驱动继电器等负载。

必需组件

  • Uno R3开发板
  • 配套USB数据线
  • 面包板连接线
  • ULN2003驱动板
  • 步进电机

连线方式

ULN2003驱动引脚 Stduino 开发板管脚
PIN1 D1
PIN2 D2
PIN3 D3
PIN4 D4
- GND
+ 5V

ULN2003驱动上的白色接口与步进电机接口连接,注意凹槽对齐。

代码

#include <Arduino.h>
void setup() {
  // put your setup code here, to run once:
  for (int i = 2; i < 6; i++) {
    pinMode(i, OUTPUT);
  }
}

void clockwise(int num)
{
  for (int count = 0; count < num; count++)
  {
    for (int i = 2; i < 6; i++)
    {
      digitalWrite(i, HIGH);
      delay(3);
      digitalWrite(i, LOW);
    }
  }
}

void anticlockwise(int num)
{
  for (int count = 0; count < num; count++)
  {
    for (int i = 5; i > 1; i--)
    {
      digitalWrite(i, HIGH);
      delay(3);
      digitalWrite(i, LOW);
    }
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  clockwise(512);//顺时针旋转360°
  delay(10);
  anticlockwise(512);//逆时针旋转360°
}

结果

电机将在一个方向上旋转一圈,然后在另一个方向上旋转一圈。

文档更新时间: 2021-02-14 14:31   作者:admin