このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
DC モータは磁石で覆われたケースの中でコイルが磁界を発生させ、回転力を 生じるものです。 コイルが磁石に接近するとブラシによりコイルの極性が反転し、回転を持続す るようになっています。 これをブラシ付きモータと言うこともあります。 DC モータは安価で高出力ですが、ブラシは摩擦で摩耗するため寿命が比較的短 いです。
DC モータは動力を発生させるため、大きなエネルギーを必要とします。その ため、多くの電流が流れます。 例えばマブチモータの FA130 では電源電圧 1.5V に対して、電流は最大で 1A 流れます。 そのため、マイコンには直接接続できません。 通常はリレーやトランジスタのスイッチング回路を使用します。
トランジスタのスイッチング回路において、大電流を制御するにはベース電流 を多く流す必要があります。 しかし、制御側が流せる電流にも限りがあります。 この場合、一つのトランジスタではhFEが足りないということにな ります。 そのため、トランジスタを二段使い、一段目のエミッタを二段目のベースに接 続するのがダーリントン接続です。 一段目のベースに IB を流すと、一段目のコレクタには hFEIBだけ電流が流れるので、エミッタには (1+hFE)IB の電流が流れます。 これが二段目のベースに流れると、二段目のコレクタにはこの hFE 倍流れます。 したがって、一段目、二段目のコレクタ電流の合計は hFEIB+hFE(1+hFE)IB となり、ダーリントン接続により一つのトランジスタとみなすと hFE'=hFE(2+hFE) と二乗よりも大きな利得が得られます。 これにより小さな電流で大きな電流のスイッチングができるようになります。
モータにはコイルが入っています。 コイルに電流を流すと、コイルは磁界としてエネルギーを蓄えます。 そして、電流を切ると磁界を維持するように電圧が発生します。 これをフライバック電圧と言います。 トランジスタのスイッチング回路を直接接続すると、トランジスタで回路を切 断したとき、トランジスタに大きな逆電圧がかかります。 そのため、トランジスタを保護するため、逆電圧は逃す必要があります。
このフライバック電圧に対して、モータをダイオードで短絡するとダイオード に電流が流れるので、 トランジスタには大きな逆電圧がかからずに済みます。 このモータを短絡するダイオードをフリーホイールダイオードと 呼びます。
また、さらにトランジスタを逆電圧から守るため、コレクタ・エミッタ間やベー ス・エミッタ間にダイオードを入れることもあります。
フリーホイールダイオードを入れると、モータの電源を切ったとき、ダイ オードに電流が流れます。 これはモータが発電機として仕事をしたことになるので、モータの回転エネル ギーが電気エネルギーに変換されたことになります。 つまり、モータは仕事をした分だけ減速します。
但し、モータはフリーホイールダイオードを接続しても瞬時に回転が止まる訳ではあ りません。 つまり、高速でモータの電源を On-Off を繰り返すと、モータは低速で回転す るようになり、与えた電気エネルギーに対応した仕事をすることになります。 モータをマイコンからスイッチング回路で動作させる際、LED の明るさを変え たように duty 比を変えることでモータの速度を変化できます。
図のように 4 つのスイッチを接続するとスイッチの組み合わせにより次のよ うな 4 種類の制御が可能になります。
このモータの制御回路をH ブリッジ回路と言います。
なお、このスイッチの制御において、この図のようにしてしまうと電源をショー トしてしまいます。 この時に流れる電流を貫通電流と呼びます。 制御を行う上で貫通電流が流れないようにすることが重要です。
さて、これをトランジスタでこれを実現するにはどうすればいいでしょうか? 通常のスイッチング回路は電源側に負荷を接続しますが、この回路では電源側 にもスイッチがあるので、原則通りのスイッチング回路では制御できません。
NPN トランジスタのスイッチング回路ではエミッタを直接接地します。 一方、 PNP トランジスタのスイッチング回路を考えると、図のようにエミッ タは電源に接続することになります。 電源側から、 PNP トランジスタのスイッチング回路、負荷、 NPN トランジス タのスイッチング回路、グランドの順に接続することで二つのスイッチで負荷 を挟むことができるようになります。
このとき、 NPN トランジスタと同等の性能の PNP トランジスタを選定する必 要があります。同等の性能である対になるトランジスタのことを コンプリメント と言います。
このコンプリメントを使った H ブリッジ回路は図の通りです。
但し、このままでは PNP トランジスタを On, Off するにはベース側に負荷に 与える電源と同じ電圧が必要になります。 PIC などで制御するには PIC の電圧によるスイッチング回路を付加する必要 があります。
なお、大容量の電流をスイッチするための FET は パワーMOS FET と言います。 通常は N 型のパワー MOS FET を使いますが、このようにコンプリメントが必 要なときは P 型を使います。 なお、MOS FET は高性能ですが、静電気に弱いので取扱いに注意する必要があ ります。
トランジスタによる定電流回路はベースの電圧に応じて、コレクタに(つまりエ ミッタにも)一定の電流を流す物でした。 ここで、コレクタを直接電源につなぎ、エミッタ側に負荷を接続すると、ベー スの電圧が高いときはベース・エミッタ間電圧が VBE(≒0.6V)に なるように電流が流れ、ベースの電圧が低いときは電流が流れないようになり ます。 この回路は通常 エミッタフォロワ と呼ばれます。 ベースの電圧とエミッタの電圧の変動幅は同じになるので増幅率は 1 ですが、 高周波特性が良く、出力インピーダンスが低いので、オーディオの回路の出力 段等で良く用いられます。 但し、トランジスタは完全に On にならずにベースの電流に比例してコレクタ の電流は流れる状態になります。 そのため、コレクタ・エミッタ間に発生する電圧降下の分、トランジスタに熱 が発生します。 従って、モータの制御等でこの回路を使う際には特にトランジスタの熱対策が 必要になります。
スイッチング回路では、回路の構成により、信号側の電圧(Vi)と スイッチされる電源側の電圧(Vo)を異なるように設定できます。 バイポーラトランジスタの NPN, PNP と FET の N型, P型の各回路での 制約をまとめると以下のようになります(但し Vi, Vo≥ 0 と仮定します)。
トランジスタ型 | 回路 | Vi(OFF) | Vi(ON) | Vo の制約 |
---|---|---|---|---|
NPN BTr | Vi<0.4V(ベース電流が流れないベース電圧) | Vi> 0.8V, Ii> 20mA (ベース・エミッタが飽和するベース電圧、ベース電流) | 0.2V以上(ベース・エミッタ飽和電圧の最大値) | |
PNP BTr | Vi>Vo-0.4V | Vi<Vo-0.8V, Ii> -20mA | 0.8+0.2V以上(ON 時のベース電圧+ベースエミッタ間飽和電圧) | |
N型 FET | Vi<1.8V(ドレイン電流が流れないゲート・ソース間電圧) | Vi> 4V (ドレイン電流が飽和するゲート・ソース間電圧) | 自由(FET の場合ドレイン・ソース間は抵抗と等価) | |
P型 FET | Vi>Vo-1.8V(ドレイン電流が流れないゲート・ ソース間電圧) | Vi< Vo-4V (ドレイン電流が飽和するゲート・ソース間電圧) | 4V以上(ON 時のゲート・ソース間電圧) |
マイコンで駆動する限り NPN, N型に関しては大した差はありません。 特に大電流が必要な場合、 NPN トランジスタだとコレクタ電流に応じてベー ス電流を多く流す必要が出てきますが、 N型 FET では定められた電圧をかけ ることが全てで、電流はほとんど流れません。 したがって、 N 型 FET の方が望ましいと言えます。 一方、電源側でスイッチングする PNP, P 型に関しては、 Vo の 制約が出てきます。 特に、 P 型 FET では 4V 以上無いと動作できません。 従って、模型のような 1.5V から 3V の電源は P 型 FET で組んだブリッジではコントロールできませ ん。 つまり、模型用のモータなどを駆動する時に、電源側のスイッチングを行うには PNP 型のトランジスタを用いる必要があります。 なお、 PNP 型の入力には Vo の制限がありますが、以下のように、 入力側に NPN のスイッチング回路を入れることで解決できます。
このようにモータを動作させるための回路はスイッチング回路の組み合わせで 構成します。 特に、H ブリッジを組むためには、最低でも 4 つのトランジスタが必要です。 モータをコントロールするためのトランジスタを一つの IC にまとめた物 を モータドライバ と呼びます。 モータドライバにはDC モータ用の H ブリッジもありますが、これとは別にス テッピングモータ用の二組二対の回路の入った物もありますので選定する際は 注意する必要があります。
DCモータ用のモータドライバとして代表的なのが東芝の TA7291 シリーズです。 データシートを参照すると下図のような等価回路が書かれています。 全て NPN のトランジスタによりスイッチングが行われます。 従って、グランド側のスイッチング回路は通常のオープンコレクタのスイッチ ング回路です。 一方、電源側のスイッチング回路はエミッタオープンになっています。 エミッタオープンによりベース電圧 Vref を基準電圧としてモータ に与える電圧をコントロールできます。 しかし、Vs と Vrefの差は常に熱エネルギーに変わっ てしまいます。
以下の回路を組み、モータの特性を調べます。 A,B と C,D にオシロスコープをつなぎます。 スイッチを入り切りして、その時の電圧の変化を調べます。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
マブチモータ FA-130RA | 1個 |
ダイオード 1N4007 | 1本 |
基板用タクトスイッチ | 1個 |
0.1Ω 5W抵抗 | 1本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
実験 7-1 のスイッチの部分をパワー MOS FET に変更し、PIC で制御します。 PIC には演習 6-3 のスイッチにより Duty 比が変わるプログラムを用意し、 RA ポートを FET につなぎます。 Duty 比や全体の周期を切替えて、どのようにモータが回り、どのように電圧 が変化するか調べなさい。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
PIC 16F628A と 18pin 以上のゼロプレッシャー IC ソケット | 一式 |
マブチモータ FA-130RA | 1個 |
パワー MOS FET 2SK2231 | 1石 |
ダイオード 1N4007 | 2本 |
10kΩ | 1本 |
22kΩ | 1本 |
基板用タクトスイッチ | 1個 |
0.1Ω 5W抵抗 | 1本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
前回の例6-5または演習6-2 のプログラムをそのまま使います。
パワー MOS FET は静電気に弱いので取扱いに注意すること
実験 7-2 のスイッチング回路を電源側の PNP トランジスタの構成に変更します。 PIC の制御は実験 7-2 同様に行います。
電源マークのうち、黒には電源装置を繋ぎます。 モータに 1.5V をかけるには何 V の電源が必要か測定しなさい。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
PIC 16F628A と 18pin 以上のゼロプレッシャー IC ソケット | 一式 |
マブチモータ FA-130RA | 1個 |
トランジスタ 2SB1018A | 1石 |
トランジスタ 2SC1815 | 1石 |
ダイオード 1N4007 | 2本 |
100Ω | 1本 |
1kΩ | 3本 |
10kΩ | 1本 |
基板用タクトスイッチ | 1個 |
0.1Ω 5W抵抗 | 1本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
前回の例6-5または演習6-2 のプログラムをそのまま使います。
抵抗値 R の算出方法は次の通りです。 モータの適正負荷時の電流は 500mA です。 スイッチング回路なので、2SB1018A を飽和させるには 1A 以上のコレクタ電 流が望めるようにベース電流を考えます。 2SB1018A の hFE はコレクタ電流が 1A の時、 70 から 240 です。 そのため、ベース電流は最大 1A/70=14.3...mA 必要になります。 ここで、余裕を見てベース電流に 20 mA 流すことにします。 2SB1018A の電源電圧を仮に 3.0V と仮定します。 すると、トランジスタが On になるとき、ベースの電圧は 3.0-0.8Vになりま す。 従って、求める抵抗にかかる電圧は 2.2V、流す電流は 20mA なので、 R=2.2/0.02=110 Ω となります。 E24 系列ではそのままこれでも良いですが、大目に電流を流す分には問題ない ので、 E12(E6) 系列で R=100Ω とします。
図のようにモータドライバ TA7291P を使ってモータの制御を行いなさい。 二つのスイッチを使ってモータの動作を制御しなさい。 なお、 LED は動作確認用です。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
PIC 16F628A と 18pin 以上のゼロプレッシャー IC ソケット | 一式 |
マブチモータ FA-130RA | 1個 |
モータドライバ TA7291P | 1個 |
基板用タクトスイッチ | 2個 |
LED | 2本 |
330Ω | 2本 |
10kΩ | 3本 |
0.1Ω 5W抵抗 | 1本 |
3Ω 5W抵抗 | 1本 |
10μF 電解コンデンサ | 2本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
入力スイッチを RA4、 RA5 とし、モータのコントロールは RA0、RA1 で 行うものとします。 接続は回路図の通りとします。
データシートにあるように、入力を切替える際に貫通電流が流れますので、指 示通り切替時に STOP モードに移るようにします。
トランジスタを一定時間 Off にする必要があるので、ここでは割り込みのタ イミングで次のような動作をするとします。
なお、データシートで指定されている一定時間は 100μs ですが、PIC はプ リスケーラ無しでも 256μs 間隔で割り込みがかかりますので、割り込み一 回分だけOff にすれば良いです。
;**********
;* 実験7-4 *
;**********
#include "gs25.inc"
org 0x0000
goto start
org 0x0004
goto timer0
org 0x0008
start
banksel TRISA ; enable PORTA
movlw b'11111100'
movwf TRISA
banksel PORTA
clrf PORTA
timer0_init b'11011000' ; 内部クロック、 PS なし
main
goto main
timer0_prg hbridgecnt
cblock
prev
now
endc
#define swmask b'00110000'
#define cntmask b'00000011'
#define offpattern b'11111100'
#define break b'00000011'
#define seiten b'00000001'
#define gyakuten b'00000010'
hbridgecnt
movlw swmask
andwf PORTA,0
movwf now
subwf prev,0
btfsc STATUS,Z
return
movlw cntmask
andwf PORTA,0
btfss STATUS,Z
goto setoff
movf now,0
movwf prev
readkey
btfss now,4
goto ra4off
ra4on
btfss now,5
goto ra4on5off
ra4on5on
movlw break
iorwf PORTA,1
return
ra4on5off
movlw seiten
iorwf PORTA,1
return
ra4off
btfss now,5
goto ra4off5off
ra4off5on
movlw gyakuten
iorwf PORTA,1
return
ra4off5off
setoff
movlw offpattern
andwf PORTA,1
return
end
R の計算。 R はモータ側のトラブルなどで回路が短絡したときに、 IC を守るための電流 制限抵抗です。 そのため、 Vs が GND に短絡したときに、 IC を流れる電流が最 大定格以下になるようにします。 Pタイプの場合、平均出力電流は 1.0A 以下ですので、Vs=3.0V の 時、 3Ω 以上であれば IC を守れます。 この時、抵抗が消費する電力は 3 W になるので、抵抗の電力は 5W 程度のも のを選ぶ必要があります。
図のように FET とトランジスタなどでH ブリッジを作りなさい。 PIC にはタクトスイッチを二つつなぎます。 そして、一方のスイッチを押すと正転し、もう一方のスイッチを押すと逆転す るようにしなさい。 但し、切替える時と、両方スイッチを押した時はブレーキがかかるようにしな さい。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
PIC 16F628A と 18pin 以上のゼロプレッシャー IC ソケット | 一式 |
マブチモータ FA-130RA | 1個 |
パワー MOS FET 2SK2231 | 2石 |
トランジスタ 2SB1018A | 2石 |
トランジスタ 2SC1815 | 2石 |
ダイオード 1N4007 | 4本 |
LED | 4本 |
100Ω | 2本 |
330Ω | 4本 |
1kΩ | 6本 |
10kΩ | 2本 |
22kΩ | 2本 |
基板用タクトスイッチ | 2個 |
0.1Ω 5W抵抗 | 1本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
PIC でFET などのトランジスタを制御して、正転、逆転の操作を可能にします。 ここで注意しなければならないのは、絶対に貫通電流を流さないようにするこ とです。 トランジスタの性能は同じ品番でも微妙に異なっているのが普通なので、同時 に On や Off の信号を送っても同時に On や Off になる保証はありません。 そのため、切替時は一定時間すべて Off にする必要があります。
入力スイッチを RA4、 RA5 とし、モータのコントロールは RA0 から RA3 で 行うものとします。 接続は回路図の通りとします。
プログラムは実験 7-4 と同様で、出力パターンのみを変えたものになります。
;**********
;* 実験7-5 *
;**********
#include "gs25.inc"
org 0x0000
goto start
org 0x0004
goto timer0
org 0x0008
start
banksel TRISA ; enable PORTA
movlw b'11110000'
movwf TRISA
banksel PORTA
clrf PORTA
timer0_init b'11011000' ; 内部クロック、 PS なし
main
goto main
timer0_prg hbridgecnt
cblock
prev
now
endc
#define swmask b'00110000'
#define cntmask b'00001111'
#define offpattern b'11110000'
#define break b'00000101'
#define seiten b'00000110'
#define gyakuten b'00001001'
hbridgecnt
movlw swmask
andwf PORTA,0
movwf now
subwf prev,0
btfsc STATUS,Z
return
movlw cntmask
andwf PORTA,0
btfss STATUS,Z
goto setoff
movf now,0
movwf prev
readkey
btfss now,4
goto ra4off
ra4on
btfss now,5
goto ra4on5off
ra4on5on
movlw break
iorwf PORTA,1
return
ra4on5off
movlw seiten
iorwf PORTA,1
return
ra4off
btfss now,5
goto ra4off5off
ra4off5on
movlw gyakuten
iorwf PORTA,1
return
ra4off5off
setoff
movlw offpattern
andwf PORTA,1
return
end
ラジコンなどで使用されるサーボモータはパルスにより角度を制御するモータ です。 サーボモータには電源、グランド、制御信号の三本の線があります。 制御信号は周期 20ms 程度のパルスを使用します。そして、 duty 比で角度を調整しま す。 1.5ms ± 0.5ms で向きが変化します。 duty 比だと 5% から 10% の範囲です。
サーボモータをコントロールするパルスをマイコンで発生します。 そして、サーボモータに接続し、実際に制御を行い、サーボモータの特性を調 べなさい。
機材 | 数量 |
---|---|
ブレッドボード | 一式 |
電池と電池ボックス(4.5V) | 一式 |
PIC 16F628A と 18pin 以上のゼロプレッシャー IC ソケット | 一式 |
基板用タクトスイッチ | 2個 |
10kΩ抵抗 | 2本 |
GWS サーボ S03T/2BB または S03T/2BBMG/F | 1個 |
0.1Ω 5W抵抗 | 1本 |
電源装置 | 1式 |
オシロスコープ | 1式 |
PIC にスイッチを二個とオシロスコープを繋ぎ、周期20ms のパルスを発生さ せなさい。スイッチと duty 比の関係は次のようになるように、オシロスコー プで確認しなさい。
スイッチ | duty 比 |
---|---|
全部 off または全部 on | 15% |
左が on, 右が off | 10% |
左が off, 右が on | 20% |
例 6-4 2 のプログラムを参考にします。 プリスケーラを使用しない場合、割り込みは 256 μs 間隔で発生します。 従って、周期を 20 ms にするには 20/0.256 = 78.125 となります。 そこで、 duty_period(周期)を 78 にします。
duty_ratio は PIC にふたつのボタンをつけて、増減させるようにします。 また、 duty_ratio の値を 7seg LED で表示するようにします。 このため、 RA4, RA5 にはスイッチを繋ぎ、出力は RA0 にします。 main 部分で、duty_ratio の値は、 PORTB を利用して表示させた後、 スイッチの値を読み込み、RA4 と RA5 の値に依り、 duty_ratio を変化させます。 なお duty_ratio の上限値は duty_period にしてますが、 getpat を呼び出 すときに duty_ratio が用意したパターンの数を越えると暴走してしまいます。 そのため、チェックを行っています。
;***********
;* 実験 7-6*
;***********
#include "gs25.inc"
org 0x0000
goto start
org 0x0004
goto timer0
org 0x0008
start
banksel TRISA ; enable PORTA
movlw b'11111110'
movwf TRISA
clrf TRISB
banksel PORTA
clrf PORTA
clrf PORTB
timer0_init b'11011000' ; 内部クロック、 PS 不使用
duty_init
movlw d'78'
movwf duty_period
movwf duty_counter
initposition equ d'5'
movlw initposition
movwf duty_ratio
main
movlw pat_end-pat_start
subwf duty_ratio,0
btfsc STATUS,C
goto errorout
movf duty_ratio,0
call getpat
goto disp
errorout
movlw b'11111111'
disp
movwf PORTB
call watchsw
goto main
getpat_num_prg
cblock
sw_prev
endc
watchsw
movf PORTA,0
xorwf sw_prev,0
andlw b'00110000'
btfsc STATUS,Z
return
movf PORTA,0
movwf sw_prev
btfss PORTA,4
goto ra4clr
ra4set
btfss PORTA,5
goto pat10
goto pat11
ra4clr
btfss PORTA,5
goto pat00
goto pat01
pat00
pat11
; movlw initposition
; movwf duty_ratio
nop
return
pat01
decfsz duty_ratio,1
return
incf duty_ratio,1
return
pat10
incf duty_ratio,1
movf duty_period,0
subwf duty_raio,0
btfss STATUS,Z
return
decf duty_ratio,1
return
timer0_prg duty
duty_prg porta_off, porta_on
porta_off
bcf PORTA,0
return
porta_on
bsf PORTA,0
return
end
次にサーボに接続します。サーボの配線は次のようになっています。
信号線 | 電源+ | GND | |
---|---|---|---|
JR | 橙 | 赤 | 茶 |
フタバ | 白 | 赤 | 黒 |
信号線をPIC の出力に繋ぎ、一方、サーボの電源は 0.1Ω 5W の抵抗を 介して 5V の電源装置に繋ぎます。
あるいは、 PIC と電源を共有する場合は、PIC の電源ピンのそばに 0.1μF のセラミックコンデンサと、 10μFの電解コンデンサをPIC電源とGND の間 につなぎ、モータから出るノイズをカットします。
簡単のため、 duty_period を 78 から 80 に変えても良い。
ステッピングモータはパルスを送ることで回転角を制御します。
部品 | 個数 |
---|---|
マブチモータ FA-130 | 1個 |
GWS サーボ S03T/2BB(JR またはフタバ) | 1個 |
モータドライバ TA7291P | 1個 |
パワー MOS FET 2SK2231 | 2石 |
トランジスタ 2SB1018A | 2石 |
トランジスタ 2SC1815 | 2石 |
ダイオード 1N4007 | 4本 |
LED | 4本 |
0.1Ω 5Wセメント抵抗 | 1本 |
3Ω 5Wセメント抵抗 | 1本 |
100Ω | 2本 |
330Ω | 4本 |
1kΩ | 6本 |
10kΩ | 3本 |
22kΩ | 2本 |
0.1μF (積層)セラミックコンデンサ | 1本 |
10μF 電解コンデンサ | 2本 |
基板用タクトスイッチ | 2個 |
3V 分の電池と電池ボックスセット | 1式 |
3pinの電源用の基板コネクタ(千石通商) | 1個 |