
На микроконтроллере сделать такой увлажнитель было бы просто: таймер, опрос датчика, логика включения — все алгоритмы управления и обработки сигналов реализуются программно.
В этом проекте я решил сознательно отказаться от МК и проверить, можно ли реализовать ту же функциональность на аналоговых и дискретных компонентах, без единой строки кода.
Такой подход потребовал больше времени и попыток при отладке, а также более тщательной проработки схемы. Однако результат — аналоговое устройство с предсказуемым поведением, полностью соответствующее поставленной задаче.
Краткий функционал
Увлажнитель реализует следующий набор функций:
Таймер работы — три фиксированных интервала: 30 минут, 1 час и 2 часа.
Автоматическое поддержание влажности — устройство работает до достижения заданного уровня влажности воздуха.
RGB-подсветка корпуса — декоративная подсветка с возможностью изменения цвета.
Защита от отсутствия воды — автоматическое отключение и индикация при обнаружении пустого резервуара.
Принципиальная схема

В устройстве реализована трёхуровневая система питания:
Силовая часть (ультразвуковая мембрана и вентилятор) питается от 24 В непосредственно от внешнего источника.
Логика (LM393, LM331, CD4040BM, CD4071BE, светодиоды) питается от 12 В через линейный стабилизатор MC78M12BDTG. От более эффективного импульсного преобразователя в данной схеме я отказался для исключения ВЧ-помех, которые могли бы внести погрешности в работу аналоговых узлов.
Таймер TLC555 и датчик HS1101 питаются от 5 В через линейный стабилизатор LD1117-5.0. Датчик допускает питание до 10 В, однако при напряжении выше 6 В микросхема TLC555 выходила из строя, что определило выбор данного уровня.
Основные узлы схемы
Таймер
Принцип работы: RC-цепочка задаёт время зарядки конденсатора. Пока напряжение на конденсаторе ниже порогового уровня (7,5 В), на выходе компаратора присутствует логическая «1». После достижения порога выход переключается в «0». На основе формулы τ = RC рассчитаны номиналы резисторов для интервалов 30 минут, 1 час и 2 часа.
После истечения времени любого из таймеров необходимо разрядить конденсатор. В 1 положении переключателя первая группа контактов заземляет верхнюю обкладку конденсатора, разряжая его до нуля. Чтобы одновременно установить на выходе компаратора логический ноль, использован двухгруппный галетный переключатель: вторая группа контактов подаёт на неинвертирующий вход компаратора +12 В, что соответствует нулю на выходе. Таким образом, в первом положении переключателя одновременно происходит разряд конденсатора и выключение нагрузки.
Выбор рабочей точки: порог 7,5 В соответствует t = 1τ. На этом участке рост напряжения близок к линейному. На рисунке представлена кривая заряда конденсатора. Показано сравнение временной ошибки при использовании порога в области 1τ (7,5 В) и в области 3τ (11,4 В). Пунктирными линиями условно обозначен разброс напряжения на обкладках — не реальные помехи, а наглядная иллюстрация.

В области 1τ разброс напряжения проецируется на ось времени в небольшой интервал Δt₁ — момент переключения стабилен. В области 3τ тот же разброс даёт значительно больший интервал Δt₂, поскольку на пологом участке кривой небольшому изменению напряжения соответствует большое изменение времени.
Чем правее задан порог времени, тем медленнее меняется напряжение на конденсаторе и тем менее стабилен момент срабатывания: шумы и помехи накладываются на экспоненциальный рост, вызывая временной разброс.
Однако решение данной проблемы не идёт в сравнение со следующей. Открыв даташит на применяемый конденсатор, находим параметр «Capacitance Tolerance» — разброс ёмкости, составляющий ±20%. Соответственно, даже при корректной сборке временной интервал будет плавать из-за разброса номинала самого конденсатора. Такова особенность использования электролитических конденсаторов в RC-цепочках
Измерение влажности
В качестве чувствительного элемента выбран емкостный датчик влажности HS1101LF, который представляет собой конденсатор переменной ёмкости. Используя формулу плоского конденсатора можно понять принцип изменения емкости:
где:
— ёмкость датчика
— относительная диэлектрическая проницаемость материала.
При повышении влажности молекулы воды (εᵣ ≈ 80) проникают в чувствительный материал датчика, диэлектрическая проницаемость εᵣ увеличивается, что ведёт к росту ёмкости. При снижении влажности процесс обратим — ёмкость уменьшается. Диапазон изменения ёмкости: ≈161 пФ при 0% RH → ≈193 пФ при 100% RH.
Для преобразования изменения ёмкости в электрический сигнал датчик включён в мультивибратор на таймере TLC555. На выходе формируется частота, зависящая от влажности окружающей среды. Ниже приведена зависимость выходной частоты от относительной влажности (данные из документации на датчик).

