Arduino

トランジスタを使ったDCモータの制御

いきなりタイトルを見た方は???となるかもしれませんが、今回はDCモータ(用途で有名なのがミニ四駆のモータ)を動かす回路を組んでいきたいと思います。

電池の電圧でDCモータを動かす回路とArduinoの電源でDCモータを動かす回路の2パターンをご紹介します。

電池でDCモータを動かす回路

さて、まずはArduinoを使わずDCモータを動かすために電池を電源として使います。電源に単三電池1.5v×2本とトランジスタのベースに単三電池1.5v×4本を使用しています。作成する回路は下図のようになります。

この回路を作るにあたって使用した機器・素子は以下の表をご参照ください。

ブレッドボード 抵抗・ジャンパー線などを使って回路を作る基板
DCモータ 直流電流で動作するモーター
トランジスタ 半導体のキャリアの運動によるスイッチング動作と増幅動作をもつ素子
抵抗1kΩ 電圧を下げる端子
ダイオード 順方向にしか電流が流れない半導体
コンデンサ0.1μF 電荷を充放電して電圧を一定にしたり、直流分をカットして交流分のみを取り出す素子
ジャンパー線 電気を中継する線
ワニ口クリップ 先端がワニ口をしているジャンパー線
電池ケース(単三2本) 3v用電源
電池ケース(単三4本) 5v用電源(実際は6v)

DCモータ

DCモータとは、直流電源で動作し、電気的なエネルギーを機械的なエネルギーに変換する装置の事です。さらに整流子(ブラシ)を持つDCブラシモータとブラシを持たないDブラシレスモータとに分けられます。以降では全てDCブラシモータについて書きます。

DCモータの特徴

DCモータは安価で電圧、電流の強さに比例してモータが速くそして強く回るいい特徴がある一方、音が大きいという悪い点もあります。以下に特徴をまとめました。

・入力電圧に比例して早く回る
・入力電流に比例してトルク(モータの力)が大きい
・起動時のトルクが大きい(=モータ始動時の力が強い)
・低価格
・高効率
・ブラシが消耗するため寿命が短い
・騒音が大きい
・大きなノイズが発生する

それでは、モータはどうやって回転するのでしょうか。

DCモータは磁界の中で円状の導線に電流が流れることで電磁力によって回転します。下図のように磁界を固定し、その間に反対の電流2本を流すことによって導線に磁界が発生するので上向きの電磁力と下向きの電磁力で回転する仕組みとなっています。

この磁界と電流の向きによって発生する電磁力を左手で表すことができ、このことをフレミングの左手の法則と言います。覚え方としては、中指が電流のことを中電(中国電力、中部電力)、人差し指が磁界のことを人磁、親指が電磁力のことを親磁力(親父力)と覚えます。

ダイオード

ダイオードとは、N型半導体とP型半導体を張り合わせて作った半導体です。ダイオードには順方向しか電流が流れない整流作用があり、この作用を使って様々な用途で使われています。

ダイオードのしくみ

電池のプラス極をN型半導体に接続すると電子やホールは電極側に惹かれ合うだけで電流は流れません(下図左)。一方、電池のプラス極をP型半導体に接続すると電子とホールは接合面に移動するため電流が流れるようになります(下図右)。

半導体とは

そもそも半導体とはどういうものでしょうか。半導体とはシリコン(ケイ素)やゲルマニウムのように電気を少しだけ通す物質のことを指します。ダイオードなどの半導体には申請半導体であるシリコン結晶などにヒ素やインジウムなどの物質をまぜて、電気的に少し不安定な状態にした不純物半導体が使われています。

電気的に不安定とは、電子が余った状態(N型半導体)や電子が足りず本来あるべきところが空洞のホールになった状態(P型半導体)のことを指します。

N型半導体は、シリコンにヒ素を混ぜると電子が1個だけ余る状態になります。この電子が自由電子となって居場所を探すために動き回ります。

一方のP型半導体はシリコンにインジウムを加えると電子が1個足りなくなる状態となります。この足りなくなった場所がホールとなり、自由電子がこのホールへ向かってくるようになります。

ダイオードの特徴

今回の回路ではダイオードの整流作用を使ってトランジスタを保護しています。

DCモータのようにコイルを使った回路では、スイッチをON→OFFにしてもコイルの電磁誘導によって瞬間的に高い電圧(サージ電圧)が発生してしまいます。そうするとその電圧は全てスイッチにかかることになり、スイッチが壊れてしまします(下図上)。

そこで、DCモータに並列にダイオードを設置することにより、スイッチに流れる電流が循環してモータへ流れ込み、モータで消費することが出来ます(上図下)。この時のダイオードのことをフリーホイールダイオードと言います。

トランジスタ

半導体が別の半導体で挟まれている構造をした半導体です。N型半導体を2つのP型半導体で挟んだものをPNP型半導体といい、P型半導体を2つのN型半導体で挟んだものをNPN型半導体と言います。

