某宝上买的直流电机驱动模块(图1),可以搭载了两个马达和一个电源,我只用到了一个(因为我只有一个),IN3和IN4两个口直接连接esp32的引脚输入信号,对应的MOTOR-B口输出,焊接好后的图片如图2。顺带一提,单片机的引脚不要直接焊,毕竟只是DIY玩一玩,建议把双母头的杜邦线拆一段焊在模块上,另一端直接插在板子上。
图1.直流电机驱动模块
图2.整体实物图
心血来潮弄着玩玩,没想那么多,然后许多问题就出现了。
1.刚开始没用PWM,导致转速特别快,芯片发热非常严重。
2.程序只是给了一个信号让它动起来,并没有控制转速。
所以我就用pwm来写这一段程序
具体代码如图
from machine import Pin, PWM
import time
IN3 = PWM(Pin(2))
IN3.freq(1000) #PWM方波重复的次数
while True:
for i in range(10, 1024):#让它的占空比在10~1024之间循环实现叶片由慢到快旋转
print(i) #看到占空比的实时变化
IN3.duty(i)
time.sleep_ms(1)
占空比在某一段时间的变化如图
之后就可以来控制它的正转和反转了,就是把IN4加进来就可以了,代码如下
from machine import Pin, PWM
import time
IN3 = PWM(Pin(2))
IN3.freq(1000)
IN4 = PWM(Pin(4))
IN4.freq(1000)
while True:
for i in range(10, 500):
print(i)
IN3.duty(i)
time.sleep_ms(2)
for i in range(10,500):
IN4.duty(i)
time.sleep_ms(2)