目次
Arduinoでモーター駆動してみよう
私たちの身の回りのものはいろいろなモーターに支えられています。電子工作の分野でも、モーターを使えるようになることで家電やロボットに至るまでさまざまなプロダクトを開発できるようになります。
ArduinoでもLEDを点灯させた次はモーターを動かしてみようと考える人は多いと思います。しかし、LEDの時と同じように配線してスケッチを書くだけではモーターを駆動させることはできません。
大きな電気を供給する電源と駆動回路が必要
Arduinoの出力電圧が5Vだから5Vで動くモーターを配線を繋げるだけで動くだろう!と思ってしまいますが、そこにはArduinoの電流供給量の限界があったりします。
例えば、Arduino UnoのI/Oピン(Digital Out)の出力電力は、最大20mAです。一方、秋月電子などで販売されているモーターRS-385PHは、最も負荷の少ない無負荷回転時でも0.48A(480mA)の電力が必要です。LEDと同じ感覚で接続してもモーターを回すための電流を供給することができません。
駆動回路にモーターに必要な電流を供給してもらう
Arduinoでモーターを動かすには、モーターを駆動させための電子部品が必要になります。ArduinoはON・OFFの信号だけを制御して、実際にモーターへの電力供給を担うのは駆動回路という形で負荷を分担させてあげます。
この駆動回路には、パワートランジスタやリレーなど大きな電力を扱える電子部品を使用します。
モーターにも色々あるけれど…?
モーターと言っても様々な種類のモーターがあります。当サイトでお馴染みの電動工具で使われるブラシレスモーター、一般的にACモーターと呼ばれるインダクションモーター、ミニ四駆やラジコンなどで使うブラシモーターなど様々な種類がありますが、Arduinoで直接制御できるモーターは数種類と限られています。
今回、Arduinoで使用するモーターは、整流子(ブラシ)モーターに分類されるDCブラシモーターです。
DCモーターは秋月電子で販売されている、MERCURY MOTORのRS-385PH-4025を使用します。
モーターを動かすのに必要な部品
ここからは、モーターを動かすための電子回路について説明します。
モーターを駆動させるには「パワートランジスタ」と「リレー」の2種類どちらかの電子部品が必要ですが、消費電力やさまざまなモーター制御を考えるとパワートランジスタを使うのがおすすめです。
パワートランジスタ
Arduinoの代わりに大きな電気のON/OFFを肩代わりしてくれるのが、このパワートランジスタです。
名称に「パワー」とついているだけあって、大型のパワートランジスタを用いて適切な放熱さえできればマイコンで数100Wクラスのモーターも駆動できるようになります。
今回使うパワートランジスタにはNchパワーMOSFETを使用します。G, S, Dという3つの端子があり、Gに電圧を加えるとDとS間が通電するという特性を持っています。
大きな負荷に使用する場合にはMOSFETの発熱も大きくなるので、発熱量によっては放熱器の装着が必要になりますが、今回は小型モーターで発熱も少ないので放熱器なしでも大丈夫です。
リレー
リレーは応答性が悪く消費電力が高いため、ほとんどの用途でトランジスタに置き換えられています。交流電源で動かすユニバーサルモーターや大電力モーターなどのモーターの回転数調整を必要としない場合には、パワートランジスタより安価なリレーを使う場合があります。
リレーを使用する利点は、Arduinoとモーターを電気接続に完全に分離できる点です。Arduino制御側とモーター駆動側を完全に別の電源に分離できるので、高い電圧のモーター駆動で故障が起きても制御側を破損から守ることができます。
例えば、モーターを外してコンセントのAC100Vを繋げばArduinoからON・OFF制御できるわけですが、トランジスタで構成している回路が何らかの原因で破損すると…Arduinoまで一気に100Vが加わり火を噴くことになり大変危険です。リレーであれば電気的に分離されているため、万が一の事故でもArduinoまでAC100Vが届くことはありません。
トランジスタ
Arduinoでモーターを駆動させるためにパワートランジスタやリレーを使うわけですが、Arduinoではそのパワートランジスタやリレーすら満足に駆動できない場合があります。
今回はどんなパワートランジスタでも確実に動かせることをコンセプトにしているので、さらにもう一個トランジスタを追加します。Arduinoの信号をトランジスタで増幅させてからパワートランジスタを動かす2段構成の駆動回路にしています。
パワーMOSFETの中にはマイコン5Vでも動作できる低電圧動作品もあるので、そのようなパワートランジスタを使う場合はこのトランジスタは不良です。
ダイオード
ダイオードって交流を直流に整流させるための電子部品でしょ?なんで駆動回路に必要なの?と思いますが、モーターにダイオードは必須です。
視点を変えればモーターとはコイルの塊です。コイルは電流を遮断すると同じ電流を流そうとする働きがあるため、急にモーターを停止させると、行き場のなくなった電気が高い電圧となりトランジスタを破壊してしまう可能性があります。
これを防止するために、ダイオードを装着してモーターに電流を戻してやることでトランジスタを高電圧から保護することができます。この働きをするダイオードを還流ダイオードと呼びます。
ACアダプタ
忘れがちなのがモーターを駆動できるACアダプタです。ArduinoをパソコンのUSB電源から取っている人も多いと思いますが、モーターは消費電力が大きいのでArduinoからモーターに直接給電するとArduinoの電源回路を壊してしまう可能性があります。
モーターに電気を十分供給できるACアダプタを使用し、Arduinoからモーターに電気を供給しない回路構成にする必要があります。
Arduinoでモーターを動かすスケッチと回路図
Arduinoでモーターを動かした時の回路とスケッチを下に記載します。動作的にはLEDの点灯と同じスケッチでOKです。
下のスケッチはdigitalwrite関数とdelay関数で一定周期のON・OFFを11pinで繰り返しているだけになります。
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を生成しています。
パワートランジスタでモーターを動かす回路
今回はどんなパワートランジスタを使っても確実にモーターが駆動できるように、パワートランジスタのゲート端子に高い電圧が加わる回路構成にしています。電源のACアダプタは12Vを使用していますが、モーターの動作とArduinoの電源供給には三端子レギュレータを使って5Vまで降圧させています。
この回路では、1段目のトランジスタによってON・OFFが反転しているためパワートランジスタの動作がArduinoの出力と逆になります。Arduino側がHighの時にモーターが止まり、Lowの時にモーターが動き出します。
Arduinoの出力とモーターの動作が一緒じゃなければ困る!と言う場合であれば「マイコンで駆動できるNMOSにして1段構成にする」「パワートランジスタをPMOSに変える」などの回路変更で対応します。
リレーでモーターを動かす回路
リレーの場合はArduinoの出力とモーターは同じ動きになります。電源をAC100Vに変えてモーターをそのままコンセントの端子を変えてやれば、Arduinoで家電のON・OFFを制御できるようになります。
この回路の場合、リレーとモーターの起動で大きな電流を必要とするため、電源の容量が少ないとArduinoの動作が不安定になる場合があります。5Vラインで2A以上供給できることを確認し、大容量のコンデンサを搭載してから動作させるようにしてください。
モーターの動かし方は、用途それぞれ人それぞれ
モーターはLEDと違い、使用する電力も大きくなるため、このあたりから発熱や電子部品の破損等のリスクが多発してきます。実際に回路を構成する場合はしながら組み立ててください。
モーターの種類や用途に応じて回路も変わるので、この記事の回路はモーターを動かすためのほんの一例になります。
今回は整流子モーターの単純なON・OFFのみですが、回転方向やブレーキも行う場合はモータードライバIC、ユニバーサルモーターの制御にはトライアックなどを用いる場合もあり、モーターの制御は色々と複雑です。
多種多様なモーター駆動回路がありますが、基本はやはりトランジスタを使った駆動回路です。ぜひ、皆さんもArduinoとモーターを使った魅力的なプロダクトを作ってみてください。