Содержание
- Обзор датчика GYML8511
- Технические характеристики
- Подключение к Arduino
- Пример использования
- Часто задаваемые вопросы
Обзор датчика ультрафиолетового излучения GYML8511
В невидимом для людей спектре солнечного света находятся ультрафиолетовые лучи. Это электромагнитные волны с длиной в диапазоне от 7 до 14 нм. Ультрафиолетовое излучение условно разделяется на дальние и ближние лучи. Первые из них считаются вакуумными. Их полностью поглощают верхние слои атмосферы. В условиях Земли их генерирование возможно только в условиях вакуумных камер. Ближние ультрафиолетовые лучи делят по диапазонуна три подгруппы:
- длинные – от 400 до 315 нм;
- средние – от 315 до 280 нм;
- короткие – от 280 до 100 нм.
Однако на сегодняшний день человеком изобретены и искусственные источники ультрафиолета, которыми являются специальные ламповые приборы. Например:
- ртутно-кварцевая лампа высокого давления (диапазон от 100 до 400 нм);
- люминисцентная витальная лампа (диапазон от 280 до 380 нм);
- безозоннные и озонные бактерицидные лампы ( 80% которых с длиной волны 185 нм).
Датчик ультрафиолетового излучения GYML8511 - является аналоговым модулем способным определять интенсивность ультрафиолетового излучения в диапазонах UV-A (ближний: 400-315 нм) и UV-B (средний: 315-280 нм).
Рисунок 1. Датчик ультрафиолетового излучения GYML8511.
Модуль построен на базе чипа ML8511 в который входит ультрафиолетовый светодиод и операционный усилитель. Дополнительно в модуле установлен стабилизатор напряжения LM6206-3.3 В для питания чипа от напряжения 5 В через вход VIN.
Работа чипа ML8511 основана на фотовольтаическом эффекте. Рабочая поверхность ультрафиолетового светодиода поглощает часть электромагнитного излучения УФ диапазона UV-A и UV-B, при этом электроны, получая энергию фотонов, переходят на внешний энергетический уровень, где становятся свободными. Увеличение количества свободных электронов приводит к возникновение тока, который затем усиливается операционным усилителем. Уровень напряжения на выходе OUT прямо пропорционален силе тока протекающего через ультрафиолетовый светодиод, а следовательно, интенсивности ультрафиолетового излучения.
Технические характеристики датчика GYML8511
- Входное напряжение питания (VIN): 5 В постоянного тока
- Входное напряжение питания (3V3): 3,3 В постоянного тока
- Потребляемый ток: до 2 мА (номинально 1 мА)
- Диапазон измеряемого излучения: 400...280 нм (UV-A и UV-B)
- Время стабилизации после подачи питания: до 2 мс
- Максимальный ток на выходе (OUT): до 5 мА
- Рабочая температура: -20 ... +70 °С
- Температура хранения: -30 ... +85 °С
- Габариты: 12х13,5 мм
- Вес: 2 г
Назначение выводов:
- OUT- выход напряжение которого прямо пропорционально интенсивности ультрафиолетового излучения.
- VIN - вход напряжения питания, от +4 до +6 В (номинально 5 В) постоянного тока.
- GND - вход питания (общий).
- 3V3 - вход напряжения питания, от +2,7 до +3,6 В (номинально 3,3 В) постоянного тока.
- EN - вход разрешения (подтянут внутренним сопротивлением модуля). При установке в уровень логического 0 модуль перестанет регистрировать УФ излучение.
Подключение к плате Arduino
Выход OUT подключается к любому выводу Arduino (на схеме подключён к выводу A1). Вход EN можно оставить не подключённым, т.к. он подтянут внутренним сопротивлением модуля. Напряжение питания подаётся на вывод VIN (5 В) или на вывод 3V3 (3,3 В).
Схема подключения драйвера к плате Arduino показана на рисунке 2.
Рисунок 2. Подключение датчика GYML8511 к плате Arduino.
Загрузим на плату Arduino скетч из листинга 1.
Листинг 1
// пин подключения датчика const int pinGYML8511=A1; void setup() { // запуск последовательного порта Serial.begin(9600); } void loop() { // чтение показаний датчика с аналогового вывода // и отправка их в монитор последовательного порта Serial.println(analogRead(pinGYML8511)); // Устанавливаем задержку на пол секунды delay(500); }
Начиная с версии 1.6.6 в среде Arduino IDE появилось штатное средство для построения графиков. В скетче вывод цифровых данных осуществляем функцией Serial.println().Загружаем скетч на плату Arduino и запускаем встроенный монитор через меню Инструменты à Плоттер по последовательному соединению.
Рисунок 3. Запуск в Arduino IDE Плоттер по последовательному соединению.
Рисунок 4. Построение графика.
На графике вывод данных для фона и под лампой Fenon 10W.
Пример использования GYML8511
В качестве примера использования создадим пример УФ–метра, выводящий показания датчика ультрафиолета в относительных единицах на дисплей и издающий звуковой сигнал при превышении порогового значения. Список необходимых компонентов:
- плата Arduino;
- плата прототипирования;
- датчик GYML8511;
- дисплей Nokia5110;
- пьезодинамик;
- соединительные провода.
Соберем схему, показанную на рис. 5
Рисунок 5. Схема УФ-метра
Содержимое скетча для Arduino показано в листинге 2.
Листинг 2
// подключение библиотек для nokia 5110 #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> // Nokia 5110 // pin 13 - Serial clock out (SCLK) // pin 12 - Serial data out (DIN) // pin 11 - Data/Command select (D/C) // pin 10 - LCD chip select (CS) // pin 8 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); // для периода опроса датчика unsigned long millis1=0; // пин подключения датчика const int pinGYML8511=A0; // пин подключения пьезо const int pinPiezo=9; // граничный уровень УФ-излучения int limitUV=220; void setup() { // запуск последовательного порта Serial.begin(9600); // инициализация дисплея display.begin(); // установить контраст фона экрана display.setContrast(60); display.clearDisplay(); // очистить экран display.setTextSize(1); // размер шрифта display.setTextColor(BLACK); // цвет // заставка display.setCursor(10,5); display.print("MAKERPLUS.RU"); display.setCursor(30,15); display.print("GYML8511"); display.display(); // пауза для заставки delay(4000); } void loop() { // раз в 5 секунд if(millis()-millis1>=5000) { // вывод на дисплей display.clearDisplay(); // очистить экран display.setCursor(10,5); display.print("MAKERPLUS.RU"); display.setCursor(15,15); display.print("UV level: "); display.setCursor(35,25); display.print(analogRead(pinGYML8511)); display.display(); millis1=millis(); if(analogRead(pinGYML8511)>limitUV) tone(pinPiezo,523,2000); } }
Загружаем скетч на плату Arduino и проверяем работу.
Рисунок 6. Схема в сборе.
Часто задаваемые вопросы
Ответ: Проверьте правильность подключения датчика к плате Arduino.