Всем доброе время суток! Я наконец-то решил что хватит быть потребителем, и надо внести свой вклад в развитие ресурса. А рассказать я вам сегодня хочу о люксометре на основе сенсора 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
Или я что-то не понял? Не хочется портить игрушку)
Информацию он передаёт по I
2c интерфейсу, уже сразу люксы. Для работы с ним на ардуино требуется соответствующая
библиотека, в ней же уже содержится пример кода.
Предел измерений: 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 люкс), или же просто поиграться- классная штука, но для фотореле можно использовать и обычный фоторезистор.
Спасибо, что дочитали до конца, надеюсь было хоть чуточку интересно!
Часть 2
Спасибо за обзор!
В каком спектральном диапазоне????
То что вы собрали надо сначала откалибровать, чтобы давать оценки в лк.
Китайцы чипы наверняка не калибруют
Даже у матрицы фотика (отдаленного родича люксометра) при низкой освещенности и высоких ISO всегда шумы вылазят
наверноеНу и «за 80 рублей» — не совсем точно: без дополнительной обвязки Вы с него данные не считаете.
Протрите стабилизатор спиртом — попробуйте убрать наплыв
На входе стоит стабилизатор напряжения. У Вас он какой-то подозрительный — будто палёный
По-моему, тут надо решать проблему в её корне — решать проблемы с поджигом.
P. S.: Странно, питание 3,3 Вольта, а в примере 6500+ mV, т. е. выше 6.5 вольт…
samopal.pro/luxometer1/
На той плате что вы показали есть два выхода, аналоговый и цифровой. Аналоговый судя по всему всё с диода просто выдаёт, можно уровень напряжения мерить, а цифровой- там судя по всему стоит компаратор, который при пересечении порога поднимет вам единичку.
Например так
Недостаток- иногда протирать кварцевое окошко.
У остальных методов недостатков больше.
* 8 лет обслуживания котельной автоматики*
А на MQ-135 у вас интересные попугаи! Себе взял два для сравнения. Изначально читалось в покое 250 и 500. После 10 часов работы сблизились до 300 и 350. На дыхание накидывает еще 30 попугаев. Фигня какая-то, не вяжется друг с другом и вашими данными!
Единственная проблема у него в том, что если на него падает слишком много света (больше, чем он может выдать на текущих настройках точности\задержки), то он выдает 0 вместо 65535 =(
Не могу понять, как они в этом случае получают 65535 lx, если значения делятся на 1.2 :)
Еще эта штука зависит от температуры датчика, в даташите есть графики.
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, а при максимальной точности и максимальной задержке диапозон получается гораздо меньше, но зато точнее. Если кому надо — могу свой индусокод показать, который пытается выбрать наиболее подходящий режим и конвертирует все в люксы. Но правда не умеет учитвать светопоглощение корпуса, так как мне это было не нужно.
В примере расшифровки показаний.
Так же оттуда почерпнуть, что датчик может работать в нескольких режимах измерения и выдавать освещенность с разрешением 0.5, 1 и 4 lx
Число 65535 тоже взято оттуда же
Насчёт точности- а зачем? Я же не собираюсь его где-то в лаборатории использовать ★
Меня, как метролога, интересует погрешность измерения.
Какова точность измерения?
Можно ли ему доверять как прибору?
Не подумайте, что придираюсь.
Люксметр — это измерительный прибор. А у измерительных приборов есть погрешность измерения. Если она не обозначена, это уже не прибор, а показометр.
Про точность писали выше, 1люкс даташит;
У меня нет нужды в точных измерениях, так что я не задавался таким вопросом.
Нет, так нет.
И не к чему было звонить брату.
Не у всех есть возможность оценить погрешность. А многим и ни к чему.
Это больше похоже на «цену деления»
-Это что новый анекдот?
И только при сильно рассеянном свете их показания сближались
Не соглашусь. У вменяемых таких различий не встречал.
Вот схема
Значит для SDA двунаправленный преобразователь уровня на мосфете и однонаправленный на диоде для SCL.
А у автора преобразователей на сигнальных линиях не видно, хватит ли одних резисторов для подключения к 5в выходам ардуины?
В вашем случае я бы ещё попробовал поставить над пламенем термопару (датчик Dallas DS18B20 не выдержит, а термопара — сойдёт). Она держит до 400 градусов и позволит понять, есть ли пламя или нет.
Дешево и сердито.
Слова: ватт, вольт, ампер, если это светотехнические характеристики то люкс, кандела, люмен — НЕ СКЛОНЯЮТСЯ!!!
1 люкс
2 люкса
10 люкс
100 люкс
1000 люкс…
github.com/enjoyneering/BH1750FVI/blob/master/BH1750FVI.cpp#L292
Очень продвинутая, на инопланетном разговаривает)
p.s. после исправления очепятки, компилируется без ошибок
Не стоит игнорировать современный народный фольклор.
Когда Даль составлял свой «Толковый словарь живого великорусского языка»,
он не спрашивал «откуда только берёте эти словечки- ужас», а молча записывал и запоминал.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.