できること

第11回 Arduino(アルディーノ)でモーターを制御する!(その1)モーターの基本を勉強してみる。

2014-10-23 03.47.22

前回、簡易百葉箱シリーズを終えて、Arduino(アルディーノ)でモノを作る流れをつかむことができましたでしょうか?今回からは男のロマン!「モーター」を扱っていきたいと思います。

モーターが使われている製品を思い浮かべてみていただければわかると思いますが、動く・回る動作をする電化製品のほとんどにモーターが使われています。

モーターは単純に回転するだけですが、その回転の動作をギアなどの組み合わせで複雑な動作を実現することができます。今回からは数回に分けてこのモーターの扱い方を勉強していきたいと思います。

 

目次

  1. 今回の電子工作レシピ
  2. DCモーターについて
  3. サーボモーター
  4. モーターの基本を知る
  5. Arduino(アルディーノ)でモーターを回してみる
  6. トランジスタとダイオード
  7. ダイオードのしくみ
  8. トランジスタのしくみ
  9. トランジスタを利用したリレー回路の作成
  10. モーターのまとめ

 

今回の電子工作レシピ

完成までの時間目安:60分

必要なパーツ

 

DCモーターについて

DSC_0279

モーターと聞いて多くの人が思い浮かべるのがこの形のモーターだと思います。ラジコンやミニ四駆などのおもちゃに使われていて触ったことがある方も多いのではないでしょうか。

このモーターはDCモーターと呼ばれていて、「DC」は直流を示します。直流なので、乾電池等にこのモーターをつなげると簡単に動かすことができます。

モーターの内部の仕組みは内部にエナメル線を何重にも巻いたコイルと磁石が入っていて、コイルに電気が流れて磁性を持つことで、磁石と反発しながら回転をします。モーターに乾電池をつなげた場合、プラスマイナスを逆にすると内部ではコイルの磁性が逆となり、回転も逆回転をします。

2014-11-03 20.35.20
色々なサイズのモーターがあります。

サーボモーター

電子工作でよく使われるのがこのサーボモーターです。このサーボモーターは内部にモーターの制御回路などが予め組み込まれているため、回転角度を指定してモーターを手軽に制御することができます。それぞれ動作角度が決まっていて動作角度120度などのような表記があります。

2014-10-22 23.17.00

サーボモーター

 

モーターの基本を知る

今回はまずDCモーターを利用してみます。Arduino(アルディーノ)でモーターを動かしてみる前に、一度単3電池で動かしながらモーターの基本を把握してみましょう。

単3電池をモーターのプラスマイナス(赤青の線)にそのままつなげてみて下さい。当たり前ですがモーターが回ると思います。ここで回らない場合、モーターが壊れているか、電池がないのかどちらかです(笑)。そんな時は電池を新しいものに変えてみて試してください。電池を変えても動かない場合、モーターが壊れている可能性が高いです。

DSC_0287

単3電池でモーターを動かしてみる

スクリーンショット 2014-10-23 1.44.31

モーターが回る為に必要な電圧や電流を調べてみたいと思います。

今回使うDCモーターはデータシートを見ると、適正の電圧が1.5V、無負荷で0.2Aの電流が流れると書いてあります。単3電池は電圧が1.5V(乾電池/単3型リチウム電池)、1.2V(ニッケル水素電池/ニッカド電池)ですので、基本単3電池1本でモーターが回るということがデータシートからもわかりました。

 

モーターの回転速度

モーターを今よりも速く回すにはどうしたら良いでしょうか?

モーターを速く回す場合、電圧を高くすることでモーターを速く回すことができます。乾電池で試す場合、乾電池を直列につなげることで電圧が上がりますのでモーターが速く回ります。

スクリーンショット 2014-10-23 1.47.56

モーターの回る時間

モーターはどれくらいの時間回るでしょうか?

モーターが回る時間は電池の容量が関係してきます。電流×時間が電池の容量を示す値です。例えば使っている単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につなげて手軽に制御することができません。

スクリーンショット 2014-10-23 2.03.31

 

では、どのようにすればArduinoでモーターを回すことができるでしょうか?今回はトランジスタを使ってみたいと思います。

トランジスタとダイオード

トランジスタの仕組みを知る前に、今回一緒に利用するダイオードについて説明します。

ダイオードは普段電流を逆方向に流さないように利用されたりする整流の役割を果たします。どのような仕組みで逆方向に電流が流れないようになっているのでしょうか。

2014-11-03 22.05.38
ダイオード

ダイオードのしくみ

ダイオード01

ダイオードはP型半導体とN型半導体からなる部品です。P型半導体は、簡単に説明すると電子が足りない状態で、N型半導体は逆に電子が余っている状態の半導体です。

ダイオード02

ダイオードのA(アノード)側に電池のマイナス、K(カソード)側に電池のプラスをつなぐと、それぞれの半導体の中で電荷が引き寄せられて、ダイオードの中心に空き(空乏層)ができ、電流が流れることができなくなってしまいます。

ダイオード03

逆に、A(アノード)側に電池のプラス、K(カソード)側に電池のマイナスをつなぐと、今度はそれぞれの電荷がダイオードの中心に集まり互いに電荷を打ち消し続けるため、ダイオードでは常に電流の流れが確保されます。

このように、ダイオードは逆向きの電流を防ぐしくみになっています。

 

トランジスタのしくみ

DSC_0281_2

では、次にトランジスタのしくみを説明します。

トランジスタは電気の流れを制御することができる部品です。基本的な使い方としては、回路上でスイッチの役割をしたり、電流を増幅する役割として使われます。

ダイオードではN型P型半導体がそれぞれ1つずつから構成されていましたが、トランジスタはNPN型やPNP型というように3つの半導体から構成される部品です。特徴としては真ん中に挟まれている半導体が両端にある半導体に比べとても薄く、その特性を利用しています。

transista

トランジスタ01

 

NPN型を例にとる場合、両端にN型半導体、そして真ん中にP型半導体があり、エミッタ(E)、コレクタ(K)、ベース(B)の3本の線がそれぞれに接続されています。

トランジスタ02

トランジスタのしくみを知るために、まずはじめにE(エミッタ)とC(コレクタ)に電池をつないでみます。このとき、電荷の状態は図のようになり、ダイオードでも説明した、ベースのP型半導体とコレクタのN型半導体の間に空きができてしまうため、電流は流れることができません。

トランジスタ03

次に、グレーの電池よりも微弱なオレンジの電池をベースにもつなげてみます。そうすると、ベースとエミッタ間に電流が流れるため、P型半導体にはプラスの電荷が常に供給される状態になります。先ほど空きがあったベースとコレクタ間の空きが埋まる形で電流が流れます。そして、この状態でエミッタからコレクタに電流を流すことができます。

最初に説明したように、トランジスタのベースに利用される半導体はものすごく薄いため、微弱な電流を流すだけで、電荷が満たされてエミッタとコレクタ間に電流を流すことができます。そのため、微弱な電流(オレンジの電池)で大きな電流(グレーの電池)を制御することができる、というわけです。

 

トランジスタを利用したリレー回路の作成

今回は、このトランジスタの仕組みを利用してスイッチ(このスイッチを電子回路ではリレー回路と言います。)として利用してみたいと思います。トランジスタの仕様としてはモーターに流れる電流を考慮して800mA~1A程度許容できるものであれば問題ありません。

 

2014-10-024

 

赤外線_ブレッドボード

/** モーターのスイッチプログラム **/
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を使って小型化。

cta_watering-machine
アバター画像

電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。

学生ロボコン2017 出場ロボット解剖計画