文書の表示以前のリビジョンバックリンクPDF の出力全て展開する/折り畳むODT 出力文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== 簡易照度計(自動レンジ切り替え) ====== ===== 概要 ===== 照度センサー(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Ω)は、出来るだけ精度の高い抵抗を使用してください。 ===== ソースコード ===== <code c 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); } } //********************************************************************** </code> ===== 動作確認 ===== {{: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照度基準規定の光源)で校正することにより精度を高めることが出来ます。 <JIS照度基準> {{:imgpaste:202004:htmikan-20200429-211031.png?500}} <callout type="warning" title="著作権表示 copyright notice"> このページは稲崎様の閉鎖した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]] </callout> elechobby/picdic/pic16f88/86.txt 最終更新: 2025/10/17 14:29by 127.0.0.1