Поскольку изменение частоты относительно невелико, необходимо точно фиксировать эти изменения. Для этой задачи выбран прецизионный преобразователь частоты в напряжение LM331, который обеспечивает линейность преобразования ±0,01% и низкий температурный дрейф. Это позволяет достоверно преобразовывать малые изменения частоты в стабильное выходное напряжение для последующей обработки компаратором. Частотный диапазон схемы (от 1 Гц до 10 кГц) полностью перекрывает выходной сигнал датчика.
Преобразование частоты в напряжение
LM331 преобразует частоту в напряжение. Входной импульс запускает внутренний таймер, длительность которого задаётся времязадающей цепочкой R20-C2. На это фиксированное время к конденсатору фильтра C3 подключается источник стабильного тока. Чем выше частота входных импульсов, тем чаще поступают порции тока в C3, и тем выше среднее напряжение на этом конденсаторе, которое и является выходным сигналом преобразователя.
Далее это напряжение подаётся на компаратор, где сравнивается с опорными уровнями, заданными резистивными делителями через галетный переключатель. Пороговое напряжение подаётся на инвертирующий вход, поскольку с ростом влажности выходное напряжение LM331 падает. Когда напряжение опускается ниже порога, компаратор включает увлажнитель; при достижении целевой влажности напряжение превышает порог — увлажнитель отключается.
В первом положении переключателя на инвертирующий вход компаратора подаётся +12 В — нагрузка отключена (управление по влажности не требуется). В положениях 2–5 заданы пороги влажности: 20%, 30%, 40% и 50% соответственно.
В версии платы 1.3 удалось добиться полного совпадения выходного напряжения преобразователя с расчётными значениями. Расчёт выполнялся по формуле из даташита LM331 для преобразователя частота–напряжения:
В типовых примерах из даташита часто используют значение В (внутреннее опорное напряжение микросхемы), однако согласно электрическим характеристикам LM331 типичное значение
составляет
В. Применение в расчётах именно этого значения обеспечило точное соответствие теории и практики.
Расчет при влажности 40% ( Гц):
Практические измеренные значения совпадает на уровне 10-20 мВ

Чтобы не перегружать страницу множеством фотографий, видео со всеми измерениями доступно по ссылке Rutube, где также демонстрируется, что включение нагрузки не влияет на показания преобразователя.
Гистерезис компаратора
Напряжение на выходе LM331 изменяется плавно пропорционально влажности. При медленном пересечении порога переключения это может вызвать дребезг компаратора LM393, поэтому для стабилизации его работы в схему введён гистерезис. Он реализован цепью положительной обратной связи через резистивный делитель R25 (49,9 кОм) и R28 (10 МОм) между выходом и входом. Гистерезис предотвращает многократные ложные переключения при медленном изменении сигнала или наличии шумов. Учитывая, что пороговые напряжения компаратора находятся в диапазоне 8,6–9,0 В, а разница между соседними уставками составляет около 150 мВ, расчётный гистерезис выбран равным 60 мВ — этого достаточно для подавления помех, но не мешает различию соседних уровней влажности
RGB подсветка
Управление RGB-подсветкой реализовано на 12-разрядном двоичном счётчике CD4040. Микросхема последовательно подсчитывает импульсы, поступающие на её тактовый вход, и меняет состояние выходов в двоичном коде. Три младших выхода через транзисторные ключи управляют красным, зелёным и синим каналами светодиода с общим анодом.

Переключение режимов выполняется одной кнопкой, подключённой к тактовому входу. По спаду импульса с кнопки состояние счётчика увеличивается на единицу, обновляя комбинацию логических уровней на выходах. Благодаря тому, что задействованы три выхода, доступно восемь комбинаций — от 000 до 111. Семь из них задают различные цвета свечения, а одна (000) полностью отключает подсветку. Порядок смены цветов соответствует последовательному нарастанию двоичного кода.

Логика работы
Поскольку в схеме присутствуют два независимых управляющих сигнала — от таймера и от компаратора влажности — необходимо их корректно объединить. Для этой задачи использован логический вентиль 2ИЛИ на микросхеме CD4071. Он обеспечивает включение нагрузки при наличии хотя бы одного активного сигнала.
Принцип работы следующий:
Таймер выключен (первое положение переключателя таймера), управление по влажности также отключено (первое положение переключателя). На оба входа логического элемента поступают нули — на выходе ноль, нагрузка отключена.
Если запущен таймер или текущая влажность ниже заданного порога (то есть требуется увлажнение), на соответствующем входе 2ИЛИ появляется единица. На выходе элемента — логическая единица, нагрузка включается.
Таким образом, схема работает по принципу «или»: увлажнитель активен, пока работает таймер или требуется повышение влажности (или оба условия одновременно).
Индикация отсутствия воды
Для защиты от отсутствия воды используется поплавок с герконом, который включён в цепь между выходом логического вентиля и затворами транзисторов нагрузки. Пока вода в баке есть, поплавок поднят и геркон замкнут — управляющий сигнал проходит к нагрузке. Когда вода заканчивается, поплавок опускается, геркон размыкается и отключает нагрузку.

Для индикации отсутствия воды применён P-канальный MOSFET, управляющий красным светодиодом. При разомкнутом герконе на затворе транзистора присутствует логический ноль, и светодиод горит. При замкнутом герконе на затворе +12 В — транзистор закрыт, светодиод не горит.
Особенность работы индикации: если вода в баке есть, но ни один переключатель не активирован (таймер не запущен и порог влажности не включён), светодиод отсутствия воды всё равно будет гореть. Это связано с тем, что при отключённых условиях на выходе логического вентиля устанавливается ноль, который воспринимается схемой индикации как сигнал отсутствия воды. Таким образом, индикация корректно работает только при включённом хотя бы одном режиме работы увлажнителя.
Печатная плата
Топология (Altium Designer)


Особенности разводки
При 81 компоненте получилось обойтись одним переходным отверстием — только для питания 12 В

В процессе отладки первой версии устройства обнаружена нестабильность выходного напряжения LM331 — при неизменной частоте на входе отклонение достигало 0,6 В, что превышает допустимую погрешность. Причиной стало неудачное расположение времязадающего конденсатора C2: он находился вблизи датчика HS1101 и генератора TLC555, которые создают импульсные помехи, наводящиеся на цепь C2 и искажающие работу LM331.

Конденсатор C2 был отодвинут от датчика HS1101 и таймера TLC555 — этого оказалось достаточно, чтобы исключить наводки импульсных помех на времязадающую цепь LM331. В результате выходное напряжение перестало плавать, а показания стали стабильными.

Организована топология печатной платы, при которой трассы возвратного тока силовой нагрузки и аналоговой части не пересекаются. Разделение выполнено таким образом, что обе цепи сходятся только в одной точке:
Возвратный ток от нагрузки направлен от правого нижнего угла платы;
Возвратный ток аналоговой части (LM331 и обвязка) направлен от середины левой области платы.

По всем цепям питания добавлены блокировочные конденсаторы — на выводах питания каждой микросхемы, а также в обвязке линейных стабилизаторов.
В разводке для контактных площадок, подключённых к полигону, оставлен термобарьер — зазор без меди, упрощающий пайку. Однако для линейного стабилизатора MC78M12, рассеивающего около 0,6 Вт, эффективный отвод тепла критичен. Поэтому термобарьер был убран, стабилизатор в корпусе DPAK находится на сплошном полигоне меди, что позволило снизить тепловое сопротивление и улучшить охлаждение без установки дополнительного радиатора.
Готовая плата
Изготовлена классическим фоторезистивным методом, который позволил точно воспроизвести топологию. Сверху на плату нанесена паяльная маска, сформированная путём УФ-экспонирования через фотошаблон. Она защищает дорожки от окисления и случайных замыканий при пайке.


