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

 
» » » Измеряем интенсивность УФ-света с помощью Arduino и датчика ML8511



Измеряем интенсивность УФ-света с помощью Arduino и датчика ML8511

Автор: Mike(admin) от 18-12-2019, 03:55

В этом проекте мы свяжем УФ-датчик ML8511 с Arduino для измерения интенсивности ультрафиолетового света в мВт/см2. Ультрафиолетовое излучение или УФ-излучение происходит в диапазоне электромагнитных волн от 10 до 400 нм. Таким образом, чтобы получить эффективный выходной сигнал в соответствии с ультрафиолетовым излучением, следует использовать специальный датчик, такой как ML8511 от компании Lapis Semiconductor. Ультрафиолетовый датчик ML8511 лучше обнаруживает свет с длиной волны 280–390 нм, эта длина волны классифицируется как часть спектра лучей, излучающих ультрафиолетовое излучение.


Измеряем интенсивность УФ-света с помощью Arduino и датчика ML8511

Датчик ML8511 очень прост в использовании. Он выводит аналоговое напряжение, которое линейно связано с измеренной интенсивностью УФ (мВт/см2). Если ваш микроконтроллер может выполнять преобразование аналогового напряжения, вы можете определить уровень ультрафиолета. Он имеет низкий ток питания 300 мкА и низкий ток в режиме ожидания 0,1 А. Поставляется в малом и тонком 12-контактном керамическом корпусе QFN для поверхностного монтажа (4,0 x 3,7 мм x 0,73 мм).


Датчик ML8511

УФ-датчик MP8511 работает путем вывода аналогового сигнала в зависимости от количества обнаруженного ультрафиолетового излучения. Этот датчик может быть очень полезен при создании устройств, которые предупреждают пользователя о солнечном ожоге или обнаруживают УФ-индекс, связанный с погодными условиями.


УФ-датчик ML8511 имеет фотодиод, чувствительный к УФ-А и УФ-В. Также он имеет встроенный операционный усилитель, который преобразует фототок в выходное напряжение в зависимости от интенсивности ультрафиолетового излучения.


Датчик ML8511

Выходной сигнал подается всегда в виде аналогового напряжения. Через выходное напряжение легко взаимодействовать с внешними микроконтроллерами и АЦП. На следующем изображении показаны УФ-характеристики.


УФ-характеристики

Характеристики определяют зависимость выходного напряжения датчика относительно интенсивности ультрафиолетового излучения (мВт/см2) при постоянной подаче VDD. Кривые разного цвета представляют работу датчика в разных температурных диапазонах.


Принципиальная схема подключения УФ-датчика ML8511 к Arduino и ЖК-дисплею приведена ниже. Выводы RS, EN, D4, D5, D6, D7 дисплея 16 × 2 LCD подключены к контактам Arduino 12, 11, 5, 4, 3, 2. ЖК-дисплей питается от 5 В. Он имеет потенциометр 10K, прикрепленный к выводу 3 ЖК-дисплея для регулировки контрастности.


Измеряем интенсивность УФ-света с помощью Arduino и датчика ML8511. Схема подключения

Ультрафиолетовый датчик имеет 5 контактов Vin, 3V3, GND, OUT, EN. Некоторые модули не имеют вывода Vin, который тоже не используется. Контакт EN и контакт 3V3 подключен к контакту 3,3 В Arduino. 3V3 вывод подключен к аналоговым выводам A1, который используется в качестве опорного напряжения. Выходной вывод подключен к A0 Arduino и GND к GND.


Исходный код программы для взаимодействия ML8511 и Arduino приведен далее. Скопируйте этот исходный код и загрузите его на плату Arduino.



#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Определение аппаратных выводов
int UVOUT = A0; // Выход с датчика
int REF_3V3 = A1; // 3,3 В на плате Arduino
void setup()
{
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(UVOUT, INPUT);
  pinMode(REF_3V3, INPUT);
  Serial.println("ML8511 example");
}
void loop()
{
int uvLevel = averageAnalogRead(UVOUT);
int refLevel = averageAnalogRead(REF_3V3);
// Используйте контакт питания 3,3 В в качестве опорного, чтобы получить очень точное выходное значение от датчика
float outputVoltage = 3.3 / refLevel * uvLevel;
float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); // Преобразовать напряжение в уровень интенсивности УФ
  Serial.print("output: ");
  Serial.print(refLevel);
  Serial.print("ML8511 output: ");
  Serial.print(uvLevel);
  Serial.print(" / ML8511 voltage: ");
  Serial.print(outputVoltage);
  Serial.print(" / UV Intensity (mW/cm^2): ");
  Serial.print(uvIntensity);
  lcd.clear();
  lcd.print("UV Ray Intensity");
  lcd.setCursor(0, 1);
  lcd.print(uvIntensity);
  lcd.print(" mW/cm^2");
  Serial.println();
delay(200);
}
// Принимает среднее значение показаний на данном выводе
// Возвращает среднее
int averageAnalogRead(int pinToRead)
{
  byte numberOfReadings = 8;
unsigned int runningValue = 0; 
for(int x = 0 ; x < numberOfReadings ; x++)
    runningValue += analogRead(pinToRead);
  runningValue /= numberOfReadings;
return(runningValue);
}
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}



© digitrode.ru


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




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

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

Оставить комментарий
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Здравствуйте, а в какой программе нарисована эта схема, графическая?