Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Монитор качества воздуха Arduino с датчиком DSM501A

Компоненты и расходные материалы

Arduino Nano R3
× 1
Модуль датчика пыли DSM501A
× 1
Буквенно-цифровой ЖК-дисплей, 16 x 2
× 1
Комплект вентилятора 40 мм
× 1
LED (общий)
× 5
Резистор 221 Ом
× 1
Однооборотный потенциометр - 10 кОм
× 1

Необходимые инструменты и машины

Паяльник (универсальный)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Мониторинг качества воздуха - это хорошо известная и устоявшаяся наука, которая началась еще в 80-х годах. В то время технология была довольно ограниченной, а решение, используемое для количественной оценки загрязнения воздуха, было громоздким и очень дорогим.

К счастью, в настоящее время, благодаря новейшим и современным технологиям, решения, используемые для мониторинга качества воздуха, становятся не только более точными, но и более быстрыми при измерениях. Устройства становятся меньше и стоят намного доступнее, чем когда-либо прежде. В представленном устройстве используется датчик пыли Samyoung "DSM501A", который является одним из самых дешевых на рынке и может быть куплен на AliExpress за несколько долларов. Этот датчик способен обнаруживать частицы PM2,5, а также PM10.

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

Схема очень проста:

Vout1 (PM2.5) от датчика подключен к D2 Arduino, Vout2 (PM10) к D3, Vcc к Arduino + 5V и GND к выводу Arduino Gnd. Светодиодные диоды подключаются к аналоговым контактам с A1 по A5 Arduino, которые определены как выходы в коде. ЖК-дисплей с 61x2 символами совместим с Hitachi HD44780. Он показывает концентрацию частиц PM10 в шт. / 0,01 куб.футов и 5 состояний качества воздуха:

- Чистый

- Хорошо

- Допустимо

- Тяжелый

- Опасность

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

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

Код

  • код
код Arduino
 #include  LiquidCrystal lcd (8, 9, 4, 5, 6, 7); int pin2 =3; int pin1 =2; unsigned long duration1; unsigned long duration2; unsigned long starttime; unsigned long sampletime_ms =3000; // sampe 1s; unsigned long lowpulseoccupancy1 =0; unsigned long lowpulseoccupancy2 =0; float ratio1 =0; float ratio2 =0; float density1 =0; float configuration2 =0; int wLed =A1; int gLed =A2; int yLed =A3; int rLed =A4; int bLed =A5; void setup () {Serial.begin (9600); pinMode (2, ВХОД); pinMode (3, ВХОД); pinMode (wLed, ВЫХОД); pinMode (gLed, ВЫХОД); pinMode (yLed, ВЫХОД); pinMode (rLed, ВЫХОД); pinMode (bLed, ВЫХОД); starttime =millis (); // получаем текущее время; lcd.begin (16, 2);} цикл void () {duration1 =pulseIn (pin1, LOW); duration2 =pulseIn (pin2, LOW); lowpulseoccupancy1 =lowpulseoccupancy1 + duration1; lowpulseoccupancy2 =lowpulseoccupancy2 + duration2; if ((millis () - starttime)> sampletime_ms) // если время выборки ==30 с {ratio1 =lowpulseoccupancy1 / (sampletime_ms * 10.0); // Целочисленный процент 0 => 100 концентрация1 =1,1 * pow (ratio1,3) -3,8 * pow (ratio1,2) + 520 * ratio1 + 0,62; // с использованием спецификации кривой ratio2 =lowpulseoccupancy2 / (sampletime_ms * 10.0); // Целочисленный процент 0 => 100 концентрация2 =1,1 * pow (ratio2,3) -3,8 * pow (ratio2,2) + 520 * ratio2 + 0,62; // lcd.setCursor (0, 0); lcd.print («PM10»); lcd.setCursor (6, 0); lcd.print (концентрация1,3); Серийный принт ("концентрация1 ="); Серийный принт (концентрация1); Serial.print («шт / 0,01cf -»); Серийный принт ("концентрация2 ="); Серийный принт (концентрация2); Serial.print («шт / 0,01cf -»); если (концентрация1 <1000) {lcd.setCursor (0, 1); для (int я =0; я <16; ++ я) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print («ЧИСТЫЙ»); digitalWrite (wLed, HIGH); digitalWrite (gLed, LOW); digitalWrite (yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); } если (концентрация1> 1000 &&концентрация1 <10000) {lcd.setCursor (0, 1); для (int я =0; я <16; ++ я) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print («ХОРОШО»); digitalWrite (wLed, LOW); digitalWrite (gLed, HIGH); digitalWrite (yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); } если (концентрация1> 10000 &&концентрация1 <20000) {lcd.setCursor (0, 1); для (int я =0; я <16; ++ я) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print («ДОПУСТИМО»); digitalWrite (wLed, LOW); digitalWrite (gLed, LOW); digitalWrite (желтый, высокий); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); } если (концентрация1> 20000 &&концентрация1 <50000) {lcd.setCursor (0, 1); для (int я =0; я <16; ++ я) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print («ТЯЖЕЛЫЙ»); digitalWrite (wLed, LOW); digitalWrite (gLed, LOW); digitalWrite (yLed, LOW); digitalWrite (rLed, HIGH); digitalWrite (bLed, LOW); } if (configuration1> 50000) {lcd.setCursor (0, 1); for (int i =0; i <16; ++ i) {lcd.write ('');} lcd.setCursor (4, 1); lcd.print («ОПАСНОСТЬ»); digitalWrite (wLed, LOW); digitalWrite (gLed, LOW); digitalWrite (yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, HIGH); } lowpulseoccupancy1 =0; lowpulseoccupancy2 =0; время начала =миллис (); }} 

Схема


Производственный процесс

  1. Как измерить качество воздуха на OpenSensors
  2. Датчик качества воздуха с гелием
  3. Игра с гироскопом Arduino с MPU-6050
  4. Многотемпературный датчик
  5. Мониторинг CO2 с помощью датчика K30
  6. Простой датчик препятствий с Arduino
  7. Емкостной датчик отпечатков пальцев с Arduino или ESP8266
  8. Датчик Интернета вещей с Arduino, Yaler и IFTTT
  9. Отталкивающая электромагнитная левитация Arduino
  10. Датчик качества воздуха на основе углерода