Обзор Датчика Ультрафиолетового Излучения LTR-390UV-01

39b5244f8390c9f15a2580afeffb75a5.png

Предыстория

Я разрабатываю Солнечный навигатор. Подробнее про это можно почитать тут 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 и цепь прерываний.

ae36a80efc63f75f1956f007a53793e3.png

Распиновка чипа 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

41ceb35b6a7ef0df99f739cd4d792bf5.png

Вот список основных характеристик этого чипа

Значение

Характ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.

34a603e6459ab594f176d9c7f1606152.png

Это распиновка модуля

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.

0aa44ff333641350c5c400eff4d3e3c7.png

Чип откликается на базовый адрес 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.

af222b2daafb160b0df0ffc7771d2c1d.png

У чипа LTR-390UV-01 19 регистров 8им битных регистров.

f571ef6154e8169c2f6ab269b1804f2f.png

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

fa24661f978addbbea3b574b508c2eba.png

Какие есть конфиги?

e87231429c68d775038f58d74ccfcd17.png

На 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

51cbd178c476b08164036b32c38b480d.png

Для отладки I2C мне понадобился логический анализатор. Чтение регистра результата измерений UV датчика

f8a95e1bdaa31a94d89e26e5f3a44335.png

Но как проверить датчик UV? Самое простое это оставить его на день на балконе и посмотреть что он намеряет. Вот такой получился график зависимости освещения от времени для Москвы на 4 февраля 2024 года.

cc3fc5704a6c8c965e2772ceb6bdd028.png

Тут отчетливо видно, что 4 февраля ультрафиолетовое поле действовало с 5:02 до 14:32 (UTC+0). То есть продолжительность облучения составила 9 часов, 30 минут. А ночью UV полностью отсутствует. Вполне похоже на правду.

Достоинства UV датчика в исполнении ASIC LTR390

1++Есть регистр с ID чипа (Addr:0×06). Можно делать тест на подключения чипа. Эх, вот бы все вендоры чипов работали на таком уровне…

755cb2802b064d8a4cbd27b1834d02b4.png

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/

© Habrahabr.ru