Arduino 与28BYJ-48步进电机握手

简介: Arduino 与28BYJ-48步进电机握手

Arduino 与28BYJ-48步进电机两次握手

步进电机是一种将电脉冲转化为角位移的执行机构。 当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个步进角。


您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。

同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。


28BYJ-48步进电机多用于雕刻机、3D打印机等需要精确控制的设备。本篇使用ULN2003驱动五线四相减速步进电机。1.gif

步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。本文介绍重点),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)


一、28BYJ-48步进电机工作原理

步进电机每次能转动的最小角度叫做步距角。

每当步进电机接收到一个驱动信号后,步进电机将按照一定的方向转动一个固定的角度。

通过控制脉冲的个数来精确的控制步进电机的角位移量,通过控制脉冲的频率来控制电机转动的速度及加速度,从而达到调速的目的。

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

1.png

2.png

3.png二、使用步骤

1.实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 六条母母杜邦线
  • ULN2003驱动板
  • 28BYJ-48步进电机

2.实物接线

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

1.png

2.jpg

3.使用arduino IDE自带的Stepper.h库文件

  • 28BYJ-48步进电机的齿轮减速比为64:1,转速约15转/分钟,一些软件采用某些手段和高电压电源(如12伏直流)也能达到约25转/分钟的转速。
  • 4步控制信号序列:11.25度/步,32步旋转一周;8步控制信号序列:5.625度/步, 64步旋转一周。
  • 正常情况下,4步模式下旋转一周将用:32(步/周)X64(齿轮比) = 2048 步。

代码如下(示例):

include <Stepper.h>
// 这里设置步进电机旋转一圈是多少步
#define STEPS 100
//设置步进电机的步数和引脚(就是注意点2里面说的驱动板上IN1~IN4连接的四个数字口)。
Stepper stepper(STEPS, 2, 4, 3, 5);//引脚要互换
void setup()
{
  // 设置电机的转速:每分钟为90步
  stepper.setSpeed(90);
  // 初始化串口,用于调试输出信息
  Serial.begin(9600);
}
void loop()
{
    // 顺时针旋转一周
    Serial.println("shun");
    stepper.step(2048); //4步模式下旋转一周用2048 步。
    delay(500);
    // 逆时针旋转半周
    Serial.println("ni");
    stepper.step(-2048); //4步模式下旋转一周用2048 步。
    delay(500);
}

4.自定义驱动Stepper函数

  • 步进电机电压5V,步距角5.625,减速比1:64
  • 计算A-B-C-D通电一次转动的角度5.625X2X4/64=0.703125 (2是表示1相励磁方式每步是2倍的步距角,4表示走了4步, 64指电机减速比)
  • 转动360度循环ABCD通电的次数360/0.7031=512
  • 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     代码如下(示例)

/*
   Stepper_Motor(int num, int spd)  
   步进电机驱动,num正负实现正反转角度,旋转一周大小为512;spd决定速度大小反比例调节,速度最大为3
   参考博客:https://blog.csdn.net/TonyIOT/article/details/88605767?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161164488616780299066123%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161164488616780299066123&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-26-88605767.pc_search_result_hbase_insert&utm_term=arduino驱动步进电机&spm=1018.2226.3001.4187
*/
void setup() {
  // put your setup code here, to run once:
  for (int i = 2; i < 6; i++) {
    pinMode(i, OUTPUT);
  }
  Serial.begin(9600);
}
void Stepper_Motor(int num, int spd)
{
  if (spd < 3)
    spd = 3;
  if (num > 0)
    for (int count = 0; count < num; count++)
    {
      for (int i = 2; i < 6; i++)
      {
        digitalWrite(i, HIGH);
        delay(spd);
        digitalWrite(i, LOW);
      }
 }
  else
    for (int count = 0; count < abs(num); count++)
    {
      for (int i = 5; i > 1; i--)
    {
      digitalWrite(i, HIGH);
      delay(spd);
      digitalWrite(i, LOW);
    }
    }
}
void loop() {
  // put your main code here, to run repeatedly:
  unsigned long time0 = millis();
  Stepper_Motor(100,3);//顺时针
  unsigned long time1 = millis();
  Serial.print("time11:");
  Serial.println(time1 - time0);
  Stepper_Motor(-100,3);//逆时针
  unsigned long time2 = millis();
  Serial.print("time22:");
  Serial.println(time2 - time1);
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Stepper.h库文件 和自定义驱动Stepper函数,总之本人第一次写博客,有诸多错处 ,还请留言批评指正


Stepper.h库文件 自定义驱动Stepper函数
操作方便,易上手 灵活改变步进电机的位置和速度
内部处理不详细 单拍驱动顺序明确
目录
相关文章
|
6月前
串口通信如何控制步进电机转动?
串口通信如何控制步进电机转动?
106 3
|
安全 IDE 开发工具
了解有源和无源蜂鸣器的区别以及如何在Arduino中使用它
在本文中,我们将探索蜂鸣器的内部结构,检查其内部结构,并对其工作系统有更深入的了解。在这里,我们讨论一下有源蜂鸣器和无源蜂鸣器的区别。该设备的主要功能是将电信号转换为音频声音。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种不同类型,它们都是极化的。
2359 0
|
传感器
Arduino实现超声波测距
Arduino实现超声波测距
|
传感器
Arduino与LED深度握手
Arduino与LED深度握手
104 1
|
传感器 IDE 开发工具
Arduino与红外遥控握手
Arduino与红外遥控握手
245 0
|
传感器
Arduino与SG90舵机握手
Arduino与SG90舵机握手
286 0
|
传感器 IDE 开发工具
Arduino 与HDT11和0.98寸OLED握手
Arduino 与HDT11和0.98寸OLED握手
106 0
|
传感器 存储 IDE
HTU21D温湿度传感器与Arduino连接电路图说明
在本用户指南中,我们将学习如何将 HTU21D 温湿度传感器模块与 Arduino 连接。首先,我们将向您介绍 HTU21D 传感器,包括其引出线、特性以及与 Arduino 的接口。其次,我们将在 Arduino IDE 中安装 Adafruit HTU21D 库以访问传感器数据。最后,我们将看到两个在串行监视器和 SSD1306 OLED 显示器上显示温度和湿度值的示例。
346 0
HTU21D温湿度传感器与Arduino连接电路图说明