Как работает датчик алкоголя MQ3? Подключение к Arduino
Придайте своему следующему проекту на Arduino способность «чуять» алкоголь, используя модуль датчика алкоголя MQ3. Этот датчик обнаруживает наличие алкоголя в воздухе, а также его концентрацию. Поэтому, если вы хотите собрать собственный алкотестер для определения количества алкоголя в дыхании, модуль датчика алкоголя MQ3 — отличный выбор.
Датчик алкоголя MQ3
MQ3 — один из наиболее широко используемых датчиков серии MQ. Это датчик типа MOS (Metal Oxide Semiconductor — полупроводник на основе оксида металла). Датчики на основе оксидов металлов также известны как хеморезисторы, поскольку их принцип работы основан на изменении сопротивления чувствительного материала при воздействии алкоголя.
Датчик алкоголя MQ3 работает от 5V постоянного тока и потребляет примерно 800 мВт. Он может обнаруживать концентрации алкоголя в диапазоне от 25 до 500 ppm.
Что означает концентрация 1 ppm?
Parts-per-million, или ppm — наиболее распространённая единица измерения концентрации газа. ppm — это просто соотношение одного газа к другому. Например, 500 ppm алкоголя означает, что если бы вы могли подсчитать миллион молекул газа, 500 из них были бы алкоголем, а остальные 999 500 — другими газами.
Внутреннее устройство датчика алкоголя MQ3
MQ3 — это датчик с нагревательным элементом. Поэтому он покрыт двумя слоями тонкой сетки из нержавеющей стали, известной как «взрывозащитная сетка». Она обеспечивает, что нагревательный элемент внутри датчика не вызовет взрыва, поскольку мы измеряем горючий газ (алкоголь).
Она также защищает датчик и отфильтровывает взвешенные частицы, пропуская только газообразные элементы в камеру.
При снятии внешней сетки датчик выглядит так. Чувствительный элемент и шесть соединительных ножек, выступающих за пределы бакелитового основания, образуют звездообразную структуру. Две из шести ножек (H) отвечают за нагрев чувствительного элемента и соединены никель-хромовой катушкой (хорошо известным проводящим сплавом).
Остальные четыре ножки (A и B), передающие сигналы, соединены платиновыми проводами. Эти провода подключены к корпусу чувствительного элемента и передают незначительные изменения тока, протекающего через чувствительный элемент.
Трубчатый чувствительный элемент изготовлен из керамики на основе оксида алюминия (Al2O3) с покрытием из диоксида олова (SnO2). Диоксид олова — наиболее важный материал, поскольку он чувствителен к алкоголю. Керамическая подложка, со своей стороны, повышает эффективность нагрева и обеспечивает непрерывный нагрев чувствительной области до рабочей температуры.
Подведём итог: система нагрева состоит из никель-хромовой катушки и керамики на основе оксида алюминия, а система измерения — из платиновых проводов и покрытия из диоксида олова.
Как работает датчик алкоголя MQ3?
Когда полупроводниковый слой из SnO2 нагревается до высокой температуры, кислород адсорбируется на поверхности. Когда воздух чист, электроны из зоны проводимости диоксида олова притягиваются к молекулам кислорода. Это создаёт область обеднения электронов непосредственно под поверхностью частиц SnO2, формируя потенциальный барьер. В результате плёнка SnO2 становится высокорезистивной и препятствует протеканию электрического тока.
Однако в присутствии алкоголя поверхностная плотность адсорбированного кислорода уменьшается в результате реакции с алкоголем, что снижает потенциальный барьер. В результате электроны высвобождаются в диоксид олова, позволяя току свободно протекать через датчик.
Обзор оборудования модуля датчика алкоголя MQ3
Датчик алкоголя MQ3 прост в использовании и имеет два различных выхода. Он не только обеспечивает бинарную индикацию наличия алкоголя, но и аналоговое представление его концентрации в воздухе.
Аналоговое выходное напряжение датчика (на выводе A0) изменяется пропорционально концентрации алкоголя. Чем выше концентрация алкоголя в воздухе, тем выше выходное напряжение; чем ниже концентрация, тем ниже напряжение. Анимация ниже показывает зависимость между концентрацией алкоголя и выходным напряжением.
Этот аналоговый сигнал оцифровывается высокоточным компаратором LM393 и выдаётся на цифровом выходе (вывод D0).
Модуль включает потенциометр для регулировки чувствительности цифрового выхода (D0). С его помощью можно установить порог: когда концентрация алкоголя превышает пороговое значение, модуль выдаёт LOW, в противном случае — HIGH.
Поворот ручки по часовой стрелке увеличивает чувствительность, против часовой — уменьшает.
Кроме того, на модуле есть два светодиода. Светодиод питания загорается при включении модуля, а светодиод состояния — когда концентрация алкоголя превышает пороговое значение.
Технические характеристики
Вот технические характеристики:
Рабочее напряжение |
5V |
|---|---|
Сопротивление нагрузки |
200 KΩ |
Сопротивление нагревателя |
33Ω ± 5% |
Потребление нагревателя |
<800mw |
Сопротивление чувствительного элемента |
1 MΩ – 8 MΩ |
Диапазон концентраций |
25 – 500 ppm |
Время прогрева |
Более 24 часов |
Распиновка модуля датчика алкоголя MQ3
Давайте рассмотрим распиновку.
VCC обеспечивает питание модуля. Подключите его к выходу 5V Arduino.
GND — это вывод заземления.
D0 указывает на наличие алкоголя. D0 переходит в LOW, когда концентрация алкоголя превышает пороговое значение (установленное потенциометром), и в HIGH — в противном случае.
A0 выдаёт аналоговое выходное напряжение, пропорциональное концентрации алкоголя: более высокая концентрация — более высокое напряжение, более низкая концентрация — более низкое напряжение.
Калибровка датчика алкоголя MQ3
Поскольку MQ3 — датчик с нагревательным элементом, его калибровка может сместиться при длительном хранении.
При первом использовании после длительного хранения (месяц или более) датчик необходимо полностью прогреть в течение 24–48 часов для обеспечения максимальной точности.
Если датчик использовался недавно, полный прогрев займёт всего 5–10 минут. В период прогрева датчик обычно показывает завышенные значения, которые постепенно снижаются до стабилизации.
Эксперимент 1 — Измерение концентрации алкоголя через аналоговый выход (A0)
В первом эксперименте мы будем считывать аналоговый выход для измерения концентрации алкоголя и оценки уровня алкогольного опьянения.
Схема подключения
Давайте подключим датчик алкоголя MQ3 к Arduino.
Начните с подключения вывода VCC к выводу 5V Arduino и вывода GND к выводу Ground Arduino. Наконец, подключите выходной вывод A0 модуля к аналоговому выводу #0 Arduino.
Схема подключения показана на изображении ниже.
Определение пороговых значений
Для оценки уровня алкогольного опьянения вам нужно записать значения, которые выдаёт датчик при дуновении на него до и после употребления алкоголя.
Просто запустите скетч ниже и снимите показания.
Примечание:
Если вам не разрешено законом употреблять алкогольные напитки, используйте для тестирования бутылку изопропилового спирта или любой санитайзер для рук. Не допускайте попадания спирта на датчик! Просто сожмите бутылку, чтобы пары спирта попали на датчик, и снимите показания.
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(2000); // wait 2s for next reading
}
При запуске скетча вы должны увидеть показания, похожие на эти:
При отсутствии алкоголя (около 120)
При наличии алкоголя (около 500)
Этот тест может потребовать нескольких попыток. Получив показания, вы можете использовать их как порог для запуска действия.
Код Arduino
Скетч ниже оценивает уровень алкогольного опьянения, используя следующие пороговые значения:
< 120 — трезвый
120–400 — выпивший, но в пределах допустимой нормы
> 400 — пьяный
/* Replace these values with your own readings */
#define Sober 120 // Define max value that we consider sober
#define Drunk 400 // Define min value that we consider drunk
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue < Sober) {
Serial.println(" | Status: Stone Cold Sober");
} else if (sensorValue >= Sober && sensorValue < Drunk) {
Serial.println(" | Status: Drinking but within legal limits");
} else {
Serial.println(" | Status: DRUNK");
}
delay(2000); // wait 2s for next reading
}
Если всё в порядке, вы должны увидеть нечто подобное в мониторе последовательного порта.
Эксперимент 2 — Обнаружение алкоголя через цифровой выход (D0)
Во втором эксперименте мы будем использовать цифровой выход для обнаружения наличия алкоголя.
Схема подключения
Мы используем схему из предыдущего эксперимента. Просто отключите соединение с выводом АЦП и подключите вывод D0 модуля к цифровому выводу #8 Arduino.
Схема подключения показана на изображении ниже.
Установка порога
На модуле есть встроенный потенциометр для установки порога концентрации алкоголя, при превышении которого модуль выдаёт LOW, а светодиод состояния загорается.
Для установки порога дайте парам алкоголя попасть на датчик и поворачивайте потенциометр по часовой стрелке, пока не загорится светодиод состояния. Затем поверните обратно против часовой стрелки, пока светодиод не погаснет.
Вот и всё — ваш модуль готов к использованию.
Код Arduino
Теперь загрузите скетч ниже на Arduino.
#define MQ3pin 8
int sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = digitalRead(MQ3pin); // read digital output pin
Serial.print("Digital Output: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue) {
Serial.println(" | Alcohol: -");
} else {
Serial.println(" | Alcohol: Detected!");
}
delay(2000); // wait 2s for next reading
}
Вы должны увидеть аналогичный вывод в мониторе последовательного порта.