受光&発光(1個のLED)

発光ダイオード(LED:Light Emitting Diode)は、順方向に電圧を加えた際に発光する半導体素子です。
その逆に、このLEDに光を当てると電圧が発生するという現象があるようです。

この現象を利用して、1本のLEDのみで、

  1. 明るさを検出し、
  2. 周りが暗くなると点灯、
  3. 明るくなると消灯する。

ユニットを作成してみました。

先ずは、この現象を確認してみました。(回路図A)
オペアンプは単純に高インピーダンスのバッファーとして動作するだけです。(ボルテージフォロア)LEDによって出力電圧に若干のばらつきがありますが、無負荷状態ではそこそこの電圧が出ています。
これなら利用できそうです。

<一般的なLED>

<大き目のLED>

<一般的な赤色LED>

<赤外線発光LED>

■LEDの出力電圧を取り込む方法

  • LEDが接続されているPICのポートを入力モードに設定する。
  • LEDの出力電圧を高インピーダンスのオペアンプでインピーダンス変換する。
  • 電圧が安定するまで、少しスリープ(約50msec)する。
  • A/D変換を1msec間隔で50回取り込み、その平均電圧を求める。

■LEDの点灯/消灯方法

  • LEDが接続されているPICのポートを出力モードに設定する。
  • 点灯(ポートを“1”にする)、消灯(ポートを“0”にする)

■処理の流れ

  1. スイッチが押されると、明るさを判断するための基準電圧(LEDの出力電圧)V1を取り込む。
  2. 現時点の明るさの電圧(LEDの出力電圧)V2を取り込む。
  3. V1とV2を比較し、V2が小さければLEDを点灯させる。
  4. 1.に戻る。

ledEx.c
//********************************************************************** 
 
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は点灯状態になります。

その時の、LEDの電圧の波形です。
点灯状態なので、通常は約2Vです。
LEDの電圧を取り込む瞬間(約100msec)だけ、ポートを入力モードにするので、LEDが発電した電圧を
A/D変換で読み込むことが出来ます。

如何ですか?
1本のLEDだけで、受光と発光が出来るので部品点数が少なくて済みますね。^_^

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/pic12f683/13.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1