Arduino 与28BYJ-48步进电机握手_2345VOR的博客-程序员信息网_arduino控制28byj48步进电机

技术标签: 算法  arduino学习  arduino  

Arduino教程传送门


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

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

  2. 您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。
    同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

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

在这里插入图片描述


步进电机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.实验材料

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

2.实物接线

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

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);
}

3.自定义驱动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函数
操作方便,易上手 灵活改变步进电机的位置和速度
内部处理不详细 单拍驱动顺序明确
参考博文:

链接: link.步进电机 28BYJ-48介绍和驱动及编程
链接: link.Arduino基础入门篇26—步进电机
链接: link.ARDUINO28BYJ-48步进电机调试使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vor234/article/details/113241843

智能推荐

微信开发公众号页面配置JS-SDK调用微信接口_Run_yu的博客-程序员信息网

一:前期准备,1,首先你需要一台服务器,:阿里云或者腾讯云啥的,最便宜的可以选择类似阿里云这种轻量级服务器,和域名配置好A记录。2,需要在服务器打架node环境:可以找客服帮忙基本配置环境搭好。3,需要有一个自己的公众号:详见文档http://baijiahao.baidu.com/s?id=1602809939178372942&amp;wfr=spider&amp;for=pc...

关于Mac系统 使用npm i xxx的时候 报错_suQii的博客-程序员信息网

背景:是Mac系统 的菜鸟。 在悠闲的时光,想使用vue-cli 搭一个脚手架手写一个个人网站,结果在第一步就出现了问题。问题如下:我愉快的在键盘上敲下 npm install -g @vue/cli 时 报了一个错npm ERR! The operation was rejected by your operating system.npm ERR! It is likely you do not have the permissions to access this file as the cu

Opencv学习笔记 均方误差(MSE)、结构相似度指数(SSIM)_opencv ssim_坐望云起的博客-程序员信息网

均方误差(mean-square error, MSE)是反映估计量与被估计量之间差异程度的一种度量。设t是根据子样确定的总体参数θ的一个估计量,(θ-t)2的数学期望,称为估计量t的均方误差。它等于σ2+b2,其中σ2与b分别是t的方差与偏倚。SSIM(Structural SIMilarity),结构相似性,是一种衡量两幅图像相似度的指标。该指标首先由德州大学奥斯丁分校的图像和视频工程实验室(Laboratory for Image and Video En...

Spring组件扫描 <context:component-scan/>_春天的早晨的博客-程序员信息网

我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势,数据源配置比较经常用XML配置,控制层依赖的service比较经常用注解等(在部署时比较不会改变的),我们经常比较常用的注解有@Component是通用标注,@Controller标注web控制器,@Service标注Servicec层的服务,@Respository标注DAO层的数据访问。SpringMVC

设置ListView item间距_listview设置间距_哼_给你一脚的博客-程序员信息网

默认ListView的item之间间距是为0的,想要设置ListView的间距可以使用如下语句:android:divider="@android:color/transparent"android:dividerHeight="20sp"这样设的原理是首先把ListView item之间的分割线颜色设置为透明,然后设置分割线的高度实现的。所以这样设置之后ListView默认的分割线也会

解决使用ossfs上传到OSS的文件Content-Type全是”application/octet-stream”_方圆百里找对手的博客-程序员信息网

ossfs通过查询/etc/mime.types中的内容来确定文件的Content-Type,请检查这个文件是否存在,如果不存在,则需要添加:对于Ubuntu可以通过sudo apt-get install mime-support来添加。对于CentOS可以通过sudo yum install mailcap来添加。也可以手动添加,每种格式一行,每行格式为:application/java...

随便推点

linux入侵检测工具之aide_星火燎愿的博客-程序员信息网

AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。它通过系统的“缩影”来进行对比,将期间的操作记录清楚的继续下来。比如说一个黑客在你的服务器里做了一些手脚,或者抓你的服务器去当矿工了,如果有了aide,进过对比就会知道操作记录,从而知道对方增、删、改、查了什么文件,这样修改回来就可以了;...

自建网易云音乐解锁代理_joox调试模式_aglo的博客-程序员信息网

自建网易云音乐解锁代理简介使用方法基本用法音源选择转发为 Shadowsocks1.通过 glider 转发为Shadowsocks2. (补充)可通过 v2ray 转发为 Vmess流量客户端分流规则Client参考文章简介通过配置下文代理,可以解锁网易云音乐下架变灰歌曲。使用到的项目为 UnblockNeteaseMusic 和 glider。使用方法本文使用的命令均基于 CentOS 7。使用前说明:服务端已做限制,仅允许网易云音乐相关域名与 IP 通过代理,其余非法代理请求一律丢弃。

python中float用法_float详解_weixin_39666496的博客-程序员信息网

float详解标准文档流当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。所以在了解浮动之前我们需要了解一下什么是标准文档流标准文档流指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。css中让一个元素脱离标准文档流:浮动绝对定位固...

大学生python实验心得-学习python的一些心得和经验_weixin_39531378的博客-程序员信息网

最近有不少朋友问学习python如何下手,是不是报个培训班学习?下面先简单的介绍一下python。Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种...

权限管理的一点思路 _窗体级权限管理_johnsonTj的博客-程序员信息网

在一个WinForm项目中的权限管理部分,使用MDI窗体,从主窗体上的menu打开MDI子窗体,对每个子窗体都有一个权限ID,打开时要判断user是否有权限,为了把校验这部分作的通用些,使用了下面的实现:1.定义一个接口IRight,里面只有一个方法GetRightID,入下:interface IRight{    string GetRightID();} 2.每个MDI子窗体都继承这个接口,

mt4双线macd_手机版MT4双线MACD设置视频教程_weixin_39876645的博客-程序员信息网

外汇船说丨心中有爱,交易不败让每篇文章都给你的交易赋能很多小伙伴会用到双线MACD指标,船长在《一文讲透双线MACD指标及其实战运用》也详细讲解过双线MACD指标的原理和用法。最近很多小伙伴问船长,在电脑端上,我们可以通过第三方外汇指标来直接实现双线MACD,但在手机端MT4上就没法直接加载第三方外汇指标了。那么,手机版MT4到底该如何实现双线MACD的标准设置?今天啊,船长给大家录制了...

推荐文章

热门文章

相关标签