Не буду долго расписывать вред «спёртого» воздуха, нормы температуры, влажности и содержания углекислого газа в жилых помещениях, всё уже описано до меня, и значительно подробнее. Полюбопытствовать можно, например, тут или поискать ещё, в Сети достаточно информации.
В Сети уже есть несколько конструкций аналогичными функциями, но все по разным причинам меня не устроили (слабая информативность, излишества вроде wifi, приардуинивание «на соплях», связь с датчиком по pwm и так далее), поэтому, сделал свой вариант.
Устройство чисто утилитарное, создавалось для постоянного использования в комнате, где спит ребёнок, с возможностью отключить от сети и использовать в другом помещении при необходимости.
В конструкции также заложена возможность подключения вентилятора или сервопривода форточки/окна, для автоматического проветривания помещения при превышении порога содержания CO2.
Использованы датчики:
DHT-22 (AM2302) – влажность и температура
BMP180 – атмосферное давление
MH-Z19 – уровень CO2, датчик дорогой (~15$ на AliExpress), но точный и дающий достоверные данные
Дисплей – китайский "ILI9341" с SPI, без тачскрина, подойдёт любой диагонали из этой серии, я использовал 2.8` - недорого и читабельно.
Микроконтроллер ATmega128, просто потому, что дешевый, их есть под рукой и не стесняет по месту во flash.
Схема:
Основной экран(он же единственный в этой конструкции):
Добавлю, что текстовая информация о качестве воздуха("Свежий воздух" на скриншоте выше) взята из данных таблицы "норм" по датчику MH-Z19, вот этой:
и выводится соответственно измеренному уровню углекислого газа.
Этапы сборки:
Готовый прибор:
В программе есть ряд параметров, которые настраиваются 1 раз под конкретную роль устройства, они находятся в начале кода в main.c и откомментированы. Исходники приложены к статье, написаны под Atmel Studio 7, каждый может сам переделать убрать/добавить функционал «под себя» в любых некоммерческих целях, свободного места во флэше МК ещё очень много.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
R1 | Резистор | 2-20R | 1 | Поиск в магазине Отрон | ||
R2, R5, R9 | Резистор | 300R | 3 | Поиск в магазине Отрон | ||
R3, R10 | Резистор | 1M | 2 | Поиск в магазине Отрон | ||
R4 | Резистор | 750R | 1 | Поиск в магазине Отрон | ||
R6 | Резистор | 7.5 кОм | 1 | Поиск в магазине Отрон | ||
R7, R8 | Резистор | 10 кОм | 2 | Поиск в магазине Отрон | ||
C1, C4 | Танталовый конденсатор | 10uF 10v | 2 | Поиск в магазине Отрон | ||
C2 | Танталовый конденсатор | 150uF 10v | 1 | Поиск в магазине Отрон | ||
C3, C5, C7 | Керамический конденсатор | 100nF | 3 | Поиск в магазине Отрон | ||
C6 | Керамический конденсатор | 1uF | 1 | Поиск в магазине Отрон | ||
C8, C9 | Керамический конденсатор | 10-18pF | 2 | Поиск в магазине Отрон | ||
ZQ1 | Пьезодинамик | 1 | Поиск в магазине Отрон | |||
QZ1 | Кварцевый резонатор | 32.768kHz | 1 | Поиск в магазине Отрон | ||
QZ2 | Кварцевый резонатор | 12MHz | 1 | Поиск в магазине Отрон | ||
D1, D7 | Выпрямительный диод | 1N4007 | 2 | Поиск в магазине Отрон | ||
D2, D3 | Диод Шоттки | SS14 | 2 | Поиск в магазине Отрон | ||
D4, D5, D6 | Светодиод 3мм | 3 | Поиск в магазине Отрон | |||
Q1, Q2 | MOSFET-транзистор | 2N7002 | 2 | Поиск в магазине Отрон | ||
U1 | МК AVR 8-бит | ATmega128A | 1 | Поиск в магазине Отрон | ||
LCD1 | LCD-дисплей | ILI9341 | 1 | Без тачскрина, с SPI, диагональ любая | Поиск в магазине Отрон | |
U2 | Датчик | BMP180 | 1 | Поиск в магазине Отрон | ||
U3 | Датчик | MH-Z19 | 1 | Поиск в магазине Отрон | ||
U5 | Датчик | DHT-22 | 1 | Поиск в магазине Отрон | ||
U4 | Линейный регулятор | AMS1117-3.3 | 1 | Поиск в магазине Отрон | ||
U6 | Контроллер заряда LI-Po | LTC4054-4,2 | 1 | Поиск в магазине Отрон | ||
B1 | Вентилятор | 1 | Поиск в магазине Отрон | |||
K1 | Реле | 5v | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- AirTester_FW.zip (345 Кб)
- AirTester_PCB.zip (87 Кб)
- AirTester_SRC.zip (351 Кб)
Комментарии (111) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
[Автор]
Но мне не подойдёт, сильно много всего надо от усб до календаря. На серии "L".
Жаль, думал какой-то более простой способ знаете, который я проглядел. Все равно HAL грызть. Разберусь со временем, больше наработок = быстрее разработка. :)
[Автор]
HAL в том виде как использую (CubeMX+CooCox) в принципе удобен, но "дьявол в деталях" - шаг влево/вправо от строго стандартного использования и начинаем искать откуда чудеса полезли.
[Автор]
А датчику даже при цене от $23 (в статье при размещении видимо пошутили, нет их за $15) альтернатив нет, если хочется точный и калиброванный с завода.
С другой стороны готовые серийные CO2-метры ещё дороже, и функционал у них беднее.
[Автор]
Из ньюансов: MH-Z19 обязательно питать 4-5в, а вот логика у него 3.3в. Раз в секунду где-то он "подогревает себя" и кратковременно требует около 100мА по питанию.
Остальное всё стандартно, МК общается с датчиком CO2 по асинхронному USART(кстати только поэтому и поставил кварц тактирования МК, у внутреннего RC-тактирования частота "плывет" с температурой, и скорость держится неточно).
[Автор]
1. При достижении CO2 2000ppm(настраивается в исходнике, мало ли сколько лично Вы сочтёте опасным и достойным старта вентиляции) включает реле которое коммутирует рекуператор/вентилятор/сервопривод форточки.
2. Если уровень упал ниже 2000, ждёт ещё 40секунд(тоже настраивается в исходнике) и отключает реле - вентиляция прекращается/окно закрывается до следующего "превышения" по п 1.
[Автор]
[Автор]
Счётчик гейгера не предусматривал, и так дома около 15 разных дозиметров, можете сами доработать, если вам нужно :)
[Автор]
Вентилятор 12-вольтовый, но работает на малых оборотах от 5в и включается раз в 5 секунд на секунду, поэтому абсолютно не греется и не вносит погрешностей по температуре.
[Автор]
[Автор]
Ну или повысить порог звуковой тревоги или отключить её кнопкой.
[Автор]
Респект за такое устройство автору.
Изучая схему и наткнулся на возможную ошибку в подключении транзистора Q2, согласно схематики, дело в том что при таком включении через внутренний диод минус пройдет и включит реле, постоянно, а Q1 изображен верно.
Может я накручиваю себе.
[Автор]
Под DIP насколько мне известно 128х атмег не существует, придётся вам тогда портировать код на другой МК.
[Автор]
R6 - ток зарядки аккумулятора, поскольку он у меня скорее как резервное питание, 99% времени на сетевом, то 7,6К - 100мА, чтобы продлить жизнь аккумулятору. Если по каким-то причинам требуется быстро подзаряжаться - можно поставить 2к = 500мА (смотрите даташит на LTC4054).
[Автор]
[Автор]
[Автор]
Да, подойдёт.
[Автор]
[Автор]
По схеме и плате же видно, что не мешает.
1. Какой ток потребления устройства ?
2. Время опроса датчиков ?
3. Подсветка горит постоянно или можно отключать?
[Автор]
Из практики: при аккумуляторе 520мАч где-то час-полтора автономной работы даёт.
2. CO2 - раз в 10 секунд, чаще он не любит(может ерунду отдавать), прочие датчики - раз в секунду.
3. Постоянно, это задумано и сделано как настольный а не носимый прибор.
[Автор]
Я переделывать не буду, мне это не нужно, а сами можете переписать.
[Автор]
1. Не нужны CO ни графики ни логи, если его содержание растёт - что-то очень сильно не так, и надо срочно принять меры. Т е. Нужен именно пороговый детектор с сиреной.
2. Этот самый пороговый с сиреной на Али $7 включая доставку.
Единственный смысл делать самому - ради самого процесса, х"поковыряться" в коде и железе, ну а это уже только сами.
[Автор]
Сначала шить hex, затем eep(в этой конструкции eep можно не шить, не используется) , затем фьюзы.
С фьюзами аккуратно, SPIEN никогда не трогайте. Проще всего ориентироваться по суммарным hex значениям, совпадают - значит все "галочки" выставлены верно.
[Автор]
Если ещё актуально - любой, хоть советский ЗП-*. Больше диаметр/лучше резонаторная камера(если есть) = громче звук.
Насколько я себе знаю, у них нет как такового рабочего напряжения, по сути это керамический конденсатор способный работать мембраной.
Ноги этой меги "держат" без проблем 25 мА в пике, хватает с запасом на что угодно из пьезодинамиков.
PS Не путайте с "пищалками" на основе катушки, магнита и металлической мембраны, у тех действительно есть рабочее напряжение. Здесь нужен пьезодинамик - диск из кварца/керамики с 2мя напылёнными контактами.
[Автор]
Нужно всего лишь переделать экран с графиками, чтобы куда-то воткнуть еще 1 датчик, добавить в код любую библиотеку DS-ки, ну и привинтить что-нить беспроводное, чтобы проводами не обматываться.
Лично мне это в рамках данного проекта неинтересно. На мой вкус вполне достаточно данных в рамках выполняемой здесь задачи.
Сам заинтересован проектом, собрал бы, но хотелось бы ещё беспроводной датчик наружней температуры, к сожалению сам не компетентен в программировании...могу только спаять...
Девайс работает, давление так же показывает в попугаях, а так все норм.
Я ее использую для своего проекта + атмега 328
[Автор]
Скорость более чем достаточна, хватает и на красивую отрисовку "сканированием" и на всякую визуальную ерунду.
Обычно скорость СПИ ставят тактовая/2, но можно и шустрее если такты МК ничем полезным не заняты,и вопрос экономии заряда аккума не стоит.
А если уж "пилить" свою библиотеку под дисплей для конкретного проекта, можно много на чём сэкономить, например не дёргать ногу CS или ногу D/C лишний раз, когда тебе, как программисту видно, что ничего лишнего в шину не пойдёт сейчас. А такие "дрыги"дорого по тактам выходят, при ручной оптимизации можно и раза в 2-3 общение с дисплеем при той же тактовой частоте шустрее сделать.
[Автор]
А ковырять для того, что мне не нужно не хочу. Уже в работе другие проекты, с этим закончил.
Исходники есть - переделайте по свои нужды.
[Автор]
[Автор]
[Автор]
Резисторы и конденсаторы обычно ставлю 805 если места на плате много, точнее можно посмотреть в SL на плате.
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Насчёт автономной работы - такой задачи я не ставил, это скорее бонус, по задумке это просто бэкап при пропадании света, или "померить в другой комнате и вернуть обратно". Нормально работает на аккумуляторе 20-40 минут, потом (когда падает напряжение) начинает врать датчик co2, ему ниже ~4в недостаточно для разогрева,
А вот DHT до 3.2в должен нормально работать, возможно брак.
[Автор]
Процедура калибровки вроде есть, гуглите, если надо. Я не делал, прибор с момента сборки работает по-прежнему точно и стабильно.
[Автор]
На всё остальное показывает ошибки. Даже счётчик времени не запускается.
Впрочем, есть подозрение на контроллер - он б/у.