マイコンボードの基礎を学ぼう!
本日の流れ(各章へはリンクをクリック)
- 第0章 使用するもの
- 第1章 コース共通:Arduinoを使おう
- Arduinoとは
- Arduinoを使って見よう!- 基板LED点灯プログラムの実行
- 第2章 機械コース:DC振動モータを制御しよう!
- DC振動モータとは
- 振動モータを動かしてみよう!
第2章 機械コース:DC振動モータを制御しよう!
2−1.DC振動モータとは
DCモータ(直流モータ)は、乾電池のような直流電源で回転するモータです。
モータは、電気のエネルギーを回転のエネルギーに変える装置で、ロボット、電動工具、小型ファン、自動車の部品など、私たちの身近な場面で幅広く使われています。
今回使用するのは、DC振動モータと呼ばれるタイプです。
内部には「偏心錘(へんしんすい)」と呼ばれる、少し重心のずれたおもりが取り付けられています。
モータに電流を流すと軸が回転し、その偏ったおもりの影響で回転運動が振動に変わる仕組みになっています。
図 振動モータ(引用:Nidec)
表 モータの種類と違い
種類 | 外観 | 特徴 | 用途 |
---|---|---|---|
DCモータ | ![]() | ・回転速度を制御しやすい ・角度制御はできない | 扇風機、おもちゃの車 など |
サーボモータ | ![]() | ・指定した角度に「ピタッ」と動く | ロボットの関節、ラジコンの舵 など |
ステッピングモータ | ![]() | ・精密に動かせる ・制御が複雑 | 3Dプリンタ、コピー機の紙送り装置 |
本授業では、Arduinoが使用できる電力・信号で制御可能なコイン型振動モータを用います。
振動モータは、2本の電線をArduinoと繋ぐだけで動作可能です。
図 コイン型振動モータ
2−2.DC振動モータを動かしてみよう!
1.Arduinoとモータを接続する
電源1本、グラウンド1本の計2本を繋ぎます。モータから出ている2本の線を電源の+/-に対してどちら向きに繋いでも内部のモータ回転方向が異なるだけで作動には影響はありません。ここでは電気回路の、赤は高い電圧、黒は低い電圧(もしくは基準となる電圧)という基本ルールに従って、赤は+、黒は−(GND)に接続することにします。
使うもの

図 使用する振動モータとワニ口クリップのジャンパ線
Arduinoに搭載されたマイコンには機能が割り振られた端子があり、基板の外側にソケットとして差し込めるように準備されています。
各ソケットの機能は分かりやすいように図として配布されています。
今回使用するコイン型振動モータは、消費電流が小さいため、Arduinoのデジタル出力ピンから直接制御することができます。通常はより大きな電流を流すことができるようにトランジスタやモータドライバなどで回路を組んで使用します。
モータの赤い線(または「+」側)を、Arduinoの3Vピンに接続し、黒い線(または「-」側)を、Arduinoのデジタルピン(D9)に接続します。この接続では、ArduinoのデジタルピンをLOW(0V)にするとモータがONになり、HIGH(5V)にするとOFFになります。つまり、デジタルピン側をスイッチとして動作させる形になります。
図 各ピンソケットに割り振られている機能
表 モータとArduinoを繋ぐ際のモータのケーブルの色と各ケーブルの接続先
モータ | モータのケーブル | ジャンパ線 | Arduino |
+ | 赤 | 各自で決めた線 | +3V |
ー | 黒 | 各自で決めた線 | D9 |

図 ワニ口クリップ – ピン のケーブルと 振動モータを Arduino に接続
2.プログラムを開く
上部のメニューから ファイル → スケッチ作成 を開き、次のコードを記述する(コピペでもOK)。” // “以降の文字はコードの説明である。記述しなくてよい。
int motorPin = 9; //9番ピンをmotorPinと命名
void setup() { //最初の1回だけ実行する命令を書くところ
pinMode(motorPin, OUTPUT); //motorPinを電圧出力端子として設定
}
void loop() { //繰り返し実行する命令を書くところ
digitalWrite(motorPin, LOW); //motorPinの出力をLOWにする(モータに電流を流す=振動する)
delay(1000); //1000ms(=1s)待つ
digitalWrite(motorPin, HIGH); //motorPinの出力をHIGHにせよと命令(モータに電流が流れなくなる=停止する)
delay(1000);
3.Arduino をPCに繋ぐ
4.プログラムをアップロードする
5.モータが作動するのを確認
観察:プログラムでは1秒毎に振動と停止を繰り返す動作を指定しています。その通りに動きましたか?
⇒ 皆さんのスマホをマナーモード等に設定したときはどのように振動しますか。メインプログラム(void loopの中の繰り返される命令)を書き換えて似た振動を作ってみましょう。
応用:今回のON/OFF以外にも振動の強弱も制御することができます。メニューにある以下のサンプルスケッチを利用する。LEDの発光強度を制御するプログラムですが同じ制御となるため流用できます。
ファイル -> スケッチ例 -> 01.Basics -> Fade
if (brightness <= 0 || brightness >= 255) {
以下のように”160″に変えて、アップロードする。
if (brightness <= 0 || brightness >= 160) {
プログラム中の”int fadeAmount = 5″や”delay(30)”の数値を変えて、振動モータの変化の仕方を見てみよう。
どのように変わりましたか?それでは、それぞれの値を変更 すると、モータの動きがどのように変わるか考え、実際に試してみましょう。思い通りに制御できるようになれば、 ロボットやフィードバック機器などの制御に繋げることができます。