Доброго времени суток, Хабр!
Лет пять назад мы купили себе освежитель воздуха Air Wick. Я его разобрал, вытащил и выкинул плату, в надежде, что так я быстрее сделаю свою … Если Вы решите, что оно того не стоило, то я готов поспорить.
Конечно же я не разрабатывал новую плату все эти пяти лет. Вкратце это было примерно так: я попользовался устройством пару месяцев, нашел готовый проект с модернизацией платы, заказал ее по готовым герберам, собрал/прошил и понял, что это не то, что я хотел получить. И вот, по прошествии пяти лет, я достал все это из далекого забытого ящика и понял какой освежитель мне нужен.
Какой же он должен быть?
Не должен брызгать в лицо при открывании двери.
Не должен пугать детей своим «пшик» в ответственные моменты.
Желательна работа от аккумулятора и потребление должно быть низким. Индикация заряда.
Плата должна «встать» с минимальными доработками корпуса, чтобы не потерялась эстетика, если так можно выразиться про устройство в санузле.
Ненавязчивая звуковая сигнализация перед срабатыванием приветствуется.
Для чего все это нужно? Да разве не проще надавить на кнопку обычного освежителя? Это же потраченное время зря!
Нет! Если что-то начал, то нужно доделывать! Даже через несколько лет.
В интернете много подобных проектов и, казалось бы, можно было выбрать один из них, но, как обычно, хочется получить что-то свое, пусть и потратить свободное временя, которого и так нет.
Первая моя попытка (по сути, уже вторая) не увенчалась успехом. Я сделал плату на модуле ESP с WiFi, так как хотел «на ходу» менять режимы работы Air Wick, контролировать расход баллона и т.д. Наигравшись я понял, что нужно что-то проще, меньше по размерам (тот вариант не хотел влезать в корпус без его кардинальных доработок напильником) и менее энергоемкое. Тогда родилась схема ниже.
В принципе, тут нет ничего необычного. Микроконтроллер снова взял STM32F031 (как и во многих своих разработках). У него небольшой корпус, он есть у меня в наличии и полностью меня устраивает. В качестве контроллера заряда используется дешевая микросхема LTC4054. При работе от аккумулятора необходимо переключить джамер и задействовать LDO SPX3819, так как заряженный аккумулятор имеет напряжение 4,2В.
В одной из прошлых поделок на этом же микроконтроллере я задействовал режим standby. Который реализуется всего двумя строчками кода:
DBGMCU->CR |= DBGMCU_CR_DBG_STANDBY;
HAL_PWR_EnterSTANDBYMode();
В этом режиме потребление порядка 8uA, что мне очень понравилось и оставалось только понять, как выйти из этого «сна». Тогда пришел на ум кусочек схемы на сдвоенном диоде BAV23C. Убираем подтяжку с reset микроконтроллера и дергаем его двумя сигналами: от фототранзистора (позже выяснилось, что лучше подходит фоторезистор) и собственного GPIO. Логика топорная, но работает отлично. При включении света фоторезистор тянет reset вверх, контроллер запускается и управляет сигналом сброса уже сам. Сделано это для того, чтобы после выключения света Air Wick продолжил работать необходимое время.
Последняя версия платы выглядит так:
Пришлось заменить транзистор управления мотором на более мощный, так как предыдущий срабатывал крайне нестабильно и грелся.
Логика работы
В схеме задействованы два АЦП. Один измеряет заряд батарейки, второй наличие подключенного зарядного устройства (чтобы избежать незапланированного срабатывания во время процесса зарядки). Разъем для зарядки вывел в паз (предварительно его расширив) от переключателя режимов.
В заводской версии железки при нажатии кнопки на корпусе Air Wick происходит срабатывание («пшик»). Я к этой функции еще добавил оповещение о заряде батарейки и пока остановился на этом варианте. После нажатия раздается 1, 2 или 3 коротких звуковых сигнала (в зависимости от заряда батареек), затем, через 1 секунду (чтобы успеть отбежать), срабатывает пшик.
В автономном режиме отслеживается включение и выключение освещения. В зависимости от, простите, времени, проведенного в санузле, может быть несколько вариантов срабатывания. Если свет был включен на менее чем 1 минуту, то после выключения света просто пикаем 30 мс бипером, чтобы понимать, что устройство живое. Если свет горел 1 – 2,5 минуты, также пикаем и делаем «пшик» один раз. Если засеченное время оказалось более 2,5 минут – пикаем и «пшикаем» два раза.
Плата встала идеально в корпус. Фоторезистор на штатном месте светодиода, SWD угловой, иначе мешает.
С фототранзистором не получилось сделать, так как видимо у него меньше угол обзора, хоть он и имеет линзу. Лампочки на потолке имеют цоколь GU5.3, соответственно плохо засвечивают устройство, когда оно подвешено под потолком. Фоторезистор все исправил.
Заключение
Пользуемся устройством уже 1,5 года. Первые полгода только с батарейками. Хватает примерно на 1 месяц и неделю использования. Перешли на аккумулятор. В корпусе на проводе хорошо разместился Li-Ion LP103448 на 1800мА (для него я и выводил разъем на плате). Хватает на 3-4 недели (два взрослых, два ребенка). Первый баллон кончился примерно на 6 месяце. По итогу могу сказать, что при использовании аккумулятора устройство получается довольно экономичным (по расходу баллона).
Спасибо за внимание и до скорых встреч!
Комментарии (26)
olartamonov
21.11.2022 14:58+2(насвистывая «я тебя слепила из того что было») Три-четыре недели между перезарядками. А на сколько месяцев, значит, батареек хватало у оригинала?..
the_bat Автор
21.11.2022 15:19+3Не более одного месяца от батареек. Он срабатывает очень часто даже на минимальном режиме (раз в 32 минуты, если я не ошибаюсь) + нещадно тратится баллон.
olartamonov
21.11.2022 15:22+4В любом случае, эту схему выкинуть и сделать нормально.
Какой смысл радоваться потреблению микроконтроллера в 8 мкА, если там LDO с 90 мкА собственного потребления и резисторные делители ещё по сотне микроампер каждый?the_bat Автор
21.11.2022 16:00При работе от батареек нет LDO. Делитель только один на измерение напряжения батареек.
Ваши предложения по схеме?
olartamonov
21.11.2022 16:56+1А аккумулятор вам не лень каждые три недели заряжать?
LDO — 90 мкА, два делителя (второй у вас вообще-то на выходе LDO висит, он тоже не бесплатный) — по 150 мкА, итого под 400 мкА просто так, в воздух. А если ещё и не идеально темно, то и на фоторезисторе подтекает.
Если на 1800 мАч оно живёт 4 недели, это среднее потребление 2,68 мА (верхняя оценка, вы вряд ли выбираете аккумулятор досуха, так что скорее ближе к 2 мА). Ну то есть минимум треть потребления схемы — оно просто так. Плюс неделя работы могла бы быть. Бесплатно, без регистрации и СМС.
Причём решается же элементарно:
• выкидываем этот LDO, берём что-то типа TPS70933
• делитель напряжения батарейки вообще не нужен, у F0 есть встроенный мониторинг напряжения питания
Дальше надо смотреть в режимы работы контроллера. Ну ладно 8 мкА какие-то, когда по даташиту в STANDBY у него 3 мкА максимум. Но оно хотя бы в STOP уходит после того, как его фоторезистор из стендбая вывел? Или молотит на все честные 20 миллиампер на полной скорости?
И зачем эта схема с диодами и резетом, когда из стендбая микроконтроллер штатно выводится дёрганием ножки WKUP? Или наоборот — зачем эта схема сделана так, когда ей можно было вообще всё питание схемы рубить, уводя LDO в shutdown с потреблением в районе 1 мкА?the_bat Автор
21.11.2022 17:31Ауум заряжается 1,5 часа. Нет, не лень.
Согласен по поводу делителей, попробую более высокоомные поставить.
TPS70933 150 мА - так как там мотор и редуктор - это не взлетит. Не хватит тока, чтобы сдернуть.
В STANDBY 7,5мкА, которые я округлил до 8.
У меня уже готова плата, на которой как раз рубится питание полностью, но она еще не запущена - не хватает времени. Вы пытаетесь посчитать мкА, когда речь в рабочем режиме идет от запуске мотора с редуктором, который еще и спускает баллон под давлением. Чтобы получить дополнительную неделю работы (это 1/4 от текущего времени) Ваши советы не помогут. 1-2 дня, но не больше.
olartamonov
21.11.2022 17:43+2Я вам левой задней лапой ~400 мкА потребления сэкономил, четверть от имеющегося. Если у вас от месяца четверть — это 1-2 дня, то мои вам соболезнования, быстро же у вас время летит.
И да, мотор нафиг не надо питать от LDO. Мотору всё равно, а вы опять почём зря спускаете заряд аккумулятора в никуда.
И в STANDBY должно быть 1,0 мкА Idd + 1,1 мкА Idda. Таблица 25 даташита. Если у вас в четыре раза больше — это повод для раздумий.
ЗЫ. Относительно делителей надо не «пробовать», надо уметь пользоваться калькулятором и понимать, почему они такие или какие-то другие. Если вы сейчас просто возьмёте и поставите туда 1 МОм, у вас тоже чудеса на виражах начнутся, но другого рода.Dark_Purple
22.11.2022 10:21Ну что вы ей богу.. для любителя очень достойный результат, указывать на недочёты, делится опытом и знаниями конечно нужно, но как то добрее что ли))
Хотя, я посмотрел другие статьи автора, может он и не любитель, тогда могло бы быть и получше))
olartamonov
22.11.2022 12:36Это некоторое заблуждение, что любительский уровень — это когда человек клепает из чего нашлось, не вникая, как оно вообще работает-то.
Я б сказал, что это школьный уровень, на хакатонах всяких страшеклассники и младшекурсники как-то так поделки собирают.
nafikovr
22.11.2022 22:41>>TPS70933 150 мА - так как там мотор и редуктор - это не взлетит. Не хватит тока, чтобы сдернуть.
а зачем силовуху цеплять через стабилизатор?
nafikovr
22.11.2022 22:57с одной стороны замечания разумные, но помогут они только сохранить аккум пока семья в отпуске (движок молчит).
Но если занудствовать, то:
1 - Питание стабилизируем чем то типа MCP1700 (копейки, без обвязки, не кушает). При чем понижаем не до 3В, а до уровня гарантированного срабатывания транзисторов.
1* - вообще в таких решениях лучше использовать контроллер работающий во всем диапазоне напряжений аккумулятора.
2 - Встроенный мониторинг будет работать только когда батарея просядет ниже 3В ибо за стабилизатором. Проблема решается делителем добавлением сверху ключика, подключающего измерительную цепочку когда нужно.
3 - Убрать двигатель из-за стабилизатора, добавить зависимость времени работы от напряжения (или, лучше, обратную свзязь по положению вала). Это единственное, что побережет батарею во время работы
4 - я бы вообще добавил часы реального времени. из очевидного - добавляет возможность освежить воздух по расписанию. из неочевидного - ставим пробуждение каждые 10-20 секунд, после пробуждения анализируем датчик освещения, засыпаем пока не нужно отработать. по итогу имеем существенное потребление только на время пробуждения, а не все время, когда включен свет.
rstepanov
21.11.2022 15:33+4Я бы понял если бы эта штука включала вытяжку при наличии загрязнений в воздухе, но еще больше портить воздух то зачем? :)
the_bat Автор
21.11.2022 15:56+1Вытяжка включена пока горит свет. Хотя это тоже идея хорошая, чтобы выключать ее через пару минут. Нужно подумать)
fio
21.11.2022 17:50выключать ее через пару минут
Или попозже, если свет горел дольше 2.5 минут. Тоже можно сделать зависимость продолжительности работы вытяжки от времени работы освещения
dravor
21.11.2022 23:12У себя сделал как раз ступенчато, в зависимости от времени, сколько был включен свет. Всё равно в реальной жизни не удобно. У автора вместо этого освежителя воздуха повесить бы датчик его качества.. - практической пользы было бы намного больше.
ducemollari
22.11.2022 00:57+3Есть подозрение, что лет десять не покупал освежителей - если вытяжка работает, то не особо нужен (тем более туалетов два).
Но кто-то любит запах копро+ландыш. Или кофе. Интересно, можно ли таким от кофе человека отвадить?
Didimus
22.11.2022 07:55+2«Не должен пугать детей своим «пшик» в ответственные моменты» - а то от испуга обделаются?
evn
22.11.2022 12:25плюс за правильную вентиляцию. Обычного "освежителя" в обычном баллоне, просто для гостей, хватает на полгода. Сам горшок с электробиде от панаса. С какой-то "деодорацией".
RavilMuslyumov
22.11.2022 16:38Присоединюсь насчёт подавления обоняния. Для сведения в СССР в 70х на освежилках, точнее на основе ароматических углеводородов был создан замечательный яд невиданной силы и #оружиезапахов.
pistoletov
22.11.2022 17:01Airwick-). Любимая тема-) Именно с него и начался мой умный дом. Сделал как-то переделку ароматизатора по схеме из просторов паутины на тиньке13 с интересным режимом работы светодиода он работал и как индикатор и как светочуствительный элемент. В общем схема работала, но не очень надежно. И тогда решил сделать свою реализацию. В туалете под потолком стоит нода умного дома на базе atmega328+w5500 на софте под фреймворком Souliss. Нода управляет AIRWICK, вентилятором санузла, кранами подачи воды, и снимает температуру и влажность. Об алгоритмах рассказывать не буду у каждого свое видение. В двух словах почему Souliss - хотел автономности работы ноды, одна из ее функций влагостат, отключение от сервера не должно нарушать работу влагостата. Детектирование включения света в санузле просто и надежно - оптронная схема наличия 220в на светильнике. От ноды к пшикалке идут провода на двигатель, и на ws2812 светодиод, который индицирует режимы работы ноды. С появлением Алисы аирвик еще немного поумнел, но это уже совсем другая история......В общем уже скоро 5 лет как все это живет в санузле-).
restruct
Вы и словом не обмолвились о причинах недовольства купленным готовым решением. Отсюда вывод: ваша статья — классический случай синдрома неприятия чужой разработки, в оригинале — NIH (not invented here).
the_bat Автор
Под заголовком "Какой же он должен быть?" в статье как раз перечислено то, чего мне не хватало.
restruct
Вы явно путаете «Я недоволен предложенными функциями» и «Мне не хватает этих функций».
Не должен брызгать в лицо при открывании двери.
Не должен пугать детей своим «пшик» в ответственные моменты.
Вы хотите сказать, что автоматический освежитель, спроектированный инженерами, сделанный на заводе и продающийся за деньги, придуман, чтобы брызгать вам в лицо при открывании двери, а также пугать детей своим пшиком?
the_bat Автор
Он пшикает раз в 32 минуты (либо меньше, в зависимости от установки). И если вы не подсчитываете время для входа в санузел, чтобы попасть в промежуток 32 минуты, то да - пшикнет в лицо, или на голову, смотря где установлен.
ArkadiyShuvaev
Поддерживаю, я тоже вечно опасаюсь, что освежитель в лицо прыснкт :) Вы молодец, так держать! :)