次は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); }
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を使った、サーボモーターの制御に付いてお話したいと思います。お楽しみに。(次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.