О том, как правильно использовать датчик пыли DSM501(A)

   Датчик пыли, а в данном случае частиц, размером менее 2.5 микрон (PM2.5), создан для определения качества воздуха, которым мы дышим. Конечно, его можно использовать по-разному, но большинство найденных в интернете скетчей буду показывать погоду на марсе.

   У этого датчика 5 выводов:
  1. Control (установка чувствительности первого выхода)
  2. Vout2 (выход 2)
  3. Vcc (питание)
  4. Vout1 (выход 1)
  5. GND (земля)
   С выхода 1 мы получаем сигнал срабатывания на частицы, размер которых мы устанавливаем ножкой "Control". Если к ножке "Control" ничего не подключено, то выход 1 будет выдавать сигнал при появлении частиц более 2.5 микрон. При подключении резистора 22 кОм между ножкой "Control" и землей, на выходе 1 будет сигнал при появлении частиц более 1 микрона. 
   У выхода 2 фиксированная чувствительность, и он срабатывает на частицы более 1 микрона (меньший размер данный датчик не способен определить).
  Два выхода с разной чувствительностью в датчике присутствуют не просто так, далее я объясню почему.
   Теперь приступим к рассмотрению ошибок:
  • Ошибка номер 1 - подключение выводов питания датчика к Arduino. При питании от Arduino на датчик приходит очень много помех и шума, а так как в DSM501 присутствуют каскады неслабого усиления, все это преобразуется в ложное срабатывания. Я пробовал подключать питание датчика непосредственно к Arduino и к качественному лабораторному источнику питания, концентрация пыли изменялась в разы при идентичных условиях! Поэтому питание для DSM501 нужно фильтровать. 
  • Ошибка номер 2 - во всех скетчах учитывается любая длина импульса низкого уровня с выхода 2. В Datasheet [1] на DSM501 указано, что учитывать стоит лишь импульсы длиной от 10 до 90 мс, а все остальное - это шум. Если учитывать импульсы установленной длины и сравнить с тем, что получается когда учитываются все импульсы, будет следующая картина. При питании от Arduino таким способом отфильтровывается 50 - 80% ложных срабатываний, а при питании от лабораторного источника питания 5-10%.
  • Ошибка номер 3 - измерение частиц более 1 микрона. Все мерят концентрацию частиц 1 микрон и более, хотя правильнее было бы мерить частицы PM2.5 (менее 2.5 микрон). Как это сделать, если датчик мерит все частицы от 1 микрона до, грубо говоря, "бесконечности"? Вот тут то и нужны оба выхода. На выходе 2 сигнал от частиц более 1 микрона, а на выходе 2 сигнал от частиц более 2.5 микрон. Теперь вычтем из сигнала с выхода 2 сигнал с выхода 1 и получим сигнал от частиц размером от 1 до 2.5 микрон, т.е. узнаем сколько же частиц PM2.5 в окружающем нас воздухе.
  • Ошибка номер 4 - измерение количества частиц на 283 мл. Собственно вот она, погода на марсе. Кто знает зачем измерять количество частиц на 283 миллилитра и что потом с этим значением делать? Есть нормы для частиц PM2.5, которые регламентируют качество воздуха (AQI). Для разных стран эти нормы отличаются. 
                           Нормы для России мне не удалось найти, поэтому вот пример норм для США. Тут же видно какая должна быть концентрация частиц, но она указана в микрограммах на кубический метр. Придется воспользоваться некоторой формулой для расчета. Не будем вдаваться в подробности откуда берется примерная масса частиц PM2.5, это можно будет посмотреть в документе [2], собственно из которого взята и таблица с AQI. Сначала нужно подсчитать количество частиц на кубический метр, т.е. умножить значение, полученное с датчика на 3534 (столько 283 мл умещается в одном м3). Далее умножить получившееся количество частиц в кубическом метре на массу частиц (~1.8E-5 микрограмм).
   Теперь полученными значения можно оценить реальное качество воздуха, но по хорошему все измерения нужно усреднить за период в 1 час. 

Использованные документы:

Комментарии

Популярные сообщения из этого блога

Разборка ноутбука Xiaomi Mi notebook pro 15.6 (сушим клавиатуру)

Использование UART + DMA при заранее неизветном количестве принимаемых символов (STM32)

Как запрограммировать STM32 без программатора