Реклама ⓘ
Главная » Автоматика в быту
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Доработка автоматического освежителя воздуха Airwick

Схемы переделки освежителя уже были в интернете, но не нашел ни одной, чтобы полностью удовлетворяла мои пожелания, либо были без исходников, соответственно подогнать под себя не получалось. Решил писать прошивку сам. Это мой первый опыт, так что пожелания и замечания приветствуются.

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

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

В качестве датчика света применяется красный светодиод в прозрачном корпусе*. При этом светодиод продолжает выполнять свои прямые обязанности.

AirWick со светодиодом в качестве датчика света

При включении устройства выполняется калибровка датчика света. Перед калибровкой будет 10 секундная задержка, сопровождающаяся вспышками светодиода с частотой 1Гц. За это время нужно поместить освежитель на его рабочее место, светодиод желательно направить на источник освещения. Сразу после калибровки будет тестовое срабатывание освежителя. Перед каждым срабатыванием производятся быстрые вспышки светодиода в течении 2 секунд.

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

Алгоритм работы устройства:

1) «пшикаем» через равные промежутки времени, напр. раз в час, при условии, что свет выключен то есть в помещении никого нет.

2) если свет включается, запускаем таймер.

3) когда свет выключается:

  1. если прошло мало времени (напр. меньше 2.5 минут), пшикать не надо.

  2. если прошло больше, «пшикаем» и сбрасываем таймер.
Если после последнего срабатывания прошло меньше 15 минут, то не «пшикаем», так как аэрозоль еще не выветрился.

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

Режимы работы:

1) «Пшикаем» раз в час, минимальное время включения света - 2.5 минуты

2) -//- раз в час, -//- 5 минут

3) -//- каждые 3 часа, -//- 2.5 минуты

4) -//- каждые 3 часа, -//- 5 минут

Все режимы настраиваются в исходнике, который подробно прокомментирован.

Первоначально проект тестировал в Протеусе.

схема

Когда дело дошло до датчика света, пришлось собрать модель на макетке.

Моя отладочная плата

Методом проб выяснил, что лучше всего подходят красные светодиоды в прозрачном корпусе. Чуть похуже оранжевые. Небольшой разброс параметров светодиодов на работу устройства не влияет.

светодиоды

В качестве управляющего транзистора подойдет любой маломощный N-канальный Logic Level мосфет. Такие обычно стоят в цепи питания процессора на материнской плате. Я свой выпаял со старой видеокарты (P0903BDG).

Ввиду простоты схемы решил не разводить печатную плата, разместил детали на макетке.

Готовая плата

Диод D1 и конденсатор C1 припаиваются непосредственно к выводам мотора. Для подавления собственных выбросов контроллера на его выводы питания (или в непосредственной близости он них) нужно припаять керамический конденсатор C2 на 0.1 мкф.

В режиме покоя схема потребляет 6-7 микроампер. Раз в 8 секунд контроллер просыпается, опрашивает датчик. После этого на 1 мс вспыхивает светодиод. Двигатель включается на 500 мс, дальше крутится по инерции, обратно его крутит клапан баллона. Средний потребляемый ток двигателя 100 миллиампер. При таком режиме алкалиновых батарей хватит ооооочень надолго.

Исходник прошивки написан на СИ.  Контроллер прошивал китайским UsbASP. Фьюзы по умолчанию (FF/6A). EEPROM прошивать не нужно!

UPD: Добавил вторую версию прошивки. Убрал выбор минимального времени включения света. Теперь только 2.5 минуты. Теперь три режима: "пшикаем" через час, 3 часа и 6 часов. По умолчанию стоит 2 режим. Тестовый "пшик" при включении устройства отключен (если требуется, нужно раскомментировать 171 строку в исходнике).

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

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

Теги:

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

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

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

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

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

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
andro #
Интересный алгоритм работы и хорошо что всё это сделано на Аттини13, как производилась отладка?
Ответить
+1

