NodeMCU驱动28BYJ-48型步进电机(Arduino)

news/2024/12/24 9:42:19 标签: 单片机, mcu, 嵌入式

NodeMCU

NodeMCU开发板

此NodeMCU是在乐鑫公司(Espressif Systems)生产的ESP-12F模组的基础上封装好的具备WiFi功能的开源IoT开发板。本次选用安信可公司(Ai-Thinker)生产的CP2102版本的开发板。

28BYJ-48型步进电机 

28BYJ-48型步进电机

28BYJ-48型步进电机是有效最大外径为28毫米的采用4相8拍控制的永磁式减速步进电机。关于该电机的工作原理可参考这两篇博客:https://blog.csdn.net/X0_ImPeRial/article/details/128228004、使用 ULN2003 驱动 28BYJ-48 步进电机_uln2003能驱动哪些步进电机-CSDN博客

采用4相8拍驱动28BYJ-48型步进电机顺时针旋转(面向可以看到输出轴的那一面)的引脚电压分配如下表所示:

引脚

1

2

3

4

5

6

7

8

D1

D2

D3

D4

每一步切换时需适当延时。经测试,在本项目中至少延时900ms才不会失步。经计算和实际测试,输出主轴旋转一圈约需要512个8拍。

采用4相8拍驱动28BYJ-48型步进电机逆时针旋转(面向看不到输出轴的那一面)的引脚电压分配是将上表中的电平取反。

ULN2003驱动板

ULN2003驱动板

ULN2003驱动板作用是将INT1、INT2、INT3、INT4输入的信号放大后输出到OUT1、OUT2、OUT3、OUT4中,以满足28BYJ-48型步进电机的工作电压。 

接线

NodeMCU

ULN2003

28BYJ-48

电源

OUT1

1

OUT2

2

OUT3

3

OUT4

4

D4

INT1

D3

INT2

D2

INT3

D1

INT4

+

5

5V

GND

-

GND

代码

//<Stepper.h>在arduino uno上运行一切正常,但在nodeMCU上会出现各种错误,索性我就自己写了个驱动。
//选择NodeMCU 0.9 (ESP-12 module)

void setup() 
{
  stepmotor_initial();    //步进电机初始化
}

void loop() 
{
  clockwise_turn_one_circle();    //顺时针转一圈
  delay(2);
  anti_clockwise_turn_one_circle();    //逆时针转一圈
  delay(2);
}


void stepmotor_initial()
{
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT); 
  pinMode(D3, OUTPUT);
  pinMode(D4, OUTPUT);
}

void clockwise_turn_one_circle()
{
  for(int i=0;i<512;i++)
  {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, HIGH);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, HIGH);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, HIGH);
    delay(1);
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, HIGH);
    delay(1);
  }
}

void anti_clockwise_turn_one_circle()
{
  for(int i=0;i<512;i++)
  {
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, HIGH);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, HIGH);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, LOW);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, HIGH);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, HIGH);
    digitalWrite(D2, HIGH);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, LOW);
    delay(1);
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    digitalWrite(D3, LOW);
    digitalWrite(D4, HIGH);
    delay(1);
  }
}

注意事项

请避免使用NodeMCU的电源引脚为电机供电,因为这样做不仅无法提供足够的动力,还会导致程序烧录出错。

参考

零基础入门学用Arduino教程 – 专项教程篇(电机部分)-8 28BYJ-48步进电机 – 太极创客


http://www.niftyadmin.cn/n/5797676.html

相关文章

docker怎么部署高斯数据库

部署高斯数据库&#xff08;openGauss&#xff09;到Docker的步骤如下&#xff1a; 安装Docker&#xff1a; 如果您的系统尚未安装Docker&#xff0c;需要先进行安装。以CentOS为例&#xff0c;可以使用以下命令安装Docker&#xff1a; yum install -y docker拉取镜像&#xff…

通航飞机(通用航空飞机)的软件关键技术

通航飞机&#xff08;通用航空飞机&#xff09;的软件关键技术主要聚焦于确保飞行安全、提升操作效率以及优化用户体验等核心目标&#xff0c;这些技术涵盖了诸多重要领域&#xff0c;从软件层面来看&#xff0c;各个技术领域均有着独特的实现方式与关键作用&#xff0c;以下将…

ubuntu服务器配置IP

目录 配置服务器IP1、查看网卡名称2、编辑Netplan配置文件3、添加静态ip配置4、应用 Netplan 配置5、验证配置 配置服务器IP 1、查看网卡名称 ip a通常会显示类似 ens33、ens34、eth0 等网卡名称。 2、编辑Netplan配置文件 vim /etc/netplan/00-installer-config.yaml3、添…

Linux扩展——shell编程

前置&#xff1a;Linux基础及命令复习 目录 shell概述Shell脚本入门案例 sh bash ./ . source 变量系统预定义变量 $HOME $PWD $SHELL等自定义变量 unset readonly补充&#xff1a;开启子Shell进程的常见方法 (...) $(...) ... <(...) >(...) 特殊变量 $n $# $* $ $&…

VScode在远程服务器上安装Anaconda并确认安装成功的步骤

1.在Anaconda官网下载安装包&#xff0c;在终端输入 wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 2.安装Anaconda&#xff0c;在终端输入 bash Anaconda3-2024.06-1-Linux-x86_64.sh 3.不断按回车键&#xff0c;直到 输入yes 4.输入 no…

探秘“香水的 ChatGPT”:AI 开启嗅觉奇幻之旅!

你没有看错&#xff0c;AI也能闻到味道了&#xff01;这是一家名为Osmo公司公布的信息&#xff0c;他们成功创造出了由AI生成的李子味道&#xff0c;快跟着小编一探究竟吧~ 【图片来源于网络&#xff0c;侵删】 Osmo公司的这项技术&#xff0c;通过分析香味的化学成分和人类嗅…

再谈SAP顾问的发展前景

之前写过相关的话题&#xff0c;最近又有小伙伴来咨询sap顾问的发展前景&#xff0c;所以我决定再写一篇来表达我的观点。这位小伙伴刚工作2年&#xff0c;因为公司有一些其他项目的安排&#xff0c;可能要暂时把工作重心放到其他系统的实施工作&#xff0c;同时又有对sap顾问工…

HTML+CSS+JS制作汽车网站(内附源码,含5个页面)

一、作品介绍 HTMLCSSJS制作一个汽车网站&#xff0c;包含首页、新车发布页、预约试驾页、最新资讯页、品牌故事页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部导航栏 包含logo、主导航菜单&#xff08;首页、新车、二…