零基础学ESP32:控制步进电机,让你的设备“动”起来!

前面我们学了点亮LED、显示文字、展示图片——这些都是让设备“表达”。但硬件开发的魅力不止于此,真正的乐趣在于让设备“动”起来

今天这节课,我们就来学习如何用ESP32控制步进电机。步进电机最大的特点就是能够精确控制旋转角度——你想让它转多少度,它就转多少度,误差极小。

智能窗帘、3D打印机、机器人关节、自动门锁……这些设备背后,都有步进电机在默默工作。学会了这节课,你就掌握了“精确控制运动”的核心技能。

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 “教程”,在 “硬件” → “ESP32 + MicroPython” 分类下,找到控制步进电机

d

打开课件,你会看到本节课的最终效果——步进电机在ESP32的控制下,一圈一圈平稳地旋转,精准而有力。

在这里插入图片描述

第二步:什么是步进电机?

步进电机是一种将电脉冲信号转换为角位移的执行元件。简单来说:

给它一个脉冲,它就转一个固定的角度。 脉冲越多,转得越多;脉冲频率越快,转得越快。

步进电机最大的优势:

  • 精确控制角度:没有累积误差,说转多少就转多少
  • 容易控制:只需要按顺序给四相线圈通电就行
  • 自锁能力:不通电时也能保持当前位置

本节课用的是五线四相步进电机,配套ULN2003驱动板。驱动板的作用是放大ESP32引脚输出的信号,因为ESP32的GPIO引脚无法直接驱动电机。

在这里插入图片描述

第三步:步进电机的工作原理(简单理解)

步进电机内部有4个定子线圈(A、B、C、D四相),转子上有磁铁。通过按特定顺序给线圈通电,就能产生旋转磁场,吸引转子一步步转动。

三种工作模式:

模式通电方式特点
单拍模式A→B→C→D→A…每次只通一相,功耗小,力矩较小
双拍模式AB→BC→CD→DA→AB…每次通两相,力矩大,功耗较大
单双拍模式(八拍)A→AB→B→BC→C→CD→D→DA→A…精度最高,步距角减半

本节课我们使用的是单拍模式——A→B→C→D依次通电,电机就会持续旋转。

第四步:动手接线——四根线搞定

接线依然很简单。ULN2003驱动板和ESP32之间的连接只需要4根信号线 + 2根电源线

驱动板引脚连接ESP32引脚说明
IN1GPIO15控制A相
IN2GPIO2控制B相
IN3GPIO4控制C相
IN4GPIO16控制D相
VCC5V驱动板电源(电机供电)
GNDGND公共地

在这里插入图片描述

💡 小提示: 驱动板的VCC一定要接5V,不能接3.3V,否则电机没有足够的动力旋转。

第五步:理解代码逻辑——按顺序通电

硬件连接好了,来看看控制代码。代码的逻辑非常简单:

四个引脚按顺序依次输出高电平,中间加一点延时,循环往复。

from machine import Pin
import time

# 定义四个相位引脚
a = Pin(15, Pin.OUT)
b = Pin(2, Pin.OUT)
c = Pin(4, Pin.OUT)
d = Pin(16, Pin.OUT)

# 初始状态:全部断电
a.value(0)
b.value(0)
c.value(0)
d.value(0)

delay_time_ms = 2  # 每步延时2毫秒,控制转速

while True:
    # 第一步:A相通电
    a.value(1)
    b.value(0)
    c.value(0)
    d.value(0)
    time.sleep_ms(delay_time_ms)
    
    # 第二步:B相通电
    a.value(0)
    b.value(1)
    c.value(0)
    d.value(0)
    time.sleep_ms(delay_time_ms)
    
    # 第三步:C相通电
    a.value(0)
    b.value(0)
    c.value(1)
    d.value(0)
    time.sleep_ms(delay_time_ms)
    
    # 第四步:D相通电
    a.value(0)
    b.value(0)
    c.value(0)
    d.value(1)
    time.sleep_ms(delay_time_ms)
    # 然后回到第一步,循环

代码逻辑图解:

步骤A相(15)B相(2)C相(4)D相(16)电机动作
11000转子被A吸引
20100转子被B吸引 → 转一步
30010转子被C吸引 → 转一步
40001转子被D吸引 → 转一步

四个步骤循环一次,电机就转过一个完整的步距角。 循环越快,电机转得越快;delay_time_ms 越小,转速越快。

第六步:一键打开代码,保存运行

找到课件中的示例代码块,点击 “打开” 按钮,代码自动加载到编辑器中。

Ctrl + S 保存,选择ESP32开发板设备,给文件命名(比如stepper_motor.py),点击保存。

在这里插入图片描述

保存成功后,点击运行按钮。

注意看——步进电机开始平稳地旋转起来!一圈、两圈、三圈……只要程序在运行,它就会一直转下去。

在这里插入图片描述

调整转速:改一个数字就行

想让电机转得快一点还是慢一点?只需要修改一个变量:

delay_time_ms = 2   # 数值越小,转得越快;数值越大,转得越慢

试试改成 delay_time_ms = 10,电机会明显变慢;改成 delay_time_ms = 1,电机会飞快旋转。

这就是步进电机控制的精髓——通过调整脉冲频率来控制转速

在这里插入图片描述

步进电机能做什么?

步进电机的精确控制能力,让它成为许多设备的关键部件:

应用场景为什么用步进电机
3D打印机精确控制喷头XYZ三轴移动
智能窗帘控制窗帘开合角度
机器人关节精确控制每个关节的角度
云台/摄像头控制镜头平稳旋转
自动门锁控制锁芯旋转角度
数控机床精确控制刀具位置

学会了步进电机控制,你就能做出这些真正“有用”的项目。

全程回顾

步骤操作效果
找到课程教程→硬件→ESP32+MicroPython→控制步进电机了解步进电机原理和效果
认识硬件了解步进电机 + ULN2003驱动板知道哪个是电机、哪个是驱动
动手接线IN1→GPIO15, IN2→GPIO2, IN3→GPIO4, IN4→GPIO16硬件准备就绪
打开代码点击“打开”按钮完整代码进入编辑器
保存运行Ctrl+S → 选择ESP32 → 运行步进电机开始旋转!
调整转速修改delay_time_ms值电机转得快一点或慢一点

如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好ESP32和步进电机,跟着课件走一遍。

有任何问题或建议,欢迎在评论区留言告诉我们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值