PWMでマブチモーターを制御するArduinoで学ぶ基礎からのモーター制御(5)(5/5 ページ)

» 2016年04月11日 09時00分 公開
[今岡通博MONOist]
前のページへ 1|2|3|4|5       

PWM制御のArduinoプログラム

 次はArduino側での制御プログラムを用意します。Sketchの「BASIC」タグから「Fade」を選択してください。これはLEDの光り方を変化させるプログラムですが、原理としてはPWMを用いたLEDの制御なのです。今回はこのプログラムを用いて直流ブラシ付きモーターの回転数を制御します。

int led = 9;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
 
void setup() {
  pinMode(led, OUTPUT);
}
 
void loop() {
  analogWrite(led, brightness);
  brightness = brightness + fadeAmount;
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }
  delay(30);
}
「Fade」スケッチを利用したモーターのPWM制御プログラム(ここに掲載したリストでは、オリジナルのソースからコメントなど省いています)

 Arduino Nanoボードではデジタルピンの3、5、6、9、10、11にてPWM出力ができますが、ここでは9を用いています。void loopの中のanalogWrite関数で、9番ピンに対してPWM出力を行っています。PWM信号の周波数(周期)は約490Hzです。なおピンによって周波数は異なり5番と6番ピンは977Hz、それ以外は490Hzです。

 PWM出力のデューティー比は、第二引数のbrightnessにて指定します。255でデューティー比100%、0で0%となります。PWM出力は30ミリ秒ごとにbrightnessの値が5ずつ変化します。brightnessが上限あるいは下限に達したら、その時点でPWM出力の変化が折り返すようにプログラミングしています。結果、三角波のようにPWMの出力が変化します。

 それではプログラムをArduinoに書き込んでモーターを回転させてみましょう。モーターの振動音などから、回転数が変化しているのが分かると思います。回転数の変化による振動音がちょうど消防車のサイレンのように聞こえませんか。

おわりに

 今回はPWMという技術を使って直流ブラシ付きモーターのパワー制御についてお話しました。今回でいったん直流ブラシ付きモーターについてはおわりにして、次回は同じPWMを使った、サーボモーターの制御に付いてお話したいと思います。お楽しみに。(次回へ続く

⇒ 連載バックナンバーはこちら

前のページへ 1|2|3|4|5       

Copyright © ITmedia, Inc. All Rights Reserved.