Ультрафиолетовые лучи, также называемые УФ-лучами, являются лучами, испускаемыми солнцем. Из-за истощения озонового слоя эти лучи имеют тенденцию достигать экстремальных уровней, которые могут привести к солнечным ожогам и т. д. для тех, кто находится под их воздействием, поэтому ежедневный и почасовой прогноз УФ-индекса необходим, чтобы помочь людям следить и оставаться в безопасности. Для целей мониторинга интенсивности УФ-излучения, почему бы не иметь персональный УФ-метр?

Сегодня мы создадим измеритель УФ-излучения с использованием Arduino и ультрафиолетового датчика (UVM30A) с ЖК-дисплеем Nokia 5110 в качестве средства для индикации. Nokia 5110 используется для отображения УФ-индекса, который является единицей международного стандарта для определения интенсивности ультрафиолетовых лучей от солнца, измеряемых в определенном месте и в определенное время.

Цель измерения УФ-индекса в определенном месте и в определенное время состоит в том, чтобы предостереч людей от опасностей, вызванных лучами с высоким УФ-индексом, поскольку это может привести к таким вещам, как солнечный ожог и т. д. Он также измеряется, чтобы направлять людей в те места, где бы они могли принимать адекватные защитные меры. УФ-индекс от 0 до 2 считается незначительным, выше 11 считается очень высоким и очень опасным. Когда уровень ультрафиолета очень высок, рекомендуется оставаться в помещении, причина этого в том, что индекс ультрафиолетового излучения в помещении в основном равен нулю. Это означает, что при тестировании устройства, которое мы собираемся создать, вы должны вынести его наружу, как показано на изображении ниже, так как значение не изменится, если вы будете тестировать в помещении.

УФ-датчик UVM30A, который мы будем использовать в этом проекте представляет собой недорогой аналоговый датчик с почти линейным выходом. Это означает, что выходной сигнал датчика увеличивается или уменьшается пропорционально увеличению или уменьшению УФ-излучения соответственно. График выходного сигнала датчика (в мВ) относительно УФ-индекса показан ниже.

Это простой трехконтактный датчик, состоящий из выводов VCC, GND и аналогового выходного сигнала.
Схема подключения всех необходимых компонентов для УФ-измерителя представлена далее.

Код программы для этого проекта довольно прост, мы используем только одну библиотеку – библиотеку Nokia 5110 LCD для связи с дисплеем. Основная операция кода заключается в считывании аналогового вывода 0 (A0), к которому подключен выход нашего датчика, и преобразовании его в мВ, чтобы мы могли сравнить его со значениями в таблице УФ-индексов и рассчитать УФ-индекс в конкретном месте и в конкретное время. После расчета и определения УФ-индекса этот индекс отображается пользователю на ЖК-дисплее Nokia 5110. Таблица ультрафиолетовых индексов для сравнения показана на рисунке ниже.

#include <LCD5110_Graph.h>
LCD5110 lcd(8,9,10,12,11);
extern unsigned char BigNumbers[];
extern uint8_t splash[];
extern uint8_t ui[];
String UV = "0";
void setup() {
lcd.InitLCD();
lcd.setFont(BigNumbers);
lcd.clrScr();
lcd.drawBitmap(0, 0, splash, 84, 48);
lcd.update();
delay(3000);
}
void loop() {
int stringLength = 0;
UV = readSensor();
lcd.clrScr();
lcd.drawBitmap(0, 0, ui, 84, 48);
stringLength = UV.length();
printUV(stringLength);
lcd.update();
delay(150);
}
void printUV(int length)
{
switch(length)
{
case 1: lcd.print(UV,38,19); break;
case 2: lcd.print(UV,24,19); break;
default: lcd.print(UV,0,19); break;
}
}
String readSensor()
{
String UVIndex = "0";
int sensorValue = 0;
sensorValue = analogRead(0); // подключаем УФ-датчик к A0
int voltage = (sensorValue * (5.0 / 1023.0))*1000; // переводим вольты в мВ
if(voltage<50)
{
UVIndex = "0";
}else if (voltage>50 && voltage<=227)
{
UVIndex = "0";
}else if (voltage>227 && voltage<=318)
{
UVIndex = "1";
}
else if (voltage>318 && voltage<=408)
{
UVIndex = "2";
}else if (voltage>408 && voltage<=503)
{
UVIndex = "3";
}
else if (voltage>503 && voltage<=606)
{
UVIndex = "4";
}else if (voltage>606 && voltage<=696)
{
UVIndex = "5";
}else if (voltage>696 && voltage<=795)
{
UVIndex = "6";
}else if (voltage>795 && voltage<=881)
{
UVIndex = "7";
}
else if (voltage>881 && voltage<=976)
{
UVIndex = "8";
}
else if (voltage>976 && voltage<=1079)
{
UVIndex = "9";
}
else if (voltage>1079 && voltage<=1170)
{
UVIndex = "10";
}else if (voltage>1170)
{
UVIndex = "11";
}
return UVIndex;
}
Соедините все компоненты в соответствии со схемой подключения. Подключите плату Arduino к вашему компьютеру, запустите среду Arduino IDE и вставьте в нее код.

Загрузите код в Arduino и вытащите всю конструкцию на улицу, чтобы измерить интенсивность ультрафиолетового излучения в вашем районе.
© digitrode.ru