Изготовление платы вручную требует внимательности и аккуратности. Наиболее сложным этапом традиционно оказывается точное совмещение фотошаблонов и равномерное проявление рисунка — каждый из этих шагов влияет на конечное качество. Ключевая проблема при проявке негативного фоторезиста — это перепроявка, из-за которой незасвеченные участки начинают разбухать, что ведёт к сужению дорожек и снижению разрешения. В данном проекте удалось добиться минимальной ширины сигнальных дорожек 350 мкм, что на 100 мкм меньше, чем в предыдущих работах.
На плате установлены разъёмы для удобного подключения: малые PH-K-S — для слаботочных цепей, крупные CWF — для нагрузки.
Корпус
Конструкция и материалы
Нижнее основание корпуса напечатано из белого пластика PETG, верхний бак — из прозрачного. Для поддержания строго определённого уровня воды в нижнем основании в конструкции бака предусмотрен клапан: при установке бака клапан открывается, вода поступает в нижнюю часть, а когда уровень достигает нужной отметки, клапан перекрывается — вода сама блокирует доступ воздуха, и подача прекращается. Объём бака составляет 600 мл. При производительности ультразвукового модуля около 200 мл/ч этого запаса воды достаточно для 3 часов непрерывной работы. Увлажнитель получился компактным по сравнению с покупными аналогами, что позволило сократить расход пластика: на печать белой части ушло 160 г, прозрачной — 140 г.

Компоновка и управление
Для вывода пара наружу используется вентилятор, воздух от которого подаётся через прямоугольный воздуховод с небольшой направляющей, предотвращающей попадание капель воды с распылителя на вентилятор. Рядом размещён RGB-светодиод, обеспечивающий подсветку бака. Для предотвращения попадания воды внутрь устройства место установки защищено герметиком

На передней панели расположены два поворотных переключателя и кнопка управления подсветкой, а также скрыто установлен красный светодиод, сигнализирующий об отсутствии воды.

На задней панели размещены разъём питания, выключатель и датчик влажности. Датчик выведен наружу корпуса: размещение сзади предотвращает попадание на него пара, а вынос за пределы корпуса исключает влияние вентилятора на измерения.

Благодарности
Выражаю благодарность Передовой инженерной школе «ЛЭТИ» и аспиранту кафедры ЭПУ Кушнаревой Олесе Андреевне за содействие и предоставленную возможность реализовать корпус для проекта!
Меры защиты
Защита от отсутствия воды
Для предотвращения работы увлажнителя без воды в конструкцию добавлен поплавковый выключатель на герконе (подробное описание работы приведено в разделе «Индикация отсутствия воды»). При падении уровня воды ниже допустимого геркон размыкается и отключает ультразвуковой модуль и вентилятор. После восстановления уровня воды работа возобновляется автоматически.
Защита от короткого замыкания
В цепи питания установлен плавкий предохранитель на 0,75 А. Его основная функция — защита элементов устройства от перегрузки по току и последствий короткого замыкания. Предохранитель включён последовательно в цепь питания и при превышении допустимого тока перегорает, разрывая электрическую цепь.
Защита электроники от влаги
Основная печатная плата и плата вентилятора покрыты электроизоляционным лаком Plastik 71 для защиты от конденсата и случайных брызг. Все электрические соединения дополнительно изолированы с помощью термоусадочной трубки.

Демонстрация работы устройства
Проверка всех режимов и защиты представлена на видео по ссылке: Rutube
Все исходные материалы — схемы платы, 3D-модель корпуса и расчёты компонентов — выложены на GitHub
Итог
Проект завершён. Без микроконтроллера пришлось столкнуться с аппаратными особенностями, которые в цифровой реализации решаются несколькими строками кода. Из-за разброса ёмкости электролитического конденсатора (±20%) временные интервалы таймера могут плавать в пределах допуска. Индикация отсутствия воды работает корректно только при включённом хотя бы одном режиме. Эти нюансы не критичны для бытового использования, но они объективно присутствуют и напоминают о том, что аппаратная реализация требует принятия компромиссов.
Если бы стояла задача получить абсолютную точность временных интервалов и безупречную логику работы — МК решение оказалось бы проще, быстрее и предсказуемее.
Однако главная цель проекта была иной: проверить, можно ли реализовать нетривиальную логику без единой строки кода. Проект эту задачу выполнил. Он доказал, что аналоговая схемотехника в сочетании с дискретными логическими элементами способна решать поставленные задачи, а инженерный опыт, полученный в процессе разработки, отладки и переработки платы, оказался ценнее самого готового устройства.
А вы пробовали реализовывать подобную логику на аналоговых компонентах? Или всегда выбираете микроконтроллер? Буду рад услышать ваш опыт в комментариях!