[Автор]
ashelehov #
Подбирались светодиоды с максимально широким диапазоном чувствительности. Определялась верхняя и нижняя граница освещенности. Грубо говоря включался свет, замерялась яркость ступенями, каждой ступени соответствовали вспышки. Затем свет выключался, повторно замерялась яркость. Потом схема тестировалась без мосфета. Срабатывание мотора заменялось серией вспышек. После недели тестирования перенес все в готовое железо. Схема работает уже несколько месяцев без глюков на полудохлых китайских батарейках.
Ответить
+1
andro #
Что если не производить калибровку при каждом включении, а сделать её один раз во время сборки и поместить значение в EEPROM? Это как нибудь скажется на работе устройства при смене рабочего места?
Ответить
0

[Автор]
ashelehov #
Естественно скажется. Даже если развернуть освежитель в другую сторону, освещенность может измениться в несколько раз. Чтобы снизить направленность диод лучше сделать матовым. Так что при любой смене освещенности (другая комната, более мощная или менее мощная лампа и т.д.) калибровка обязательна.
Ответить
+2
OldDiver #
Есть несколько доработок этой идеи. Мысль сделать более умной эту тупую пшикалку возникла сразу после израсходования 2 баллона.
Предлагаемые отличия:
1. Сохранить переключатель управления.
2. Отличать день/ночь. В помещении возможна подсветка через матовое окно.
3. Уменьшить частоту до минимально возможной 128 кгц. Что уменьшит потребление от батареек.
4. Знать и учитывать состояние балона. Моргать диодом когда балон кончился. Родная схема это может, а мы что нет?
4. Ну и чтоб все это вместить придется написать на асеемблере.
Если автору будет интересно я приведу схему и код.
Ответить
0

[Автор]
ashelehov #
Спасибо за комментарий. К сожалению сейчас времени заниматься пшикалкой нет, но в будущем возможно. С переключателем будет много заморочек, его придется "отрезать" от остальной схемы, нужен будет делитель напряжение и стабилизатор для питания делителя, посколько 13ая тинька не умеет мерить vcc, поэтому проще перейти на "многоногую" тиньку и завести переключатель на разные пины. Уменьшать частоту смысла нет, так как для подсчета времени разряда частота не должна быть слишком маленькой, иначе контроллер не успеет подсчитать разницу. Счетчик добавить не проблема, но нужно будет после каждой смены баллона его вручную сбрасывать. Уточните по поводу "отличать день/ночь"?
Ответить
0
OldDiver #
Совсем необязательно. Можно совместить схему питания и управление режимами работы. VCC важно ноне актуально. Все равно используется делитель относительно питания. И мерить можно относительно питания. Так что не актуально совсем. С днем/ночьюи похоже поторопился, так как не нужно. По крайней мере сценарий придумать не смог. Частоты более чем достаточно. А зачем сбрасывать? Сквозной счетчик не вижу зачем нужен. Отсчитывать только интервалы. Возможно я ошибаюсь. Но прошивка написана процентов на 90. Пока другого не потребовалось. Ну и схемотехника изменена. Задействован близкий переключатель 1P4T, угловой. Можно и 2P4T, но еще и угловой, достаточно труднодоступен.(не распространен). Датчик света или ПИР отдельно. LED отдельно. Можно интерактивно обсудить функциионал. Насчет более многоногих, следующий кандидат attiny441. Там на все хватит с избытком. Сейчас проблема понять логику работы родного датчика готовности. Тот который 4-х ногий и смотрит на головку распылителя. Там 2 черных полосы. Для работы его нужно свести до состояния готов/неготов. Модель целиком в PROTEUS-е там же пока и отлаживается.
Отредактирован 11.11.2018 17:46
Ответить
0

[Автор]
ashelehov #
По поводу счетчика пшиков. Если не писать в eeprom, то при отключении питания счетчик сбросится. То есть баллон не кончился, а батарейки сели, вы их поменяли и все, приехали. А если не сбрасывать, то при смене баллона на новый, счетчик сам не обнулится. У меня уже нет четырехногого датчика баллона. А зачем он вам? Насколько я помню он нужен, чтобы нельзя было использовать не оригинальные баллоны (без полос).
Ответить
0
OldDiver #
Нет. EEPROM писать не надо. Готовность по баллону родная схема определяет по нахождению головки балона в верхнем положении. С помощъю этого датчика. По полоскам она еще определяет родной/не родной. Но это нам не надо. Остается чтобы сильно не переделывать механику 1 функцию оставить, а вторую исключить. Платку естественно придется переделывать полностью, под старые размеры.
Ответить
0

[Автор]
ashelehov #
Что то не догоню про этот датчик и счетчик пшиков. Можно поподробней как это работает без счетчика срабатываний?
Ответить
0
OldDiver #
Скажите пожалуйста, у вас с самого начала не было этого датчика, или вы при модернизации выкинули?
Чой то я запутался в моделях.
У меня с откидывающейся задней крышкой и колесиком управления сзади и фотодатчиком.
У вас другая модель, я сейчас посмотрел недавно купленный, там вообще схема вдвое проще открытый кристал управления, 1 транзистор и 1 стабилитрон. Несколько резисторов и конденсаторов. Все. Фотодатчика нет в принципе. Он что тупо пшики считает? И на чужие балоны не реагирует?
Есть еще 3 модель, видел на картинках в инете. С листиком на фасаде балона. Что там внутри не знаю.
Идея использовать дешовый пир без линзы френеля или фоторезистор/фототранзистор. Считать только интервалы и определять состояние балона. Самый тупой вариант приклеить микрокнопку на верх тунеля, где ходит клапан балона. Поднялось вверх, нажало кнопку, в балоне что еще есть, можно пшикать.
Отредактирован 17.11.2018 19:47
Ответить
+1

[Автор]
ashelehov #
У меня как раз самый тупой вариант. Нет никаких датчиков. Пшики не считаются, когда баллон кончается продолжает пшикать вхолостую.
Ответить
0
Beerukoff #
Подскажите пжл справа от основной схемы есть еще схема с 2-мя конденсаторами. Это что означает?
Ответить
0

[Автор]
ashelehov #
Фильтр.
Ответить
+1
aleks_nn #
Конденсаторы, которые надо разместить на линиях питания и как можно ближе к ногам микроконтролера.
Ответить
+1
Vlamond #
Вот рабочий вариант платы в Sprint Layout 6.
Прикрепленный файл: Air Wik.lay6
Ответить
0
Yuriy71 #
Подскажите в каком месте корпуса освежителя закрепить плату по вашему варианту.
Она не маленькая не пойму куда ее пристроить.
Прикрепленный файл: IMG_20201222_205445.jpg
Ответить
+1
Vlamond #
Второй вариант с PDIP во вкладке.
Прикрепленный файл: Air Wik.lay6
Ответить
+1

[Автор]
ashelehov #
О, круто! Спасибо.
Ответить
+1
Vlamond #
Да пожалуйста, вам спасибо за этот проект!
Ответить
0
Сергей #
Нужен совет тех, кто уже собрал и испробовал устройство. У меня получается какая-то ерунда. Заливаю прошивку из папки BIN, фузы по умолчанию. Устройство запускается, но интервалы после включения-выключения света для пшика получаются 5 минут. Если выбрать режим "2", то соответственно будет уже 10 минут. Видимо проблема в частоте.
Если взять прошивку из папки Debug, то устройство вроде бы начинает работать нормально, но только первый цикл. Дальше интервалы снова увеличиваются до 5 минут и пшикание происходит даже при включенном свете.
Кстати, может только у меня так, но мотор у меня висит на 6-й ноге контроллера, а выбор режимов на 7-й.
В чем может быть косяк?
Ответить
0
Yaroslav Buchkovskiy #
Подскажите кто может у меня программатор Тритон 5.7Т правильные ли фюзы стоят по умолчанию для этой прошивки?
Прикрепленный файл: fuse.jpg
Ответить
0

[Автор]
ashelehov #
Здравствуйте. Таким программатором не пользовался, но отмечено правильно. 6A/FF. Единственное, не накосячить с прямыми/инверсными фьюзами. http://eleccelerator.com/fusecalc/fusecalc.php?chip=attiny13 неплохой онлайн-калькулятор.
Ответить
0
Yaroslav Buchkovskiy #
Прошил с папки bin фюзами 6A/FF флеш файлом .hex n EEprom файлом .eep , устройство не подает признаки жизни светодиод ( у меня желтый в прозрачном корпусе ) не моргает никаких движений
Ответить
0

[Автор]
ashelehov #
Проверяйте правильность монтажа, замерьте потребляемый ток. При включении будет около 5 миллиампер, потом упадет до 6 микроампер. Керамику на питание МК не забыли? Желтый светодиод не подойдет, нужен именно красный. МК корректно прошился? eeprom не нужен, там ничего нет. На комп с МК прошивка считывается? Можете писать в личку.
Ответить
0
Yaroslav Buchkovskiy #
Действительно мой косяк не подсоединил 4 и 8 пины питания контроллера , светодиод ведет себя сейчас так мигает 10 вспышек, потом цикл быстрого мигания, снова все повторяется, на принудительное пшиканье кнопкой мотор не реагирует
Ответить
0

[Автор]
ashelehov #
Электролит на сколько стоит? Минимум 2000 мкф. Керамика должна быть на ногах питания МК. У тебя сейчас в момент старта мотора МК ресетится.
Ответить
+1
Yaroslav Buchkovskiy #
Да электролит подкачал, стоял на 470мкФ, не думал что при питании от батареек нужен такой фильтр, все заработало, Благодарю за поддержку! Единственное что кнопки управления попутаны на схеме местами, и я бы на схеме все же дорисовал питание на 4 и 8 пины
Ответить
0

[Автор]
ashelehov #
Действительно перепутаны, спасибо. Схему рисовал в протеусе, он пины питания не показывает. Переделаю в easyEDA.
Ответить
+1
serg7461 #
Немного переделал код и залил на github
У меня не оказалось под рукой красных светодиодов, был только прозрачный белый, а у него оказалась большая ёмкость. Поэтому пришлось увеличить переменную для определения разряда.
Так же поменял функции мигания и замера ёмкости.
Изменил алгоритм работы определения света.
Ответить
0

[Автор]
ashelehov #
Давно на гитхабе?
Ответить
0
serg7461 #
Вчера выложил
Ответить
0

[Автор]
ashelehov #
Тоже зарегился github
Ответить
0
serg7461 #
О! Норм. Я тогда ветку лучше сделаю, чтоб проекты связать.
Ответить
0

[Автор]
ashelehov #
Сделай. Я пока не разобрался, где там что. По идее там можно историю версий вести, но пока для меня это темный лес.
Ответить
0
Oleksandr54 #
Почему DDRB = 0xFF - если используються две кнопки?
Ответить
0

[Автор]
ashelehov #
При старте обнуляем порт, потом назначаем режим и уровни. Но можно сразу назначить с учетом кнопок.
Ответить
0
Евгений #
Не работает автоматика. От кнопки двигатель срабатывает. От светодиода не хочет. Менял уже 2 5мм красных прозрачных светодиода разных типов. Прошивка с гитхаба. Светодиод два раза подмаргивает каждые 8 секунд. Что я не так делаю?
Ответить
0
serg7461 #
Если моя прошивка, то моргание два раза означает что контроллер определил включенный свет. При выключенном свете должен моргать один раз.
Яркость замеряется при первом включении, после мигания светодиодом 10 раз. Пока мигает светодиод нужно успеть расположить освежитель на своём месте. После этого он запомнит эту яркость как эталон(до следующего отключения питания) и будет использовать её при работе.
Ответить
0
Евгений #
Постоял всю ночь и заработал. Видимо в алгоритме что-то накосячено при первом включении. Может пока не сработает пшик через несколько часов на свет реагировать не будет. Оставлял на час- не работал.
Ответить
0

[Автор]
ashelehov #
https://github.com/ashelehov/airwick13/ Отсюда качали?
Рекомендую прошить эту версию http://cxem.net/house/files/1-464_airwick13_v1_2_light.zip

Инструкция по первоначальной калибровке в конце исходника main.c Это обычный текстовик.
Ответить
0
Евгений #
Процедура калибровки проведена была именно так. Светодиод действительно на 1.2.1 версии моргает два раза в светлом режиме и один раз в темноте. Вот только в ближайший час после включения пшика нет.
Ответить
0

[Автор]
ashelehov #
Прошивка проверена как минимум на десятке устройств. Проверяйте монтаж. Поменяйте керамику на ногах МК. Электролит по питанию какой емкости?
Ответить
0
serg7461 #
Всё правильно. Если не выбирали другой режим, то по умолчанию пшикает раз в 3 часа. (в прошивке 1.2.1)
Ответить
0
Евгений #
У меня прошивка 1.2.1, которая на гитхабе. Ставить 1.2 отсюда не хочу. Устройство прекрасно работает через несколько часов после включения. Проверено уже 3 раза. В ближайший час-два сразу после подачи питания от датчика не срабатывает, при этом прекрасно различая свет-тьму по количеству миганий светодиода. От кнопки всё работает. Что говорит о косяке в коде. Микроконтроллер: ISP отключен, нога Reset отключена, BOD отключен. Тактовая 9,6МГц с делителем 8. На ногах микроконтроллера конденсатор 0,1 X7R- напаян на выводы цанговой панельки. По питанию новый Hitano 3300х6,3V Low ESR. Монтаж выполнен проводом в силиконовой изоляции AWG22. На ногах двигателя 0,1 X7R и 1n4007. От ног двигателя сдвоенный дроссель на ферритовом кольце с проводом МГТФ 0,35. Полевик Vgate thr-1,1V при 50мОм канале. Батарейки на кратковременное КЗ выдают по 9 ампер каждая.
Ответить
0

[Автор]
ashelehov #
1.2.1 не тестировал, вопросы по ней лучше задавать разработчику. На 1.2 по моей ссылке проверяли? Тоже самое? Ресет отключили фьюзами?
Ответить
0
Евгений #
Простите, не сразу разобрался что у 1.2 и 1.2.1 разные авторы. 1.2 не проверял, пока мучаю 1.2.1
Reset отключал фьюзами, как и ISP. Кто-нибудь из авторов сможет добавить в свою прошивку еще 2 режима по кнопке Mode- не пшикаем по таймеру, а только по фотодатчику и пшикаем только по таймеру каждые 3 часа без реакции на фотодатчик.
Ответить
0

[Автор]
ashelehov #
Добавить такие режимы в принципе могу, но только не в ближайшее время, на работе завал.
Проверьте на прошивке 1.2. Если будет тоже самое, то проблема 100% в железе.
Ответить
0
serg7461 #
Добавил новые режимы в прошивку 1.3.1
https://github.com/serg7461/airwick
В текущей версии прошивки 7 режимов:
1) Пшикаем только по датчику света
2) Пшикаем 1 раз в час, минимальное время включения света - 2.5 минуты
3) -//- каждые 3 часа,
4) -//- каждые 6 часов.
5) Пшикаем 1 раз в час, игнорируя датчик света
6) -//- каждые 3 часа,
7) -//- каждые 6 часов.
По умолчанию стоит 3 режим.

Мне пока некогда тестировать. Так что если что, пишите.
Ответить
+1
serg7461 #
Чуть прибрался в гите
Прямая ссылка на прошивку: https://github.com/serg7461/airwick/releases/download/v1.3.1/main.hex
Ну и тут прикреплю
Отредактирован 10.08.2021 12:51
Прикрепленный файл: main.hex
Ответить
0
Sergeyt75 #
А может кто печатные платы выложить под разные модели?
Ответить
0

