2011-06-09

Автоматическая кормушка для рыбок.


Преамбула.

Периодически мы с семьей, так же как и многие, куда-то уезжаем. За квартиру я не слишком переживаю, так как в подъезде полно "сторожевых бабушек", а вот две собаки и куча рыбок в 200-от литровом аквариуме, хочешь или не хочешь, но требует кормежки. Собак то хоть можно с собой взять, а вот рыбки... Нет, конечно можно пойти и купить готовую автокормушку, но это же не наши методы! :) Раньше у нас оставалась жить наша подруга на время отъезда, а тут вот так вышло, что ей некогда. Значит надо решать проблему.

Постановка задачи.

И так: отъезд через пару дней, плюс к этому сборы и прочее, а рыб надо кормить... То есть на походы в магазины за запчастями времени нет. Значит надо делать исключительно вечером и исключительно из того, что есть под рукой. :) Как следствие конструкция может получиться не только не оптимальной, но и футуристической. :) Задача: осуществить высып корма один раз в день в аквариум. Составные части, как я уже сказал - все что есть дома.

Механика.

С механикой у меня всегда были проблемы. :) Если спаять схему я еще мог, то вот выточить кучу тяг, шарниров и прочей лабуды - на это у меня всегда не хватало терпения. А тут еще ограниченные ресурсы... В общем обшарив квартиру я нашел:
  • пластиковые бутылки
  • просроченную пластиковую карту
  • кучу скрепок
  • деревянную рейку
  • кучу банок из под кофе с шурупами
  • шаговый двигатель от разобранного когда-то дисковода и фототранзистор от него же (или от CD-ROM-а? уже не помню)
  • моторчик от игрушки
  • плата с микроконтроллером аналогом arduino купленная для "разобраться с атмегой"
  • десяток резисторов, транзисторов, проводов, макетная плата и микросхема L293D
Ну что ж. Не густо, но и не пусто. :) Сначала сделал станину скрутив вместе 3 куска рейки, которые образовали лежащую букву "Т" с поднятой вверх планкой. На ней закрепим бутылку, горлышком внизу, у которой отрежем дно. Туда будем засыпать корм.


Между горлом и нижней планкой оставим зазор. В этом зазоре будет ходить планка из старой пластиковой карты и большой скрепки. У скрепки делаем петлю примерно на одной третьей длинны. Вокруг этой петли она будет поворачиваться. На длинный конец скрепки крепим клеем-расплавом пластину, вырезанную из карточки, а на короткий конец была закреплена резинка (хотелось пружинку, но нужной не нашлось). Из проболоки изгибаем скобку вокруг червячного вала шагового двигателя. К ней крепим второй конец резинки.
Корм из горла будет своим ходом сыпаться на планку, а скрепка и пластинка из карточки будут отгребать его по сторонам и скидывать в аквариум.




Банка на противоположном конце служит исключительно противовесом.

После создания этого "чуда" я засыпал корм и проверил как он его разгребает. Все бы ничего, но корм, которым мы кормим рыб, представляет из себя довольно легки хлопья, которые порой просто застревают в горле бутылки из за своей легкости, не смотря на ширину вышеупомянутого горла. Пришлось добавить на верхушку бутылки моторчик от старой игрушки со "стиркой", насаженной на вал в качестве эксцентрика. Этот "вибратор" вполне себе обеспечивает ссыпание застрявшего корма. :) Правда издает довольно громкий жужжащий звук (вот она твоя сирена, Юрка!) ;)


С механикой вроде все. Теперь...

Электроника.

Тут все проще: всю логику водружаем на ATmega, так как это просто и удобно. :) К тому же очень гибко.
Лирическое отступление. В свое время, когда я изучал микроэлектронику,  о микроконтроллерах можно только мечтать. Всю логику, как правило, делали на мелкой "рассыпухе". Во первых это было довольно затратно по времени. А во вторых, если ты ошибся в разработке самой схемы и ее логике, то в последствии что-то изменить было очень трудно, а порой и вообще не возможно без полной переделки схемы. Тут же все просто прекрасно: если надо что-то поправить - просто правим программу и все! :)
Осталось лишь управление. Тут нам поможет  L293D и несколько транзисторов КТ815. L-ка - это универсальная микросхема для управления двигателями. Схем включения в инете - пруд пруди! Я взял схему с сайта arduino, прямо из документации к библиотеке для управления шаговыми двигателями.
Так как второй микросхемы для вибромотора не было, пришлось вообще взять просто транзистор в качестве ключа. ;) Все это было смонтировано на монтажной плате без пайки. Вот что получилось:
Провода, к стати, были выдраны из куска старой "витой пары". :)

Фотодатчик я установил внутрь аквариума, под самой лампой, что бы вся система срабатывала при включении света. Дело в том, что на лампах у нас уже стоит таймер, который их включает утром и выключает вечером. Вот по включению и будем кормить. :) И не спрашивайте, почему я не сделал кормление просто при включении таймера! ;) Это не наш метод. :)))

Программное обеспечение.

Ну тут даже стыдно что-то размещать! :))) Был взят пример из комплекта arduino "blink", для включения вибры, пример оттуда же, для управления шаговым двигателем и вс е. :) Алгоритм предельно простой:

  1. Читаем цифровой вход с фото датчика.
  2. Если стал HIGH:
  • включаем на 4 секунды вибру
  • отключаем и ждем 2 секунды
  • гоним шаговый двигатель на другой край (я взял колличество шагов с запасом, что бы под конец еще и пробуксовывал немного, ибо нет обратной связи)
После чего цикл повторяем. :) Все! :)

Вот примерно то, что в итоге получилось:
From AVR
Послесловие.
Недельные испытания показали (судя по тому, что рыбы выжили), что система вполне себе жизнеспособна. :) Есть правда побочный эффект: если раньше при жужжании вибро-двигателя рыбы начинали стрематься и разбегаться, то теперь если дома что-то громко жужжит они сломя голову летят к кормушке. :)))

Планирую полностью все переделать: поставить блок реального времени, индикатор, сделать новую механику, а так же перевести управление светом тоже на эту систему. Соответственно оформить это все на самостоятельной плате, а не на ардуине.

5 комментариев:

  1. Олег! Я понимаю твое ЖЕЛАНИЕ что-нибудь СДЕЛАТЬ. Но не проще ли было на таймер лампы поставить и кормушку? :) ты поставил защиту от света автомобильных фар в окно? Или учел ли уличное освещение? Есть правило - чем проще схема, тем она надежнее. Хотя... Я тебя понимаю.

    ОтветитьУдалить
  2. Началось... :) Надо было отрубить комменты. ;) Сашка, думаешь я не знаю про простоту? И думаешь я не думал подключить к таймеру это все? Конечно знал и думал. Но если бы я хотел сделать так - я бы сделал.

    ОтветитьУдалить
  3. И к стати да: внешних помех не будет. Ни света фар, ни солнечного света. Я ж все таки когда-то учился, знаю что делаю. ;)

    ОтветитьУдалить
  4. супер!!! прям, всем отделом в ах...е!!! красава!

    ОтветитьУдалить
  5. Ну дык! :) Нельзя же было оставлять рыб без еды на неделю. ;)

    ОтветитьУдалить