初級DCモーターをコントロールする

概要

モーターを動かすことでさまざまなことが可能になることはいうまでもありません。しかし、モーターをコンピューターで制御することは、それなりに難しいです。
ここでは気をつける点を学んだ後に、モーター制御用のボード(モータードライブ・シールド)の使い方を学びます。

必要な商品

詳細説明

モーターのむつかしさ

モーターの難しい点は電流を食うことに尽きます。最近でこそ、太陽電池でも回るモーターが出現していますが、私達になじみのある模型用モーターはおよそ1アンペアくらいの電流を消費します。
1アンペアがどれほど電気食いかというと、Arduino自体は5Vで50mA、つまり0.05Aしか消費しません。小さいモーター一個でArduino20台分の消費をするとざっくり考えてください。

しかも、これはモーターが順調に回っている時の話です。工作などをしていてしばしばギアがひっかかったりして、モーターが止まることがあります。この時に運が悪いと銅線でつながっているだけの状態になります。
他にもモーターを遮断すると逆電気が発生するなど、モーターは扱いがとてもやっかいです。モーターをArduinoに直接接続してコントロールするようなことはやめましょう。Arduinoを壊してしまう可能性は大きいです。

別の種類のモーター

模型用モーターは回転するだけのことしかできませんが、もっと正確にコントロールすることができるモーターがあります。典型的なものは角度45度ずつを制御できます。
パルスごとに回るので「ステッピングモーター」といいます。送られたパルスに応じて正確に回転します。逆にいえば、電池を繋いだだけで回るものではありません。
しかし、5回転だけ回すといった正確な回転を制御できますからラジコンのサーボモーターなどに使われています。コンピューターとの相性はいいので、別の項でご紹介します。

モーターコントロール用のIC

こういう電流制御、モーターが止まったら検知して電気を遮断するなどの機能を持った便利なICが「モータードライバーIC」です。
DCモーターを安全に扱うためには必須のICといってよいでしょう。

モーターコントロール用シールド

モーターコントロール用のシールドは原則として、モーター駆動用の電源は別に与える必要があります。

ここで注意が必要です。Arduinoに接続する場合は、必ず5V以上の電源を用意してください。

模型用モーターのほとんどは1.5Vから3Vで回転しますが、モーターコントロールシールドに3V程度だと、Arduinoから電気が流れ込みます。その結果、Arduinoの電源ICに負荷がかかり、最後には保護回路が働きArduinoは停止します。電圧が高くてもモーターを壊さないコントロールは可能ですから、5V以上の電源を用意します。

まず、接続した全体はこんな感じです。

電池ボックスの電線とモータードライブの配線のために、ブレッドボードを使っています。モーターの配線はコネクターに接続しますが、コネクターがあまり細い線だとうまく固定できません。そのため、ピンを使っています。
ピンは次のような形で、電線を差し込んで、ペンチでかしめます。できあがったら、ハサミなどで切り離します。

このように電極をつけておくとガッチリとボードの端子に固定できます。

モーターでリモコンを操作

ここではリモコンをモーターで操作したいと思います。世の中ではArduinoでリモコンを操作するというと、学習リモコン(リモコンの赤外線信号を読み取り記録して、出力する)ばかりですが、リモコンのボタンを押してもよいではありませんか。

そのための動力に選んだものは、タミヤの「4速クランクギアボックス」です。(申し訳ないですが、弊社では販売しておりません。Amazon等でお求めください。)


これはとても遅い(逆にいうとパワーがでる)回転数を選ぶことができます。1543:1(8.5rpm)か5402:1(2.4rpm)から選ぶとよいと思います。

固定する台座は同じくタミヤの「ユニバーサルプレートセット」にします。ネジの位置決めなどを考えなくてよいし、試行錯誤できますからいいと思います。(申し訳ないですが、弊社では販売しておりません。Amazon等でお求めください。)

組み上げた形です。クランクは邪魔にならないように反対側を切り落としました。

動作しているデモビデオです。
リモコンボタンをモーターが押すと、テレビの画面が点くところに注目ください。


動作させるスケッチはこちらからダウンロードしてください。

以下を状況に応じて、変更します。

long rotationtime = 4000;
char four = '4';
int motorpower = 100;

rotationtimeはモーターが回転する時間です。 fourは後述しますが、モーターを作動させるためにシリアルコンソールから入力する文字です。
インターネットからモーターを動作させる後編のために、一桁の数字を選んでください。
motorpowerはモーターにどれくらいの電力を与えるかを決めます。0だとまったく電力は供給されません。255が最強です。しかし、DCモーターに6Vの電源を繋いでいますから、最強ではモーターが壊れる可能性があります。ここではそこそこの強さということで100にしてあります。

以上で準備は完了です。

テスト

最初にArduinoにUSBを接続して電源を入れる前に、モーターシールドに電気を入れてください。そうしないと、Arduinoからモーターシールドに電源が供給され、Arduinoのレギュレーター(電源供給IC)が大きな負荷のため発熱します。放っておくと、内部遮断回路で電源がオフになります。

Arduinoにプログラムを書き込んでも、なにも起きません。シリアルモニター(Arduinoの開発環境で右上のほうにある虫眼鏡)をクリックして起動します。
ここにfourで定義したキーを入力し、エンターを押すと、Arduinoのスケッチは一度、モーターを回転しまた逆転します。

この動作を調整してリモコンボタンを押させます。

顔や目はついていませんが、立派なArduinoによるロボットの完成です。

__WBA-96-モーターをイーサーネットシールドなしでインターネットからコントロール__では、このロボットをインターネットごしに動作させます。


よくある質問

現在はありません。

必要な道具

  • ・単3電池x4の電池ボックス
  • ・単3電池x4
  • ・タミヤ4足クランクギアボックス
  • ・タミヤユ二バーサルプレートセット

必要な商品を使った他の記事