====== 受光&発光(1個のLED) ======
===== 概要 =====
発光ダイオード(LED:Light Emitting Diode)は、順方向に電圧を加えた際に発光する半導体素子です。
その逆に、このLEDに光を当てると電圧が発生するという現象があるようです。
この現象を利用して、1本のLEDのみで、
- 明るさを検出し、
- 周りが暗くなると点灯、
- 明るくなると消灯する。
ユニットを作成してみました。
先ずは、この現象を確認してみました。(回路図A)
オペアンプは単純に高インピーダンスのバッファーとして動作するだけです。(ボルテージフォロア)LEDによって出力電圧に若干のばらつきがありますが、無負荷状態ではそこそこの電圧が出ています。
これなら利用できそうです。
<一般的なLED>
{{:imgpaste:202004:htmikan-20200428-172037.png}}{{:imgpaste:202004:htmikan-20200428-172045.png}}
<大き目のLED>
{{:imgpaste:202004:htmikan-20200428-172106.png}}{{:imgpaste:202004:htmikan-20200428-172110.png}}
<一般的な赤色LED>
{{:imgpaste:202004:htmikan-20200428-172129.png}}{{:imgpaste:202004:htmikan-20200428-172133.png}}
<赤外線発光LED>
{{:imgpaste:202004:htmikan-20200428-172154.png}}{{:imgpaste:202004:htmikan-20200428-172159.png}}
===== 動作原理 =====
■LEDの出力電圧を取り込む方法
* LEDが接続されているPICのポートを入力モードに設定する。
* LEDの出力電圧を高インピーダンスのオペアンプでインピーダンス変換する。
* 電圧が安定するまで、少しスリープ(約50msec)する。
* A/D変換を1msec間隔で50回取り込み、その平均電圧を求める。
■LEDの点灯/消灯方法
* LEDが接続されているPICのポートを出力モードに設定する。
* 点灯(ポートを“1”にする)、消灯(ポートを“0”にする)
■処理の流れ
- スイッチが押されると、明るさを判断するための基準電圧(LEDの出力電圧)V1を取り込む。
- 現時点の明るさの電圧(LEDの出力電圧)V2を取り込む。
- V1とV2を比較し、V2が小さければLEDを点灯させる。
- 1.に戻る。
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200428-172541.png}}
===== ソースコード =====
//**********************************************************************
void main()
{
unsigned int ad, threshold;
unsigned char cnt;
OSCCON = 0b01110000; // クロックは8Mhz
CMCON0 = 0b00000111; // コンパレータは使用しない。
ANSEL = 0b00000010; // AN1を使用する。
TRISIO = 0b00000011;
GPIO = 0b00000000;
// OPTION_REG = 0b10000000;
// WPU.F1 = 1;
//
while (1) {
if (GPIO.F0 == 0) {
TRISIO.F2 = 1;
Delay_ms(50);
threshold = 0;
for (cnt = 0; cnt < 50; cnt++) {
Delay_ms(1);
threshold += Adc_Read(1);
}
threshold = threshold / 50;
TRISIO.F2 = 0;
continue;
}
//
TRISIO.F2 = 1;
Delay_ms(50);
ad = 0;
for (cnt = 0; cnt < 50; cnt++) {
Delay_ms(1);
ad += Adc_Read(1);
}
ad = ad / 50;
TRISIO.F2 = 0;
//
if (ad <= threshold) {
GPIO.F2 = 1;
} else {
GPIO.F2 = 0;
}
Delay_ms(1000);
}
}
//**********************************************************************
===== 動作確認 =====
周りが明るくなると、LEDは消灯状態になります。
左の黄色いスイッチが、基準電圧の取り込みスイッチです。
中央のICがPIC、その右横のICがオペアンプです。
右の透明なLEDが受光&発光を行わせるLEDです。
{{:imgpaste:202004:htmikan-20200428-172746.png?500}}
その時の、LEDの電圧の波形です。
消灯状態なので、通常は0Vです。
LEDの電圧を取り込む瞬間(約100msec)だけ、ポートを入力モードにするので、LEDが発電した電圧を
A/D変換で読み込むことが出来ます。
{{:imgpaste:202004:htmikan-20200428-175117.png?500}}
周りが暗くなると、LEDは点灯状態になります。
{{:imgpaste:202004:htmikan-20200428-175137.png?500}}
その時の、LEDの電圧の波形です。
点灯状態なので、通常は約2Vです。
LEDの電圧を取り込む瞬間(約100msec)だけ、ポートを入力モードにするので、LEDが発電した電圧を
A/D変換で読み込むことが出来ます。
{{:imgpaste:202004:htmikan-20200428-175222.png?500}}
如何ですか?
1本のLEDだけで、受光と発光が出来るので部品点数が少なくて済みますね。^_^
このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby:picdic:picdic|詳細]]
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.[[elechobby:picdic:picdic|Details]]