微控制器比较流行的应用之一是驱动一个或几个直流电动机。

这是通过使用H-Bridge来实现的,H-Bridge是一种功率晶体管或MOSFET的排列方式,可以处理电机电流,同时允许你控制电机的方向和速度。

我们将只用一个电机来实现这一点。我们将使用TB6612FNG H-Bridge和树莓派 Pico来控制一个小型直流电机。

TB6612FNG H-Bridge

TB6612FNG H-Bridge是我们之前使用过的,一款基于MOSFET的H-Bridge,相比老款备用的L-298N有很多性能上的优势。

该设备其实有两个通道,我们只用通道A来演示。

通道A有三个输入。

AI1 - 方向和模式 AI2 - 方向和模式 PWMA - 一个PWM输入,用于控制电机速度。 在它们之间,AI1和AI2引脚控制电机方向和模式。模式包括短制动和停止模式。在我们的简单演示中,我们将只处理方向模式。

TB6612FNG H-Bridge在板子的另一侧还有电源和电机的连接。

下面是我们将使用TB6612FNG H-Bridge和树莓Pico的连接方式。 请注意,由于我使用的是6V电机,我已经为它提供了一个6V电源。不要试图使用Pico的输出电压来为你的电机供电,单独的电源是必要的。我使用了四节AA型电池,这是一种简单而安全的安排。

电机的极性其实并不重要,它只是决定了哪条路是向前的,哪条路是向后的。

一旦它被全部连接起来,我们就需要一些代码来运行它。我建议这样做。

# 树莓派 Pico Motor Test
# motor-test.py
 
# POT - Pico GPIO 26 ADC0 - Pin 32
 
# RED BUTTON - Pico GPIO 15 - Pin 20
# BLACK BUTTON - Pico GPIO 2 - Pin 4
 
# RED LED - Pico GPIO 10 - Pin 14
# GREEN LED - Pico GPIO 11 - Pin 15
# BLUE LED - Pico GPIO 14 - Pin 19
 
# DroneBot Workshop 2021
# https://dronebotworkshop.com
 
import machine
import utime
 
potentiometer = machine.ADC(26)
 
mtr_AI1 = machine.Pin(8, machine.Pin.OUT)
mtr_AI2 = machine.Pin(7, machine.Pin.OUT)
mtr_PWMa = machine.PWM(machine.Pin(6))
 
button_red = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN)
button_black = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP)
 
led_red = machine.Pin(10, machine.Pin.OUT)
led_green = machine.Pin(11, machine.Pin.OUT)
led_blue = machine.Pin(14, machine.Pin.OUT)
 
led_red.value(0)
led_green.value(0)
led_blue.value(1)
 
mtr_PWMa.freq(50)
mtr_AI1.value(1)
mtr_AI2.value(0)
 
while True:
 
    mtr_PWMa.duty_u16(potentiometer.read_u16())
 
    if button_red.value() == 1:
        mtr_AI1.value(0)
        mtr_AI2.value(1)
        led_red.value(1)
        led_green.value(0)
        led_blue.value(0)
 
    if button_black.value() == 0:
        mtr_AI1.value(1)
        mtr_AI2.value(0)
        led_red.value(0)
        led_green.value(1)
        led_blue.value(0)
 
    utime.sleep(0.25) 
 

我们要利用电位器、两个开关和RGB LED,以及电机控制器。电位器将控制电机的速度,开关将控制电机的方向,而LED将用彩色指示灯显示当前的方向。

我们使用我们的之前的两个库,并像以前一样设置电位器。

接下来,我们将Pico与TB6612FNG H-Bridge的连接定义为输出。GPIO 6上的PWMA输出被定义为PWM,它将控制电机速度。

LED和按钮的设置与之前相同。

PWM频率设置为50Hz,这是一个任意的选择。随意实验一下,看看是否能提高电机性能。

电机AI1和AI2输入被设置为正向旋转,所以电机将以正向启动。请注意,当我们启动时,RGB LED的蓝段也会被打开。

在True循环中,我们读取电位器的值,并将其传递给电机PWM信号,以控制电机的速度。我们还要看按钮的状态。

如果红色按钮被按下,我们设置AI1和AI2信号,使电机反转。我们也会点亮红色LED段。

如果黑色按钮被按下,我们设置电机方向正向,并打开绿色LED段。

加载、检查代码。它应该用一个蓝色的LED启动,你应该能够控制电机的速度。按下按钮可以控制方向,还可以改变 LED 的颜色。