トランジスタにはコレクタ、エミッタ、ベースの3極があり、通常はコレクタ-エミッタ間に電圧をかけても電流は流れませんが、コレクタ-エミッタ間に電圧をかけた状態でベースーエミッタ間に電流を流すとコレクタ-エミッタ間に電流が流れる、いわばスイッチのような働きをします。

トランジスタのしくみ

ここではNPN接合のトランジスタを例に説明します。

NPN接合型のトランジスタは、電子が余った状態/ホール状態/電子が余った状態のようにサンドされています。エミッタ-コレクタ間に電圧を加えただけだと下図のようにエミッタとベース間の電子は移動しますが、ベースとコレクタ間の電子は移動しないため、エミッタ-コレクタ間に電流は流れません。

ベース-エミッタ間に電圧をかけると電流が流れ、その状態でエミッタ-コレクタ間に電圧をかけるとベースに流れ込んできた電子がコレクタへ向かうためエミッタとベース間の接合面に加え、ベースとコレクタ間の接合面にも電子が移動するため、エミッタ-コレクタ間に電流が流れるようになります。

トランジスタの特徴

トランジスタはスイッチング動作をします。エミッタ-コレクタ間に電圧もかけても電流は流れませんが、ベース-エミッタ間に電流を流すとたちまちエミッタ-コレクタ間にも電流が流れます。

トランジスタをスイッチ代わりに使った回路のことをスイッチング回路と言い、ベースに流れる電流はモータなどの負荷に流れる電流が十分になるくらいは必要です。

また、ベース-エミッタ間の電流が少し変化するだけで、エミッタ-コレクタ間の電流は大きく変化する、増副作用も合わせ持っています。

コンデンサ

コンデンサとはわずかな隙間が空いた2枚の金属板を並行に置いた素子です。電気を蓄えることができ、その電気容量のことを静電容量と言います。

電荷をためたり、出したりする充放電や交流電流のみを取り出すことが出来ます。交流電流は向きが変わるため、コンデンサの金属板間にたまった電気が導線を行ったり来たりするので結果的に交流のみを通しているのです。

また電圧安定のために使われます。今回の回路ではDCモータのノイズ低減のために並列にコンデンサを設置し、ノイズ発生を抑制しています。

回路をくむ

ブレッドボード上に組んだ回路は次の通りです。

今回使ったトランジスタ(2SC3422-Y)は正面左から見て、エミッタ・コレクタ・ベースとなっていますので、上記結線図となっています。

実行結果

実行結果は以下の動画のようになります。(モーター回転が分かり易いように、先端にセロハンテープを張り付けてあります。)

ArduinoでDCモーターを動かす回路

さて次にArduinoを使ってDCモータを動かします。使う回路は全く同じで電源が電池からArduinoが供給する電力に代わっただけです。使用する機器・端子は以下の通りです。

Arduino マイコン搭載の小型コンピュータ
ブレッドボード 抵抗・ジャンパー線などを使って回路を作る基板
DCモータ 直流電流で動作するモーター
トランジスタ 半導体のキャリアの運動によるスイッチング動作と増幅動作をもつ素子
抵抗1kΩ 電圧を下げる端子
ダイオード 順方向にしか電流が流れない半導体
コンデンサ0.1μF 電荷を充放電して電圧を一定にしたり、直流分をカットして交流分のみを取り出す素子
ジャンパー線 電気を中継する線
ワニ口クリップ 先端がワニ口をしているジャンパー線
電池ケース(単三2本) 3v用電源

ArduinoでDCモータを動かす場合には、注意しなければならないことがあります。Arduinoは5Vの電圧を供給できますが、電力は40mA程度しか供給できません。DCモータは非常に大きな電流が流れ数百mAも流れるため、その電流がArduinoに流れてしまうと壊れてしまいます。

誤ってArduinoに大電流が流れるように接続しないでください。

回路を組む

電池からArduinoの電源に変えた回路は以下の通りです。

合わせて、結線図を以下に載せます。

プログラムコード

DCモータを動かすプログラムコードです。

const int MTR = 11;//DCモータへ送る信号

void setup() {
// put your setup code here, to run once:
pinMode(MTR,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(MTR,HIGH);
}

このプログラムはただ単にDCモータにHIGH信号を送っているだけです。Arduinoの使うことによってDCモータに流す信号を制御して自由自在にコントロールすることが出来ます。

実行結果

実行結果がこちらになります。電池で供給した場合と同じ動きになっています・

まとめ

今回は電池とArduinoの電力を使ってDCモータを動かしました。動かすのにはスイッチング回路と呼ばれるトランジスタをスイッチとしてつかう回路を使いました。トランジスタを保護するためにフリーホイールダイオードを付けたり、DCモータのノイズを抑えるためにコンデンサを付けることもしました。

DCモータを使えるようになると多くのことができるようになるので、DCモータを使った応用的ことをやってみたいと思います。