Как работает датчик пыли GP2Y1014AU0F и как его подключить к Arduino


Пыль и дым в настоящее время являются одними из причин повышающегося загрязнения воздуха. Также из-за изменений климата в последнее время участились случаи пожаров, которые с каждым годом наносят все больший урон нашей планете и уносят все больше человеческих жизней. Поэтому в данной статье мы рассмотрим основные принципы работы датчика пыли (Dust Sensor) GP2Y1014AU0F и его подключение к плате Arduino Uno.

Внешний вид проекта подключения датчика пыли GP2Y1014AU0F к Arduino Uno

Конечно, датчик GP2Y1014AU0F не так хорош, к примеру, как датчик SDS011, позволяющий измерять концентрацию частиц PM2.5 и PM10 в окружающем воздухе, но его низкая цена (около 5$) вполне оправдывает его применение в ряде приложений, где требуется обнаружение частиц дыма или пыли.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик пыли GP2Y1014AU0F (купить на AliExpress).
  3. Конденсатор 220 мкФ (купить на AliExpress).
  4. Резистор 150 Ом (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Датчик пыли GP2Y1014AU0F

Распиновка датчика пыли GP2Y1014AU0F

Датчик пыли GP2Y1014AU0F содержит 6 контактов: V-LED, LED-GND, LED, S-GND, VOUT и VCC. Выход у датчика аналоговый, поэтому его необходимо подключать к аналоговому входу микроконтроллера (платы). Распиновка датчика пыли GP2Y1014AU0F показана на следующем рисунке.

Распиновка датчика пыли GP2Y1014AU0F

V-LED – контакт VCC для светодиода. Его необходимо подключить к контакту 5V платы Arduino через токоограничивающий резистор 150Ом.

LED-GND – контакт общего провода (Ground Pin) для светодиода. Его необходимо подключить к контакту Ground платы Arduino.

LED – данный контакт можно использовать для включения/выключения светодиода. Можно подключать к любому цифровому контакту платы Arduino.

S-GND – контакт общего провода (земли) датчика пыли, его необходимо подключить к контакту Ground платы Arduino.

Vout – выходной контакт датчика пыли. Его можно подключить к любому аналоговому контакту платы Arduino.

VCC – контакт для подачи питания на модуль датчика пыли, его можно подключить к контактам 5V или 3.3V платы Arduino.

Как работает датчик пыли GP2Y1014AU0F

Датчик пыли GP2Y1014AU0F состоит из трех основных компонентов: светоизлучающий диод (источник света), фотодиод (детектор) и пара линз. Светодиод и фотодиод внутри датчика расположены таким образом чтобы две оптические оси пересекали область обнаружения датчика. Когда дым или пыль попадают внутрь области обнаружения датчика свет внутри датчика отражается от частиц пыли или дыма и, соответственно, в зависимости от количества обнаруженного света изменяется ток генерируемый фотодиодом. Усиливая и преобразуя это значение тока в значение напряжения мы можем получить необходимый нам аналоговый сигнал на выходе датчика.

Принцип работы датчика пыли

Для работы с датчиком нам потребуется всего 2 контакта из 6 контактов датчика. На первом из них мы будем включать/выключать светодиод, а на втором – считывать аналоговый сигнал с выхода датчика. Резистор R1=150Ω и конденсатор C1=220uF необходимы для формирования импульса управления светодиодом. Без этих резистора и конденсатора модуль датчика не сможет работать. Для того, чтобы на выходе датчика обеспечить требуемый сигнал, необходимо подавать на светодиод импульсы с периодом 10ms, при этом длительность импульса должна быть не более 0.32ms. Как рекомендовано в даташите на датчик длительность этого импульса должна составлять 0.28ms.

Компоненты датчика пыли GP2Y1014AU0F

Конструкция датчика достаточно сложна для того чтобы ее можно было изобразить на одной картинке, поэтому мы разделили ее на несколько картинок.

На представленном ниже рисунке показан внешний вид печатной платы датчика когда его корпус открыт. На этой печатной плате расположена микросхема основного процессора, ответственного за обработку данных от фотодиода, потенциометр и транзистор, который управляет светодиодом. Также на плате присутствует JST коннектор для подключения VCC, земли и выходных данных.

Компоненты датчика пыли GP2Y1014AU0F

На следующих двух рисунках показан внешний вид датчика в разрезе. На рисунке слева показан внешний корпуса датчика с отверстием для поступления воздуха, а на правом рисунке показана обратная сторона печатной платы датчика, на которой показаны светодиод и фотодиод, а также линзы, фокусирующие световой поток.

Внешний вид датчика пыли GP2Y1014AU0F в разрезе

Наиболее часто задаваемые вопросы про датчик пыли

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

Какая разница между оптическим датчиком пыли и лазерным датчиком пыли?
Лазерный датчик пыли использует лазерные технологии для измерения концентрации пыли. Он состоит из вентилятора, лазерного диода, приемника и схемы измерения. А оптический датчик пыли содержит инфракрасный излучающий диод и фототранзистор, расположенные по диагонали, что позволяет им за счет отраженного света обнаруживать частицы пыли в воздухе.

Как протестировать работу датчика пыли?
Для тестирования работы датчика пыли необходимо на его светодиод подавать последовательность импульсов с параметрами, рекомендованными его даташитом, а выходные данные датчика обрабатывать с помощью микроконтроллера.

Схема проекта

Схема подключения датчика пыли GP2Y1014AU0F к плате Arduino Uno представлена на следующем рисунке.

Схема подключения датчика пыли GP2Y1014AU0F к плате Arduino UnoКак видите, схема достаточно проста. Поскольку выход у датчика пыли аналоговый, то мы его подключили к аналоговому контакту платы Arduino. Для управления светодиодом датчика (белый провод) мы будем использовать цифровой контакт D7 платы Arduino. Также нам будут необходимы резистор 150 Ом и конденсатор 220 мкФ, которые формируют RC-цепь для подачи импульсов на датчик. Они обязательны для стабильной работы датчика и использованные значения емкости конденсатора и сопротивления резистора рекомендованы его даташитом.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В коде программы нам необходимо конвертировать аналоговое значение напряжения, считываемое с датчика, в цифровые данные.

Первым делом в программе мы объявим используемые контакты и переменные.

Далее, в функции void setup(), мы инициализируем последовательную связь для целей отладки и зададим режим работы контакта, к которому подключен светодиод датчика, на вывод данных.

Затем, внутри функции loop, мы начнем процесс измерений, рекомендованный даташитом на датчик. Общее время измерения составляет около 10 мс, при этом длительность импульса (сэмплирования) равна 0,28 мс. Сначала мы подадим на ledpin уровень low, который включит светодиод, а затем мы будем использовать функцию delayMicroseconds() для формирования задержки длительностью 0,28 мс, рекомендованную даташитом. После этого мы производим измерение (берем пробу) и формируем еще одну задержку длительностью 40 мкс, в результате длительность импульса составит 0,32 мс и далее мы выключаем светодиод на время 9680 микросекунд (датчик спит/отдыхает).

После этого на основе значения с выхода АЦП мы рассчитываем значение напряжения на ее аналоговом контакте. Убедитесь в том, что ваша плата Arduino запитана от стабилизированного источника питания +5V, не от USB – иначе вы получите ошибку в результатах измерения.

И, наконец, рассчитаем количество взвешенных частиц пыли в  ug/m3, используя линейную формулу от Chris Nafis, и выведем результат в окно монитора последовательной связи.

Тестирование работы проекта

На представленном видео показана работа датчика пыли GP2Y1014AU0F под управлением платы Arduino.

В левой стороне картинки показана плата Arduino с датчиком GP2Y1014AU0F, подключенным к ее аналоговому контакту, а в правой – окно монитора последовательной связи. Как вы можете видеть, когда мы ладан подносим близко к датчику пыли, он обнаруживает дым и значения на его выходе начинают возрастать.

Возможные проблемы при работе с датчиком пыли GP2Y1014AU0F

1. Выход датчика очень чувствителен к точному таймингу импульсов, подаваемых на ledPower, необходимо несколько циклов таких импульсов чтобы он вошел в стабильный режим работы. Код программы для платы Arduino не принимает во внимание время, которое затрачивается на выполнение функции analogread() и вывод значений в окно монитора последовательной связи. Поэтому для крайне чувствительных приложений рекомендуется использовать параллельный АЦП (Flash ADC).

2. Первым делом проверьте подачу питания на датчик, он работает только от питающего напряжения +5V. Если напряжение будет больше или меньше этого, то датчик будет неработоспособным.

3. Проверьте правильно ли подключены к датчику резистор 150 Ом и конденсатор 220 мкФ – без них он не сможет работать корректно.

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
603 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *