簡易照度計(自動レンジ切り替え)

照度センサー(NJL7502L)が、格安の価格(2個で100円)で手に入りましたので、早速、照度計を製作してみました。

NJL7502Lは、分光感度特性が人間の視感度特性に近いフォトトランジスタで、照度に応じて、光電流が流れます。(光電流 33μA 標準 条件:白色LED, 100Lux)
この電流を抵抗を利用して電圧に変換し、PICにA/D変換で取り込み、照度に換算し、LCDへ表示します。

精度を高めるために、NJL7502Lの出力の大きさ(照度)に応じてレンジを自動で切り替える方式にしました。
出力が小さいときは、オペアンプで増幅した電圧を使用する。
出力が大きいときは、NJL7502Lの出力をそのまま使用する。

  1. NJL7502Lの出力(光電流)を抵抗で電圧V1に変換する。
  2. 電圧V1をオペアンプで11倍に増幅する。電圧V2
  3. V1をA/D変換でPICに取り込む。
  4. V2をA/D変換でPICに取り込む。
  5. V2が2V(約5500Lux)未満なら、V2をLux換算しLCDへ表示する。
    V2÷(11倍×((33μA×100Ω)÷100Lux))
  6. V2が2V以上なら、V1をLux換算しLCDへ表示する。
    V1÷(((33μA×100Ω)÷100Lux))

<概観>

<特性>

  • ピ-ク感度波長 560 nm



※R3(1kΩ)、R4(10kΩ)は、出来るだけ精度の高い抵抗を使用してください。

LuxMeter.c
//********************************************************************** 
/*
	<照度計>
*/
//********************************************************************** 
 
 
unsigned	int	measurement(unsigned short channel)
{
	unsigned	int		ad, cnt;
	//
	ad = 0;
	for (cnt = 0; cnt < 50; cnt++) {
		ad += Adc_Read(channel);
	}
	return (ad);
}
 
//********************************************************************** 
 
void main()
{
	static	unsigned	char	buf[6];
	static	unsigned	int		ad;
	static	double				tmp;
	//
	OSCCON = 0b01110000;		// クロックは8Mhz 
	CMCON  = 0b00000111;		// コンパレータは使用しない。
	// A/D変換を使用する。 
	ANSEL  = 0b00010100;
	ADCON1.VCFG1 = 1;
	ADCON1.VCFG0 = 0;
	// ポートを初期化する。 
	TRISA  = 0b10111100;
	TRISB  = 0b00001111;
	// LCDを初期化する。 
	Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTA,6,0,1);
	Lcd_Custom_Cmd(LCD_CURSOR_OFF);
	Lcd_Custom_Cmd(LCD_CLEAR);
	//
	while (1) {
		ad = measurement(2);
		tmp = ((double)ad * 2.44140625) / 50.0;
		//
		if (tmp < 2000) {
			WordToStr(tmp, buf);
			Lcd_Custom_Out(1, 1, buf);
			Lcd_Custom_Out(1, 6, "mV");
			//
			WordToStr(tmp / (11.0 * 0.033), buf);
			Lcd_Custom_Out(2, 1, buf);
			Lcd_Custom_Out(2, 6, "Lux");
		} else {
			ad = measurement(4);
			tmp = ((double)ad * 2.44140625) / 50.0;
			//
			WordToStr(tmp, buf);
			Lcd_Custom_Out(1, 1, buf);
			Lcd_Custom_Out(1, 6, "mV");
			//
			WordToStr(tmp / 0.033, buf);
			Lcd_Custom_Out(2, 1, buf);
			Lcd_Custom_Out(2, 6, "Lux");
		}
		Delay_ms(500);
	}
}
 
//********************************************************************** 

左側:A/D変換用の基準電圧(2.5V)を発生させる部分です。
右側:オペアンプで11倍に増幅する部分です。

うす曇の時の庭の照度です。

如何ですか?
今回は、データシートに記載された内容(光電流 33μA 標準 条件:白色LED, 100Lux)でプログラミングしましたが、NJL7502Lによっては、光電流のばらつきがありますので、基準となる光源(例えば、JIS照度基準規定の光源)で校正することにより精度を高めることが出来ます。

<JIS照度基準>

著作権表示 copyright notice

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