В этой статье мы рассмотрим подключение датчика алкоголя к плате Arduino и спроектируем на его основе детектор алкоголя (алкотестер), который будет способен определять уровень алкоголя в выдыхаемом воздухе и крови и на основании этого выдавать сигнал тревоги если уровень алкоголя превышает заданный уровень. Для данного проекта спроектирована печатная плата с помощью сервиса EASYEDA, исходники которой вы можете скачать ниже в статье.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Шилд (плата расширения) детектора алкоголя для Arduino Uno.
- Датчик алкоголя (MQ3) (купить на AliExpress).
- Резистор 10 кОм (купить на AliExpress).
- Резистор 1 кОм (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Источник питания.
- Потенциометр 10 кОм (купить на AliExpress).
- Светодиод (купить на AliExpress).
- Операционный усилитель LM358 (купить на AliExpress).
- Соединительные колодки.
- Кнопка.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Работа схемы
Схема детектора алкоголя (алкотестера) на основе платы Arduino представлена на следующем рисунке.
Работа схемы заключается в следующем. Мы будем сравнивать в схеме компаратора выходное напряжение с датчика алкоголя с заранее определенным значением (подсоединен к контакту D7). Также выход датчика алкоголя подсоединен к аналоговому контакту A0 платы Arduino. Зуммер подключен к контакту D9 платы Arduino. Соединения с ЖК дисплеем точно такие же, как и в примере работы с ЖК дисплеем в Arduino IDE (12, 11, 5, 4, 3, 2). Кнопка подключена к контакту D6 платы Arduino и используется для запуска процесса анализа уровня алкоголя.
Примечание: в схеме мы должны замкнуть все три контакта J2 для расчета PPM.
Для проектирования шилда детектора алкоголя для Arduino мы использовали сервис EasyEDA, в котором мы сначала нарисовали схему нашего устройства, а потом преобразовали ее в печатную плату, используя функцию автоматической трассировки в редакторе EasyEDA. Более подробно это процесс объяснен далее в статье.
Расчет уровня алкоголя
В соответствии с даташитом на датчик MQ3 уровень алкоголя в чистом воздухе составляет 0.04 mg/L.
Запустив в работу этот датчик в нашей комнате (в предположении что у нас чистый воздух в комнате) мы измерили напряжение на выходе этого датчика и оно составило 0.6 В. То есть если на выходе датчика будет напряжение 0.6 В при его работе в чистом воздухе, то уровень алкоголя будет составлять величину 0.04 mg/L.
То есть необходимый множитель (коэффициент) для расчета уровня алкоголя можно определить по формуле:
1 2 |
Multiplier = 0.40/0.60 Multiplier = 0.67 |
На основании этого коэффициента мы получим следующую формулу для расчета уровня алкоголя. Сразу отметим что она приближенная – мы используем не совсем стандартный подход в этом вопросе как вы уже, наверное, поняли.
1 |
Alcohol = 0.67 * v. |
Здесь v – это напряжение на выходе датчика алкоголя.
Поскольку с нашим датчиком мы имеем концентрацию алкоголя 0.40 mg/L в чистом воздухе, то за допустимую границу уровня алкоголя, выше которой нельзя управлять транспортным средством, мы примем 0.80 mg/L – это граница выбрана чисто в демонстрационных целях, вы самостоятельно сможете изменить ее потом в программе на ту, которая вам будет необходима.
Датчик MQ3
Датчик газов и алкоголя MQ3 сделан из материала SnO2, который имеет низкую проводимость в чистом воздухе. Когда в воздухе рядом с данным датчиком начинают появляться пары алкоголя его проводимость начинает увеличиваться в зависимости от концентрации алкоголя. Таким образом, измеряя разность напряжений на выходе датчика при его работе в чистом воздухе и при его работе в условиях наличия паров алкоголя, можно определить наличие алкоголя в воздухе.
Датчик MQ3 отличается малой стоимостью и хорошо подходит для применения в различных устройствах, определяющих концентрацию алкоголя. Датчик отличается хорошей чувствительностью и долгим сроком службы.
Создание макета печатной платы для нашего проекта
В этом разделе статьи мы рассмотрим проектирование печатной платы для нашего проекта детектора алкоголя. Если вам это не интересно, то вы можете просто пропустить этот раздел.
Для проектирования печатной платы для нашего проекта мы выбрали онлайн-сервис EasyEDA, который, по нашему мнению, является очень удобным в подобных вопросах. Он является проектом с открытым исходным кодом и содержит много подложек (footprints). После создания печатной платы в сервисе EasyEDA можно достаточно дешево заказать ее изготовление. На этом же сервисе по изготовлению печатных плат продается достаточно много различных электронных компонентов, которые можно заказать вместе с изготовлением своей печатной платы. Конечно, для жителей стран СНГ этот сервис может быть не очень интересен, но все же решил не удалять ссылку на него при переводе статьи с сайта-источника.
При проектировании печатной платы в EasyEDA вы можете сделать проект своей печатной платы общедоступным чтобы другие пользователи могли скачивать и редактировать его. К примеру, макет печатной платы для рассматриваемого в этой статье проекта детектора алкоголя доступен по адресу:
https://easyeda.com/circuitdigest/Alcohol_Detector-6b80abe350df4526b21be4999638a36b
Вы можете посмотреть печатную плату в этом сервисе со всех сторон, используя опцию ‘Layers’.
Вы также можете посмотреть как будет выглядеть плата после изготовления, используя кнопку Photo View в EasyEDA.
Заказ изготовления печатной платы
После окончания работы по проектированию печатной платы вы можете заказать ее изготовление на сайте JLCPCB.com. Для осуществления этого вам будет необходим Gerber файл печатной платы, для этого можно в редакторе EasyEDA нажать кнопку Fabrication Output (заказа изготовления) и затем подгрузить этот файл на странице заказа печатной платы.
При заказе печатной платы на сайте JLCPCB.com необходимо нажать на кнопку Quote Now или Buy Now, выбрать количество экземпляров печатной платы, число слоев меди, толщину печатной платы, вес меди и даже цвет печатной платы как показано на рисунке.
После выбора всех необходимых опций печатной платы необходимо нажать кнопку “Save to Cart” и тогда вас перебросит на страницу, где вы можете загрузить Gerber файл, который мы скачали с EasyEDA. Загрузите ваш Gerber файл и нажмите на “Save to Cart”. В завершение нажмите Checkout Securely чтобы завершить оформление заказа. В нашем случае стоимость изготовления печатной платы составила $2, сделали ее за 48 часов и доставили службой доставки DHL за 5 дней.
В результате печатная плата к нам пришла вот в такой вот коробке:
Внутри нее была наша печатная плата, к которой мы припаяли необходимые компоненты.
После этого все, что осталось сделать – это смонтировать шилд поверх платы Arduino и подсоединить ЖК дисплей. После этого можно загружать программу в плату Arduino и начинать тестировать работу схемы.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); // контакты, к которым подключен ЖК дисплей #define sensor A0 #define led 13 #define buz 9 void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.print("Alcohol Detector"); lcd.setCursor(0,1); lcd.print(" Circuit Digest "); delay(2000); pinMode(sensor, INPUT); pinMode(buz, OUTPUT); pinMode(led, OUTPUT); lcd.clear(); } void loop() { float adcValue=0; for(int i=0;i<10;i++) { adcValue+= analogRead(sensor); delay(10); } float v= (adcValue/10) * (5.0/1024.0); float mgL= 0.67 * v; // формула для расчета концентрации алкоголя Serial.print("BAC:"); Serial.print(mgL); Serial.print(" mg/L"); lcd.setCursor(0,0); lcd.print("BAC: "); lcd.print(mgL,4); lcd.print(" mg/L "); lcd.setCursor(0,1); if(mgL > 0.8) { lcd.print("Drunk "); // опьянение выше нормы Serial.println(" Drunk"); digitalWrite(buz, HIGH); digitalWrite(led, HIGH); } else { lcd.print("Normal "); // все нормально Serial.println(" Normal"); digitalWrite(buz, LOW); digitalWrite(led, LOW); } delay(100); } |