[Автор]
ashelehov #
Выше в комментариях смотри, была ссылка на плату под версию освежителя как у меня.
Ответить
0
Sergeyt75 #
Эту видел, у меня версия другая. Может хотя бы фото расположения деталей есть на другую?
Ответить
0

[Автор]
ashelehov #
Версий много, на новых работает от одной батареи со встроенным преобразователем для питания мотора. Я свою версию выбирал из за удобного места под плату. Мне кажется проще поискать именно такую, если они ещё остались в продаже.
Ответить
0
serg7461 #
Я вот такой переделывал AirWick FreshMatic

Вот его плата в спринте
Прикрепленный файл: AirWick_FreshMatic.lay6
Ответить
0
serg7461 #
Добавил ещё несколько режимов не для туалета.
Например если освежитель стоит в коридоре и нужно пшикать только при включенном свете или наоборот, только при выключенном.
8) Пшикаем 1 раз в час, только при включенном свете
9) -//- каждые 3 часа,
10) -//- каждые 6 часов.
11) Пшикаем 1 раз в час, только при выключенном свете
12) -//- каждые 3 часа,
13) -//- каждые 6 часов.

Пошивка v1.4.1
Прикрепленный файл: main.hex
Ответить
0

[Автор]
ashelehov #
Может стоит сделать несколько версий прошивки с разделением по функциям чтобы уменьшить число режимов? Запаришься мигания считать. Дисплей уже просится.
Ответить
+1
serg7461 #
Можно. Надо придумать как их версионировать
Ответить
0
serg7461 #
Разделил режимы работы: туалет, не туалет
WC_MODE вкл (раскомментировано) по умолчанию стоит режим №3

Пшикаем только по датчику света
Пшикаем 1 раз в час, минимальное время включения света - 2.5 минуты
-//- каждые 3 часа,
-//- каждые 6 часов.
Пшикаем 1 раз в час, игнорируя датчик света
-//- каждые 3 часа,
-//- каждые 6 часов.

WC_MODE выкл (закомментировано) по умолчанию стоит режим №2

Пшикаем 1 раз в час, игнорируя датчик света
-//- каждые 3 часа,
-//- каждые 6 часов.
Пшикаем 1 раз в час, только при включенном свете
-//- каждые 3 часа,
-//- каждые 6 часов.
Пшикаем 1 раз в час, только при выключенном свете
-//- каждые 3 часа,
-//- каждые 6 часов.

Прошивка v1.4.2 - main_WC-on.hex

Прошивка v1.4.2 - main_WC-off.hex
Прикрепленный файл: main_WC-off.hex
Прикрепленный файл: main_WC-on.hex
Ответить
+1
serg7461 #
Немного накосячил с выбором режимов.
выложил исправленные версии.
Прошивка v1.4.3 - main_WC-off
Прошивка v1.4.3 - main_WC-on
Прикрепленный файл: main_WC-off.hex
Прикрепленный файл: main_WC-on.hex
Ответить
+1
serg7461 #
Добавил время работы мотора, для свежих баллонов Glade.
В режиме "туалет" мигает два раза, в другом три.
Прошивка v1.4.4_WC-off.hex
Прошивка v1.4.4_WC-on.hex
Отредактирован 14.12.2021 11:42
Прикрепленный файл: v1.4.4_WC-off.hex
Прикрепленный файл: v1.4.4_WC-on.hex
Ответить
0
ars #
Спасибо авторам за схемы и прошивки!
Ответить
0
ars #
Прошил Пошивка v1.4.1.
Не работает режим
8) Пшикаем 1 раз в час, только при включенном свете
11) Пшикаем 1 раз в час, только при выключенном свете
Просто пшикает раз в час. Хотя светодиод на свет реагирует вспышками.
При этом режим
1) Пшикаем только по датчику света
работает корректно.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Радиореле 220В
Радиореле 220В
Конструктор для сборки: предусилитель на лампе 6N3 LC-измеритель LC100-A
вверх