Рубрики
Схемы на Arduino

Детектор дыма на Arduino и датчике газа MQ2

Детекторы дыма бывают полезны для обнаружения дыма и огня в зданиях, поэтому они являются важной частью систем обеспечения безопасности. В этой статье мы рассмотрим схему детектора дыма на основе платы Arduino, которая сможет не только обнаруживать наличие дыма в воздухе, но также считывать и отображать уровень дыма в воздухе в PPM (parts per million – частиц на миллион). Когда уровень дыма становится больше чем 1000 ppm схема будет включать зуммер (буззер) – эту границу срабатывания зуммера можно изменить в тексте программы, приведенном в конце статьи. Кроме дыма датчик газа MQ2 может также обнаруживать сжиженный нефтяной газ, алкоголь, метан и другие газы.

Проектируемое нами устройство можно сделать на макетной или точечной плате, но мы решили сделать его в виде шилда (платы расширения) для Arduino на печатной плате. Для проектирования печатной платы мы использовали онлайн симулятор EasyEDA. Весь процесс проектирования этой печатной платы в виде шилда для Arduino подробно объяснен в статье, но вы можете использовать и свои собственные методы и инструменты для проектирования и изготовления печатной платы.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Детектор дыма в виде платы расширения (шилд, Arduino Shield) для Arduino (собственного изготовления).
  3. Источник питания.

Компоненты для изготовления детектора дыма в виде платы расширения

  1. Датчик газа (MQ2) (купить на AliExpress).
  2. Резисторы (10 кОм и 1 кОм) (купить на AliExpress).
  3. Зуммер (буззер) (купить на AliExpress).
  4. ЖК дисплей 16х2 (купить на AliExpress).
  5. Потенциометр 10 кОм (купить на AliExpress).
  6. Светодиод (купить на AliExpress).
  7. Операционный усилитель LM358 (купить на AliExpress).
  8. Соединительные колодки.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Проектирование детектора дыма в виде платы расширения для Arduino

Для проектирования детектора дыма в виде платы расширения для Arduino мы использовали симулятор EasyEDA, в котором мы сначала разработали схему и затем конвертировали ее в слой печатной платы с помощью опции автоматической трассировки (Auto Routing feature) печатной платы в симуляторе EasyEDA.

EasyEDA представляет собой бесплатный онлайн инструмент и может значительно упростить процесс создания вами готового устройства. В нем можно нарисовать схему, поработать с программой моделирования с ориентацией на интегральные схемы (программа SPICE), бесплатно сделать дизайн печатной платы и за сравнительно небольшие деньги изготовить потом эту печатную плату. Редактор этого симулятора содержит большое количество библиотек и компонентов, поэтому вы без труда найдете там то, что вам нужно. Полное руководство по использованию симулятора EasyEDA можно прочитать по этой ссылке – оно на английском языке, но если оно вас заинтересует, пишите об этом к комментариях к данной статье и я могу перевести это руководство на русский язык и разместить на нашем сайте.

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

А на следующем рисунке представлен скриншот верха нашей печатной платы в симуляторе EasyEDA, но вы на вкладке ‘Layers’ данного симулятора можете посмотреть вид любой стороны печатной платы (верх, низ и т.д.).

Заказ печатной платы

После завершения работы над дизайном своей печатной платы в симуляторе EasyEDA вы можете нажать на иконку Fabrication output, откуда вас перебросит на страницу заказа печатной платы. Также вы можете скачать Gerber files вашей печатной платы и отослать их любому изготовителю печатных плат чтобы он согласно этим файлам изготовил для вас печатную плату. Но авторы оригинала данной статьи (я думаю вы уже поняли что статья переводная с иностранного сайта) утверждают, что значительно проще и дешевле заказать изготовление печатной платы непосредственно в EasyEDA. На странице заказа печатной платы вы можете выбрать количество экземпляров печатной платы, которые вы хотите заказать, ее толщину, массу меди и даже цвет печатной платы. После того как вы выбрали все опции нажмите “Save to Cart” и завершите свой заказ.

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

После получения печатной платы авторы статьи-оригинала смонтировали и припаяли к ней все необходимые компоненты, в результате получилась конструкция следующего вида:

После этого необходимо всего лишь подсоединить ЖК дисплей и установить сконструированную нами плату расширения поверх платы Arduino. Подробно все эти процессы показаны в видео в конце статьи.

Работа схемы

Схема устройства представлена на следующем рисунке.

В проектируемой нами схеме мы использовали датчик газа MQ2, способный определять присутствие дыма в воздухе. ЖК дисплей 16×2 используется для отображения количества дыма в воздухе (в единицах PPM). Микросхема LM358 используется для конвертирования выхода датчика газа в цифровую форму (опционально). Зуммер используется как сигнализация и срабатывает когда содержание дыма в воздухе становится больше 1000 PPM.

В схеме мы использовали компаратор для сравнения выходного напряжения датчика дыма с заранее определенным значением напряжения, выход компаратора подсоединен к контакту D7 платы Arduino. Также выход датчика дыма подсоединен к аналоговому контакту A0 платы Arduino. Зуммер подключен к контакту D9. Соединения с ЖК дисплеем такие же в примерах среды Arduino IDE (12, 11, 5, 4, 3, 2). Остальные необходимые соединения показаны на приведенной схеме.

Примечание: в схеме нам необходимо замкнуть все три контакта J2 header чтобы вычислять количество PPM дыма.

Исходный код программы

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

Здесь мы главным образом должны получить значения с кривой (мы взяли две точки с кривой), сопротивление датчика (будет рассчитано в коде программы), константу чистого воздуха (9.83) и сопротивление нагрузки (мы использовали 10 кОм). Мы можем найти значения кривой из даташита на датчик, использовать сопротивление нагрузки 5-54 кОм и затем мы можем рассчитать сопротивление датчика и образцы дыма.

Возьмите две точки с кривой и возьмите логарифм от этих точек, например: для первой точки (lg200, lg3.4)=(2.3,0.53) и для второй точки (lg10000,lg0.63)=(4,-0.20). Затем рассчитайте наклон кривой по формуле: (y2-y1)/(x2-x1), затем возьмите одну точку и рассчитанное значение наклона кривой (-0.44) и используйте их в программе — (x, y, slope). Дальнейшие необходимые вычисления приведены в коде программы.

В программе мы первым делом должны подключить заголовочный файл для ЖК дисплея и инициализировать необходимые контакты. Затем определить параметры (координаты одной точки и наклон) кривой и сопротивление нагрузки.

Затем в функции void setup() откалибровать наш датчик дыма при помощи функции SensorCalibration.

Затем в функции void loop() мы будем вычислять PPM дыма используя функцию resistance.

Примечание: перед тем как начать калибровку модуля, включите устройство в работу на время не менее 10 минут в чистом воздухе и только затем начинайте процесс калибровки. Процесс калибровки займет по меньшей мере 25 секунд.

Таким образом, в этой статье мы разработали схему детектора дыма на основе платы Arduino, которая рассчитывает и отображает на экране ЖК дисплея количество дыма в воздухе в единицах PPM. Также для нашего проекта мы разработали плату расширения для Arduino (на основе печатной платы) с использованием симулятора EasyEDA.

Далее представлен полный текст программы.

Видео, демонстрирующее работу схемы

2 ответа к “Детектор дыма на Arduino и датчике газа MQ2”

Подскажите, пожалуйста, как его использовать для определения утечки газа?

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

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