Авто-смыв унитаза для кота

в 9:40, , рубрики: arduino, automation, diy или сделай сам, DYI, toilet, умный дом
Кот на унитазе
Кот на унитазе

Сейчас на Алиэкспрессе продается много приспособлений, помогающих обучить кота пользоваться унитазом и, если не педалировать обучение, за 1 — 3 месяца практически любой кот способен освоить этот несложный трюк. Отказ от лотка и наполнителя очень полезный шаг в создании в квартире уюта, но этому действию не хватает законченности - кот не умеет смывать унитаз за собой. Вот эту проблему и решает описанное ниже электромеханическое устройство.

Почему надо смывать унитаз?

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

Техническое задание

Что нужно для устройств авто-смыва? В общих словах, автоматика как-то должна обнаружить присутствие кота на унитазе и, после этого, как-то дернуть клапан слива воды унитаза. Первый пункт значительно сложнее осуществить - существующие датчики не могут различать размер и форму движущихся предметов - как тогда можно отличить кота о человека? Единственный возможный способ - по поведению - кот обычно долго готовится, делает свои дела, потом еще долго скребет топчак лапой и, в результате, проводит на унитазе несколько минут и, главное, никогда сам не дергает ручку смыва унитаза.

Поэтому, логика работы системы предполагалась следующая — она отслеживает нахождение кота на унитазе, ждет около 2х минут, отмечает уход кота и дальше ждет еще 3 минуты, отслеживая движение ручки унитаза (сделать это не сложно, например используя геркон и магнит, наклеенный на клапан смыва). Если за это время спуск воды никто не дернул — автоматика с помощью сервопривода поднимает сливной клапан на 5 секунд, инициируюя спуск воды.

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

Общий дизайн и механическая часть

У меня в туалете стоит совершенно обычный фаянсовый унитаз с ручкой на крышке. Старую советскую механику я давно заменил, установив немецкий кран и клапан смыва.

Бачок унитаза без автоматизации
Бачок унитаза без автоматизации

Как видно, свободного места в бачке относительно много, поэтому я решил разместить всю систему автоматизации внутри сливного бачка, главным образом потому, чтобы оно не привлекало внимания. Я не хочу объяснять каждому гостю, зачем нужно это устройство и что оно делает.
Для раскройки механических деталей и крепежа я использовал самодельный домашний CNC станок. Детали я изготовил из мягких листовых материалов, которые у меня тогда были под рукой - раму вырезал из полиэтиленовой кухонной разделочной доски, а клапан унитаза дополнил горизонтальной платформой, вырезанной из листового углепластика. Эта платформа передает клапану усилие тяги сервопривода и предотвращает вращение клапана вокруг своей оси. Подъем клапана сервоприводом и ручкой независимы друг от друга - унитазом можно пользоваться, как и раньше, дергая за ручку смыва, а сервопривод поднимает клапан, также не поднимая ручку.

Бачок унитаза с размещенной автоматизацией смыва.
Бачок унитаза с размещенной автоматизацией смыва.

Я не буду здесь детально описывать детали механической конструкции. Унитазы бывают разные, у некоторых есть ручка, у других кнопка, у каждого домашнего мастера есть свои материалы и возможности изготовить механические компоненты, поэтому вряд-ли имеет смысл копировать геометрию моего устройства. Главное, чего надо здесь добиваться - механика должна быть надежной и долговечной, иначе вся эта затея не имеет никакого смысла.

Электроника

Как обнаружить кота на унитазе? Я экспериментировал с разными датчиками движения. Доплеровский СВЧ радар (этот прибор открывает раздвижные двери в торговых центрах) показал себя сложным в настройке и нестабильным, поэтому я использовал инфракрасный пироэлектрический сенсор (часто используется для автоматического включения света в подъездах). Хотя этот прибор достаточно сложен и на самом деле является тепловизором, совмещенным с анализатором изображения, но такие пироэлектрические датчики давно уже вошли в быт, все более-менее однотипные и, обычно, стоят несколько долларов штука. Я использовал миниатюрный Grove mini motion sensor на основе S16-L221D. Он не имеет элементов настройки, но их можно добавить, следуя инструкции. Для регулировки чувствительности я припаял к нему подстроечный резистор и, так же немного повысил его быстродействие, замкнув резистор на плате. Этот датчик без потери функциональности можно заменить на более крупный и дешевый аналог ZRD09, он уже имеет подстроечные потенциометры для настройки чувствительности и быстродействия. Инфракрасный датчик я расположил снаружи бачка, разместив его сбоку унитаза на расстоянии около 30 см. Сам датчик я поместил в маленькую коробочку, а провода датчика закрыл пластмассовым коробом.

