発光ダイオード(LED:Light Emitting Diode)は、順方向に電圧を加えた際に発光する半導体素子です。
その逆に、このLEDに光を当てると電圧が発生するという現象があるようです。
この現象を利用して、1本のLEDのみで、
ユニットを作成してみました。
先ずは、この現象を確認してみました。(回路図A)
オペアンプは単純に高インピーダンスのバッファーとして動作するだけです。(ボルテージフォロア)LEDによって出力電圧に若干のばらつきがありますが、無負荷状態ではそこそこの電圧が出ています。
これなら利用できそうです。
■LEDの出力電圧を取り込む方法
■LEDの点灯/消灯方法
■処理の流れ
//********************************************************************** 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です。
その時の、LEDの電圧の波形です。
消灯状態なので、通常は0Vです。
LEDの電圧を取り込む瞬間(約100msec)だけ、ポートを入力モードにするので、LEDが発電した電圧を
A/D変換で読み込むことが出来ます。
その時の、LEDの電圧の波形です。
点灯状態なので、通常は約2Vです。
LEDの電圧を取り込む瞬間(約100msec)だけ、ポートを入力モードにするので、LEDが発電した電圧を
A/D変換で読み込むことが出来ます。
如何ですか?
1本のLEDだけで、受光と発光が出来るので部品点数が少なくて済みますね。