TOPに戻る

gpiozeroライブラリ入門⑪import PhaseEnableMotor

 前回までクラスMotorで次のデバイスを利用しました。

  モータ電圧[V]  電流[A] チャネル
その1 BD65496 4.5~36 1.2A 1
その2 TB67H420FTG 10〜47 シングル時3.4 1もしくは2
その3 TB6612 ~15 1.2 2
その4 MC33926 5~28 2.5 1

 ここでは、クラスPhaseEnableMotorを利用します。どちらも入力は二つですが、MotorとはPWM波形の出方が異なっています。

Motor

PhaseEnableMotor

 DRV8835のデータシートによれば、Enable入力がHighのときに出力が出ます。PhaseがLowはデューティ0%、Highはデューティ100%のPWM信号を想定しているのかもしれません。

 Phase/Enable入力をもつPololuのHブリッジIC DRV8835ボードをスイッチサイエンスから入手しました。解説のページはこちらです。DRV8835自体のデータシートはこちらです。
 

DRV8835のおもな特徴

  • モータ電源電圧 0~11V
  • 出力電流 連続1.2A/モータ
  •  並列に入力することで連続2.4A
  • ロジック電源電圧 2~7V
  • ロジック入力電圧 3/5V
  • 入力信号 IN/IN(MODE=0)もしくはPHASE/ENABLE(MODE=1)

接続

 PHASE/ENABLEモードで使うには、MODE端子を3.3Vへつなぎます。

 モータは1個だけつなぎます。

 AIN1/PH端子がPhase入力、AIN2/EN端子がEnable入力です。出力は、シルク印刷の中央の'A'の左にあるO1/O2です。
 Vinはモータの電源で、ここでは009Pをつなぎます。
 Vccはロジックの電源で、ここではラズパイの3.3Vにつなぎます。
 Vmmは、Vinの端子から逆接続保護回路を通したモータの電源です。今回は使っていません。

クラス

class gpiozero.PhaseEnableMotor(phase, enable, *, pwm=True, pin_factory=None)

 CompositeDeviceを拡張し、フェーズ/イネーブル・モータ・ドライバ回路に接続された汎用モータを制御する。ドライバの位相でモータが前進または後退するかどうかを制御し、イネーブルはPWMのデューティ比で速度を制御する


パラメータ;
 phase (int or str) – モータ・ドライバ・チップの位相(方向)入力が接続されているGPIOピン。有効なピン番号は、ピン番号を参照。これがNoneの場合、GPIODeviceErrorが発生する。
 enable (int or str) – モータ・ドライバ・チップのイネーブル(速度)入力が接続されているGPIOピン。有効なピン番号は、ピン番号を参照。これがNoneの場合、GPIODeviceErrorが発生する。
 pwm (bool) – True(デフォルト)の場合、モータ・コントローラ・ピンのPWMOutputDeviceインスタンスを作成し、方向と可変速度の両方の制御を可能にする。 Falseの場合、DigitalOutputDeviceインスタンスを作成し、方向制御のみを許可する。
 pin_factory (Factory or None) – APIの解説を読む。

backward(speed=1)

 モータを後方に駆動する。

パラメータ;

 speed (float) – モータが回転する速度。 0(停止)からデフォルトの1(最大速度)までの任意の値を指定できる。

forward(speed=1)

 モータを前進させる。

パラメータ;

 speed (float) – モータが回転する速度。 0(停止)からデフォルトの1(最大速度)までの任意の値を指定できる。

reverse()

 モータの現在の方向を逆にする。 モータが現在アイドル状態の場合は何もしない。 それ以外の場合、モータの方向は現在の速度で逆になる。

stop()

 モータを停止する。

is_active

 モータが現在動作している場合はTrueを返し、それ以外の場合はFalseを返す。

value

 モータの速度を、-1(全速力後退)と1(全速力前進)の間の浮動小数点値として表す。

プログラム

from gpiozero import PhaseEnableMotor
from time import sleep

motor = PhaseEnableMotor(12, 5)
motor.backward(0.1)

sleep(3)
motor.stop()

連載 gpiozeroライブラリ入門

- OutputDevice -

(1) LED その1 (2) LED その2 (3) PWMLED (4) RGBLED

(5) Buzzer (6) TonalBuzzer

(7) Motor その1 BD65496 (8) その2 TB67H420FTG (9) その3 TB6612 (10) その4 MC33926 (11) PhaseEnableMotor DRV8835

(12) Servo (13) AngularServo

- SPI Device -

(14) 10ビットA-DコンバータMCP3001/MCP3002/MCP3004/MCP3008

(15) 12ビットA-DコンバータMCP3201/MCP3202/MCP3204/MCP3208

(16) 13ビットA-DコンバータMCP3301/MCP3302/MCP3304