Кот на унитазе

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

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

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

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

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

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

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

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

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

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

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

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

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

Электроника

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

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

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

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

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

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

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

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

Диаграмма состояний

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

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

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

Управление сервоприводом происходит путем подачи на него ШИМ импульса 0.9 - 2.0 миллисекунды и имеющего частоту 50 Гц. Управляющий сигнал, кроме состояний ON (длительность импульса 1250 мкс) и OFF (длительность импульса 1850 мкс) имеет еще одно "нейтральное" состояние, когда управляющий импульс отсутствует. В этом состоянии сервопривод просто сохраняет положение руки. Сервопривод проводит в "нейтральном" состояние практически все время, это позволяет избежать его износа от мелких колебаний, которые могут иметь место во время подачи на него управляющего импульса.

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

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

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

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

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

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

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 месяца разогнулась. Я просто ее заменил на сделанную из скрепки большего размера. Электроника и программное обеспечение, практически, не дали ни одного сбоя. Коту тоже система очень понравилась, и он теперь пользуется унитазом сам в любое время суток, не требуя моего внимания. В общем - рекомендую к изготовлению.