• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

Алкотестер своими руками на Arduino

 

Используйте датчик алкоголя MQ-3 в качестве алкотестера и отобразите BAC пользователя.


Датчик MQ-3 - это датчик оксида олова, который может обнаруживать частицы алкоголя (питьевого типа) в воздухе. Мы можем использовать Arduino для расчета содержания алкоголя в крови пользователя (BAC) и отображения его на 7-сегментном дисплее. Хотя это может быть изящный трюк для вечеринки, он также полезен для того, чтобы сообщить людям, следует ли им ехать домой.

Отказ от ответственности: используемый датчик алкоголя не был откалиброван (см. Техническое описание ) и не очень точен. Я не несу ответственности за его отключение. Он не заменяет алкотестер полицейского.

Вам понадобится Arduino, 7-сегментный дисплей, датчик алкоголя, макетная плата, резистор, провод и USB-кабель. См. Компоненты в разделе «Оборудование», чтобы узнать, что купить.

Припаяйте 7-сегментный дисплей к OpenSegment Shield . Припаяйте штабелируемые заголовки к OpenSegment Shield.

Припаяйте датчик спирта к монтажной плате датчика газа . Не имеет значения, в какую сторону входит датчик (A1, B1, H1 и GND можно повернуть на 180 °). Просто убедитесь, что маркировка шелкографии направлена ​​вниз, в сторону от датчика (т. Е. Вы все еще можете прочитать их, когда датчик припаян к плате).

Припаяйте резистор 4,7 кОм от B1 к GND.

Припаяйте A1 и H1 вместе.

См. Схему для получения дополнительной информации.

Присоедините OpenSegment Shield к Arduino. Подключите датчик алкоголя к Arduino следующим образом:

A1 и H1 (датчик) → 5 В (Arduino)

B1 (датчик) → A1 (Arduino)

GND (датчик) → GND (Arduino)

Шаг 5: питание и код загрузки

Подключите USB-кабель от вашего компьютера к Arduino. Загрузите код из репозитория GitHub ниже. Подождите 5-10 минут, прежде чем снимать показания, так как датчик должен нагреться. Некоторые люди рекомендуют дать датчику «прожечь» (оставить его включенным) в течение 48 часов, прежде чем снимать показания.

Используйте устойчивый 5-секундный «свисток» (как если бы вы задували свечи на день рождения) прямо в датчик, так чтобы ваше лицо находилось примерно в 2 дюймах от датчика. Похоже, это дает наиболее точные показания.

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

 

Алкотестер своими руками

Алкотестер своими руками

Как оказалось, нет простого способа вычислить BAC по датчику алкоголя. Если мы посмотрим на 5-ю страницу таблицы данных MQ-3 , мы увидим кривую, которая отображает доли на миллион (PPM) спирта в напряжение на B1 (при условии, что резистор 4,7 кОм от B1 к GND).

Мы использовали инструмент полиномиальной регрессии (например, этот ), чтобы подогнать полином 5-го порядка к нескольким точкам, взятым из кривой (читать вручную - много возможностей для ошибки). В результате мы получили это уравнение (v - напряжение):

PPM = 150.4351049*v^5 - 2244.75988*v^4 + 13308.5139*v^3 -39136.08594*v^2 + 57082.6258*v - 32982.05333

Мы использовали Excel для создания списка значений АЦП (в Arduino, который находится в диапазоне от 0 до 1023) и связанных с ними напряжений (0-5 В). В следующем столбце мы вычислили PPM по напряжениям.

Наконец, мы можем преобразовать PPM в BAC с помощью

BAC = PPM / 2600

благодаря таблице на 2-й странице этого технического описания  (от BAC до PPM).

К сожалению, это создает множество отрицательных и невероятно высоких значений BAC. Поскольку MQ-3 не может обрабатывать PPM ниже 70 и выше примерно 500, мы просто говорим, что все, что ниже 70 PPM, является BAC = 0,000, а все, что превышает 500 PPM, является ОШИБКОЙ.

 

Все допустимые значения BAC были скопированы в справочную таблицу (BAC_Lookup.h) в коде Arduino. Любое аналого-цифровое (АЦП) значение на выводе A1 более 410 (напряжение 2,004 В) вычитается из него 410, и его соответствующее значение отображается в таблице. Любое значение АЦП выше 859 (напряжение 4,198 В) просто отображает «E.EEE», чтобы показать, что датчик находится за пределами рабочего диапазона.

Таблицу Excel можно найти здесь:

https://hacksterio.s3.amazonaws.com/uploads/document/file/79166/BAC_Lookup_Table.xls

Код

https://github.com/ShawnHymel/DIY_Breathalyzer

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 373



          

Радио для всех© 2024