单片机学习arduino玩转Arduino

Arduino基础入门篇26—步进电机

2019-03-16  本文已影响3人  TonyCode

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

1. 步进电机介绍

步进电机

2. ULN2003驱动介绍

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

ULN2003内部结构

3. 实验材料

4. 实验步骤

1. 根据原理图搭建电路。

ULN2003驱动板上IN1、IN2、IN3、IN4分别连接UNO开发板的数字引脚2,3,4,5;驱动板电源输入+、-引脚分别连接UNO开发板的5V、GND。

驱动板

实验原理图如下图所示:

实验原理图

实物连接图如下图所示:

实物连接图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/*
 * Stepper_Motor
 * 步进电机驱动,实现正反转
 */
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);
  delay(10);
  anticlockwise(512);
}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

程序下载

5. 实验现象

步进电机顺时针、逆时针交替旋转。

实验现象

6. 实验分析

程序通过ABCD四相通电顺序实现步进电机正反转控制。步进电机旋转一周,程序中循环次数为什么是512次呢?这是根据我们使用的步进电机参数计算而来的:

上一篇 下一篇

猜你喜欢

热点阅读