2014年4月16日水曜日

照度センサーと温度センサーで測定しLCDに表示



随分前に温度センサーのLM60を使ってみた記事を書きましたが、
http://cranberrytree.blogspot.jp/2012/03/lm60.html

今回は照度センサー(フォトトランジスタ)のNJL7502Lで照度を測定し、LCDに表示してみます。
LCDは自作シールドで以前記事も書きました。
http://cranberrytree.blogspot.jp/2012/03/lcd.html


なので今回新しいことは、照度の計測だけです。
こちらの記事を参考にさせていただきました。
小部屋の覚え書きRO
http://sircs.mo-blog.jp/rod/2010/05/ucomlm35njl7502.html









//温度センサ LM60
//フォトトランジスタ NJL7502L

#include <LiquidCrystal.h>

int lcd_RS = 8;
int lcd_Enable = 7;
int lcd_D4 = 3;
int lcd_D5 = 4;
int lcd_D6 = 5;
int lcd_D7 = 6;
LiquidCrystal lcd(lcd_RS, lcd_Enable, lcd_D4, lcd_D5, lcd_D6, lcd_D7);

const int pin_temp = A0;    //Analog input LM60
const int pin_lux = A5;     //Analog input NJL7502L

int sensorValue_temp = 0;   //value read from pin_temp
float offset = 0.424;       //offset 424mv(0℃で424mv)
float vc = 0.00625;         //+6.25mv/1℃
float temp = 0.0;
float vref = 5.0;           //参照電圧5V

int sensorValue_lux = 0;    //value read from pin_lux
float lux = 0.0;
long r_lux = 10000;         //NJL7502Lに接続している抵抗値
                            //10KΩ ~1,000lux

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
}

void loop() {
  sensorValue_temp = analogRead(pin_temp);
  float v_temp = sensorValue_temp * vref / 1024;
  temp = (v_temp - offset) / vc;           //電圧から温度に変換
  Serial.print("LM60 = " );
  Serial.print(sensorValue_temp);
  Serial.print("\t Volt = " );
  Serial.print(v_temp,4);
  Serial.print("\t TEMP = ");
  Serial.println(temp);
  lcd.setCursor(0,0);
  lcd.print("temp ");
  lcd.print(temp);
  
  sensorValue_lux = analogRead(pin_lux);
  float v_lux = sensorValue_lux * vref / 1024;
  lux = 2 * ( v_lux / r_lux ) * 1000000;        //データシートより lx = 2 x 光電流[μA]
  Serial.print("7502L = " );
  Serial.print(sensorValue_lux);
  Serial.print("\t Volt = " );
  Serial.print(v_lux,4);
  Serial.print("\t lux = ");
  Serial.println(lux);
  lcd.setCursor(0,1);
  lcd.print("lux ");
  lcd.print(lux);

  delay(1000);
  lcd.clear();
}


照度センサーからのアナログ入力値から、luxへの変換はこれでいいはずですが、自信ありません
部屋で電気スタンドを天井に向けて部屋が薄暗い状態だと0luxに。

部屋の天井の蛍光灯30w5本つけて、真下のテーブルにセンサーを真上に向けて90lux前後。
なんだか数値が低すぎのような。
ろうそくの光が1m先の壁に当たったのが1luxぐらいらしいです。

追記:
石川県消費生活支援センターによる市販60w白熱電球を1m離れて測ると、50~80ルクスとの資料がありました。
http://www.pref.ishikawa.lg.jp/shohicenter/documents/h21test-katei.pdf
手持ちの60W電球を測ってみると70luxと表示されたので、回路とスケッチについてこれでよしとします。


環境:arduinoUNO、arduinoIDE1.0.5、win7(64)


0 件のコメント:

コメントを投稿