「明るい火花になり、暗くなるまで消灯してください!」時々、電気を消して電気を無駄にするのを忘れてしまいます。また、その日に街灯が点灯するのを見たことがあるはずです。ダークディテクタには、外が明るい場合はライトが自動的にオフになり、外が暗い場合はライトがオンになる回路がすでにいくつか構築されています。しかし今回は、この回路では、光の状態に応じてライトのオンとオフを切り替えるだけでなく、外光の状態に応じて光の強度を変化させます。ここでは、1ワットの電源LEDの輝度を自動的に増減するために、ArduinoでLDRとPWMの概念を使用しました。
基本的に、PWMはパルス幅変調を指します。PWMピンを介した出力信号はアナログ信号であり、Arduinoからデジタル信号として取得されます。デジタル波のデューティサイクルを使用して、信号のシーケンシャルアナログ値を生成します。そして、その信号はさらに電源LEDの明るさを制御するために使用されます。
必要な材料
- Arduino UNO
- LDR
- 抵抗器(510、100kオーム)
- コンデンサ(0.1uF)
- トランジスタ2N2222
- 1ワットの電源LED
- 接続線
- ブレッドボード
回路図
コードと説明
自動LED調光器の完全なArduinoコードは最後に記載されています。
以下のコードでは、コードで使用されるPWMピンと変数を定義しています。
int pwmPin = 2; //ピン12を変数pwmint LDR = A0に 割り当てます。//アナログ入力A0を変数potint c1 = 0に 割り当てます。//変数c1を宣言しますintc2 = 0; //変数c2を宣言します
ここで、 ループで は、最初にコマンド 「analogRead(LDR)」 を使用して値を読み取り、次にアナログ入力を 「value」 という名前の変数に保存し ます 。数学的な計算を行うことにより、PWM信号を生成しています。ここでは、アナログ値が500未満の場合にのみPWMを使用して光の強度を制御し、500を超える場合は完全にライトをオフにします。
int値= analogRead(LDR); Serial.println(value); c1 =値; c2 = 500-c1; // 1000からc2を減算し、結果をc1に保存し ますif(value <500) { digitalWrite(pwmPin、HIGH); delayMicroseconds(c2); digitalWrite(pwmPin、LOW); delayMicroseconds(c1); } if(value> 500) { digitalWrite(2、LOW); } }
ArduinoのPWMについて詳しくは、こちらをご覧ください。
光の強度を自動的に制御する方法:
回路図のとおり、LDRと100k抵抗を使用して分圧回路を作成しました。分圧器の出力は、Arduinoのアナログピンに供給されます。アナログピンは電圧を感知し、Arduinoにアナログ値を与えます。アナログ値はLDRの抵抗に応じて変化します。したがって、LDR全体が暗い場合、その抵抗が増加するため、電圧値(アナログ値)が減少します。したがって、アナログ値はPWM出力またはデューティサイクルを変化させ、デューティサイクルはパワーLEDの光の強度にさらに比例します。したがって、LDR上のライトは、電源LEDの強度を自動的に制御します。以下は、これがどのように機能するかを示すフロー図です。上向きの矢印記号は「増加」を示し、下向きの矢印記号は「減少」を示します。
光の強度(LDR上)↓-抵抗↑-アナログピンの電圧↓-デューティサイクル(PWM)↑-電源LEDの明るさ↑
外が完全に明るい場合(アナログ値が500を超える場合)、電源LEDはオフになります。
これは、LDRを使用して光の強度を自動的に制御する方法です。
LDR関連のすべての回路をここでさらに確認してください。