ESP32 步进电机驱动
开发环境 VS Code
步进电机 :28BYJ-48步进电机
ESP32 TTGO
使用ESP32 驱动步进电机,使用了自带的Stepper库,但是,结果是电机未转动,以至于我认为购买的电机出了问题,自己还测试了一下,最后发现电机是正确的,是Stepper电机驱动库的问题,与我购买的电机驱动有时序差异,即需要修改电机驱动库里面的不兼容的部分,最后成功驱动28BYJ-48步进电机,28BYJ-48的含义为外径28毫米四相八拍式永磁减速型步进电机。
使用的电机如图所示:
四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA
其A、B、C、D指的是uln2003芯片驱动板的1N1、1N2、1N3、1N4,波形在上表示有输入信号。
28BYJ-48步进电机的齿轮减速比为64:1,转速约15转/分钟,一些软件采用某些手段和高电压电源(如12伏直流)也能达到约25转/分钟的转速。
4步控制信号序列:11.25度/步,32步旋转一周。
8步控制信号序列:5.625度/步, 64步旋转一周。
正常情况下,4步模式下旋转一周将用:32(步/周)X64(齿轮比) = 2048 步,8步模式下旋转一周将用:64(步/周)X64(齿轮比) = 4096 步,此ULN2003驱动模块使用4步模式运行,所以接下来的程序里旋转一周的步数是2048步。
1、Stepper库修改部分
D:\Arduino\libraries 自带的arduino 库文件,主要就是修改电机的时序。
图中的时序为: AC-BC-BD-AD,
正转 电机导通相序 D-C-B-A
反转 电机导通相序 A-B-C-D
在255行,注释下图部分:
之后按照时序重新修改,电机运行就正常了。
之后替换下面代码:
case 0: // 1010
digitalWrite(motor_pin_1, HIGH);