この製品は、ラズベリーパイに取付けてDCモータを2台制御できる高出力モータードライバーです。Raspberry Piの40ピンコネクタに装着するHAT拡張ボードになっているため、配線も簡単ですぐにモータを制御できます。
モータ制御のプログラミングは、pythonライブラリが提供されており、簡単にDCモーターを制御できるようになっています。
4種類のボード(18v22, 18v18, 24v18, 24v14)があり、それぞれで制御できる電圧や電流のスペックが異なります。
18v22 | 18v18 | 24v18 | 24v14 | |
---|---|---|---|---|
絶対最大入力電圧[V] | 30 | 30 | 36 | 36 |
最大定格入力電圧[V] | 18 | 18 | 28 | 28 |
最大連続電流[A] | 22 | 18 | 18 | 14 |
標準遮断電流[A] | 60 | 50 | 50 | 40 |
パーツキット型番 | 3754 [suzaku-shop code=’pololu-3754′] | 3750 [suzaku-shop code=’pololu-3750′] | 3756 [suzaku-shop code=’pololu-3756′] | 3752 [suzaku-shop code=’pololu-3752′] |
実装済型番 | – | 3751 [suzaku-shop code=’pololu-3751′] | – | 3753 [suzaku-shop code=’pololu-3753′] |
[itemlink post_id=”238″]
Pololu提供のPythonライブラリを使用することで簡単に制御できますので、Pythonの動作環境を準備します。
sudo apt-get install python-dev python-pip
sudo pip install wiringpi
sudo pip3 install wiringpi
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へ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()
このライブラリは、超音波領域の20kHz PWMでモータを制御します。
モータ速度は、-480~480の範囲で設定し、速度0が停止ブレーキになります。速度がプラスの値はM1A/M2AからM1B/M2Bへ電流が流れ、マイナスの値は逆に流れます。
ライブラリを次の行でPythonプログラムへインポートできます。
from dual_g2_hpmd_rpi import motors, MAX_SPEED
ライブラリをインポートして後に、次の関数でモータを有効にしてモータを制御できます。
このライブラリが提供する全てのオブジェクトで、定数 MAX_SPEED (480に等しい)を使用できます。上記のようにインポートした場合は、MAX_SPEEDと書くことで直接アクセスできます。次のようにアクセスすることもできます。
複数のモータードライバを使用している場合は、import dual_g2_hpmd_rpi を使用してインポートすることをおすすめします。この場合には、上記の関数の前に、dual_g2_hpmd_rpi を付ける必要があります。
[itemlink post_id=”240″]
[itemlink post_id=”242″]
[itemlink post_id=”241″]
[itemlink post_id=”243″]