前回、簡易百葉箱シリーズを終えて、Arduino(アルディーノ)でモノを作る流れをつかむことができましたでしょうか?今回からは男のロマン!「モーター」を扱っていきたいと思います。
モーターが使われている製品を思い浮かべてみていただければわかると思いますが、動く・回る動作をする電化製品のほとんどにモーターが使われています。
モーターは単純に回転するだけですが、その回転の動作をギアなどの組み合わせで複雑な動作を実現することができます。今回からは数回に分けてこのモーターの扱い方を勉強していきたいと思います。
目次
- 今回の電子工作レシピ
- DCモーターについて
- サーボモーター
- モーターの基本を知る
- Arduino(アルディーノ)でモーターを回してみる
- トランジスタとダイオード
- ダイオードのしくみ
- トランジスタのしくみ
- トランジスタを利用したリレー回路の作成
- モーターのまとめ
今回の電子工作レシピ
完成までの時間目安:60分
必要なパーツ
- Arduino本体(Arduino Uno R3)http://www.switch-science.com/catalog/789/
- ブレッドボード http://www.switch-science.com/catalog/313/
- DCモーター(FA-130RA-227 http://akizukidenshi.com/catalog/g/gP-06437/)
- トランジスタ(NPN型2SC2120-Y http://akizukidenshi.com/catalog/g/gI-13829/)
- ダイオード(1N4148 http://akizukidenshi.com/catalog/g/gI-00941/)
- 単3電池ボックス
- 単3電池
DCモーターについて
モーターと聞いて多くの人が思い浮かべるのがこの形のモーターだと思います。ラジコンやミニ四駆などのおもちゃに使われていて触ったことがある方も多いのではないでしょうか。
このモーターはDCモーターと呼ばれていて、「DC」は直流を示します。直流なので、乾電池等にこのモーターをつなげると簡単に動かすことができます。
モーターの内部の仕組みは内部にエナメル線を何重にも巻いたコイルと磁石が入っていて、コイルに電気が流れて磁性を持つことで、磁石と反発しながら回転をします。モーターに乾電池をつなげた場合、プラスマイナスを逆にすると内部ではコイルの磁性が逆となり、回転も逆回転をします。
色々なサイズのモーターがあります。
サーボモーター
電子工作でよく使われるのがこのサーボモーターです。このサーボモーターは内部にモーターの制御回路などが予め組み込まれているため、回転角度を指定してモーターを手軽に制御することができます。それぞれ動作角度が決まっていて動作角度120度などのような表記があります。
サーボモーター
モーターの基本を知る
今回はまずDCモーターを利用してみます。Arduino(アルディーノ)でモーターを動かしてみる前に、一度単3電池で動かしながらモーターの基本を把握してみましょう。
単3電池をモーターのプラスマイナス(赤青の線)にそのままつなげてみて下さい。当たり前ですがモーターが回ると思います。ここで回らない場合、モーターが壊れているか、電池がないのかどちらかです(笑)。そんな時は電池を新しいものに変えてみて試してください。電池を変えても動かない場合、モーターが壊れている可能性が高いです。
単3電池でモーターを動かしてみる
モーターが回る為に必要な電圧や電流を調べてみたいと思います。
今回使うDCモーターはデータシートを見ると、適正の電圧が1.5V、無負荷で0.2Aの電流が流れると書いてあります。単3電池は電圧が1.5V(乾電池/単3型リチウム電池)、1.2V(ニッケル水素電池/ニッカド電池)ですので、基本単3電池1本でモーターが回るということがデータシートからもわかりました。
モーターの回転速度
モーターを今よりも速く回すにはどうしたら良いでしょうか?
モーターを速く回す場合、電圧を高くすることでモーターを速く回すことができます。乾電池で試す場合、乾電池を直列につなげることで電圧が上がりますのでモーターが速く回ります。
モーターの回る時間
モーターはどれくらいの時間回るでしょうか?
モーターが回る時間は電池の容量が関係してきます。電流×時間が電池の容量を示す値です。例えば使っている単3電池の容量が400mAhの時、400mAの電流を1時間流すことができます。上記の例で言えば、1.5Vの電圧の時、0.2A=200mAが流れる場合、400÷200=2hで2時間程度モーターを回すことができます。
Arduino(アルディーノ)でモーターを回してみる
モーターの基本を把握したところで、Arduinoでモーターを回す場合はどうしたら良いでしょうか。モーターとArduinoの仕様を比較してみます。
必要な電圧を比べた場合、Arduinoのデジタルピンの電圧では0〜5Vまで出力できるので、モーターの回転に必要な1.5Vの電圧はクリアしていることがわかります。
次に電流ですが、モーターに電圧1.5Vをかけた場合、電流は200mAかかることになります。Arduinoの仕様を確認すると、デジタルピンの電流は40mAとなっていますので、モーターで必要な200mAに足りていません。
足りていないということは、単純にArduinoのデジタルピンにモーターを直接つなげると、モーターからArduinoに対して200mAの電流を引き出そうとして、Arduinoに負荷がかかり最終的に壊れてしまうことを意味しています。ですので、LEDのように、モーターを直接Arduinoにつなげて手軽に制御することができません。
では、どのようにすればArduinoでモーターを回すことができるでしょうか?今回はトランジスタを使ってみたいと思います。
トランジスタとダイオード
トランジスタの仕組みを知る前に、今回一緒に利用するダイオードについて説明します。
ダイオードは普段電流を逆方向に流さないように利用されたりする整流の役割を果たします。どのような仕組みで逆方向に電流が流れないようになっているのでしょうか。
ダイオード
ダイオードのしくみ
ダイオードはP型半導体とN型半導体からなる部品です。P型半導体は、簡単に説明すると電子が足りない状態で、N型半導体は逆に電子が余っている状態の半導体です。
ダイオードのA(アノード)側に電池のマイナス、K(カソード)側に電池のプラスをつなぐと、それぞれの半導体の中で電荷が引き寄せられて、ダイオードの中心に空き(空乏層)ができ、電流が流れることができなくなってしまいます。
逆に、A(アノード)側に電池のプラス、K(カソード)側に電池のマイナスをつなぐと、今度はそれぞれの電荷がダイオードの中心に集まり互いに電荷を打ち消し続けるため、ダイオードでは常に電流の流れが確保されます。
このように、ダイオードは逆向きの電流を防ぐしくみになっています。
トランジスタのしくみ
では、次にトランジスタのしくみを説明します。
トランジスタは電気の流れを制御することができる部品です。基本的な使い方としては、回路上でスイッチの役割をしたり、電流を増幅する役割として使われます。
ダイオードではN型P型半導体がそれぞれ1つずつから構成されていましたが、トランジスタはNPN型やPNP型というように3つの半導体から構成される部品です。特徴としては真ん中に挟まれている半導体が両端にある半導体に比べとても薄く、その特性を利用しています。
NPN型を例にとる場合、両端にN型半導体、そして真ん中にP型半導体があり、エミッタ(E)、コレクタ(K)、ベース(B)の3本の線がそれぞれに接続されています。
トランジスタのしくみを知るために、まずはじめにE(エミッタ)とC(コレクタ)に電池をつないでみます。このとき、電荷の状態は図のようになり、ダイオードでも説明した、ベースのP型半導体とコレクタのN型半導体の間に空きができてしまうため、電流は流れることができません。
次に、グレーの電池よりも微弱なオレンジの電池をベースにもつなげてみます。そうすると、ベースとエミッタ間に電流が流れるため、P型半導体にはプラスの電荷が常に供給される状態になります。先ほど空きがあったベースとコレクタ間の空きが埋まる形で電流が流れます。そして、この状態でエミッタからコレクタに電流を流すことができます。
最初に説明したように、トランジスタのベースに利用される半導体はものすごく薄いため、微弱な電流を流すだけで、電荷が満たされてエミッタとコレクタ間に電流を流すことができます。そのため、微弱な電流(オレンジの電池)で大きな電流(グレーの電池)を制御することができる、というわけです。
トランジスタを利用したリレー回路の作成
今回は、このトランジスタの仕組みを利用してスイッチ(このスイッチを電子回路ではリレー回路と言います。)として利用してみたいと思います。トランジスタの仕様としてはモーターに流れる電流を考慮して800mA~1A程度許容できるものであれば問題ありません。
/** モーターのスイッチプログラム **/ void setup() { pinMode(11, OUTPUT); } void loop() { digitalWrite(11,HIGH); //11番ピンの出力をHIGH = 5Vにする delay(1000); //1000ミリ秒 = 1秒待つ digitalWrite(11,LOW); //11番ピンの出力をLOW = 0Vにする delay(1000); //1000ミリ秒 = 1秒待つ }
このプログラムでは、モーターを1秒ずつ回して止める動作を行っています。これにより、11番品から出力された電流がトランジスタを通った際に、一緒に単3電池からモーターに電流が流れ込んでモーターが動きます。
この回路ではモーターの手前にダイオードを入れています。ダイオードは電流の流れを整えたり、電圧を一定に保ったりする役割を持っています。ダイオードは一定方向にしか電流が流れない性質を利用して、電流の逆流を防ぐことが可能です。このダイオードを入れることによりモーターに負荷がかかった場合でも、電流が逆流することがないのでArduinoなど回路を壊してしまう危険がなくなります。
モーターのまとめ
今回はトランジスタのリレー回路を使った簡単なモーター制御の方法を試してみました。ただ、今回は手動でON/OFFするスイッチがArduinoになっただけですね。Arduinoを利用するのであればやはりモーターの回転速度や向き等を調整して、複数のモーターを扱いたいですね。次回からはモーターの制御を深く掘り下げていきたいと思います。
第12回 Arduinoでモータを制御する!(その2)モータドライバって何?
第13回 Arduinoでモーターを制御する!(その3)。自作ラジコンカーに挑戦!サーボモーターでステアリング実装。
第14回 Arduinoでモーターを制御する!(その4)。リモコンの実装とArduino Pro Miniを使って小型化。