Обзор Датчика Ультрафиолетового Излучения LTR-390UV-01
Предыстория
Я разрабатываю Солнечный навигатор. Подробнее про это можно почитать тут https://habr.com/ru/articles/687640/. Во время экспериментов я обнаружил, что есть такая проблема как искусственное освещение, которое ночью портит статистику. Для нормальной работы нужен такой датчик света, который покажет только Солнце в прямой видимости. Признаком присутствия естественного света у поверхности Земли может как раз служить факт наличия ультрафиолетовых лучей. Поэтому и пришлось разбираться как подключить датчик УФ к микроконтроллеру.
Теория.
Ультрафиолетовое излучение это электромагнитные волны с длинной волны от 100 до 400 нм (7.5e14—3e16 Гц). Источниками ультрафиолетового излучения являются Солнце и всяческие дуговые разряды в газах (сварка, ртутные лампы уличного освещения). LED лампочка на смартфоне тоже излучает ультрафиолет.
Ультрафиолетовое излучение в своем нижнем диапазоне проникает сквозь атмосферу.
Интенсивность ультрафиолетового излучения измеряется в UVI. Один UVI — это много или мало? Скорее мало. Всё, что больше 2х UVI считается опасным для человека.
UV излучение преломляется сильнее, чем красный цвет видимого излучения.
Аппаратная часть
Самое доступное, что есть в магазинах электроники это датчик LTR-390UV-01.
Итак существует ASIC чип LTR-390UV-01. Это 6-типиновый датчик ультрафиолетового излучения с разрешением 20 бит.
Вот блок схема модуля. Внутри него есть два оптических диода, ADC, внутренний генератор тактового сигнала, температурная компенсация, интерфейс I2C и цепь прерываний.
Распиновка чипа LTR-390UV-01
pin num | Name | Dir | Top Side | Active | Pull | Max V | type |
1 | VDD | in | Left | Hi | Air | 4.0 | -- |
2 | NC | -- | Left | -- | Air | -- | -- |
3 | GND | in | Left | Low | Air | 0 | -- |
4 | SCL | in | right | hight | Up | 3.3 | open drain |
5 | INT | out | right | Low | Up | 3.3 | open drain |
6 | SDA | io | right | hight | Up | 3.3 | open drain |
Габаритные размеры чипа LTR-390UV-01 впечатляют всего 4 мм^2
Вот список основных характеристик этого чипа
Значение | |||
Характeристика | min | max | Единица измерения |
Диапазон измеряемых волн | 280 | 430 | nm |
Максимальная мощность | 0.17 | 0.4 | W |
VDD max | 1.7 | 4 | V |
Max input current | 100 | mA | |
Температeра | -40 | 85 | Deg |
Разрешение | 13 | 20 | bit |
I2C clock | 100 | 400 | kHz |
Отладочная плата
Для этого датчика есть отладочная плата LTR390-UV-01 от компании WaveShare Electronics. Её можно купить как в ЧипДип так и на Aliexpress.
Это распиновка модуля
pin# | Pin Name | Dir | Description |
1 | VCC | out | Power supply |
2 | GND | in | Ground |
3 | SDA | io | data wire |
4 | SCL | in | clock wire |
5 | INT | Out | Interrupt |
Программная часть
Взаимодействие с чипом происходит по интерфейсу I2C. Вот шпаргалка по I2C.
Чип откликается на базовый адрес 0×53=0b101_0011
Bit | |||||||||
Base Address (0×53) | R/W | Value | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Read | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0xA7 |
Write | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0xA6 |
Сканирование показывает, что в самом деле отзываются I2C адреса 0xA7 и 0xA6.
У чипа LTR-390UV-01 19 регистров 8им битных регистров.
Для I2C чип виден как внешняя память. То есть в I2C пакете 2 старт сигнала и один стоп сигнал.
Какие есть конфиги?
На GitHub я обнаружил драйвера для чипа LTR-390UV-01. Их можно найти по ключевому слову LTR390. А вот в ядре Linux по ключевым словам LTR-390UV-01, LTR390 ничего не находится. Ещё есть драйвер от производителя платы. Его можно скачать по ссылке https://files.waveshare.com/upload/a/ab/UV_Sensor_C_Code.7z
В Zephyr исходниках тоже нет поддержки ASIC LRT390. Пришлось скомпоновать свой драйвер на основе дюжины примеров из GitHub
Отладка
Вот такой я собрал прототип чтобы проверить датчик освещения. На основании из оргстекла закрепил плату Black-Pill Super модуль LTR-390UV-01, дисплей SSD1306 и RTC DS3231
Для отладки I2C мне понадобился логический анализатор. Чтение регистра результата измерений UV датчика
Но как проверить датчик UV? Самое простое это оставить его на день на балконе и посмотреть что он намеряет. Вот такой получился график зависимости освещения от времени для Москвы на 4 февраля 2024 года.
Тут отчетливо видно, что 4 февраля ультрафиолетовое поле действовало с 5:02 до 14:32 (UTC+0). То есть продолжительность облучения составила 9 часов, 30 минут. А ночью UV полностью отсутствует. Вполне похоже на правду.
Достоинства UV датчика в исполнении ASIC LTR390
1++Есть регистр с ID чипа (Addr:0×06). Можно делать тест на подключения чипа. Эх, вот бы все вендоры чипов работали на таком уровне…
2++Широкий диапазон измеряемых освещенностей. Шире чем у ASIC BH1750. Датчик LTR390 способен измерять весь диапазон для естественных природных освещений на Земле.
3++цифровой интерфейс I2C для выдачи данных.
Недостатки UV датчика LTR390
1--Есть не задокументированные адреса I2C регистров, которые при чтении показывают какие-то загадочные ненулевые значения. Всё это выглядит как Back-door для Vendor-Locking (а).
+-----+------+------+-------------+
| No | Addr |ValueH| ValueBin |
+-----+------+------+-------------+
| 0 | 0x02 | 0x08 | 0b0000_1000 |
| 1 | 0x03 | 0x45 | 0b0100_0101 |
| 2 | 0x16 | 0x02 | 0b0000_0010 |
| 3 | 0x1c | 0x07 | 0b0000_0111 |
+-----+------+------+-------------+
Идеи проектов на основе датчика освещённости
1--Тестер присутствия UV. Предупреждение об опасных уровнях UV излучения (всё то, что больше 2х UVI). Можно предложить любителям пляжного отдыха приборчик, который будет интегрировать дозу UV излучения и пищать при превышении определённого уровня.
2--Если установить УФ фонарик или лазерный луч, то можно сделать тестер материалов на проникновение ультрафиолета сквозь различные образны материалов.
3--Датчик присутствия Солнца. Как следствие, датчик продолжительности светового дня, как следствие датчик широты и долготы наблюдений. Глобальная навигация по фазам естественного освещения Cолнца.
4--При помощи датчиков освещения можно определять чистоту и прозрачность газа. Можно просвечивать газ лазерным лучом сравнивая яркость на чистом воздухе и на грязном делать выводы. Это особенно полезно для чистых комнат микроэлектронных производств. Можно сканировать объём по разным направлениям. Отслеживать перемещение пылевых облаков.
5--Можно измерять уровень жидкости в емкостях тоже измеряя лазером яркость луча прошедшего через объём воды.
6--Если пропускать УФ лазер через две поляризационные пластинки, то получится датчик угла. Датчик угла на основе эффекта Малюса.
7--Будильник который будет срабатывать в момент рассвета
8--Автоматическое уменьшение подсветки экранов.
9--Бесконтактные кнопки
10--Головки самонаведения ГСНы на источник света, например для солнечных батарей
11--Можно передавать бинарные данные модулированным светом LiFi.
12 --Детектор тени для гномона. То есть можно автоматически считывать показания с солнечных часов.
Итоги
LTR390 — это доступный вариант датчика UV излучения. Не самый плохой вариант на рынке. Относительно широкий диапазон измерений освещённости.
Надеюсь что этот текст сподвигнет кого-нибудь изобрести полезный электронные прибор с датчиком UV излучения внутри.
Словарь
Для работы с датчиками освещённости надо понимать, что значат эти аббревиатуры
Акроним | Расшифровка |
ADC | Analog-to-digital converter |
I2C | Inter-Integrated Circuit |
UV | UltraViolet |
ASIC | application-specific integrated circuit |
ALS | ambient light sensor |
UVI | uvi ultraviolet index (Ультрафиолетовый индекс) |
Links
Купить модуль https://www.chipdip.ru/product/uv-sensor-c
Код драйвера https://files.waveshare.com/upload/a/ab/UV_Sensor_C_Code.7z
Список регистров, распиновка https://docs.google.com/spreadsheets/d/1DrnusPvgG3d8P8zobn-j3wt6bpQm8BcfO1rnDdN91-w/edit#gid=1822624482
Измерения 4 февраля https://docs.google.com/spreadsheets/d/1bW_-gUBVAd7kOCthWxMkpMSBq1gpEljFC2uLC8_ZL10/edit#gid=1735865716
Фоторезистор = Навигатор https://habr.com/ru/articles/687640/
Обзор датчика освещения BH1750 https://habr.com/ru/articles/739660/