цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Измеритель ультрафиолетового излучения на основе Arduino и УФ-датчика UV30A

Измеритель ультрафиолетового излучения на основе Arduino и УФ-датчика UV30A

Автор: Mike(admin) от 25-04-2019, 04:15

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


Измеритель ультрафиолетового излучения на основе Arduino и УФ-датчика UV30A

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


УФ-датчик UV30A

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


Измеритель ультрафиолетового излучения на основе Arduino и УФ-датчика UV30A

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


График УФ-датчика UV30A

Это простой трехконтактный датчик, состоящий из выводов VCC, GND и аналогового выходного сигнала.


Схема подключения всех необходимых компонентов для УФ-измерителя представлена далее.


Измеритель ультрафиолетового излучения на основе Arduino и УФ-датчика UV30A

Код программы для этого проекта довольно прост, мы используем только одну библиотеку – библиотеку 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 и УФ-датчика UV30A

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




© digitrode.ru


Теги: Arduino, датчик УФ-излучения



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий