Авторизация
Зарегистрироваться

Люксометр за 80 рублей


Всем доброе время суток! Я наконец-то решил что хватит быть потребителем, и надо внести свой вклад в развитие ресурса. А рассказать я вам сегодня хочу о люксометре на основе сенсора BH1750FVI.


Зачем мне оно? Дело в том, что из-за плохого воспламенения газа в котле и последующих взрывов с вылетом трубы из котла (!) я решил заняться безопасностью в котельной. Сей датчик я хотел использовать как датчик пламени в помещении, но чуть позже вспомнил про лампу на потолке. Но я всё равно не жалею что купил его.

Пришёл сенсор в обычном антистатическом пакете, с неприпаянными ножками. Через 3 минуты он выглядел уже так:

VCC⇔3,3V
GND⇔GND
SCL⇔A5
SDA⇔A4
ADDR отвечает за адрес датчика. При подаче на ADDR 5V он изменяет адрес.

Прошу прощения за фото, датчик ничтожно мал:


Сразу же он присоединился ко всем, уже пришедшим датчикам на макетной плате:


Немного о характеристиках:
Питание: только 3,3 Вольта!
В комментариях написали про заявленные 5
На Али пишут про 5, в даташите:
Supply Voltage Vmax 4.5 V
VCC Voltage Vcc Min.2.4 Typ.3.0 Max.3.6 V
Или я что-то не понял? Не хочется портить игрушку)

Информацию он передаёт по I2c интерфейсу, уже сразу люксы. Для работы с ним на ардуино требуется соответствующая библиотека, в ней же уже содержится пример кода.
Предел измерений: 1 — 65535 lx
Даташит

Так как у меня уже подключены 2 датчика, вот мой код может он вам и не нужен Просьба: тапком не бить!
Индусский код
#include <Wire.h>
#include <BH1750.h>

#define SENSOR_AQ A3
#define SENSOR_CH A2


BH1750 lightMeter;


void setup(){
  Serial.begin(9600);
  lightMeter.begin();
  Serial.println("Running...");
}


void loop() {
  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.print(" lx       ");
  
  long val = 0;
    for (int i=0; i<100; ++i) {
        val = val + analogRead(SENSOR_AQ);
    }
    val = val/100;
    Serial.print("Air Quality: ");
    Serial.print(val);
    Serial.print(" Pop.       ");

  long va = 0;
    for (int i=0; i<100; ++i) {
        va = va + analogRead(SENSOR_CH);
    }
    va = va/100;
    Serial.print("CH4: ");
    Serial.print(va);
    Serial.print(" Pop.       ");
    

ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
ADCSRA |= _BV(ADSC); // начало преобразований внутреннего напряжения платы
while (bit_is_set(ADCSRA, ADSC)); // измерение
uint8_t low = ADCL; // сначала нужно прочесть ADCL - это запирает ADCH
uint8_t high = ADCH; // разлочить оба
float result = (high<<8) | low;
result = (1.1 * 1023.0 * 1000) / result; // Результат Vcc в милливольтах

Serial.print("Board voltage: ");
Serial.print(result);
Serial.println(" mV");

delay(500);
}

Открыв монитор порта, мы увидим вот это:

23 люкса в комнате в ближнем Подмосковье, в 15:44 без света, сбоку от окна.

Под светодиодной настольной лампой все 240 люкс. На прямых солнечный лучах ≈41000. В свете фонарика UltraFire 1000 люкс, при фокусировке на датчике- все 14000!

Что можно сказать об этом чудо- устройстве? Если кому-то надо понять, нормально ли освещено помещение (А норма рабочего места- 150 люкс), или же просто поиграться- классная штука, но для фотореле можно использовать и обычный фоторезистор.

Спасибо, что дочитали до конца, надеюсь было хоть чуточку интересно!

Кота нет
Планирую купить +72 Добавить в избранное +60 +113
Похожие публикации
   
свернуть развернуть
Комментарии (91)
RSS
+
avatar
+1
Понравилось, приобрету для экспериментов :)
Спасибо за обзор!
+
avatar
+2
интересно, насколько он точен…
+
avatar
  • gaudin2
  • 14 января 2016, 16:39
+3
такой же покупал, точность 1лх, калибруется на заводе.
+
avatar
+2
Слабо верится. Сравнить бы с бытовыми люксометрами.
+
avatar
  • rx3apf
  • 19 января 2016, 15:54
0
Тут даже сомнений нет, несопоставимо. Впрочем, дешевые люксметры китайского производства тоже не конкуренты серьезным приборам.
+
avatar
  • wwest
  • 16 января 2016, 17:38
0
Кем калибруется, КАК калибруется, в каком сферическом угле??
В каком спектральном диапазоне????
То что вы собрали надо сначала откалибровать, чтобы давать оценки в лк.
+
avatar
  • rx3apf
  • 19 января 2016, 15:52
0
Не надо путать точность и разрешающую способность, это совершенно разные вещи. А о какой-либо точности в данном случае говорить не приходится — достаточно глянуть на спектральную характеристику датчика. Там, где должен быть пик чувствительности (555 нм) — у него как раз провал. Ну, этот датчик и не позиционируют как основу измерительных приборов, основное применение — регулировка яркости подсветки. Штучка прикольная, применение найти можно (во многих случаях удобнее, чем аналоговые датчики), но о какой-либо точности говорить не приходится, конечно.
+
avatar
  • ksiman
  • 14 января 2016, 16:32
+1
Осталось половинку белого шарика прикрутить
+
avatar
  • vanenzo
  • 14 января 2016, 21:18
0
Везде где ни смотрю тесты такого показометра, он кажет довольно близко к готовым бытовым, он ваще нужен этот шарик?
+
avatar
  • ksiman
  • 14 января 2016, 21:26
0
Его не для красоты ставят
+
avatar
+1
но ведь калибровка уйдёт с шариком-то?
+
avatar
  • ksiman
  • 14 января 2016, 22:29
+1
Уйдёт, но её и так нет
Китайцы чипы наверняка не калибруют
+
avatar
  • vanenzo
  • 14 января 2016, 23:48
+1
почему это, люксметр отдает данные сразу в люксах, а значит как минимум написали прошивку, провели испытания и сделали калибровку первого устройства или партии, и эти данные зашили во все, а доли и проценты расхождения ардуинствующему населению неинтересны )
+
avatar
  • ksiman
  • 15 января 2016, 06:42
0
Разброс чувствительности сенсора больше нескольких процентов, особенно при низкой освещённости.
+
avatar
  • mrSergP
  • 15 января 2016, 13:04
0
по краям диапазона точность всегда печальная (

Даже у матрицы фотика (отдаленного родича люксометра) при низкой освещенности и высоких ISO всегда шумы вылазят
+
avatar
0
Не должна, нужно просто другой алгоритм расчёта наверное
+
avatar
  • vanenzo
  • 14 января 2016, 23:50
0
если цифирки принимать без обработки, то уйдет канеш, а так чо, положил люксметр в какое-то место, замерил без шарика, записал, замерил с шариком, тож записал, и так на нескольких уровнях яркости, запилил коэффициентик в программку и все
+
avatar
  • Aostspb
  • 14 января 2016, 16:36
+2
Вообще говоря, от 5 вольт такой датчик тоже работает. Там у Вас на фото, на обратной стороне платы видно такой характерный для LDO корпус SOT-23 — не оно? :) Делал подобное по описанию sav13.

Ну и «за 80 рублей» — не совсем точно: без дополнительной обвязки Вы с него данные не считаете.
+
avatar
+1
Дополнил, посмотрите, если я не прав, объясните)
+
avatar
  • Aostspb
  • 14 января 2016, 17:20
+1
Я сначала тоже долго вычитывал даташит. Когда собирал на макетке — кратковременно включал от 5 вольт: не спалил. Сейчас вся конструкция (BH1750+ардуина+LCD1602) работает от 4.2V литиевого элемента, вечером, если не забуду, посмотрю на маркировку этого sot-23 корпуса у себя на плате. Если руки не дрожат — можно аккуратно померять (+) напряжение до и после корпуса sot-23.
+
avatar
+1
3.89В До, 0.2 В на левой ножке, на правой 0В
+
avatar
  • ksiman
  • 14 января 2016, 18:40
+1
Что-то тут не так. Питание микросхемы не может быть 0,2В.
Протрите стабилизатор спиртом — попробуйте убрать наплыв
+
avatar
+1
Я запросто мог не то померять) Я один щуп на общую землю, вторым по ножкам прошёлся
+
avatar
  • ksiman
  • 14 января 2016, 18:54
+1
Всё верно. Ещё раз на левой ноге стабилизатора проверьте напряжение
+
avatar
+2
Протёр, ему понравилось, на входе 3,58, на выходе скачет от 0,17 до 0,23, руки не дрожат
+
avatar
  • ksiman
  • 14 января 2016, 19:31
+1
Это стабилизатор напряжения XC6206 на 3,3В. Почему на его выходе нет напряжения? И ещё интересно, чем-же питается микросхема…
+
avatar
  • ksiman
  • 14 января 2016, 16:36
+1
Питание: только 3,3 Вольта!
Заявлено 3,3-5В.
На входе стоит стабилизатор напряжения. У Вас он какой-то подозрительный — будто палёный
+
avatar
+2
просто капля канифоли — брызнуло при пайке выводов
+
avatar
  • ABATAPA
  • 14 января 2016, 16:41
+1
> Дело в том, что из-за плохого воспламенения газа в котле и последующих взрывов с вылетом трубы из котла (!) я решил заняться безопасностью в котельной.

По-моему, тут надо решать проблему в её корне — решать проблемы с поджигом.

P. S.: Странно, питание 3,3 Вольта, а в примере 6500+ mV, т. е. выше 6.5 вольт…
+
avatar
+1
Это напряжение ардуины на выводе в 5 вольт, на него ничего не прицеплено
+
avatar
+1
Статья в тему, не знаю можно ли тут ссылки оставлять
samopal.pro/luxometer1/
+
avatar
+1
Сверху уже оставили
+
avatar
+1
еле нашел) ссылка то не явная) заказал себе цифровой и аналоговый датчики, надеюсь дойдут.
+
avatar
  • Dru4
  • 14 января 2016, 17:05
+1
Сделайте контроль пламени, на ИК фотодиоде.
+
avatar
+1
Вы про такой? Я честно говоря не совсем понимаю как с ним работать
+
avatar
  • Dru4
  • 14 января 2016, 17:10
+1
Хотябы да. Во все ИК фотодиоды встроен полосовой фильтр, отсекающий всё что ниже 700-800 нм, т.е. видимый диапазон. Пламя- широкополосный источник, и ИК в нём хоть отбавляй.
На той плате что вы показали есть два выхода, аналоговый и цифровой. Аналоговый судя по всему всё с диода просто выдаёт, можно уровень напряжения мерить, а цифровой- там судя по всему стоит компаратор, который при пересечении порога поднимет вам единичку.
+
avatar
+1
Хорошо, спасибо! Закажу)
+
avatar
  • udavst
  • 14 января 2016, 22:35
0
Он очень слабый, спичку засекает на расстоянии в полметра в тёмном помещении, на свету ещё хуже.
+
avatar
+1
Можно просто фотодиод с резистором воткнуть. Только настроить на нужную чувствительность.
Например так
+
avatar
  • Aostspb
  • 14 января 2016, 17:23
+1
Это просто пороговый датчик с аналоговым и цифровым выходами. На аналоговом выходе, скорее всего, будет меняться напряжение 0-VCC, а на цифровом — будет «порог», зависящий от настройки «синим потенциометром». Микруха — компаратор сигнала.
+
avatar
+1
Самые надежные датчики контроля пламени — ультрафиолетовые.
Недостаток- иногда протирать кварцевое окошко.
У остальных методов недостатков больше.

* 8 лет обслуживания котельной автоматики*
+
avatar
+1
Во, 26к
+
avatar
  • wwest
  • 16 января 2016, 17:43
0
Самые надёжные плазменные.Плазма проводит ток.
+
avatar
  • demonk
  • 14 января 2016, 17:22
0
Надо взять на пробу.
А на MQ-135 у вас интересные попугаи! Себе взял два для сравнения. Изначально читалось в покое 250 и 500. После 10 часов работы сблизились до 300 и 350. На дыхание накидывает еще 30 попугаев. Фигня какая-то, не вяжется друг с другом и вашими данными!
+
avatar
0
У меня (После 24 часового прогрева, а он обязателен) в покое было 70-80, при выдохе до 120, а сейчас с внешним БП 160-180 в покое, до 340 при выдохе. Это же напряжение, оно варьируется в зависимости от платы (Наверное) и от множества других данных
+
avatar
  • Sanja
  • 15 января 2016, 11:08
0
Их надо вначале сутки прокаливать — так в инструкции.
+
avatar
  • sunx
  • 14 января 2016, 17:26
+1
Если быть совсем честным, то сам модуль выдает не люксы, а что-то другое, что надо потом пересчитывать в люксы в зависимости от того, какой режим у него стоит, сколько установлена задержка и сколько, по Вашему мнению, света съедает корпус, который Вы нацепили на сенсор для защиты его от внешних воздействий, обо всем этом написано в даташите. Просто библиотека, видимо, все это делает за Вас.

Единственная проблема у него в том, что если на него падает слишком много света (больше, чем он может выдать на текущих настройках точности\задержки), то он выдает 0 вместо 65535 =(
+
avatar
  • robosku
  • 14 января 2016, 17:37
0
Во-во! В библиотеке тупо делят показания датчика на 1.2, так что там не 65535, а 54613 люкс максимум будет.
+
avatar
  • robosku
  • 14 января 2016, 17:56
0
Не особо разбирался, но в даташите на датчик есть понятие Measurement Accuracy (Sensor out / Actual lx), которое от 0.96 до 1.44, но в среднем 1.2. И большинство значений в примерах подсчётов как раз делятся на 1.2

Не могу понять, как они в этом случае получают 65535 lx, если значения делятся на 1.2 :)

Еще эта штука зависит от температуры датчика, в даташите есть графики.
+
avatar
  • sunx
  • 14 января 2016, 18:07
0
Согласно даташиту:
4) Wide range and High resolution. ( 1 — 65535 lx )

11) Adjustable measurement result for influence of optical window
( It is possible to detect min. 0.11 lx, max. 100000 lx by using this function. )
12) Small measurement variation (± 20%)
13) The influence of infrared is very small.

Так что они сами себе противоречат :) но вообще — да, при минимальной точности и задержке можно получить гораздо больше, чем 65535, а при максимальной точности и максимальной задержке диапозон получается гораздо меньше, но зато точнее. Если кому надо — могу свой индусокод показать, который пытается выбрать наиболее подходящий режим и конвертирует все в люксы. Но правда не умеет учитвать светопоглощение корпуса, так как мне это было не нужно.
+
avatar
  • sav13
  • 14 января 2016, 18:50
0
1.2 там в том же даташите указан.
В примере расшифровки показаний.
Так же оттуда почерпнуть, что датчик может работать в нескольких режимах измерения и выдавать освещенность с разрешением 0.5, 1 и 4 lx
Число 65535 тоже взято оттуда же
+
avatar
0
Ну, я пока не нашёл ничего ярче солнца, а когда упадёт метеорит, будет не до люксометра)
Насчёт точности- а зачем? Я же не собираюсь его где-то в лаборатории использовать ★
+
avatar
  • sav13
  • 14 января 2016, 18:53
