VOLTECHNO

ガジェットとモノづくりのニッチな部分を伝えるメディアサイト

Arduinoでモーターを動かそう!モーターを動かす方法とスケッチ

Arduinoでモーターを動かそう!モーターを動かす方法とスケッチ

Arduinoでモーターを駆動

Arduinoとモーター

私たちの身の回りのものはいろいろなモーターに支えられています。電子工作の分野でも、モーターを使えるようになることで家電やロボットに至るまで様々なプロダクトを開発できるようになります。

ArduinoでもLEDを点灯させた後はモーターを動かしてみようと考える人は多いと思います。しかし、ArduinoではLEDの時と同じように配線してスケッチを書くだけではモーターを駆動させることはできません。

モーター駆動回路を装着すればArduinoでもモーター制御ができる

モーター駆動回路試作

Arduinoの出力電圧が5Vで、モーターの電圧範囲が3.0~9.0Vなら配線を繋げるだけで動きそう!と考えてしまいますが、Arduinoで電子部品を駆動する場合、電流も確認しなければいけません。

最新のArduino UnoのI/Oピン(Digital Out)の出力電力は、最大20mAです。一方、RS-385PHは最も負荷の少ない無負荷回転時でも0.48A(480mA)の電力を必要とします。

スペックからもわかる通りArduinoの出力ではモーターを回すための電流を供給することができません。Arduinoの供給能力を超えてしまい破壊してしまう可能性が高いでしょう。

Arduino Unoのデータシート。下から2番目のDC Currentの欄を見ると、20mAしか供給できないため、信号の伝達とLEDの点灯くらいにしか使用することができない。

駆動回路にモーターに必要な電流を供給してもらう

トランジスタとリレー

Arduinoでモーターを動かすには、モーターを駆動させるために別の電子部品を取り付ける必要があります。ArduinoはON・OFFの信号だけを出力し実際に電力供給を担うのは駆動回路という形で負荷を分担させてあげます。

この駆動回路には、パワートランジスタリレーなど大きな電力を扱うことのできる電子部品を使用します。

モーターにも色々あるけれど…?

モーターと言っても様々な種類のモーターがあります。当サイトでお馴染みの電動工具で使われるブラシレスモーター、一般的にACモーターと呼ばれるインダクションモーター、ミニ四駆やラジコンなどで使うブラシモーターなど様々な種類がありますが、Arduinoで直接制御できるモーターは数種類と限られています。

今回、Arduinoで使用するモーターは、整流子(ブラシ)モーターに分類されるDCブラシモーターです。

DCモーターは秋月電子で販売されている、MERCURY MOTORのRS-385PH-4025を使用します。

モーターの種類
モーターの大まかな種類。電磁力を使用するモーターは固定子の構造や回転子の構造から種類が大別される。「その他の分類」以降にも様々な種類のモーターがあり細かく細分化される。

モーターを動かすのに必要な部品

ここでは、モーターを動かすための電子回路について説明します。

モーターを駆動させる部品に「パワートランジスタ」と「リレー」の二種類がありますが、消費電力やマイコン制御という観点からパワートランジスタがおすすめです。単にモーターを動かしたい!というだけならどちらを選んでも大丈夫です。

パワートランジスタ(NMOS)

NMOS FET

通常のトランジスタとの違いは、大きな電力を駆動できる点です。名称に「パワー」とついているだけあって、大型のパワートランジスタを用いて適切な放熱さえできればマイコンで数100Wクラスのモーターも駆動できるようになります。

今回使うトランジスタはNchパワーMOSFETを使用します。このトランジスタはG, S, Dという3つの端子があり、Gに電圧を加えるとDとS間が通電するという特性を持っています。パワートランジスタは応答速度が速いので、PWMをはじめとしたさまざまなモーター制御が可能になります。

大きな負荷に使用する場合だとMOSFETの発熱も大きくなるので、発熱量によっては放熱器の装着が必要になりますが、小型モーターであれば放熱器なしでも大丈夫です。

リレー

リレー

リレーは応答性が悪く消費電力が高いため、ほとんどの用途でトランジスタに置き換えられています。交流電源で動かすユニバーサルモーターや大電力モーターなどのモーターの回転数調整を必要としない場合には、パワートランジスタより安価なリレーを使う場合があります。

リレーを使用する利点はArduinoとモーターを電気接続的に完全に分離できる点です。分離できる事の何が良いかと言うと、万が一の回路故障の場合においても安全性が高くなることです。

例えば、モーターを外してコンセントのAC100Vを繋げばArduinoからON・OFF制御できるわけですが、トランジスタで構成している回路が何らかの原因で破損すると…Arduinoまで一気に100Vが加わり火を噴くことになり大変危険です。リレーであれば電気的に分離されているため、万が一の事故でもArduinoまでAC100Vが届くことはありません。

トランジスタ

トランジスタ2SC1815

大きな電力を扱うためにパワートランジスタやリレーを使うわけですが、Arduinoはそのトランジスタやリレーすら駆動させることすら難しいのです。

Arduinoではパワートランジスタを確実に駆動させるため、もう1段トランジスタ追加してさらに力を増幅させて2段構成で使用します。マイコンだけで直接動作させられるパワートランジスタもありますが、本記事ではどんなパワートランジスタでも確実に動かせることをコンセプトにトランジスタを追加しています。

今回使用するNPNトランジスタにもE, B, Cという3つの端子があり、Bに電流を流すとCとEの間が通電するという特性を持ちます。

ダイオード

ダイオード1N4007

ダイオードって交流を直流に整流させるための電子部品でしょ?なんで駆動回路に必要なの?と思いますが、モーターにダイオードは必須です。

視点を変えればモーターとはコイルの塊です。コイルは電流を遮断すると同じ電流を流そうとする働きがあるため、急にモーターを停止させると、行き場のなくなった電気が高い電圧となりトランジスタを破壊してしまう可能性があります。

これを防止するために、ダイオードを装着してモーターに電流を戻してやることでトランジスタを高電圧から保護することができます。この働きをするダイオードを還流ダイオードと呼びます。

Arduinoでモーターを動かすスケッチと回路図

Arduinoでモーターを動かした時の回路とスケッチを下に記載します。基本的にはLEDの点灯と同じスケッチでOKです。

動作としては11pinをdigitalwrite関数とdelay関数で一定周期のON・OFFを繰り返しているだけになります。

void setup() {
pinMode(11, OUTPUT);
}

void loop() {
digitalWrite(11, HIGH);   // 点灯
delay(1000);          
digitalWrite(11, LOW);    // 消灯
delay(1000);              
}

電源については12VのACアダプタを使用し、モーター駆動回路内で5Vを供給する構成にします

後述のパワートランジスタでモーターを駆動させるために12V電源を使用していますが、Arduinoを動作させるために5Vレギュレータの7805で5Vを生成しています。

パワートランジスタでモーターを動かす回路

使用しているNMOSによっては5Vで駆動できない場合もあるので、確実にNMOSを駆動させるため1段目のトランジスタを12V構成にしています。この構成であれば市販されているほとんどのFETを駆動させることができます。

この回路では、1段目のトランジスタによってON・OFFが反転しているためパワートランジスタの動作がArduinoの出力と逆になります。Arduino側がHighの時にモーターが止まり、Lowの時にモーターが動き出します。

Arduinoの出力とモーターの動作が一緒じゃなければ困る!と言う場合であれば「マイコンで駆動できるNMOSにして1段構成にする」「パワートランジスタをPMOSに変える」など回路的な変更が必要になります。

ブレッドボードで実際に回路を構成した写真。12Vから降圧している5Vレギュレータは発熱するため、放熱フィンを取り付けている。一方、FETはほとんど発熱しないためそのままで問題ない

リレーでモーターを動かす回路

リレーの場合はArduinoの出力とモーターは同じ動きになります。電源をAC100Vに変えてモーターをそのままコンセントの端子を変えてやれば、Arduinoで家電のON・OFFを制御できるようになります。

この回路の場合、リレーとモーターの起動で大きな電流を必要とするため、電源の容量が少ないとArduinoの動作が不安定になる場合があります。5Vラインで2A以上供給できることを確認し、大容量のコンデンサを搭載してから動作させるようにしてください。

リレーとモーターの突入電流が非常に大きく、5Vレギュレータに余裕がないため動作しない場合もある。2A以上のレギュレータを使用しよう。

モーターの動かし方は、用途それぞれ人それぞれ

モーターはLEDと違い、使用する電力も大きくなるため、このあたりから発熱や電子部品の破損等のリスクが多発してきます。実際に回路を構成する場合はしながら組み立ててください。

モーターの種類や用途に応じて様々な回路を構成するため、この記事の回路はモーターを動かすためのほんの一例になります。

今回は整流子モーターの単純なON・OFFのみですが、回転方向やブレーキも行う場合はモータードライバIC、ユニバーサルモーターの制御にはトライアックなどを用いる場合もあり、モーターの制御には様々な方法が存在します。

様々な制御回路がありますが、基本はやはりトランジスタを使った駆動回路です。ぜひ、皆さんもArduinoとモーターを使った魅力的なプロダクトを作ってみてください。

Return Top