目次>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です。(下の写真)

仕様
Vcc4.5〜20V制御回路電源電圧
Vs0〜20Vモータ側電源電圧
Vref0〜20Vモータ基準電圧(Vs以下にする)
出力電流1Aモータ駆動最大電流
出力ピーク電流2Aモータ駆動最大電流(ピーク)
ピンの使い方
ピンは、放熱板の切り欠きがある側が1番ピンです。
ピン番号端子記号意 味
1GNDGND
2OUT1モータ接続
3-
4Vrefモータ電圧調整(基準電圧)
5IN1制御信号
6IN2制御信号
7Vcc制御回路電源電圧
8Vsモータ側電源電圧
9-
10OUT2モータ接続
制御信号(IN1,IN2)とモータ(OUT1,OUT2)の関係
入 力出 力モータ動作
 IN1  IN2 OUT1OUT2
00ストップ
10HL正転
01LH逆転
11LLブレーキ

実験回路

今回の実験回路です。

前回との違いは、RB2,3にTA7291Pを接続している点です。
左の積分回路,スイッチ,右の表示回路は前回と同じです。

こちらはブレッドボードに組んだ状態。

正転・逆転の動作確認

それでは早速、実験に取り掛かりましょう。

この表は先ほどの表と同じですが、入力をIN1,IN2の代わりにRB2,RB3にしています。
入 力出 力モータ動作
RB2
(IN1)
RB3
(IN2)
OUT1OUT2
00ストップ
10HL正転
01LH逆転
11LLブレーキ

水色の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)
モータの制御
100ストップ
211ブレーキ
310正転
400ストップ
511ブレーキ
601逆転
また、正転・逆転の時"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モータを自由にコントロールできるようになりました。
これを応用すると、バイポーラ型のステッピングモータの制御ができます。
バイポーラ型のステッピングモータが安く手に入ったら応用編としてアップしようと思います。