В настоящее время мы уделяем все больше внимания качеству воздуха. Многие люди покупают соответствующие очистители воздуха от пыли, чтобы иметь возможность наслаждаться относительно чистым воздухом хотя бы дома. Для проверки качества воздуха, которым мы дышим, можно вооружиться готовым измерителем или построить такой прибор своими руками.
В этой статье мы расскажем вам об одном из самых популярных датчиков качества воздуха GP2Y1010AU0F, которые можно найти в магазинах электроники. Мы также посмотрим что у него внутри, расскажем как подключить его к Arduino и проверим его работу.
Датчик Gp2y1010au0f — описание
Одним из популярных оптических датчиков качества воздуха является модуль с обозначением GP2Y1010AU0F. Это конструкция японской компании SHARP. Популярность обусловлена в основном низкой ценой и простотой использования. Однако это не единственный модуль японского производителя. Фирма SHARP также предлагает другие, гораздо более совершенные датчики.
Модуль имеет форму небольшого прямоугольного параллелепипеда с размерами 46 мм х 30 мм х 17,7 мм. В центральной части есть отверстие, через которое анализируется воздух. К одной из стенок датчика прикреплена металлическая крышка. В этом же месте находится 6-контактный разъем интерфейса. Точный тип разъема — S6B-ZR-SM4A-TF от JST.
Датчик SHARP GP2Y1010AU0F обнаруживает частицы пыли размером от 0,8 мкм, то есть PM2,5. Результат измерения — аналоговый сигнал линейно пропорциональный загрязнению воздуха. Чувствительность составляет 0,5 В на каждые 100 мкг/м3 частиц.
- Напряжение питания: 5-7 В.
- Рабочая температура: от -10 ℃ до 65 ℃.
- Срок службы: до 5 лет.
Давайте заглянем внутрь датчика GP2Y1010AU0F.
Внутрь датчика можно попасть без особых проблем, достаточно открутить два винта, удерживающих металлический экран, защищающий электронику.
После снятия металлической крышки можно увидеть плату. Здесь кроме разъема, можно выделить три основных элемента — транзистор, потенциометр и интегральную микросхему. Также на плате есть пассивные элементы, такие как резисторы и конденсаторы.
Печатную плату довольно легко снять. С обратной стороны есть два датчика. Первый светодиод, излучающий инфракрасный свет, а второй представляет собой фотодиод, принимающий свет испускаемый светодиодом.
Датчик Gp2y1010au0f с Ардуино
Чтобы более подробно объяснить работу датчика, мы должны обратиться к datasheet, в котором есть общая схема модуля:
Начнем с самого начала, для измерения загрязнения воздуха нам необходимо питание ИК-светодиода. На контакты 1 (V-LED) и 2 (LED-GND) подается соответствующее напряжение, но питание на светодиод не подается сразу. Его освещением управляет транзистор, подающий напряжение на контакт № 3 (LED).
Воздух, поступающий внутрь датчика, освещается светодиодом, а фотодиод измеряет количество пропущенного света. Таким образом, чем больше пыли, тем меньше будет света, попадающего на фотодиод.
Затем данные с фотодиода поступают на схему усиления — операционный усилитель с INA126. Усиление сигнала можно регулировать потенциометром на плате, но лучше его не трогать. Тогда мы можем быть уверены, что чувствительность датчика соответствует установленным требованиям.
Сторона «считывания данных» питается через контакты 6 (Vcc) и 4 (S-GND), сам результат измерения доступен на контакте № 5 (Vo).
Подключение датчика GP2Y1010AU0F к Ардуино
Запустить датчик на платформе Ардуино очень просто. Модуль питается напряжением 5В получим напрямую от платы Arduino: плюс (Vcc, V-LED) и минус (LED-GND, S-GND). Выход модуля (Vo) подключим к контакту A0, а сигнал светодиода к контакту № 2. Ниже приведен пример скетча:
int measurePin = A0; //Подключаем датчик к контакту Ардуино A0 int ledPower = 2; //Подключаем вывод 3 датчика к Ардуино D2 int samplingTime = 280; int deltaTime = 40; int sleepTime = 9680; float voMeasured = 0; float calcVoltage = 0; float dustDensity = 0; void setup(){ Serial.begin(9600); pinMode(ledPower,OUTPUT); } void loop(){ digitalWrite(ledPower,LOW); // включаем светодиод delayMicroseconds(samplingTime); voMeasured = analogRead(measurePin); // читаем значение пыли delayMicroseconds(deltaTime); digitalWrite(ledPower,HIGH); // выключаем светодиод delayMicroseconds(sleepTime); // 0–5 В сопоставляются с 0–1023 целочисленными значениями calcVoltage = voMeasured * (5.0 / 1024.0); // расчет dustDensity = 170 * calcVoltage - 0.1; Serial.println(dustDensity); // unit: ug/m3 delay(1000); }
После загрузки скетча и запуска монитора последовательного порта мы видим показания датчика (мкг/м3).
Чтобы определить степень загрязнения воздуха, посмотрим в таблицу:
Согласно этим данным, воздух в нашем доме умеренно загрязненный, но нам нужно подвергнуть сомнению этот результат и спросить себя, что на самом деле измеряет датчик.
По словам производителя, измеряются частицы размером от 0,8 мкм до 100 мкм, поэтому на самом деле полученное измерение не совсем соответствует PM2,5. Фактически результатом является совокупное значение для всех частиц в этом диапазоне.
Таким образом, мы можем прийти к окончательному выводу: датчик интересный. Но с его помощью мы можем только оценить качество воздуха в целом. Если мы хотим получить конкретное значение, например, для PM2,5, мы должны использовать специализированный датчик, предназначенный именно для этой цели.