0
Бывает засветка солнечными лучами выше чем может измерить датчикя и тогда датчик показывает 0. Теоретически можно поставить второй за ослабляющим фильтром 1:10 например. Или 1:100, тогда он даже при ядерном взрыве будет показывать )))
+
avatar
+1
Молодец! Для первого обзора очень даже неплохо. Обязательно приобрету такой датчик. Плюс!
+
avatar
+1
А где сравнительные фото, в подтверждение того, что это люксметр, а не показометр? Ну хотя бы одно.
Меня, как метролога, интересует погрешность измерения.
Какова точность измерения?
Можно ли ему доверять как прибору?
Не подумайте, что придираюсь.
Люксметр — это измерительный прибор. А у измерительных приборов есть погрешность измерения. Если она не обозначена, это уже не прибор, а показометр.
+
avatar
0
Специально для Вас я написал родственнику из Питера, чтобы он рассказал про результаты измерений своим люксометром за 199$, так вот, они очень похожи. Более того, цена моего составляет примерно 0,5% от того, а показания отличаются не настолько. Безусловно, невозможно сравнивать их в разных точках страны, но я считаю это удовлетворительным;

Про точность писали выше, 1люкс даташит;

У меня нет нужды в точных измерениях, так что я не задавался таким вопросом.
+
avatar
0
У меня нет нужды в точных измерениях, так что я не задавался таким вопросом.
И это правильно.
Нет, так нет.
И не к чему было звонить брату.
Не у всех есть возможность оценить погрешность. А многим и ни к чему.
Про точность писали выше, 1люкс
Это больше похоже на «цену деления»
+
avatar
  • wwest
  • 16 января 2016, 17:47
0
«Безусловно, невозможно сравнивать их в разных точках страны, но я считаю это удовлетворительным;»
-Это что новый анекдот?
+
avatar
  • sav13
  • 14 января 2016, 18:55
0
У люксометра очень сильно зависят показания от конструкции измерительного элемента. Сферический сенсор, плоскость, его размер. Пробовал складывать рядом три поверенных прибора разных фирм, причем очень не дешевых. Показания могли отличаться на 20-30%.
И только при сильно рассеянном свете их показания сближались
+
avatar
0
Вот я и хотел сказать, что это всего лишь часть из набора для изготовления люксметра. Не хватает (как минимум) полусферы из матового пластика для рассеяния света и светофильтра. А затем надо будет загнать правильные коэффициенты.
Показания могли отличаться на 20-30%.
Не соглашусь. У вменяемых таких различий не встречал.
+
avatar
  • rx3apf
  • 19 января 2016, 15:59
0
С учетом спектральной характеристики — доверять нельзя даже после калибровки. Это всего лишь показометр с цифровым выходом. Тоже полезная штука, все равно…
+
avatar
  • demonk
  • 14 января 2016, 17:45
0
А чем отличается GY-302 от GY-30 случаем не узнавали?
+
avatar
  • robosku
  • 14 января 2016, 17:58
0
В тридцатом схема согласования логических уровней I2C (3.3 — 5.0) и понижающий стабилизатор. Есть такие, могу глянуть подробнее.

Вот схема
+
avatar
  • demonk
  • 14 января 2016, 18:36
0
Спасибо!
Значит для SDA двунаправленный преобразователь уровня на мосфете и однонаправленный на диоде для SCL.
А у автора преобразователей на сигнальных линиях не видно, хватит ли одних резисторов для подключения к 5в выходам ардуины?
+
avatar
  • Sanja
  • 14 января 2016, 17:49
0
Прикольный датчик. Но для пламени есть всё-же специализированный: aliexpress.com/snapshot/7230764230.html

В вашем случае я бы ещё попробовал поставить над пламенем термопару (датчик Dallas DS18B20 не выдержит, а термопара — сойдёт). Она держит до 400 градусов и позволит понять, есть ли пламя или нет.
+
avatar
+1
Спасибо, тот уже в корзине, а термопара, думаю, не нужна будет, ибо я поставлю туды DHT22, при превышении показателя хоть одного датчика, будет отправляться СМС с показаниями, смс отправится, и только потом уж DHT22 сгорит
+
avatar
  • Sanja
  • 15 января 2016, 11:13
