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のデューティ比で速度を制御する
|
●プログラム
from gpiozero import PhaseEnableMotor from time import sleep motor = PhaseEnableMotor(12, 5) motor.backward(0.1) sleep(3) motor.stop() |