創るたのしみを応援

Pololu Raspberry Pi対応デュアルG2ハイパワーモータドライバ

Pololu Raspberry Pi対応デュアルG2ハイパワーモータドライバ

この製品は、ラズベリーパイに取付けてDCモータを2台制御できる高出力モータードライバーです。Raspberry Piの40ピンコネクタに装着するHAT拡張ボードになっているため、配線も簡単ですぐにモータを制御できます。

モータ制御のプログラミングは、pythonライブラリが提供されており、簡単にDCモーターを制御できるようになっています。

4種類のボード(18v22, 18v18, 24v18, 24v14)があり、それぞれで制御できる電圧や電流のスペックが異なります。

18v2218v1824v1824v14
絶対最大入力電圧[V]30303636
最大定格入力電圧[V]18182828
最大連続電流[A]22181814
標準遮断電流[A]60505040
パーツキット型番3754
朱雀技研工房ストアで購入
3750
朱雀技研工房ストアで購入
3756
朱雀技研工房ストアで購入
3752
朱雀技研工房ストアで購入
実装済型番3751
朱雀技研工房ストアで購入
3753
朱雀技研工房ストアで購入
  • 対応ラズベリーパイ
    • Raspberry Pi 1 Model A+
    • Raspberry Pi 1 Model B+
    • Raspberry Pi 2 シリーズ
    • Raspberry Pi 3 シリーズ
  • つぎのラズベリーパイでは使用できません。
    • Raspberry Pi 1 Model A(販売終了)
    • Raspberry Pi 1 Model B(販売終了)
    • Raspberry Pi Zero シリーズ
    • Compute Module シリーズ

使用前の準備

Pololu提供のPythonライブラリを使用することで簡単に制御できますので、Pythonの動作環境を準備します。

ライブラリの準備

Python pipをインストール

sudo apt-get install python-dev python-pip

GPIO制御用ライブラリをインストール

sudo pip install wiringpi
sudo pip3 install wiringpi

モータードライバーのPololuライブラリをインストール

PololuのGithubサイトからcloneして、ライブラリをインストールします。

git clone https://github.com/pololu/dual-g2-high-power-motor-driver-rpi
cd dual-g2-high-power-motor-driver-rpi
sudo python setup.py install
git clone https://github.com/pololu/dual-g2-high-power-motor-driver-rpi
cd dual-g2-high-power-motor-driver-rpi
sudo python3 setup.py install

ハードウェアの準備

Raspberry Piへの取付け

  1. パーツキットの場合は、ヘッダピンや端子台をはんだ付けします。
  2. Raspberry Piとの接続に、付属のスペーサを必ず取り付けてください。端子の足がラズパイの金属部分に触れると短絡し、故障の原因になります。

電源と配線

図のように、バッテリーとモータを接続します。

電源の逆接続保護がついているため、+とーを逆に接続しても壊れません。電源を逆接続した場合は、動作もしませんので、正しく接続し直して使用してください。

接続したバッテリーから、Raspberry Piへ5V 最大2.5Aが供給されるため、Raspberry Piへ別電源で供給する必要がありません。別電源から供給したい場合は、配線をカットすることで電源レギュレータを切ることもできます。詳細は製品ページをご確認ください。

モータを動かす

Pololuのサンプルコードを動かします。

ライブラリの準備の時にGithubからcloneした中にあるexample.pyを使用します。ディレクトリの位置が dual-g2-high-power-motor-driver-rpi であることを確認し、次のコマンドでサンプルコードを実行できます。

sudo python example.py
sudo python3 example.py

実行すると、モータ1、モータ2の順に

正転→停止→逆転→停止

といった動きをします。

example.pyのコードは次のように基本的な動作が書かれています。他の関数はPololu GithubのLibrary Referenceを確認してください。

from __future__ import print_function
import time
from dual_g2_hpmd_rpi import motors, MAX_SPEED

# モーター速度設定
test_forward_speeds = list(range(0, MAX_SPEED, 1)) + \
  [MAX_SPEED] * 200 + list(range(MAX_SPEED, 0, -1)) + [0]  

test_reverse_speeds = list(range(0, -MAX_SPEED, -1)) + \
  [-MAX_SPEED] * 200 + list(range(-MAX_SPEED, 0, 1)) + [0]  

try:
    motors.enable()
    motors.setSpeeds(0, 0)

    print("Motor 1 forward")
    for s in test_forward_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)

    print("Motor 1 reverse")
    for s in test_reverse_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)

    print("Motor 2 forward")
    for s in test_forward_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)

    print("Motor 2 reverse")
    for s in test_reverse_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)

finally:
  # 例外やCtrl+Cでプロセスを強制終了時にモーターを停止
  motors.setSpeeds(0, 0)
  motors.disable()

Libraryリファレンス概要

このライブラリは、超音波領域の20kHz PWMでモータを制御します。

モータ速度は、-480~480の範囲で設定し、速度0が停止ブレーキになります。速度がプラスの値はM1A/M2AからM1B/M2Bへ電流が流れ、マイナスの値は逆に流れます。

ライブラリを次の行でPythonプログラムへインポートできます。

from dual_g2_hpmd_rpi import motors, MAX_SPEED

ライブラリをインポートして後に、次の関数でモータを有効にしてモータを制御できます。

  • motors.enable() : モーター1とモーター2を有効
  • motors.motor1.enable() : モーター1を有効
  • motors.motor2.enable() : モーター2を有効
  • motors.disable() : モーター1とモーター2を無効
  • motors.motor1.disable() : モーター1を無効
  • motors.motor2.disable() : モーター2を無効
  • motors.setSpeeds(m1_speed, m2_speed) : モーター1とモーター2の速度と回転方向設定(-480~480)
  • motors.motor1.setSpeed(speed) : モーター1の速度と回転方向設定(-480~480)
  • motors.motor2.setSpeed(speed) : モーター2の速度と回転方向設定(-480~480)

このライブラリが提供する全てのオブジェクトで、定数 MAX_SPEED (480に等しい)を使用できます。上記のようにインポートした場合は、MAX_SPEEDと書くことで直接アクセスできます。次のようにアクセスすることもできます。

  • motors.MAX_SPEED
  • motors.motor1.MAX_SPEED
  • motors.motor2.MAX_SPEED

複数のモータードライバを使用している場合は、import dual_g2_hpmd_rpi を使用してインポートすることをおすすめします。この場合には、上記の関数の前に、dual_g2_hpmd_rpi を付ける必要があります。

参考サイト

SNSでフォローする