第4回 PWM

1.やってみよう

(1) 図1に示す実験回路を作りなさい。



図1.実験回路

(2) Arduinoのプログラミング環境に、つぎのプログラムを入力しなさい。
int i;

void setup()
{

}

void loop()
{
  for (i = 0; i <= 255; i++)
  {
    analogWrite(11, i);
    delay(10);
  }
  for (i = 255; i >= 0; i--)
  {
    analogWrite(11, i);
    delay(10);
  }
}
(3) 書き込みボタンを押してプログラムを実行し、LEDの明るさが周期的に変化することを確認してください。

2.解説

 図2に示すように、PWM(pulse width modulation)によって、0Vと5Vの信号が交互に繰り返し出力すると、LEDは発光と消灯を繰り返し、点滅することになるが、点滅の周期があまりにも短いと、残像効果によって、人間の目にはLEDが発光し続けているように見える。このとき、LEDの明るさは、LEDが発光している時間の割合に比例する。こうした割合をデューティー比と呼ぶ。



図2.PWM:(a) デューティー比が小さい場合, (b) デューティー比が大きい場合

 Arduinoは、「~」の記号がついたディジタル端子だけがPWMの機能を内蔵している。Unoの場合、PWMの機能を利用できるのは、D3、D5、D6、D9、D10、D11の6個のディジタル端子に限られている。

3.課題

(1) 人間の目は、明るさを対数的に知覚する。物理的な明るさの変化は同じでも、明るいときの明るさの変化は小さく、暗いときの明るさの変化は大きく感じるのが、人間の目の特徴になっている。物理的な明るさの変化を指数的に制御することで、人間の目には明るさの変化が一定に見えるようにプログラムを工夫してください。

(2) フルカラーLEDを発光させる回路を作成し、PWMによって、レッドからグリーン、グリーンからブルー、ブルーからレッドの順番でしだいに色が変化するグラデーション発光のプログラムを作りなさい。

(2) モーターを動作させる回路を作成し、PWMによってモーターの回転数をコントロールするプログラムを作りなさい。

4.ヒント

 アナログ出力によってフルカラーLEDを発光させる場合は、図3に示すように、PWMの機能を内蔵したディジタル端子にフルカラーLEDを接続する必要がある。



図3.フルカラーLEDの実験回路

 図4に示すように、光の三原色の明るさをそれぞれ異なるタイミングで変化させると、ひとつの色からもうひとつの色にしだいに変化するグラデーション発光を表現できる。



図4.デューティー比のコントロール:(a) R(レッド)、(b) G(グリーン)、(c) B(ブルー)

 LEDのほか、PWMによってコントロールされているものの代表としてあげられるのはモーターである。実際に、PWMは電車のモーターをコントロールするためのしくみとして利用されている。
 モーターを動作させるには大きな電流を流す必要があり、トランジスタを使って電流を増幅することが定石になっている。たとえば、トランジスタとしてFETトランジスタを使う場合、回路は図5のようになる。この回路は、Arduinoの外部電源端子に12VのACアダプタを接続し、モーターを動作させている。
 なお、モーターに流れる電流をオンからオフに切り替わると、逆起電力によって逆向きの電流が発生し、トランジスタを破壊してしまうおそれがある。こうした逆向きの電流のバイパスさせるしくみとして、モーターを動作させる場合は、モーターに並列にダイオードを接続する必要がある。ダイオードの端子には極性があり、カソードに目印のマークがついていることに注意して回路を作ること。



図5.モーターの実験回路

 FETトランジスタには3個の端子があるが、それぞれの端子には、ゲート、ドレイン、ソースという名前がつけられている。図6に示すように、ゲートに電圧をかけるとドレインからソースに向かって大きな電流が流れるのがFETトランジスタのしくみであるが、まるでゲートの電圧をスイッチとして電流のオンとオフが切り替わるため、こうした動作をスイッチングと呼ぶ。



図6.FETトランジスタによる電流のスイッチング:(a) 1が出力される場合, (b) 0が出力される場合


Last Modified: May 24 12:00 JST 2023 by Naofumi Aoki
E-mail: aoki@ime.ist.hokudai.ac.jp