уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Вчера мы познакомились с Arduino и рассмотрели небольшой пример скетча для Arduino Uno. Сегодня попробуем собрать простейший датчик CO2 и написать скетч для передачи данных в COM-порт.

Для того, чтобы собрать наш анализатор нам понадобиться следующие железки:

  1. Макетная плата (breadboard)
  2. Датчик MQ135
  3. Arduino Uno
  4. Шесть проводов «папа — папа»

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

Макетная плата

Как известно, для сборки устройств разрабатываются и создаются печатные платы, например, вот такие:

печатная плата

Понятно, что самостоятельно делать такую плату ради прикола, как в моем случае, вряд ли захочется, тем более, что это может занять достаточно много времени. Поэтому для быстрой сборки различных электрических схем без пайки существуют макетные платы (они же — макетные доски, они же breadboard’ы).

Выглядит макетная плата вот таким незамысловатым образом:

Внутри макетной платы расположены медные пластины-рельсы. При этом, крайние рельсы (помеченные красным и синим цветом) расположены вдоль макетной платы, а остальные (помеченные латинскими буквами и цифрами) — поперёк макетной платы. Такое расположение рельс позволяет собирать самые разнообразные электрические схемы, подключая различные элементы схемы как последовательно, так и параллельно:

макетная плата изнутри

Изображение взято с сайта amperka.ru

Датчик MQ135

Датчик MQ135 — это, насколько я понял из различных описаний этого устройства, полупроводниковый газочувствительный резистор (если не прав — поправьте). Принцип работы датчика MQ135 основан на изменении сопротивления тонкопленочного слоя диоксида олова (SnO2) при его контакте с молекулами определяемого газа.

Чувствительный элемент датчика состоит из керамической трубки с покрытием Al2O3 и нанесенного на неё чувствительного слоя диоксида олова. Внутри трубки расположен нагревательный элемент, который нагревает чувствительный слой до температуры, при которой он начинает реагировать на определяемый газ. При этом, чувствительность к разным газам достигается изменением состава примесей в чувствительном слое.

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

Результат работы датчика выдается на аналоговый выход (A0), в то время как на цифровой выход (D0), по идее, должен выдаваться сигнал (1) при превышении концентрацией вещества заданного предела (предел регулируется подстроечным резистором). Питается датчик MQ135 от 5В.

К особенностям работы подобных датчиков мы ещё вернемся в одной из следующих статей, а пока перейдем к следующей нашей «железке» — Arduino Uno, которую я показывал в прошлый раз.

Arduino Uno

Я не буду подробно останавливаться на том, какие бывают Arduino Uno (оригинальные, китайские поделки, разные ревизии т.д.), а также подробным образом расписывать технические характеристики. Скажу только, что у меня китайская Arduino Uno, которая выглядит примерно так как на рисунке:

На платформе расположены 14 контактов (pins), которые могут быть использованы для цифрового ввода и вывода и 6 аналоговых (A0-A5). Какую роль исполняет каждый контакт — зависит от вашей программы. Все они работают с напряжением 5 В и рассчитаны на ток до 40 мА. Также каждый контакт имеет встроенный, но отключённый по умолчанию резистор на 20–50 кОм.

Теперь, показав вкратце, что и как выглядит и из чего состоит, можно попробовать собрать наш первый анализатор CO2 и посмотреть его в работе.

Собираем анализатор CO2 на базе Arduino Uno

Вообще, для себя, как для человека достаточно далекого от электроники, хотя и любящего иногда повозиться с оной, я при работе с Arduino придерживаюсь старого доброго правила, описанного в замечательной повести Анджея Сапковского «Ведьмак». Кто читал эту книгу, тот наверняка вспомнит изречение медика Русти:

«Шейте красное с красным, желтое с желтым, белое с белым. Так наверняка будет хорошо…»

Вот и  Arduino точно так же — соединяем VCC на датчике с VCC на Arduino Uno, аналоговые выходы с аналоговыми входами — так наверняка заработает.

Попробуем реализовать это правило в деле. Я соединил выход A0 на датчике с пином A0 на Arduino Uno, выход D0 на датчике с пином D4, ну и, соответственно, подвел питание 5В. Получилась вот такая хрупкая конструкция:

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

Скетч для считывания показаний датчика

Итак, судя по тому, что удалось найти (см. выше) по работе датчика MQ135, наша задача получить значение сопротивления с аналогового выхода и каким-либо образом преобразовать значение этого сопротивления в значение концентрации интересующего нас вещества. В нашем случае — это CO2.

Скетч у меня получился вот такой:

#define analogPin A0 // аналоговый выход MQ135 подключен к пину A0 Arduino
#define digitalPin 4 // цифровой выход подключен к пину 3
 
float analogValue; // для аналогового значения
byte digitalValue; // для цифрового значения
 
void setup() {
 
Serial.begin(9600); // инициализация последовательного порта
pinMode(analogPin, INPUT);  // режим работы аналогового пина
pinMode(digitalPin, INPUT); // режим работы цифрового пина
delay(5000); // даём датчику небольшое время на разогрев
}
 
void loop() {
 
  analogValue = analogRead(analogPin); // чтение аналогового значения
  digitalValue = digitalRead(digitalPin); // чтение цифрового значения
 
  Serial.print("Analog value: "); // вывод аналогового значения в последовательный порт
  Serial.println(analogValue);
 
  Serial.print("Digital Value: "); // вывод цифрового значения в аналоговый порт
  Serial.println(digitalValue);
 
 delay(5000); // задержка перед выводом следующего значения
 
}

Теперь загружаем скетч в Arduino Uno так, как я показывал в прошлой статье и открываем в меню Arduino IDE «Инструменты — Монитор порта». Через несколько секунд в мониторе порта появились следующие значения:

Во время работы датчика я на него немного подышал и по картинке видно, что датчик сработал. Однако, что он показывает для нас пока остается загадкой. Точнее даже не так — остается загадкой значение концентрации CO2 в атмосфере моей комнаты.

Завтра приступим к «расшифровке» данных датчика MQ-135, посмотрим как можно интерпретировать получаемые значения, а заодно разберем один вопрос, который не дает мне покоя уже достаточно долгое время.

5 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии