
Предыстория
Я разрабатываю Солнечный навигатор. Подробнее про это можно почитать тут. Во время экспериментов я обнаружил, что есть такая проблема как искусственное освещение, которое ночью портит статистику. Для нормальной работы нужен такой датчик света, который покажет только Солнце в прямой видимости. Признаком присутствия естественного света у поверхности Земли может как раз служить факт наличия ультрафиолетовых лучей. Поэтому и пришлось разбираться как подключить датчик УФ к микроконтроллеру.
Теория
Ультрафиолетовое излучение это электромагнитные волны с длинной волны от 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 |
height |
Up |
3.3 |
open drain |
|
5 |
INT |
out |
right |
Low |
Up |
3.3 |
open drain |
|
6 |
SDA |
io |
right |
height |
Up |
3.3 |
open drain |
Габаритные размеры чипа LTR-390UV-01 впечатляют всего 4мм^2

Вот список основных характеристик этого чипа
|
|
Значение |
|
|
|
Характeристика |
min |
max |
Единица измерения |
|
Диапазон измеряемых волн |
280 |
430 |
nm |
|
Максимальная мощность питания ASIC(а) |
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.

Чип откликается на базовый адрес 0x53=0b101_0011
|
|
Bit |
|
|||||||
|
|
Base Address (0x53) |
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им бит каждый. Если отбросить все зарезервированные биты, то получится 57 бит чистых конфигов. Каждый бит чего-то да значит.

Для I2C чип виден как внешняя память. То есть в I2C пакете чтения 2 старт сигнала и один стоп сигнал.

Какие есть конфиги?
Все 10 параметров, которые можно конфигурировать.

На GitHub я обнаружил драйвера для чипа LTR-390UV-01. Их можно найти по ключевому слову LTR390. А вот в ядре Linux по ключевым словам LTR-390UV-01,LTR390 ничего не находится. Ещё есть драйвер от производителя платы. Его можно скачать по ссылке.
В 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:0x06). Можно делать тест на подключения чипа. Эх, вот бы все вендоры ASIC чипов работали на таком уровне…

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 | +-----+------+------+-------------+
Идеи проектов на основе датчика освещённости
-
Тестер присутствия UV. Предупреждение об опасных уровнях UV излучения (всё то, что больше 2х UVI). Можно предложить любителям пляжного отдыха приборчик, который будет интегрировать дозу UV излучения и пищать при превышении определённого уровня.
-
Если установить УФ фонарик или лазерный луч, то можно сделать тестер материалов на проникновение ультрафиолета сквозь различные образны материалов.
-
Датчик присутствия Солнца. Как следствие, датчик продолжительности светового дня, как следствие датчик широты и долготы наблюдений. Глобальная навигация по фазам естественного освещения Cолнца.
-
При помощи датчиков освещения можно определять чистоту и прозрачность газа. Можно просвечивать газ лазерным лучом сравнивая яркость на чистом воздухе и на грязном делать выводы. Это особенно полезно для чистых комнат микроэлектронных производств. Можно сканировать объём по разным направлениям. Отслеживать перемещение пылевых облаков.
-
Можно измерять уровень жидкости в емкостях тоже измеряя лазером яркость луча прошедшего через объём воды.
-
Если пропускать УФ лазер через две поляризационные пластинки, то получится датчик угла. Датчик угла на основе эффекта Малюса.
-
Будильник который будет срабатывать в момент рассвета
-
Автоматическое уменьшение подсветки экранов.
-
Бесконтактные кнопки. Заслонил датчик и сработало действие.
-
Головки самонаведения ГСНы на источник света, например для солнечных батарей
-
Можно передавать бинарные данные модулированным светом LiFi.
-
Детектор тени для гномона. То есть можно автоматически считывать показания с солнечных часов.
Итоги
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://habr.com/ru/articles/789492/
Добавить комментарий