
Интернет-магазин «Неглупый Дом»
В другом проекте на сайте MQ-6 просто выводит сырой уровень газа на дисплей. Здесь датчик делает больше — при превышении настроенного порога реле обесточивает подключённый прибор (например, электромагнитный газовый клапан или сам нагревательный прибор), не дожидаясь, пока человек заметит показания на экране.
Принцип обнаружения такой же, как и в проекте с LCD: MQ-6 чувствителен к парам пропана, бутана и похожих горючих газов, выдавая на аналоговом выходе напряжение, растущее с концентрацией этих газов в воздухе. Разница — в реакции кода на это значение: вместо постоянного отображения числа на экране код один раз проверяет, не превышено ли безопасное пороговое значение, и если да — немедленно отключает реле и держит его в этом состоянии.
Как и в других защитных проектах на сайте (превышение тока, обнаружение огня), здесь принципиально важно не включать нагрузку автоматически обратно сразу после того, как показания датчика упадут ниже порога — концентрация газа в воздухе снижается постепенно и неравномерно, а не мгновенно до нуля, поэтому автоматический повторный запуск рискует включить прибор ещё в опасной концентрации газа.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Без калибровки по
// известной концентрации газа порог — относительное число, не точный ppm.
// Это учебный проект, не сертифицированная система газовой безопасности.
const int SENSOR_PIN = A0;
const int RELAY_PIN = 4;
const int GAS_THRESHOLD = 400; // подберите по месту после прогрева датчика
bool tripped = false;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // прибор включён в обычном режиме
Serial.println("Прогрев датчика MQ-6...");
delay(60000); // минимальный прогрев, для надёжных показаний может требоваться больше времени
}
void loop() {
if (tripped) {
digitalWrite(RELAY_PIN, LOW);
return;
}
int level = analogRead(SENSOR_PIN);
Serial.print("Уровень газа: ");
Serial.println(level);
if (level > GAS_THRESHOLD) {
tripped = true;
digitalWrite(RELAY_PIN, LOW);
Serial.println("УТЕЧКА ГАЗА! Клапан/прибор отключён.");
}
delay(500);
}
Дополнительных библиотек не требуется — только `analogRead()`. Как и в других защитных проектах, после срабатывания прибор остаётся отключённым до перезагрузки Arduino — это осознанное решение безопасности.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 226 ₽ 203 ₽ (экономия 23 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.