Датчик пыли. Подключение к ардуино

Подключение датчика пыли к ардуино

Пыль – твердые микрочастицы. Они настолько малы, что невидимы человеческому глазу, но так же опасны как и яд. Поэтому важно, чтобы воздух, каким дышит человек, был чистым. Для детектирования пыли в электронике разработаны различные датчики пыли. Датчики пыли различают по принципу действия: оптические и лазерные.

В этой статье рассмотрим оптический датчик фирмы Sharp GP2Y1010AU0F в составе модуля датчика пыли для ардуино Waveshare Dust Sensor.

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

Применяется в очистителях воздуха и кондиционерах.

Исследуемый воздух проходит через центральное отверстие, в котором расположены инфракрасный светодиод (передатчик) и ИК-детектор. Диапазон чувствительности датчика согласно технической документации составляет от 0,05 мг/м³ до 3,5 мг/м³ (пыль на кубический метр).

Рисунок 1. Датчик пыли Sharp GP2Y1010AU0F

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

Модуль подключается к ардуино через специальный разъем JST PH-4 Female. 

Рисунок 2. Обзор модуля Waveshare Dust Sensor

Схема подключения датчика пыли к ардуино

Красный провод Vcc (питание)
Черный провод Vdd (земля) GND
Синий провод Аналоговый сигнал от датчика
Желтый провод Управление светодиодом на модуле
Рисунок 3. Схема подключения датчика пыли к ардуино уно

Пример программного кода для работы с датчиком пыли

// Определяем ядро платы Arduino
// для установки рабочего напряжения
#if defined(__AVR__)
#define OPERATING_VOLTAGE   5.0
#else
#define OPERATING_VOLTAGE   3.3
#endif

// Назначаем пины для коммуникации с датчиком пыли
constexpr uint8_t PIN_AOUT = A0;
constexpr uint8_t PIN_IR_LED = A1;

// Нулевой порог напряжения
float zeroSensorDustDensity = 0.6;

// Переменные для хранения данных с датчика
int sensorADC;
float sensorVoltage;
float sensorDustDensity;

void setup() {
  // Открываем Serial-порт
  Serial.begin(9600);
  // Пин с IR-LED в режим выхода
  pinMode(PIN_IR_LED, OUTPUT);
  // Выключаем IR-LED
  digitalWrite(PIN_IR_LED, LOW);
}

void loop() {
  // Считываем значение с датчика
  for (int i = 0; i < 10 ; i++) {
    digitalWrite(PIN_IR_LED, HIGH);
    delayMicroseconds(280);
    sensorADC += analogRead(PIN_AOUT);
    digitalWrite(PIN_IR_LED, LOW);
    delay(10);
  }
  sensorADC = sensorADC / 10;
  // Переводим «сырые» значения с АЦП в напряжение
  sensorVoltage = (OPERATING_VOLTAGE / 1024.0) * sensorADC * 11;
  // Переводим напряжение в концентрацию пыли
  // Также учитываем нулевой порог напряжение
  if (sensorVoltage < zeroSensorDustDensity) {
    sensorDustDensity = 0;
  } else {
    sensorDustDensity = 0.17 * sensorVoltage - 0.1;
  }
  // Выводим результат в Serial-порт;
  Serial.print(sensorVoltage);
  Serial.print("\t\t");
  Serial.print(sensorDustDensity);
  Serial.println(" ug/m3");  
  delay(1000);
}

Где купить?

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии