## 驱动直流电机 微控制器比较流行的应用之一是驱动一个或几个直流电动机。 这是通过使用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 的颜色。