Главная » Автоматика в быту
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Комнатный монитор микроклимата

Не буду долго расписывать вред «спёртого» воздуха, нормы температуры, влажности и содержания углекислого газа в жилых помещениях, всё уже описано до меня, и значительно подробнее. Полюбопытствовать можно, например, тут или поискать ещё, в Сети достаточно информации.

В Сети уже есть несколько конструкций аналогичными функциями, но все по разным причинам меня не устроили (слабая информативность, излишества вроде 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-20R1 Поиск в FivelВ блокнот
R2, R5, R9 Резистор300R3 Поиск в FivelВ блокнот
R3, R10 Резистор1M2 Поиск в FivelВ блокнот
R4 Резистор750R1 Поиск в FivelВ блокнот
R6 Резистор
7.5 кОм
1 Поиск в FivelВ блокнот
R7, R8 Резистор
10 кОм
2 Поиск в FivelВ блокнот
C1, C4 Танталовый конденсатор10uF 10v2 Поиск в FivelВ блокнот
C2 Танталовый конденсатор150uF 10v1 Поиск в FivelВ блокнот
C3, C5, C7 Керамический конденсатор100nF3 Поиск в FivelВ блокнот
C6 Керамический конденсатор1uF1 Поиск в FivelВ блокнот
C8, C9 Керамический конденсатор10-18pF2 Поиск в FivelВ блокнот
ZQ1 Пьезодинамик1 Поиск в FivelВ блокнот
QZ1 Кварцевый резонатор32.768kHz1 Поиск в FivelВ блокнот
QZ2 Кварцевый резонатор12MHz1 Поиск в FivelВ блокнот
D1, D7 Выпрямительный диод
1N4007
2 Поиск в FivelВ блокнот
D2, D3 Диод ШотткиSS142 Поиск в FivelВ блокнот
D4, D5, D6 Светодиод 3мм3 Поиск в FivelВ блокнот
Q1, Q2 MOSFET-транзистор
2N7002
2 Поиск в FivelВ блокнот
U1 МК AVR 8-бит
ATmega128A
1 Поиск в FivelВ блокнот
LCD1 LCD-дисплейILI93411 Без тачскрина, с SPI, диагональ любаяПоиск в FivelВ блокнот
U2 ДатчикBMP1801 Поиск в FivelВ блокнот
U3 ДатчикMH-Z191 Поиск в FivelВ блокнот
U5 ДатчикDHT-221 Поиск в FivelВ блокнот
U4 Линейный регулятор
AMS1117-3.3
1 Поиск в FivelВ блокнот
U6 Контроллер заряда LI-PoLTC4054-4,21 Поиск в FivelВ блокнот
B1 Вентилятор1 Поиск в FivelВ блокнот
K1 Реле5v1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 09.10.2016 0 8
Я собрал 2 7
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 7 чел.

Комментарии (63) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
BARS_ #
Микроконтроллер ATmega128, просто потому, что дешевый и не стесняет по месту во flash.
Посмотрите в сторону STM32, гораздо дешевле, быстрее и еще меньше стесняют в объеме флеш. А так классный проект. На мой взгляд, Wi-Fi был бы не лишним.
Ответить
+2

[Автор]
MadOrc #
Смотрю. Но для других проектов. Тут просто написал - установил работать - забыл, благо наработок по AVR очень много и все ньюансы давно известны. Эти меги сейчас менее $1 штука, чего бы и не использовать в чём-нибудь простом. А увлекательный секас с HAL-ом, когда большинство проектов в Сети, которые можно изучить на SPL, т.е. абсолютно бесполезны, ещё в процессе. Портировать приходится почти всё, даже те же библиотеки для дисплея. Но и начинать что-то новое на ушедшем в прошлое SPL считаю неразумно.
Отредактирован 29.09.2016 09:16
Ответить
0
BARS_ #
Ни HAL и SPL совсем не нужны. Все и без них пишется, при этом работает куда лучше. Все равно в пределах серии код и без них совместим. А при переходе с серии на серию и с HAL/SPL придется код переделывать. А накручено там такого, что ужас. Единственно, сложные интерфейсы типа USB без HAL/SPL настроить крайне проблематично.
Ответить
+1

[Автор]
MadOrc #
Хм. Посмотрел краем глаза для примера ваши Nixie Clock "King Size", там как раз использовано SPL (я имею ввиду в контексте не "библиотечных процедур" а, как "драйвер" обвязки железа). Или вы о чём?
Ответить
0
BARS_ #
Нет у меня там SPL, все напрямую настраиваю =) Единственно, I2C через SPL сделано. В другом проекте FSMC через SPL делал, там и с ним куча настроек.
Ответить
+1

[Автор]
MadOrc #
Думаю есть, из эклипса. Файл "stm32f10x.h" - я про это, у HAL эти файлы уже отличаются. А с регистрами и портами да, напрямую всё делаете.
Но мне не подойдёт, сильно много всего надо от усб до календаря. На серии "L".
Жаль, думал какой-то более простой способ знаете, который я проглядел. Все равно HAL грызть. Разберусь со временем, больше наработок = быстрее разработка. :)
Ответить
0
BARS_ #
Это не совсем SPL) Я в проекте Бортовой компьютер для ВАЗ2110 полностью все настраивал руками, кроме FSMC. (Порты, часы, SPI, UART, DAC, ADC, пачку таймеров). Вся настройка вынесена в отдельный файлик и не загромождает код. На самом деле достаточно один раз написать функции инита переферии, а потом использовать по мере надобности). HAL еще не пробовал, но по отзывам он не лучше SPL
Отредактирован 29.09.2016 12:34
Ответить
0

[Автор]
MadOrc #
За идею спасибо, возможно в проектах где не нужны функции "тяжёлых" библиотек так и быстрее будет.
HAL в том виде как использую (CubeMX+CooCox) в принципе удобен, но "дьявол в деталях" - шаг влево/вправо от строго стандартного использования и начинаем искать откуда чудеса полезли.
Ответить
0
BARS_ #
Я в Eclipse пишу. CubeMX юзаю только чтобы поглядеть, какой МК что содержит в себе
Ответить
0
Mih_Mih #
Проект хороший, автору за него большое спасибо! Тоже имеется нечто подобное у меня, правда на датчик CO2 не решился, дороговат он. Ну а так, еще раз повторюсь, ШИК, БЛЕСК, КРАСОТА!! :)
Ответить
+1

[Автор]
MadOrc #
Спасибо. Надеюсь пригодится кому-нибудь.
А датчику даже при цене от $23 (в статье при размещении видимо пошутили, нет их за $15) альтернатив нет, если хочется точный и калиброванный с завода.
С другой стороны готовые серийные CO2-метры ещё дороже, и функционал у них беднее.
Ответить
0
BARS_ #
Ваш девайс бы развить и приспособить у автоматическому управлению проветриванием дома =)
Ответить
0

[Автор]
MadOrc #
Кто будет делать - может привинтить. Исходники приложены.
Из ньюансов: MH-Z19 обязательно питать 4-5в, а вот логика у него 3.3в. Раз в секунду где-то он "подогревает себя" и кратковременно требует около 100мА по питанию.
Остальное всё стандартно, МК общается с датчиком CO2 по асинхронному USART(кстати только поэтому и поставил кварц тактирования МК, у внутреннего RC-тактирования частота "плывет" с температурой, и скорость держится неточно).
Отредактирован 29.09.2016 18:17
Ответить
0
Роман #
Я так понял эту штуковину можно подключить к простенькому рекуператору и получится типа климатическая станция? Как только рынок наполнился металлопластиковыми окнами - вопрос вентиляции стал очень актуальным.
Ответить
+1

[Автор]
MadOrc #
Да. Алгоритм следующий:
1. При достижении CO2 2000ppm(настраивается в исходнике, мало ли сколько лично Вы сочтёте опасным и достойным старта вентиляции) включает реле которое коммутирует рекуператор/вентилятор/сервопривод форточки.
2. Если уровень упал ниже 2000, ждёт ещё 40секунд(тоже настраивается в исходнике) и отключает реле - вентиляция прекращается/окно закрывается до следующего "превышения" по п 1.
Ответить
0
Максим #
Печатная плата изготавливалась методом фоторезиста?
Ответить
0

