GY-30 - цифровой модуль измерения освещенности

Цифровой  модуль измерения освещенности - GY-30 

Построен на микросхеме BH1750FVI

Диапазон измерений: 0-65535 люкс

Интерфейс I2C

Напряжение питания 5V



Освещённость — световая величина, равная отношению светового потока, падающего на малый участок поверхности, к его площади.

Единицей измерения освещённости в Международной системе единиц (СИ) служит люкс (1 люкс = 1 люмену на квадратный метр), в СГС — фот (один фот равен 10 000 люксов). В отличие от освещённости, выражение количества света, отражённого поверхностью, называется светимостью.

Освещённость прямо пропорциональна силе света источника света. При удалении его от освещаемой поверхности её освещённость уменьшается обратно пропорционально квадрату расстояния (Закон обратных квадратов).

Когда лучи света падают наклонно к освещаемой поверхности, освещённость уменьшается пропорционально косинусу угла падения лучей.

Освещённость в фототехнике определяют с помощью экспонометров и экспозиметров, в фотометрии — с помощью люксметров.

Описание

Освещённость, лк

Наибольшая солнечная освещённость при чистом небе

100 000

Обычная освещённость летом в средних широтах в полдень

17 000

В облачную погоду летом в полдень

12 000

Обычная освещённость зимой в средних широтах

5 000

На открытом месте в пасмурный день

1000—2000

Восход и заход Солнца в ясную погоду

1000

Ночью в полнолуние

0,2

В безлунную ночь

0,001—0,002

В безлунную ночь при сплошной облачности

до 0,0002

В светлой комнате вблизи окна

100

На рабочем столе для тонких работ

400–500

Необходимое для чтения

30–50


Подключение модуля для измерения освещенности к arduino nano v.4.0

GY-30GNDADDSDASCLVCC
nanoGNDGNDA4A5+5V

Тестовая программа измерения освещенности:

#include <Wire.h> //IIC

#include <math.h> 

int BH1750address = 0x23; 

byte buff[2];

void setup()

{

  Wire.begin();

  Serial.begin(9600);

}

void loop()

{

 int i;

 uint16_t val=0;

 BH1750_Init(BH1750address);

 delay(200);

 if(2==BH1750_Read(BH1750address))

  {

   val=((buff[0]<<8)|buff[1])/1.2;

   Serial.print(val,DEC);    

   Serial.println("[lx]"); 

  }

 delay(150);

}

int BH1750_Read(int address) //

{

  int i=0;

  Wire.beginTransmission(address);

  Wire.requestFrom(address, 2);

  while(Wire.available()) //

  {

    buff[i] = Wire.read();  // receive one byte

    i++;

  }

  Wire.endTransmission();  

  return i;

}

void BH1750_Init(int address) 

{

  Wire.beginTransmission(address);

  Wire.write(0x10);//1lx reolution 120ms

  Wire.endTransmission();

}


ОБСУЖДЕНИЕ: