欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > NodeMCU驱动28BYJ-48型步进电机(Arduino)

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

2025/4/29 20:55:38 来源:https://blog.csdn.net/qq_44955826/article/details/144659965  浏览:    关键词:NodeMCU驱动28BYJ-48型步进电机(Arduino)

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步进电机 – 太极创客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词