[Автор]
MadOrc #
Нет, ЛУТ. Не вижу пользы от фоторезиста, лишняя трата времени и сил, дорожки до 0.1мм включительно и так ЛУТом делаются без брака, а маска не нужна для штучных любительских работ. Лужение "Жидким оловом".
Отредактирован 02.10.2016 19:45
Ответить
0
Shel #
А зачем нужен вентилятор в корпусе и еще такой вопрос, можно ли сюда поставить счетчик Гейгера еще?
Ответить
0

[Автор]
MadOrc #
Вентилятор периодически подаёт воздух для его анализа, поскольку датчики внутри. Если вынести DHT-22 и MH-Z19 наружу - можно и без вентилятора, но по-моему так и аккуратнее и датчики целее будут.
Счётчик гейгера не предусматривал, и так дома около 15 разных дозиметров, можете сами доработать, если вам нужно :)
Ответить
0
Shel #
Мне казалось что вентилятор будет охлаждать датчик температуры
Ответить
0

[Автор]
MadOrc #
Точнее будет приводить температуру датчика температуры к температуре окружающего воздуха, что и требуется для измерения. DHT-22 не греется.
Вентилятор 12-вольтовый, но работает на малых оборотах от 5в и включается раз в 5 секунд на секунду, поэтому абсолютно не греется и не вносит погрешностей по температуре.
Ответить
0
Shel #
И последний вопрос к вам, я в исходники поменял срабатывание вентилятора вытяжки с 2000 на 1000PPR и скомпилировал и файл прошивки получился примерно на 300 строк больше, чем ваш нех файл, почему? Ошибок нет.
Ответить
0

[Автор]
MadOrc #
Могу предположить только, что у вас в атмел студии стоит конфигурация сборки debug, а не release, и/или отключена оптимизация в настройках проекта. У меня -Os
Ответить
0
Shel #
СПС, теперь все нормал, стоял debugи тогда напоследок, динамик пищит постоянно когда превышен порог?
Ответить
0

[Автор]
MadOrc #
Нажатие на любую кнопку отключает писк на:
#define ALARM_SNOOZE_MIN 5 // после нажатия на кнопку не пищать тревогой ALARM_SNOOZE_MIN минут
Если по истечении этого времени порог всё ещё превышен - снова запищит, и снова можно прекратить писк любой кнопкой на то же время и так далее.
Ну или повысить порог звуковой тревоги или отключить её кнопкой.
Отредактирован 08.10.2016 20:59
Ответить
0
Shel #
А что означает Fan от R2 и 16 ножки контроллера, к чему они?
Ответить
0

[Автор]
MadOrc #
LOL Друг к другу. Серьёзно. Чтобы не вести линии сквозь всю схему
Ответить
+1
Yanshun #
Шикарный проект получился, буду потихоньку парт лист делать и буду обдумывать узлы, может печатку под DIP переведу, с смд у меня все плохо.
Респект за такое устройство автору.
Изучая схему и наткнулся на возможную ошибку в подключении транзистора Q2, согласно схематики, дело в том что при таком включении через внутренний диод минус пройдет и включит реле, постоянно, а Q1 изображен верно.
Может я накручиваю себе.
Ответить
+1

[Автор]
MadOrc #
Спасибо. Опечатки в схеме исправлены.
Под DIP насколько мне известно 128х атмег не существует, придётся вам тогда портировать код на другой МК.
Ответить
0
Shel #
А резисторы R1 и R6 как подбирать?
Ответить
0

[Автор]
MadOrc #
R1 - яркость подсветки дисплея(ток светодиодов подсветки), зависит от диагонали, производителя. К примеру на 2,4 дюйма - 10Ом было оптимально, иначе подсветка грелась, на 2,8 - 5 ом. Учитывайте ещё наличие резистора в этой цепи на плате модуля дисплея.
R6 - ток зарядки аккумулятора, поскольку он у меня скорее как резервное питание, 99% времени на сетевом, то 7,6К - 100мА, чтобы продлить жизнь аккумулятору. Если по каким-то причинам требуется быстро подзаряжаться - можно поставить 2к = 500мА (смотрите даташит на LTC4054).
Ответить
0
Shel #
А на собранной плате можно прошивать контролер или лучше его отдельно?
Ответить
+1

[Автор]
MadOrc #
На плате и можно и нужно, там уже предусмотрен стандартный разъём для программатора. Справа от дисплея, его на всех фото видно. :)
Ответить
0
Shel #
Ваш проект просто гениальный! Ничего похожего из покупного я не встречал, вот если бы еще добавить счетчик Гейгера, сам не могу так как нет таких знаний в программировании.
Ответить
0
Shel #
А что у вас на плате за перемычка из красного провода от диода и аккумулятора?
Ответить
0

[Автор]
MadOrc #
Ошибка разводки платы. При публикации учтено и в плате к статье ошибок нет.
Отредактирован 14.10.2016 13:19
Ответить
0
Shel #
А вот такой контроллер подойдет ATmega128A-AU? Что-то я запарился с ними, где пишут питание от 2.7 В, где от 4.5 вольт.
Ответить
0

[Автор]
MadOrc #
"ATmega128" - модель, "A"-доработанная и улучшенная версия(не-А сейчас практически не встретишь), "-AU" - малоинтересные ньюансы о наличии свинца и корпусе.
Да, подойдёт.
Ответить
0
Shel #
Так там питание вроде бы от 4.5 вольт
Ответить
+1

[Автор]
MadOrc #
В современной элементной базе нет никаких "может быть" или"вроде бы". Не ленимся, открываем даташит (основной документ от производителя, который исключает любые неточности), читаем: 128А и 128L - 2.7-5.5v, 128 - 5v, если порыться глубже - есть еще зависимость возможной частоты тактирования от питания, но эти ньюансы вам вряд ли интересны, при 3,3в 12Мгц не проблема. Поэтому, как уже написал чуть выше - "Да, подойдёт".
Отредактирован 16.10.2016 09:51
Ответить
0
Shel #
А вот если прошивать контролер на готовой плате, аккумулятор надо отключать?
Ответить
0

[Автор]
MadOrc #
Зачем?
По схеме и плате же видно, что не мешает.
Ответить
0
Shel #
Программатор тоже со своим питанием
Ответить
0
RDX #
Проект интересный, но хотелось бы уточнить:
1. Какой ток потребления устройства ?
2. Время опроса датчиков ?
3. Подсветка горит постоянно или можно отключать?
Ответить
0

[Автор]
MadOrc #
1. Примерно 100мА, раз в секунду еще датчик CO2 дает пики +100мА(он так себя "подогревает") ну и +ток зарядки аккумулятора, если он не заряжен.
Из практики: при аккумуляторе 520мАч где-то час-полтора автономной работы даёт.
2. CO2 - раз в 10 секунд, чаще он не любит(может ерунду отдавать), прочие датчики - раз в секунду.
3. Постоянно, это задумано и сделано как настольный а не носимый прибор.
Ответить
0
boba.s #
Возможно ли поправить прошивку под датчик угарного газа?
Ответить
0

[Автор]
MadOrc #
Места в меге много, не вижу препятствий. Оно тоже в PPM насколько я знаю, только нормы другие.
Я переделывать не буду, мне это не нужно, а сами можете переписать.
Ответить
0
boba.s #
Ну если беы мог то не спрашивал. Может никто откликнется.
Ответить
0

[Автор]
MadOrc #
Собирать CO детектор по-моему вообще бессмысленно. Обосновываю:
1. Не нужны CO ни графики ни логи, если его содержание растёт - что-то очень сильно не так, и надо срочно принять меры. Т е. Нужен именно пороговый детектор с сиреной.
2. Этот самый пороговый с сиреной на Али $7 включая доставку.
Единственный смысл делать самому - ради самого процесса, х"поковыряться" в коде и железе, ну а это уже только сами.
Ответить
0
Shel #
В большинстве программ для прошивок микроконтроллера нет Атмеги 128а, а есть Атмега 128, есть ли разница или все равно? Так как прошиваю первый раз
Ответить
0

[Автор]
MadOrc #
Для программатора разницы нет.
Сначала шить hex, затем eep(в этой конструкции eep можно не шить, не используется) , затем фьюзы.
С фьюзами аккуратно, SPIEN никогда не трогайте. Проще всего ориентироваться по суммарным hex значениям, совпадают - значит все "галочки" выставлены верно.
Отредактирован 27.11.2016 10:21
Ответить
0
Shel #
А какой у вас стоит пьезодинамик, а то много разных излучателей звука и на разное напряжение, не знаю какой именно брать?
Ответить
0

[Автор]
MadOrc #
Давно не было времени заглянуть/ответить.
Если ещё актуально - любой, хоть советский ЗП-*. Больше диаметр/лучше резонаторная камера(если есть) = громче звук.
Насколько я себе знаю, у них нет как такового рабочего напряжения, по сути это керамический конденсатор способный работать мембраной.
Ноги этой меги "держат" без проблем 25 мА в пике, хватает с запасом на что угодно из пьезодинамиков.

PS Не путайте с "пищалками" на основе катушки, магнита и металлической мембраны, у тех действительно есть рабочее напряжение. Здесь нужен пьезодинамик - диск из кварца/керамики с 2мя напылёнными контактами.
Отредактирован 22.12.2016 22:48
Ответить
0
Shel #
У вас в исходниках есть файл Eeprom, его нужно тоже вшивать?
Ответить
0
Andrnet #
Супер проект, но MadOrc очень бы хотелось бы удивить еще температуру за "бортом". Я заказал все детали с али. Но очень бы хотелось дополнить проект еще датчиком на 18b20. Цены бы не было.
Ответить
0

[Автор]
MadOrc #
Всё в Ваших руках, дописывайте\переделывайте.
Нужно всего лишь переделать экран с графиками, чтобы куда-то воткнуть еще 1 датчик, добавить в код любую библиотеку DS-ки, ну и привинтить что-нить беспроводное, чтобы проводами не обматываться.
Лично мне это в рамках данного проекта неинтересно. На мой вкус вполне достаточно данных в рамках выполняемой здесь задачи.
Ответить
0
александр #
Что может ограничивать скорость SPI в вашей библиотеки под дисплей?
Я ее использую для своего проекта + атмега 328
Ответить
0

[Автор]
MadOrc #
Мои настройки, не?
Скорость более чем достаточна, хватает и на красивую отрисовку "сканированием" и на всякую визуальную ерунду.
Обычно скорость СПИ ставят тактовая/2, но можно и шустрее если такты МК ничем полезным не заняты,и вопрос экономии заряда аккума не стоит.
А если уж "пилить" свою библиотеку под дисплей для конкретного проекта, можно много на чём сэкономить, например не дёргать ногу CS или ногу D/C лишний раз, когда тебе, как программисту видно, что ничего лишнего в шину не пойдёт сейчас. А такие "дрыги"дорого по тактам выходят, при ручной оптимизации можно и раза в 2-3 общение с дисплеем при той же тактовой частоте шустрее сделать.
Ответить
0
enderov #
Повторил схему. Работает отлично. Одно не привычно, давление в hPa. Переведите Пожалуйста в мм р. ст.
Ответить
0

[Автор]
MadOrc #
Поймите правильно, но я не буду перепиливать. Пользуюсь погодами от wetter и wunderground, мне гектопаскали удобнее.
А ковырять для того, что мне не нужно не хочу. Уже в работе другие проекты, с этим закончил.
Исходники есть - переделайте по свои нужды.
Ответить
+1
enderov #
Не могу, так как не понимаю что делать с этими исходниками.
Ответить
0
Andrnet #
MadOrc скажите пожалуйста в каких строчках исходника давление считается? Очень хочется привычные мм р. ст. увидеть. Я так понимаю, что до вывода на экран эту переменную надо умножить на 0.75006375541921
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Радиореле 220В
Радиореле 220В
Сатфайндер Паяльник с регулировкой температуры
вверх