Raspberry Pi モータードライバーボード v1.0

Raspberry Pi モータードライバーボード v1.0 は、Freescale MC33932 デュアル H-ブリッジパワー IC をベースにしており、単一ブリッジあたり最大 5.0A のピーク電流で誘導負荷を制御することができます。このボードを使用することで、Raspberry Pi B/B+/A+ および Pi 2 Model B を使用して 2 つの DC モーターを駆動し、それぞれの速度と方向を独立して制御することができます。
Raspberry Pi モータードライバーボード v1.0 は、6V~28V の非常に広い入力電圧範囲をサポートしています。また、オンボード DC/DC コンバーターは非常に広い入力電圧範囲をサポートしており、最大 1000mA の電流で Raspberry Pi に 5V の電源を供給することができます。そのため、モーターを駆動し、Raspberry Pi を電源供給するために 1 つの電源だけが必要です。
特徴
- 出力短絡保護(VPWR または GND への短絡)
- 内部の一定オフ時間 PWM による過電流制限(調整)
- 温度依存の電流制限閾値の低減
- Raspberry Pi 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: DC 入力コネクタ。
- J2: モータードライバ出力コネクタ。
- EN,FT: EN 制御およびフォールトフラグ検出用ジャンパー。EN ジャンパーをショートすると、EN 信号が D4 ピンにマッピングされ、D4 ピンで H-ブリッジの出力を無効化したり、フォールトフラグをリセットしたりすることができます。FT ジャンパーをショートすると、フォールトフラグ信号が D3 ピンにマッピングされ、D3 ピンからフォールトフラグを読み取ることができます。
- IO: ロジック電圧レベル選択ジャンパー。このジャンパーから制御ロジック電圧レベルを選択できます。
- 電源供給: J1(DC 入力コネクタ)からシールドに電源を供給する必要があります。入力電圧範囲は 6Vdc ~ 28Vdc に設定できます。オンボード DC/DC コンバーターは DC 入力電圧を 5Vdc 出力電圧に変換してロジック回路に供給します。DC/DC コンバーターは最大 100mA の電流でマイクロコントローラーボード(Arduino/Seeeduino)を「5V」ピンから電源供給することもできます。
- モーターインターフェース:Out 1 と Out 2(Out 3 と Out 4)は DC モーター用のモーター A(B) に接続します。
動作中に H-ブリッジ IC や PCB ボードに触れないでください。フルロード動作の場合、温度が最大 100 度に達する可能性があります。
使用方法
このデモでは、Raspberry Pi B を使用して Raspberry Pi モータードライバーボード v1.0 を使用し、DC モーターを前進および後退させる方法を示します。
ハードウェアインストール
- Raspberry Pi B & Raspberry Pi モータードライバーボード v1.0
- ハードウェア接続は以下の図の通り
ネットワークに接続し、電源を供給します。

ソフトウェア部分
- Motor_Driver.py と PiSoftPwn.py を同じフォルダにダウンロードします。以下は Motor_Driver.py のコードです。
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import signal
from PiSoftPwm import *
#print 'Go_1...'
#frequency = 1.0 / self.sc_1.GetValue()
#speed = self.sc_2.GetValue()
class Motor():
def __init__(self):
# MC33932 pins
self.PWMA = 25
self.PWMB = 22
self._IN1 = 23
self._IN2 = 24
self._IN3 = 17
self._IN4 = 27
# Initialize 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)
# Initialize PWM outputs
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)
# Close pwm output
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()
# Called on process interruption. Set all pins to "Input" default mode.
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)
# Prepare handlers for process exit
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 'motor start...'
while True:
print 'motor A turning forward...'
motor.Go_1()
time.sleep(1)
print 'motor A turning backward...'
motor.Back_1()
time.sleep(1)
print 'motor A stop...'
motor.Stop()
time.sleep(1)
print 'motor B turning forward...'
motor.Go_2()
time.sleep(1)
print 'motor B turning backward...'
motor.Back_2()
time.sleep(1)
print 'motor B stop...'
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 が交互に点灯します。

回路図オンラインビューア
リソース
- Eagle ファイル Raspberry Pi Motor Driver Board v1.0
- PDF Raspberry Pi Motor Driver Board v1.0
- MC33932VW データシート
- TD1519A データシート
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品をご利用いただく際に、スムーズな体験を提供するため、さまざまなサポートをご用意しています。お客様の好みやニーズに応じた複数のコミュニケーションチャネルを提供しています。
