目次>5章 第2ステップ(色々な実験)> (22)DCモータの制御(正転/逆転,スピード制御)
DCモータの制御
− 正転/逆転,スピード制御 −
更新日2008.11.9
前のページでDCモータを一定方向に回転させ、停止・スピード制御ができました。
今回は、正転・逆転の実験を行います。
正転・逆転の考え方
|
・ |
|
|
DCモータは流す電流の方向で回転方向も変わります。
- 例えば、下の回路はスイッチでモータを正転・逆転する回路です。
-
| 図のようにスイッチが下になっていると、モータの右側が+になります。
スイッチを上にすると、モータの右側は−に変わりますので逆転します。
|
この回路のスイッチをFETに置き換えたものが下の回路です。 (イメージ図です。)
-
|
|
【補足】 この回路でも動作しますが、一般的にFETはドレインに負荷を接続しますので、上の2つをPチャネルMOS−FETにしてゲートの制御も下2つとは分けます。
トランジスタを使う場合は、上2つはPNP型で下2つはNPN型を使います。
|
見た目、分かりづらいですが、ゲート回路をはずすと以下のようになっています。
-
|
| 左上と右下のFETをペアにしてON/OFFができるようになっています。
同様に右上と左下のFETももう一つのペアになります。
|
では、スイッチの状態でモータにどのように電流が流れるか見てみましょう。
-
|
|
図のようにスイッチが上になっていると、左上と右下のFETがONになり、赤の矢印のように電流が流れます。
|
-
|
|
次にスイッチを下にすると、右上と左下のFETがONになり、赤の矢印のように電流が流れます。
モータに流れる電流は上とは逆になっていますので逆回転します。
|
この回路はフルブリッジやHブリッジと呼ばれています。
スイッチの部分をPICに置き換える事でモータの正転・逆転制御ができますが、実用のためにはもう少し工夫が必要です。
今回は、フルブリッジを内蔵したDCモータ制御専用のICを使います。
|
DCモータ用フルブリッジドライバ
|
・ |
|
|
今回使用したDCモータドライバは、東芝のTA7291Pと言うICです。(下の写真)
-
- 仕様
-
Vcc | 4.5〜20V | 制御回路電源電圧
| Vs | 0〜20V | モータ側電源電圧
| Vref | 0〜20V | モータ基準電圧(Vs以下にする)
| 出力電流 | 1A | モータ駆動最大電流
| 出力ピーク電流 | 2A | モータ駆動最大電流(ピーク)
|
- ピンの使い方
-
ピンは、放熱板の切り欠きがある側が1番ピンです。
ピン番号 | 端子記号 | 意 味
| 1 | GND | GND
| 2 | OUT1 | モータ接続
| 3 | - |
| 4 | Vref | モータ電圧調整(基準電圧)
| 5 | IN1 | 制御信号
| 6 | IN2 | 制御信号
| 7 | Vcc | 制御回路電源電圧
| 8 | Vs | モータ側電源電圧
| 9 | - |
| 10 | OUT2 | モータ接続
|
- 制御信号(IN1,IN2)とモータ(OUT1,OUT2)の関係
-
入 力 | 出 力 | モータ動作
| IN1 | IN2 | OUT1 | OUT2
| 0 | 0 | ∞ | ∞ | ストップ
| 1 | 0 | H | L | 正転
| 0 | 1 | L | H | 逆転
| 1 | 1 | L | L | ブレーキ
|
|
実験回路
|
|
今回の実験回路です。
前回との違いは、RB2,3にTA7291Pを接続している点です。
左の積分回路,スイッチ,右の表示回路は前回と同じです。
-
こちらはブレッドボードに組んだ状態。
-
|
正転・逆転の動作確認
|
|
それでは早速、実験に取り掛かりましょう。
- この表は先ほどの表と同じですが、入力をIN1,IN2の代わりにRB2,RB3にしています。
-
入 力 | 出 力 | モータ動作
| RB2 (IN1) | RB3 (IN2) | OUT1 | OUT2
| 0 | 0 | ∞ | ∞ | ストップ
| 1 | 0 | H | L | 正転
| 0 | 1 | L | H | 逆転
| 1 | 1 | L | L | ブレーキ
|
水色の2パターンをスイッチ操作で選択し、モータの回転方向を反転して見ます。
下のプログラムがその例です。
電源を入れると正転し、スイッチを押すと逆転,離すと正転します。
-
LIST P=PIC16F84A
INCLUDE P16F84A.INC
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ORG 0
; ================ 初期処理 =======================
BSF STATUS,RP0 ;■バンク1に切替え
MOVLW 0F3h ;
MOVWF TRISB ;RB2,3は出力
BCF STATUS,RP0 ;■バンク0に切替え
CLRF PORTB ;PORTBをクリア
; ================ メイン =========================
main
BTFSS PORTA,2 ;スイッチON?
GOTO main_off ; No
main_on
MOVLW 04h
MOVWF PORTB ;正転
GOTO main
main_off
MOVLW 08h
MOVWF PORTB ;逆転
GOTO main
END
|
正転,逆転を入れ替える時、一旦停止すべきですが、動作を確認するだけですので停止は省略し簡略化しています。
|
正転・逆転,スピード制御
|
|
正転,逆転ができたら次はスピード制御を追加します。
また、スイッチで状態を切り替えられるようにしましょう。
スイッチ操作で下の表のように順次状態を切り替えます。
電源ON直後は1の状態で、スイッチを押す毎に6まで切り替えその次は1に戻ります。
-
順番 | RB2 (IN1) | RB3 (IN2) | モータの制御
| 1 | 0 | 0 | ストップ
| 2 | 1 | 1 | ブレーキ
| 3 | 1 | 0 | 正転
| 4 | 0 | 0 | ストップ
| 5 | 1 | 1 | ブレーキ
| 6 | 0 | 1 | 逆転
|
また、正転・逆転の時"1"をセットするポートをPWM制御する事でスピードも可変にします。
LCDには以下のように状態を表示します。
-
A/D=aa PWM=pp +
Max=mm dif=dd
|
aa | : A/D変換結果を16進数で表示
| pp | : PWMのパルス幅を16進数で表示
| + | : モータの状態(+:正転,-:逆転,P:ストップ,B:ブレーキ)
| mm | : 電源ON後の初回のA/D変換結果を16進数で表示
| dd | : 0FFhと上記mmとの差を16進数で表示
|
|
プログラム
|
|
概略処理フローを載せておきます。
上の正転・逆転プログラムと比較するとかなり大きくなっています。
-
【2009.1.28追記】
A/D変換処理中(AD_proc3のループ中)は、TMR0割込みを禁止しておくのが良いと思います。
|
- こちらは実験風景。
-
|
感想など
|
|
これでDCモータを自由にコントロールできるようになりました。
これを応用すると、バイポーラ型のステッピングモータの制御ができます。
バイポーラ型のステッピングモータが安く手に入ったら応用編としてアップしようと思います。
|