Размещение инфракрасного датчика
Размещение инфракрасного датчика

Для подъема клапана унитаза я использовал судомодельный сервопривод JMT 20, который, по утверждению производителя, имеет некоторую степень влагозащищенности. Этот сервопривод относительно мощный и комплектуется металлической «рукой» с дополнительным отверстиями.

"Мозгом" устройства является популярный контроллер Arduino Micro. Его я разместил в пластмассовой коробочке. Внешние устройства - датчик, геркон, блок питания, сервопривод, светодиоды подключены к коробочке через 3 контактные JST разъемы — каждый элемент может быть отсоединен от общей системы.

В качестве источника питания я использовал импульсный 12 В 2А блок питания, воткнутый в розетку на кухне - напряжения 12 вольт передается в туалет по трехметровому проводу. 12 вольт, прямо внутри коробочки, конвертируются стабилизатором КРЕН5 в 5 вольт. Это напряжение питает Arduino, инфракрасный датчик и сервопривод. Такое решение не случайно, провод питания имеет относительно большое сопротивление и, если не принять меры, наводки от мощного сервопривода будут мешать работе контроллера. Кроме того, КРЕН5 нагревает коробочку и тем самым борется с влажностью внутри нее.

Электрическая схема устройства
Электрическая схема устройства

Программирование

Скетч для Arduino можно скачать здесь. Программа реализует следующую диаграмму состояний:

Авто-смыв унитаза для кота - 6

Следует заметить, что система отслеживает оба фронта импульса с инфракрасного датчика. Передний фронт переводит систему в некоторое промежуточное состояние (PREWAIT, PREDETECT), а фактический переход в состояние (WAIT, DETECT) происходит в момент заднего фронта импульса.

Состояние FLUSH_GERCON добавлено из-за того, что поднятие клапана сервоприводом вызывает срабатывание геркона. Вызывающий срабатывание геркона магнит прикреплен не к рукоятке слива, а непосредственно к платформе, расположенной на клапане. Такое решение добавляет в систему обратную связь — с помощью геркона система определяет положение клапана - если по какой-то причине сервопривод будет стоять в неправильном положении и клапан будет открыт — геркон сработает, сервопривод опустит руку, и клапан перейдет в закрытое положение.

При использовании унитаза человеком, после поднятия клапана рукой система переходит в состояние IDLE и перестает чувствовать сигналы с инфракрасного датчика в течении 30 сек. Это дает человеку возможность уйти из туалета, не вызывая повторного срабатывание системы.

Сервопривод, кроме состояний ON и OFF имеет еще одно "нейтральное" состояние, когда управляющий импульс на него не подается. В этом состоянии сервопривод просто сохраняет свое состояние. Сервопривод проводит в "нейтральном" состояние практически все время, это позволяет избежать его износа от мелких колебаний, которые могут иметь место во время подачи на него управляющего импульса.

Настройка механики

Механическая настройка системы достаточно проста - необходимо выполнить следующие действия:

  • Правильно закрепить «руку» сервопривода и протестировать что ее перемещения хватает, чтобы открыть и закрыть клапан унитаза.(Для этого очень хорошо подходит "тестер сервоприводов" )

  • Правильно подобрать длину тяги, соединяющей платформу клапана и сервопривод.

  • Найти правильное взаимное положение магнита и геркона.

Таблица состояний системы

Cветодиоды
Cветодиоды

Чтобы контролиовать работу программы я добавил в электрическую схему 2 светодиода - красный и зеленый. Чтобы не привлекать к ним большого внимания, я разместил их сбоку сливного бочка, но мне они сообщают информацию о текущем состоянии системы.

Фаза

Время

Красный LED

Зеленый LED

INIT

2 сек

Включен

READY

-

PREWAIT

~ 3 сек

WAIT

30 сек

Мигает

DETECT

120 cек

Включен

PREARMED

~ 3 сек

Включен кратковременно

Включен кратковременно

ARMED

180 сек

Включен

FLUSH

< 1 сек

FLUSH_GERCON

5 сек

Включен

Включен

AFTERFLUSH

2 сек

GERCON

-

Мигает

Мигает

IDLE

15 сек

Мигает

Результат

Какие можно сделать выводы? Устройство отработало уже более 4 месяцев. Механическая поломка была одна - согнутая из скрепки тяга клапана через 2 месяца разогнулась. Я просто ее заменил на сделанную из скрепки большего размера. Электроника и программное обеспечение, практически, не дали ни одного сбоя. Коту тоже система очень понравилась, и он теперь пользуется унитазом сам в любое время суток, не требуя моего внимания. В общем - рекомендую к изготовлению.

Автор:
Andrey_Rakhmanov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js