このブログは、サーバー代など、運営費のため広告やアフェリエイトがあります。
大変申し訳ありませんが、ご理解よろしくお願いします。

このブログは、サーバー代など、運営費のため広告やアフェリエイトがあります。
大変申し訳ありませんが、ご理解よろしくお願いします。

Arduino PWMを使ってLEDを調光してみる

電子工作
スポンサーリンク

(この内容は、アメブロの内容を一部訂正・移行したものです)

こんにちは。Yukiです。
今回は、ArduinoのPWMを使って、LEDを調光してみたいと思います。

LEDを調光する方法


LEDの明るさを変えるにはいろいろな方法があります。

  • LEDに流れる電流を制限する -> 可変抵抗を使う
  • LEDの電圧を変える -> レギュレータを使う
  • LEDにPWMを使用して明るさを変える

しかし、抵抗は、電圧降下がおきた分、熱に変換してしまうため、エネルギー的にもったいないです。

実際、昔は鉄道などでも、モーターの速度制御を抵抗で行っていたらしいですが、もったいないです。
(実は現役(2024年現在)の国鉄211系などは抵抗制御だったりします。抵抗制御特有の、加速時にいきなり加速する衝撃のようなものを感じます)

そこで今回はArduinoの機能であるPWMを使用してLEDを調光します。

PWMとはPulse Width Modulationの略で、日本語だとパルス幅変調といいます。簡単に書くと、高速にON/OFFを繰り返しており、ONとOFFの比率を操作して、出力パワーを変更します。抵抗とは違い、OFF時には電流が流れないため、省電力になります。また、レギュレータで電圧変更するよりも簡単です。

PWMのデメリットとしては、マイコンによってはPWMを出力するハードウェアが搭載されていないことがあります。ただし、ソフトウェアでやる方法もあります。(ソフトウェア制御でPWMを制御するのは、CPUに負担がかかるので、オススメはしません) また、仕組み上、ONとOFFを繰り返すことから、PWMの基本周波数によっては、チカチカして見えることがあります。

さっそくやってみる

なおLEDはArduinoに直接つないではいけません。必ず抵抗を挟んでください。

今回は200Ωの抵抗を使用しました。

const int PWM_PIN = 3;
const int POWER = 5;

void setup() {
  pinMode(PWM_PIN,OUTPUT);
}

void loop() {
  analogWrite(PWM_PIN,POWER);
}

ArduinoはPWM出力用にanalogWrite関数が用意されています。

上の見本はPWM_PINがPWMに対応しているを指定してください。
(マイコンは基本的に、一部のピンしかPWMを出力できません)

POWERは明るさです。0~255を指定してください。

なおArduino UNO / NANOのPWM対応ピンは3,5,6,9,11ピンです。

今回はPOWERを5・20・100・200にした画像として乗っけておこうと思います。

これがPOWERを5にセットした明るさです。

約2.2%位のパワーです。

結構暗いですね。

これがPOWERを20にセットした明るさです。

約8.9%位のパワーです。

明るさが変わって、明るくなりましたね。

これがPOWERを100にセットした明るさです。

約44.4%位のパワーです。

明るさは比例的に上がりませんが、確かに明るくなっています。

最後にPOWERを200にセットした明るさです。

約88.9%位のパワーです。

確かに明るくなっていますね。

最後にゆっくり点灯・消灯を繰り返すプログラムを貼っておきます。

本当はGIF画像を貼り付けたかったのですが、面倒になったため自分で確かめてください。

const int PWM_PIN = 3;

void setup() {
  pinMode(PWM_PIN, OUTPUT);
}

void loop() {
  int i;
  for (i = 0; i <= 255 ; i++)
  {
    analogWrite(PWM_PIN, i);
    delay(5);
  }

  for (i = 255; i >= 0; i--)
  {
    analogWrite(PWM_PIN, i);
    delay(5);
  }

  delay(100);
}
参考になったら、コーヒー1杯奢ってくれるとうれしいです
Buy Me A Coffee
電子工作
スポンサーリンク
シェアする
denshi1996をフォローする
スポンサーリンク

コメント

タイトルとURLをコピーしました