====== 簡易照度計(自動レンジ切り替え) ======
===== 概要 =====
照度センサー(NJL7502L)が、格安の価格(2個で100円)で手に入りましたので、早速、照度計を製作してみました。
===== 動作原理 =====
NJL7502Lは、分光感度特性が人間の視感度特性に近いフォトトランジスタで、照度に応じて、光電流が流れます。(光電流 33μA 標準 条件:白色LED, 100Lux)
この電流を抵抗を利用して電圧に変換し、PICにA/D変換で取り込み、照度に換算し、LCDへ表示します。
{{:imgpaste:202004:htmikan-20200429-210742.png?500}}
精度を高めるために、NJL7502Lの出力の大きさ(照度)に応じてレンジを自動で切り替える方式にしました。
出力が小さいときは、オペアンプで増幅した電圧を使用する。
出力が大きいときは、NJL7502Lの出力をそのまま使用する。
- NJL7502Lの出力(光電流)を抵抗で電圧V1に変換する。
- 電圧V1をオペアンプで11倍に増幅する。電圧V2
- V1をA/D変換でPICに取り込む。
- V2をA/D変換でPICに取り込む。
- V2が2V(約5500Lux)未満なら、V2をLux換算しLCDへ表示する。\\ %%V2÷(11倍×((33μA×100Ω)÷100Lux))%%
- V2が2V以上なら、V1をLux換算しLCDへ表示する。\\ %%V1÷(((33μA×100Ω)÷100Lux))%%
<概観>
{{:imgpaste:202004:htmikan-20200429-210755.png}}
<特性>
* ピ-ク感度波長 560 nm
{{:imgpaste:202004:htmikan-20200429-210803.png}}
{{:imgpaste:202004:htmikan-20200429-210815.png?500}}
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200429-210830.png}}
※R3(1kΩ)、R4(10kΩ)は、出来るだけ精度の高い抵抗を使用してください。
===== ソースコード =====
//**********************************************************************
/*
<照度計>
*/
//**********************************************************************
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);
}
}
//**********************************************************************
===== 動作確認 =====
{{:imgpaste:202004:htmikan-20200429-210951.png?500}}
左側:A/D変換用の基準電圧(2.5V)を発生させる部分です。
右側:オペアンプで11倍に増幅する部分です。
{{:imgpaste:202004:htmikan-20200429-211000.png}}{{:imgpaste:202004:htmikan-20200429-211006.png}}
うす曇の時の庭の照度です。
{{:imgpaste:202004:htmikan-20200429-211013.png?500}}
如何ですか?
今回は、データシートに記載された内容(光電流 33μA 標準 条件:白色LED, 100Lux)でプログラミングしましたが、NJL7502Lによっては、光電流のばらつきがありますので、基準となる光源(例えば、JIS照度基準規定の光源)で校正することにより精度を高めることが出来ます。
{{:imgpaste:202004:htmikan-20200429-211031.png?500}}
このページは稲崎様の閉鎖した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]]