Skip to main content

树莓派电机驱动板 v1.0

树莓派电机驱动板 v1.0 基于飞思卡尔 MC33932 双 H 桥功率 IC,可以控制每个单桥峰值电流高达 5.0A 的感性负载。它让您可以使用树莓派 B/B+/A+ 和 Pi 2 Model B 驱动两个直流电机,独立控制每个电机的速度和方向。

树莓派电机驱动板 v1.0 支持非常宽的输入电压范围,从 6V 到 28V。此外,板载 DC/DC 转换器支持非常宽的输入电压范围,可以为树莓派提供 5V 电源,最大电流为 1000mA。因此,您只需要一个电源就可以驱动电机并为树莓派供电。

特性

  • 输出短路保护(对 VPWR 或 GND 短路)
  • 通过内部恒定关断时间 PWM 进行过流限制(调节)
  • 温度相关的电流限制阈值降低
  • 兼容树莓派 3B/3B+/4

规格参数

项目

最小值

典型值

最大值

单位

工作电压

6

/

28

VDC

DC/DC 输出:

/

5V/1000mA

/

输出电流(每个通道)

/

2(连续工作)

5(峰值)

A

PWM 频率

/

/

11

kHz

输出占空比范围

0

/

100

%

逻辑输入电压

-0.3

/

7

V

工作温度

-40

/

120

尺寸

91.20 56.15 32

mm

硬件概述

  • J1:直流输入连接器。
  • J2:电机驱动输出连接器。
  • EN,FT:EN 控制和故障标志检测跳线。如果短接 EN 跳线,EN 信号将映射到 D4 引脚,您可以通过 D4 引脚控制 H 桥禁用输出或重置故障标志。如果短接 FT 跳线,故障标志信号将映射到 D3 引脚,您也可以从 D3 引脚读取故障标志。
  • IO:逻辑电压电平选择跳线。您可以通过此跳线选择控制逻辑电压电平。
  • 电源供应:您必须通过 J1(直流输入连接器)为扩展板供电。输入电压范围可以设置为 6Vdc ~ 28Vdc。板载 DC/DC 转换器可以将直流输入电压转换为 5Vdc 输出电压来供应逻辑电路。DC/DC 转换器还可以通过"5V"引脚为微控制器板(Arduino/Seeeduino)供电,最大电流为 100mA。
  • 电机接口:Out 1 和 Out 2(Out 3 和 Out 4)连接电机 A(B)用于直流电机。
caution

工作期间请勿触摸 H 桥 IC 或 PCB 板。在满负载工作情况下,其温度可达到 100 度。

使用方法

此演示使用树莓派 B 来展示树莓派电机驱动板 v1.0 可用于控制直流电机正转和反转。

硬件安装

  • 树莓派 B 和树莓派电机驱动板 v1.0
  • 硬件连接如图所示

连接到网络并供电。

软件部分

  1. 下载 Motor_Driver.pyPiSoftPwn.py 到同一文件夹中。以下是 Motor_Driver.py 的代码。
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import signal

from PiSoftPwm import *

#print '前进_1...'
#frequency = 1.0 / self.sc_1.GetValue()
#speed = self.sc_2.GetValue()

class Motor():
def __init__(self):
# MC33932 引脚
self.PWMA = 25
self.PWMB = 22
self._IN1 = 23
self._IN2 = 24
self._IN3 = 17
self._IN4 = 27

# 初始化 PWMA PWMB
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.PWMA, GPIO.OUT)
GPIO.setup(self.PWMB, GPIO.OUT)
GPIO.output(self.PWMA, True)
GPIO.output(self.PWMB, True)

# 初始化 PWM 输出
self.OUT_1 = PiSoftPwm(0.1, 100, self._IN1, GPIO.BCM)
self.OUT_2 = PiSoftPwm(0.1, 100, self._IN2, GPIO.BCM)
self.OUT_3 = PiSoftPwm(0.1, 100, self._IN3, GPIO.BCM)
self.OUT_4 = PiSoftPwm(0.1, 100, self._IN4, GPIO.BCM)

# 关闭 pwm 输出
self.OUT_1.start(0)
self.OUT_2.start(0)
self.OUT_3.start(0)
self.OUT_4.start(0)

self.frequency = 0.01
self.duty = 60

def Setting(self, frequency, duty):
self.frequency = frequency
self.duty = duty

def Go_1(self):
self.OUT_1.changeBaseTime(self.frequency)
self.OUT_2.changeBaseTime(self.frequency)
self.OUT_1.changeNbSlicesOn(self.duty)
self.OUT_2.changeNbSlicesOn(0)

def Back_1(self):
self.OUT_1.changeBaseTime(self.frequency)
self.OUT_2.changeBaseTime(self.frequency)
self.OUT_1.changeNbSlicesOn(0)
self.OUT_2.changeNbSlicesOn(self.duty)

def Go_2(self):
self.OUT_3.changeBaseTime(self.frequency)
self.OUT_4.changeBaseTime(self.frequency)
self.OUT_3.changeNbSlicesOn(0)
self.OUT_4.changeNbSlicesOn(self.duty)

def Back_2(self):
self.OUT_3.changeBaseTime(self.frequency)
self.OUT_4.changeBaseTime(self.frequency)
self.OUT_3.changeNbSlicesOn(self.duty)
self.OUT_4.changeNbSlicesOn(0)

def Stop(self):
self.OUT_1.changeNbSlicesOn(0)
self.OUT_2.changeNbSlicesOn(0)
self.OUT_3.changeNbSlicesOn(0)
self.OUT_4.changeNbSlicesOn(0)

if __name__=="__main__":
motor=Motor()
# 在进程中断时调用。将所有引脚设置为"输入"默认模式。
def endProcess(signalnum = None, handler = None):
motor.OUT_1.stop()
motor.OUT_2.stop()
motor.OUT_3.stop()
motor.OUT_4.stop()
motor.GPIO.cleanup()
exit(0)

# 为进程退出准备处理程序
signal.signal(signal.SIGTERM, endProcess)
signal.signal(signal.SIGINT, endProcess)
signal.signal(signal.SIGHUP, endProcess)
signal.signal (signal.SIGQUIT, endProcess)

motor.Setting(0.01, 60)
print '电机启动...'
while True:
print '电机 A 正向转动...'
motor.Go_1()
time.sleep(1)
print '电机 A 反向转动...'
motor.Back_1()
time.sleep(1)
print '电机 A 停止...'
motor.Stop()
time.sleep(1)
print '电机 B 正向转动...'
motor.Go_2()
time.sleep(1)
print '电机 B 反向转动...'
motor.Back_2()
time.sleep(1)
print '电机 B 停止...'
motor.Stop()
time.sleep(1)

2.运行此程序。Raspberry Pi Motor Driver Board v1.0 上的 LED1、LED2 将交替点亮;LED3、LED4 也将交替点亮。

这意味着 Out 1 和 Out 2(Out 3 和 Out 4)连接电机 A(B)的正向和反向。

3.您可以看到如下现象:

串行控制台:

Raspberry Pi Motor Driver Board v1.0: 绿色 LED 和蓝色 LED 交替点亮。

原理图在线查看器

资源

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...