Опрос


Что для Вас Умный Дом?


Результаты


Реклама


Сбылась мечта идиота? Тестирование сенсора TSL2591

10/11/2016 16:17:45

О датчиках освещенности я писал много: тестирование TEMT6000, тестирование BH1750FVI и, наверное, уже изрядно надоел с этим. Все протестированные мною датчики вполне удовлетворительно справлялись со своей задачей, но одна проблема все же не давала мне покоя. Дело в том, что опробованные сенсоры практически не различали сумерки. При низкой освещенности, когда человеческий глаз может не просто ориентироваться в пространстве, но даже различать буквы напечатанные на листке бумаги, датчики рапортовали "0". Фактически это означало, что при использовании сенсоров в системах домашней автоматизации для управления, например, уличным освещением, свет включался раньше необходимого, а выключался позже. Эта разница была всего в несколько минут, но тем не менее... Нездоровый перфекционизм заставлял искать новые решения.

И вот однажды я натолкнулся на интересный сенсор TSL2591, разработанный компанией AMS. Главной особенностью датчика является комбинация двух фотодиодов, один из которых чувствителен к широкому спектру (видимый + ИК), а другой только к ИК. Такая конфигурация фотодиодов позволяет с использованием определенной эмпирической формулы вычислять уровень освещенности, приближенный к восприятию человеческого глаза, учитывая и вычитая ИК составляющую. Кроме того, производитель заявил динамический диапазон 600М:1 и чувствительность от 188 uLux до 88000 Lux. Таким образом, мы можем получать значение освещенности с точностью до 6 знака после запятой. Работает датчик по протоколу I2C.


Датчик TSL2591

Для подключения датчика можно использовать MegaD-328 + MegaD-14-IN или MegaD-2561. В качестве программного компонента - библиотека I2C-PHP.
В текущий момент я нашел две версии распаянных плат с датчиком: от Adafruit и от известной китайской фирмы Unknown. Обе платы позволяют задействовать питание +3,3В, но у чисто китайской разработки питание +3,3В и линии SCL/SDA разнесены на разные "гребенки", что слегка усложняет подключение.

Получение данных от датчика типичное для I2C-PHP

<?
define("SCL", "30");
define("SDA", "31");
define("MD", "http://192.168.0.14/sec/?");
require_once("mod_i2c_tsl2591.php");
$lux = get_lux();
echo "Lux: $lux";
?>

Формула, которая реализована в драйвере mod_i2c_tsl2591.php отдает значение уже в Люксах. Но у меня был еще один датчик, который также выдавал показания в Люксах. Это BH1750FVI, поэтому логичным было бы сравнить их работу в реальных условиях, что я и сделал.

Красный график - TSL2591
Зеленый график - BH1750FVI


TSL2591 vs BH1750FVI

На примере облачного (облака не в Интернете, а в небе) ноябрьского утра мы видим практически идентичную работу двух датчиков. Значения в Люксах, полученные от TSL2591 в сравнении с BH1750FVI чуть ниже, что логично, ведь датчик отбрасывает ИК составляющую. Но в целом форма графиков почти совпадает на всем временном отрезке. Здесь я не ждал каких-либо сюрпризов. Однако больше всего меня интересовал отрезок времени, когда датчики показывали минимальное значение, когда ночь уступало место утру. И вот, посмотрите...


TSL2591 начинает фиксировать наличие света раньше!

На графике мы хорошо можем видеть, что TSL2591 увидел свет на 15 минут раньше. Сенсор BH1750FVI не умеет выдавать дробные значения. За 0 Lux, у него сразу идет 1 Lux. Все то время, пока более простой и дешевый BH1750FVI сообщал о 0 Lux, сенсор TSL2591 сначала зафиксировал 0,04 Lux, затем 0,05 Lux, а следом 0.11 Lux. Примечательно, что 1 Lux сенсоры зафиксировали одновременно.

Таким образом, TSL2591 можно предварительно считать наиболее продвинутым и точным датчиком для измерения освещенности. Но есть у него один существенный недостаток - цена. Этот датчик на Интернет-площадках стоит порядка $10, что примерно в ПЯТЬ раз дороже, чем BH1750FVI. Стоит ли более высокая точность разницы в 500-600 руб решать пользователям...

Библиотека I2C-PHP с поддержкой TSL2591


 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:



Сортировка комментариев: Последние сверху | Первые сверху

2016-11-11 17:21:42 | Владимир
датчик дороже, но обычно его требуется всего 1 шт.


2016-11-12 12:20:06 | Михаил
Андрей, сделайте пожалуйста чтобы I2C датчики, подключенные к MegaD можно было увидеть в openhab.


2016-11-12 14:12:37 | Andrey_B
Михаил, для работы с I2C-устройствами необходима дополнительная программная поддержка со стороны сервера. Например, библиотека I2C-PHP и "драйверы" к ней. Поэтому нужно адресовать вопрос разработчикам OpenHAB. Существует пока только один датчик, который полностью аппаратно поддерживается контроллером MegaD-2561 - это HTU21D. Этот датчик можно интегрировать в серверное ПО без специальной программной поддержки. В перспективе планируется увеличить перечень аппаратно поддерживаемых устройств контроллером MegaD-2561. Но для этого необходимо определиться какие датчики для этого подходят больше.


2016-11-14 10:13:05 | Виктор
Добрый день, а что скажете по поводу датчика TSL2561
Вроде дешевле, и тоже в двух диапазонах измеряет. А в чем разница между ними?


2016-11-14 12:08:26 | Andrey_B
Виктор, я не тестировал TLS2561, но вот, что пишет о TLS2591 adafruit:
"This sensor is much like the TSL2561 but with a wider range".