0
на край бывают закатанные в металлическую гильзу на длинном метровом проводе герметичные датчики DS18B20 — aliexpress.com/item/Free-Shipping-1PCS-Digital-Temperature-Temp-Sensor-Probe-DS18B20-For-Thermometer-1m-Waterproof-100CM/32237417211.html — они меряют до 125 градусов. Можно расположить где-нибудь сбоку. Он точно будет более живучим, чем DHT22 — у того либо пластиковый корпус потечёт, либо копотью забъётся.
+
avatar
0
Есть, такой, валяется где-то
+
avatar
  • wwest
  • 16 января 2016, 17:49
0
Термопара? А нагретые детали горелки вы конечно не учитываете, если пламя задует? А вот термопара и ИК датчик учитывают.И будет идти газ пока детали не остынут.
+
avatar
0
Получил такой в понедельник. Прикрутил к NodeMcu. Вроде работает, но выдает не понятно что. Видимо модуль lua кривой, буду разбираться.
+
avatar
  • Psalmir
  • 14 января 2016, 19:48
+1
Тоже такой покупал, для определения люксов на дне аквариума (в воде) от самодельного светодиодного светильника. По замерам вышло на 1 000 люкс больше, пришлось одну цепочку светодиодов убрать!

Дешево и сердито.
+
avatar
  • Fedotov
  • 14 января 2016, 21:00
+1
Люксометр… амперометр… вольтометр… ваттометр…
+
avatar
  • Aostspb
  • 14 января 2016, 22:32
+3
Спидометр, манометр, тонометр, барометр, гигрометр… :))
+
avatar
+2
все 240 люксов… В свете фонарика UltraFire 1000 люксов...
А сколько говорите потребляет ваттов и сколько нужно вольтов?))))
Слова: ватт, вольт, ампер, если это светотехнические характеристики то люкс, кандела, люмен — НЕ СКЛОНЯЮТСЯ!!!
1 люкс
2 люкса
10 люкс
100 люкс
1000 люкс…
+
avatar
0
Спасибо, исправлю
+
avatar
+3
смая продвинутая библиотека, поддерживающая все плюшки сенсора тут
+
avatar
  • robosku
  • 15 января 2016, 01:04
0
И, похоже, не самая протестированная хотя бы на правильную компиляцию ;)

github.com/enjoyneering/BH1750FVI/blob/master/BH1750FVI.cpp#L292
+
avatar
0
спасибо исправил очепятку
+
avatar
0

Очень продвинутая, на инопланетном разговаривает)
+
avatar
0
а можно картинку покрупнее или копи-пасту лога.

p.s. после исправления очепятки, компилируется без ошибок
+
avatar
0
Кликабельно:
+
avatar
0
исправил вывод print и println в примере. скачайте и попробуйте заново. не забудте в драйверах к ком порту поставить скорость 115200
+
avatar
0
для всех кому интересно добавил в статью особенности по работе с сенсором
+
avatar
0
Спасибо. Запустил на ESP8266 вообще без проблем.
+
avatar
+1
Писал и тестировал полгода назад в v1.5. Все работало. Скинте пожалуйста лог ошибок и версию arduino IDE, я поправлю.
+
avatar
0
Заказал себе такой две недели назад, хочу запилить люксометр, посмотрю что выйдет :)
+
avatar
  • smirta
  • 15 января 2016, 08:10
+1
Вот именно, что «запилить», откуда только берёте эти словечки- ужас.
+
avatar
  • Baskery
  • 15 января 2016, 11:27
+1
Ищется по «дверь мне запили», быдло жаргон в массах))
+
avatar
+1
Не быдложаргон, а обычный мем типа «превед медвед»
Не стоит игнорировать современный народный фольклор.
Когда Даль составлял свой «Толковый словарь живого великорусского языка»,
он не спрашивал «откуда только берёте эти словечки- ужас», а молча записывал и запоминал.
+
avatar
0
Купил, попробовал — класс! Надо люксметр запилить!
+
avatar
0
А вот и мой люксметр «за 80 рублей»

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.