0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—步进电机的控制

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-02 09:35 次阅读

课程目标

  • 了解步进电机的原理及应用
  • 学习步进电机的控制方式
  • 了解步进电机的不同励磁方式

相关知识

步进电机: 步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。简单来说当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。

步进电机原理: 利用电磁铁原理,各个线圈绕组通电,利用电生磁原理,产生磁力,带动中央转子铁芯转动从而将脉冲信号转换成线位移或角位移。

图片

步进电机介绍:

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

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

图片

图片

电路搭建

所需材料:

ArduinoUNO * 1
28BYJ-48步进电机 * 1
ULN2003电机驱动模块 * 1
杜邦线若干

电路连接:

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

图片

程序编写

练习一:一相励磁方式****控制步进电机正转90°再反转90°

一相励磁控制方式及特点: 在每一个瞬间,步进电机只有一个线圈导通,每送一个信号,步进电机能转1.8°。这种方式,其精确度好、消耗电力小,但是输出转矩最小,振动较大。

一相****励磁顺序表:

图片

图形化方式:

图片

代码方式:

/* 项目名称:一相励磁控制步进电机正反转90°
 * 项目时间:2022.03.21
 * 项目作者:MRX
 */
void setup() {
  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(5);
      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(5);
      digitalWrite(i, LOW);
    }
  }
}


void loop() {
  clockwise(130);
  delay(1000);
  anticlockwise(130);
  delay(1000);
}

练习二:二相励磁方式控制步进电机正转90°再反转90°****

相励磁控制方式及特点: 在每一个瞬间,步进电机有两个线圈导通,每送一个信号,步进电机能转1.8°。这种方式,其输出转矩最大,振动较小。是现在较常用的一种控制方式。

二相励磁顺序表:

图片

图形化方式:

图片

代码方式:

/* 项目名称:二相励磁控制步进电机正反转90°
 * 项目时间:2022.03.21
 * 项目作者:MRX
 */
void setup() {
  for (int i = 2; i < 6; i++) {
    pinMode(i, OUTPUT);
  }
}


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


void anticlockwise(int num)
{
  for (int count = 0; count < num; count++)
  {
    digitalWrite(2,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    delay(5);
    digitalWrite(2,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(3,LOW);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(3,HIGH);
    delay(5);
  }
}


void loop() {
  clockwise(130);
  delay(1000);
  anticlockwise(130);
  delay(1000);
}

练习三:一二相励磁方式控制步进电机正****

一二相励磁控制方式及特点: 为一相和二相交替导通的方式,每送一个信号,步进电机能转0.9°。这种方式,其分辨率高,运转平滑。也是现在较常用的一种控制方式。

二相励磁顺序表:

图片

图形化方式:

图片

代码方式:

/* 项目名称:1-2相励磁控制步进电机正转
 * 项目时间:2022.03.21
 * 项目作者:MRX
 */
void setup() {
  for (int i = 2; i < 6; i++) {
    pinMode(i, OUTPUT);
  }
}


void S1()
{
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    delay(5);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    delay(5);
}


void S2()
 {
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    delay(5);
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    delay(5);
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    delay(5);
}


void loop() {
  for (int i = 1; i <= 130; i++) 
  {
    S1();
    S2();
  }
  delay(1000);
}

程序分析:

需求为旋转90°,在程序中循环次数为什么是130次呢?这是根据我们使用的步进电机参数计算而来的:

1、步进电机电压5V,步距角5.625,减速比1:64。

2、计算A-B-C-D通电一次转动的角度5.625X2X4/64=0.703125 (2是表示1相励磁方 式每步是2倍的步距角,4表示走了4步, 64指电机减速比)。

3、转动360度循环ABCD通电的次数360/0.7031=512。

4、那么转动90度循环ABCD通电的次数90/0.7031≈130。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    149

    文章

    2930

    浏览量

    146069
  • 电磁铁
    +关注

    关注

    2

    文章

    141

    浏览量

    14575
  • 脉冲信号
    +关注

    关注

    6

    文章

    333

    浏览量

    36435
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184843
  • 步进驱动器
    +关注

    关注

    7

    文章

    77

    浏览量

    57918
收藏 人收藏

    评论

    相关推荐

    blinker控制步进电机起保停相关资料分享

    blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器)本文针对上一的《外部按键中断精准
    发表于 06-29 06:25

    arduino步进电机控制器驱动两个步进电机

    Arduino 2560控制两个步进电机arduino步进
    发表于 08-31 06:13

    Stepper库函数控制步进电机

    问题来源最近自学Arduino,在使用步进电机时开始没能使步进电机转起来,转起来后感觉没法调速,遂完成此
    发表于 09-07 09:15

    如何使用Arduino UNO开发板控制步进电机

    如何使用Arduino UNO开发板控制步进电机?如何控制步进
    发表于 09-18 08:46

    如何使用Arduino实现步进电机的分析与设计

    Arduino是一款便捷灵活、方便上手的开源电子原型平台。与常见的 DSP PLC ARN51单片机不同Arduino具有编程简单,操作方便,价格便宜等诸多优点。本文介绍基于 Arduino t的进步
    发表于 12-07 08:00 2次下载
    如何使用<b class='flag-5'>Arduino</b>实现<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的分析与设计

    arduino+A4889+步进电机

    arduino下载数据线、杜邦线若干。主要原理步进电机(stepping motor)步进电机是一种将电脉冲转化为角位移的执行机构。通俗一
    发表于 11-22 09:51 29次下载
    <b class='flag-5'>arduino</b>+A4889+<b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    使用Arduino和DRV8825控制NEMA17步进电机

    在本教程中,我们将使用 Arduino 和 DRV8825 步进模块控制 NEMA 17 步进电机。我们还将使用电位器来
    发表于 08-25 15:08 4305次阅读
    使用<b class='flag-5'>Arduino</b>和DRV8825<b class='flag-5'>控制</b>NEMA17<b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    如何使用MATALB和Arduino控制步进电机

    今天我们将学习如何使用 MATALB 和 Arduino 控制步进电机
    发表于 11-01 17:45 1963次阅读
    如何使用MATALB和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    Arduino UNO步进电机控制

    1.开发环境:Arduino IDE 2.步进电机驱动器:雷赛DM860 3.单片机程序 //定义了板上的控制端DIR,8作为方向控制端co
    发表于 03-21 10:58 1次下载
    <b class='flag-5'>Arduino</b> UNO<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>

    Arduino实验16步进电机控制

    电机控制程序 实验设备与环境 Arduino UNO套件、Arduino IDE、计算机、步进电机
    发表于 03-21 10:47 0次下载
    <b class='flag-5'>Arduino</b>实验16<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>

    步进电机Arduino使用教程

    了解如何使用 Arduino 使用 ULN2003、L298N 和 A4988 等驱动器控制双极和单极步进电机。在本文中,我将向您展示开始使用步进
    发表于 03-23 10:58 1次下载
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>与<b class='flag-5'>Arduino</b>使用教程

    Arduino RTOS控制多个步进电机

    Arduino RTOS控制多个步进电机 材料;1、arduino mega25602、3个M42S驱动器3、3个42
    发表于 03-24 11:47 3次下载
    <b class='flag-5'>Arduino</b> RTOS<b class='flag-5'>控制</b>多个<b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    使用电位器和Arduino实现步进电机控制

    在本篇文章中,我们将学习如何使用电位器和Arduino开发板实现步进电机控制步进电机可用于软盘
    发表于 03-24 11:19 1次下载
    使用电位器和<b class='flag-5'>Arduino</b>实现<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>

    arduino控制步进电机代码

    Arduino是一种开放源代码的电路板平台,它可以用于控制各种不同的电子设备,包括步进电机步进电机
    的头像 发表于 02-14 16:29 623次阅读

    arduino如何驱动步进电机

    随着物联网的不断发展,电机控制技术得到了广泛应用,其中步进电机作为一种常见的电机类型,在各行各业中得到了广泛应用。而作为一种强大、灵活的开源
    的头像 发表于 01-14 16:37 1186次阅读