DCブラシありモータは、電源の極性で回転方向が決まります。したがって、CW( clockwise、時計回り)方向とCCW(counterclockwise、逆)方向の切り替えをつないだまま変更するには、Hブリッジ回路が使われます。
MOSFETとマイコン (3) DCモータを動かす その1
●使用したHブリッジIC BD65496MUVボードのおもなスペック
スイッチサイエンスから入手したPoluloのボードを利用します。
- 対応モータ電圧 4.5~36V
- ロジック電圧 2.5~5.5V
- 定格電流 1.2A @12V
- ピーク電流 5A
●使用したモータ
スイッチサイエンスから入手しました。ノイズ対策用にセラミック・コンデンサが端子間にはんだ付けされています。
ワイヤ付きホビーモーター 2736
- 定格電圧 3.0V
- 電源電圧 1.0~3.0 V(~12V)
- 無負荷時回転数(1.0 V、110 mA時) 6600±10% rpm
- 無負荷時電流 最大110mA
- ストール時電流 0.8 A
- 重量 約26 g
●クラス
クラスgpiozero.Motor(forward, backward, *, pwm=True, pin_factory=None)
CompositeDeviceを拡張し、双方向モータ・ドライバ回路(つまりHブリッジ)に接続されたモータを駆動する。 ラズパイにHブリッジ・モータ・コントローラを取り付け、電源(バッテリ・パックや5Vピンなど)をコントローラに接続する。コントローラ・ボードの出力をモータの二つの端子に接続し、コントローラ・ボードの入力を二つのGPIOピンに接続する。
パラメータ;
forward (int or str) – モータ・ドライバ・チップの前方入力であるGPIOピンに接続されている。有効なピン番号については、ピン番号を参照。これがNoneの場合、GPIODeviceErrorが発生する。 backward (int or str) – モータ・ドライバ・チップの逆方向入力が接続されているGPIOピン。有効なピン番号については、ピン番号を参照。これがNoneの場合、GPIODeviceErrorが発生する。 enable (int or str or None) – モータを有効にするGPIOピン。一部のモータ・コントローラ・ボードに必要。有効なピン番号については、ピン番号を参照。 pwm (bool) – True(デフォルト)の場合、モータ・コントローラ・ピンはPWMOutputDeviceのインスタンスを作成し、方向と可変速度の両方を制御する。 Falseの場合、DigitalOutputDeviceインスタンスを作成し、方向の制御のみを行う。 pin_factory (Factory or None) – APIの解説を読む。
backward(speed=1)
モータを後方に駆動する。
パラメータ;
speed (float) – モータが回転する速度。クラスが構築されたときにpwmがTrueの場合は0(停止)からデフォルトの1(最大速度)までの任意の値にすることができる(そうでない場合は0または1のみ)。
|
forward(speed=1)
モータを前進させる。
パラメータ;
speed (float) – 速度(フロート)– モータが回転する速度。クラスが構築されたときにpwmがTrueの場合は0(停止)からデフォルトの1(最大速度)までの任意の値にすることができる(そうでない場合は0または1のみ)。
|
reverse()
モータの現在の方向を逆にする。モータが現在アイドル状態の場合、これは何もしない。それ以外の場合、モータの方向は現在の速度で逆になる。
|
is_active
モータが現在動作している場合はTrueを返し、それ以外の場合はFalseを返す。
|
value
モータの速度を、-1(全速力後退)と1(全速力前進)の間の浮動小数点値として表し、0は停止を表する。
|
|
●接続-1
入力INA/INBにPWM信号を入れる接続です。
●プログラム
backward()の引数speedが0.08以下だと回転を始めませんでした。
from gpiozero import Motor
from time import sleep
motor = Motor(17, 18)
motor.backward(0.09)
sleep(3)
motor.stop()
|
●接続-2
入力INAにPWM信号を、入力INBにdirection信号を入れる接続です。PWM端子を3.3Vにつなぎ、クラスを使うとき、引数にpwm=Falseを追加します。
speedのパラメータは'0'もしくは'1'に限定され、回転速度の調整はできませんでした。
from gpiozero import Motor
from time import sleep
motor = Motor(17, 18, pwm=False)
motor.forward(1)
sleep(3)
motor.stop()
|