Как самостоятельно сделать автоматическую кормушку для кошки собственноручно


Преимущества автоматических кормушек. Автокормушка для кошек своими руками: пошаговый процесс изготовления изделия из пластика, интерактивной конструкции и устройства с погремушкой.

Типы автокормушек для кошек и собак

Существуют 3 основных типа автоматических кормушек, со своими «плюсами» и «минусами». Нет универсальной, подходящей под все случаи жизни, поэтому необходимо внимательно разобраться в назначении каждого типа и подобрать оптимальную для вашей ситуации.

1. Сегментные (круглые для влажного и сухого корма)

В автокормушках сегментного типа обычно используется круглая емкость, разделенная отсеками на отдельные лотки для кормления. Такую автокормушку можно использовать для любого вида корма – сухого, влажного или натурального. Но при этом количество кормлений без дозаправки ограничено количеством отсеков, поэтому сегментные автокормушки чаще всего применяются при отсутствии хозяина в течение дня и для кормления животного ночью.

2. С откидной крышкой

Автокормушки с откидной крышкой тоже могут использоваться как для сухого, так и для влажного корма. Но главным минусом такой кормушки является возможность 1 кормления (или 2 для отдельных видов кормушек).

3. Резервуар с дозатором

Резервуар с дозатором – очень популярная модель автоматических кормушек для кошек и собак. С помощью автоматики сухой корм подается из большого резервуара в лоток. При этом точность порций измеряется дозатором. Пополнять такую кормушку можно достаточно редко. Но у автокормушек с дозатором есть и минусы – использование только сухой корма и возможные блокировки устройства при слипании корма.

Видео «Автоматическая кормушка для кошки своими руками»

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

Автокормушка для кошек — отзывы реальных владельцев

Отзыв: «Автокормушка для домашних животных Feed-Ex PF2Y ? удобная вещь, если иногда надо отлучиться на пару дней. Достоинства: очень удобное устройство, решает проблемы своевременного кормления питомцев. Недостатки: кроме цены, минусов нет.

Бывают в жизни ситуации, когда надо отлучиться на несколько дней, а из родственников, друзей и хороших знакомых решительно никто не может (или не хочет) заехать и покормить животинку, которую ты приручил и за которую теперь в ответе. И тут на помощь приходит… тадам… автокормушка!!!».

Отзыв: «Автокормушка для домашних животных Feed-Ex PF2Y ? очень удобная и полезная штучка. Достоинства: очень удобная, симпатичная и полезная. Недостатки: ёмкости можно делать и поменьше, а количество их побольше, чем 6.

Давно была потребность в чём-то подобном. Часто и подолгу бываю в путешествиях, иногда до 1?1,5 месяца. Всегда была проблемка ? кот. Пробовала кому-то отдавать, людям тяжело терпеть чужое животное: то подрал что-то, то шерсти много, то встаёт в 5 утра, то в кроватку к ребёнку забирается…».

Отзыв: «Автокормушка для домашних животных Feed-Ex PF2Y ? для тех, кто заботится о своих зверушках. Достоинства: удобно, безопасно. Недостатки: цена. Полностью удобный аппарат для регулярного и постепенного кормления для вашего питомца.

Подойдёт либо для очень ленивых хозяев, либо которые вынуждены отсутствовать дома некоторое время».

Шаг 5: Программирование

Код программы не такой сложный, как может показаться на первый взгляд.

Программа работает следующим образом:

  • Считывается время из модуля часов реального времени.
  • На ЖК-экране отображается текущее время, а также время кормления и доза корма (по умолчанию).
  • Отслеживается работа энкодера, если его вращать, то начинают циклически переключаться параметры: часы, размер порции, время подачи-1, время подачи-2.
  • Проверяется, подошло ли время кормления (1 или 2), если подошло, то выдается очередная порция пищи.
  • Отслеживается нажатие кнопки ручной подачи корма: если кнопка нажата, то подается корм. После отпускания кнопки, продолжается обычная работа программы.

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

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

Процедура кормления основана на функции if (если), то есть, когда текущее время совпадает с запрограммированным временем кормления, выполняется процедура подачи пищи.

Код, в представленном здесь скетче, не идеален, например, поворот энкодера не всегда увеличивает число на экране. Но, возможно, вам удастся выявить и устранить эту проблему.

На первом видео присутствует момент ручной подачи корма. Автоматически машина подает корм два раза в сутки в заданное время. Если задать одинаковое время для кормления-1 и кормления-2, то корм будет подаваться один раз в сутки. Скачайте скетч с кодом ниже.

/*Automatic Auger Audiono pet feeder Copyright Roger Donoghue 28/03/2015 all rights reserved. For personal use only.Not for commercial use or resale.Allows you to set 2 feeding times and the quantity as a multiple of the default feed quantity.Uses a DS1307 real time clock to keep the time, with a rechargable battery built in.(You can use the arduino RTC example code in the IDE to set the clock , or use the rotary encoder as intended)*/// include the library code:#include #include // needed for the RTC libraty#include #include // Real Time Clock Library#include // initialize the library with the numbers of the interface pins dor the LCDLiquidCrystal lcd(12, 11, 5, 8, 7, 6);#define PIN_SERVO 9Servo feedServo;Servo stirServo;int pos = 0;volatile boolean TurnDetected;volatile boolean up;const int PinCLK=2; // Used for generating interrupts using CLK signalconst int PinDT=3; // Used for reading DT signalconst int PinSW=4; // Used for the push button switch of the Rotary Encoderconst int buttonPin = A3; // the number of the pushbutton pin for manual feed 13int buttonState = 0; // variable for reading the manual feed pushbutton statusint feed1hour = 07; // variables for feeding times and quantityint feed1minute = 00;int feed2hour = 17;int feed2minute = 30;int feedQty = 4;int feedRate = 800; //a pwm rate the triggers forward on the servo 75int feedReversal = 80; //a pwm rate that triggers reverse on the servo // play with these numbers for your servo. Mine is a Futaba digital servo // that I removed the pot from and the plastic lug, to make it continuous.void isr () { // Interrupt service routine is executed when a HIGH to LOW transition is detected on CLK if (digitalRead(PinCLK)) // this keeps an eye out for the rotary encoder being turned regardless of where the program is up = digitalRead(PinDT); // currently exectuting – in other words, during the main loop this ISR will always be active else up = !digitalRead(PinDT); TurnDetected = true;}void setup () { // set up the LCD’s number of columns and rows: lcd.begin(16, 2); // setup the Rotary encoder pinMode(PinCLK,INPUT); pinMode(PinDT,INPUT); pinMode(PinSW,INPUT); pinMode(buttonPin, INPUT); attachInterrupt (0,isr,FALLING); // interrupt 0 is always connected to pin 2 on Arduino UNO lcd.setCursor(17,0); lcd.print(“Roger Donoghue’s”); // A bit of fun 🙂 lcd.setCursor(17,1); lcd.print(” Cat-O-Matic”); for (int positionCounter = 0; positionCounter < 17; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(150); } delay(3000); for (int positionCounter = 0; positionCounter < 17; positionCounter++) { // scroll one position left: lcd.scrollDisplayRight(); // wait a bit: delay(150); } // end of fun lcd.setCursor(17,0); lcd.print(” “); lcd.setCursor(17,1); lcd.print(” “); } void loop () { //Main program loop – most things in here! static long virtualPosition=0; // without STATIC it does not count correctly!!! tmElements_t tm; // This sectionm reads the time from the RTC, sets it in tmElements tm (nice to work with), then displays it. RTC.read(tm); lcd.setCursor(0, 0); printDigits(tm.Hour); //call to print digit function that adds leading zeros that may be missing lcd.print(“:”); printDigits(tm.Minute); lcd.print(“:”); printDigits(tm.Second); lcd.print(” “); lcd.print(“Qty “); lcd.print(feedQty); lcd.print(” “); lcd.setCursor(0,1); lcd.print(“1)”); printDigits(feed1hour); lcd.print(“:”); printDigits(feed1minute); lcd.print(” 2)”); printDigits(feed2hour); lcd.print(“:”); printDigits(feed2minute); // MAIN BREAKOUT “IF” SECION BELOW THAT MONITORS THE PUSH BUTTON AND ENTERS PROGRAMMING IF IT’S PUSHED if (!(digitalRead(PinSW))) { // check if pushbutton is pressed // if YES then enter the programming subroutine lcd.blink(); // Turn on the blinking cursor: lcd.setCursor(5,0); lcd.print(” SET”); virtualPosition = tm.Hour; //needed or the hour will be zero each time you change the clock. do { lcd.setCursor(0,0); // put cursor at Time Hour delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the hour of time – tm.Hour = virtualPosition; RTC.write(tm); lcd.setCursor(0, 0); printDigits(tm.Hour); // then re-print the hour on the LCD } while ((digitalRead(PinSW))); // do this “do” loop while the PinSW button is NOT pressed lcd.noBlink(); delay(1000); // SET THE MINS lcd.blink(); // Turn on the blinking cursor: virtualPosition = tm.Minute; //needed or the minute will be zero each time you change the clock. do { lcd.setCursor(3,0); // put cursor at Time Mins delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the min of time – tm.Minute = virtualPosition; RTC.write(tm); lcd.setCursor(3, 0); printDigits(tm.Minute); // then re-print the min on the LCD } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); // SET THE QTY – Feed quantity lcd.blink(); // Turn on the blinking cursor: virtualPosition = feedQty; //needed or the qty will be zero. do { lcd.setCursor(14,0); // put cursor at QTY delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the feed qty feedQty = virtualPosition; lcd.setCursor(14, 0); lcd.print(feedQty); } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); // SET THE Feed1 Hour lcd.blink(); // Turn on the blinking cursor: virtualPosition = feed1hour; //needed or will be zero to start with. do { lcd.setCursor(2,1); // put cursor at feed1hour delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the feed1 hour feed1hour = virtualPosition; lcd.setCursor(2,1); printDigits(feed1hour); } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); // SET THE Feed1 Mins lcd.blink(); // Turn on the blinking cursor: virtualPosition = feed1minute; //needed or will be zero to start with. do { lcd.setCursor(5,1); // put cursor at feed1minute delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the feed1 minute feed1minute = virtualPosition; lcd.setCursor(5,1); printDigits(feed1minute); } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); // SET THE Feed2 Hour lcd.blink(); // Turn on the blinking cursor: virtualPosition = feed2hour; //needed or will be zero to start with. do { lcd.setCursor(10,1); // put cursor at feed1hour delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the feed1 hour feed2hour = virtualPosition; lcd.setCursor(10,1); printDigits(feed2hour); } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); // SET THE Feed2 Mins lcd.blink(); // Turn on the blinking cursor: virtualPosition = feed2minute; //needed or will be zero to start with. do { lcd.setCursor(13,1); // put cursor at feed1minute delay(500); // Delay needed or same button press will exit do-while as while is checking for another button push! if (TurnDetected) { // do this only if rotation was detected if (up) virtualPosition–; else virtualPosition++; TurnDetected = false; // do NOT repeat IF loop until new rotation detected } // Here I change the feed1 minute feed2minute = virtualPosition; lcd.setCursor(13,1); printDigits(feed2minute); } while ((digitalRead(PinSW))); lcd.noBlink(); delay(1000); } // end of main IF rotary encoder push button checker // CHECK FOR MANUAL FEED BUTTON buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { feed(); } // CHECK FEEDING TIME AND FEED IF MATCHED if (tm.Hour == feed1hour && tm.Minute == feed1minute && tm.Second == 0) { // if I dont’ check seconds are zero feed(); // then it’ll feed continuously for 1 minute! } if (tm.Hour == feed2hour && tm.Minute == feed2minute && tm.Second == 0) { feed(); } } // End of main Loopvoid printDigits(int digits){ // utility function for digital clock display: prints leading 0 if(digits < 10) lcd.print(‘0’); lcd.print(digits); } void feed() { lcd.setCursor(17,0); lcd.print(” Meowwwww!”); for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(150); } // Stir servo section If you don’t need a stir servo simply comment out all fo this until the Auger rotate section stirServo.attach(10); // I don’t know if I need one either but I’m adding it now as it’s easiest before I build it! for(pos = 0; pos =0; pos-=1) { stirServo.write(pos); delay(10); } delay(200); for(pos = 0; pos =0; pos-=1) { stirServo.write(pos); delay(5); } stirServo.detach(); // rotate the Auger feedServo.attach(PIN_SERVO); for (int cnt = 0; cnt < feedQty; cnt++) { feedServo.write(feedRate); //the feedrate is really the feed direction and rate. delay(600); //this delay sets how long the servo stays running from the previous command feedServo.write(feedReversal); //…until this command sets the servo a new task! delay(200); feedServo.write(feedRate); delay(600); feedServo.write(feedReversal); // if you want to increase the overall feedrate increase the forward delays (1000 at the moment) delay(200); // or better still just copy and past the forward & backwards code underneath to repeat } // that way the little reverse wiggle is always there to prevent jams feedServo.detach(); for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // scroll one position left: lcd.scrollDisplayRight(); // wait a bit: delay(150); } }

Файлы

  • Cat_feeder_code.ino

Сводная таблица параметров автокормушек

Наименование

Тип

Защита от вскрытия

Блокировка кнопок

Источники питания

Надежность

Застревание корма

Tenberg Yummy

Сегментная

Надежная

Есть

Розетка + Аккумулятор

5

Не застревает

Petwant 4,3 л с видеокамерой

Резервуар + дозатор

Надежная

Закрыто крышкой

Розетка + Батарейки

5

Редко

Tenberg Flunky

Резервуар + дозатор

Надежная

Закрыто крышкой

Розетка + Батарейки

5

Редко

TRIXIE TX2 600 мл

Откидная крышка

Надежная

Нет

Батарейки

5

Не застревает

SITITEK Pets Pro

Резервуар + дозатор

Надежная

Нет

Розетка

5

Редко

Xiaomi Petkit Fresh Element

Резервуар + дозатор

Надежная

Закрыто крышкой

Розетка + Батарейки

3

Редко

“Feed-Ex” 2.5 л

Резервуар + дозатор

Ненадежная

Нет

Батарейки

2

Редко

“Feed-Ex” на 6 кормлений

Сегментная

Ненадежная

Нет

Батарейки

2

Не застревает

Наименование

Виды корма

Объемы резервуаров

Размеры порций

Качество изделия

Количество кормлений

Стоимость

Tenberg Yummy

Сухой + Влажный

1,35 л

от 1 до 215 г

Высокое

5

4900 р.

Petwant 4,3 л с видеокамерой

Сухой

4,3 л

от 15 до 150 г

Высокое

4

14 600 р.

Tenberg Flunky

Сухой

6 л

от 5 до 390 г

Высокое

4

6800 р.

TRIXIE TX2 600 мл

Сухой + Влажный

0,6 л

от 1 до 240 г

Среднее

2

2700 р.

SITITEK Pets Pro

Сухой

4 л

от 2 до 150 г

Высокое

4

8000 р.

Xiaomi Petkit Fresh Element

Сухой

5,9 л

от 15 до 150 г

Высокое

10

18 500 р.

“Feed-Ex” 2.5 л

Сухой

2,5 л

от 15 до 150 г

Низкое

4

4100 р.

“Feed-Ex” на 6 кормлений

Сухой + Влажный

1,5 л

от 1 до 200 г

Низкое

6

3500 р.

Надеемся, что данная статья была полезной и поможет сделать наилучший выбор для вашего питомца!

Автокормушка с серводвигателем

Кормушка для кота с дозатором своими руками позволит отмерять точные порции корма и подавать его в назначенное время. Такое устройство можно изготовить самостоятельно, используя серводвигатель.

Инструменты:

  • простой серводвигатель;
  • непрерывный серводвигатель;
  • контроллер Arduino;
  • энкодер KY-040;
  • блок питания на 12 В, 1 А;
  • шнек высотой 10 см;
  • тройник из ПВХ диаметром 15 мм;
  • буквенно-цифровой ЖК-дисплей на базе контроллера HD44780;
  • кнопка;
  • термоклей;
  • дрель;
  • лобзик;
  • коробка для еды (пластиковая, с высокими бортами);
  • монтажная коробка из МДФ толщиной 9 мм.

С дозатором

Мастер-класс:

  1. Взять готовый шнек или использовать шнек из старой мясорубки. Прикрепить непрерывный серводвигатель к основанию шнека.
  2. Протестировать механизм внутри тройника. Если он работает хорошо и без перебоев, закрепить его в тройнике с помощью клея.
  3. Вырезать в МДФ-коробке 2 квадратных отверстия (для серводвигателя и для дисплея панели управления), а также 3 круглых (для шнека).
  4. Найти подходящую панель, на которую будут установлены кнопка подачи корма, ЖК-дисплей и энкодер. Прикрепить конструкцию на коробку.
  5. На планке серводвигателя закрепить маленькую ложку для размешивания пищи.
  6. К корпусу прикрепить коробку для пищи.
  7. Собрать электронную начинку по системе Arduino. Все составные части спаять паяльником.

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

Изготовление кормушки для кошек с дозатором своими руками потребует от хозяина мастерства и некоторых материальных затрат, но оно хорошо окупится.

К сведению! В магазинах такие кормушки стоят около 12 тысяч рублей и даже больше.*

Автоматическая кормушка для кошек своими руками ? советы и нюансы по изготовлению

Для изготовления автоматической кормушки домашним животным потребуется некоторый материал и инвентарь:

  • старые часы настенные (с батарейкой);
  • жестяная банка большого объёма (от консервов или другого продукта);
  • глина, не требующая сушки в печи;
  • кусок тонкой фанеры;
  • ножовка или малярный нож, рулетка, карандаш;
  • клей или двусторонний скотч (подойдёт и изолента).

Рассмотрим поэтапную инструкцию сооружения кормушки для питомца.

Автокормушки промышленного производства

В продаже можно найти самые разные модели автоматических кормушек для животных. Многие устройства оснащены диспенсером, таймером, дозатором и даже звуковым сигналом. Самыми лучшими считаются:

  • Catit Senses;
  • Smart HD Pet Feeder PF03;
  • Stefanplast Break Reserve;
  • Feed-Ex PF100;
  • Petwant PF-102 White;
  • SITITEK Pets Ice Mini;
  • 4SITITEK Pets Prо Plus;
  • SITITEK Pets Tower-5;
  • Ferplast Cometa Bowl;
  • Petwant PF-105;
  • Beeztees Cat Mate C3000;
  • Triol;
  • Cat Mate C50;
  • Trixie.

Критерии выбора

Автокормушку подбирают, исходя из потребностей животного. При этом надо учитывать такие критерии:

  • Размер и вес животного: чем оно крупнее, тем больше еды ему требуется.
  • Узнать заранее, на какое количество кормлений рассчитана кормушка.
  • Питомцу с излишним аппетитом подойдут кормушки с таймером, дозатором и диспенсером.
  • Если кошка ест достаточное количество пищи и не переедает, ей можно сделать обычную кормушку.
  • Конструкция должна быть прочной и устойчивой.
  • Устройство должно быть из экологически чистых материалов — металла или пищевого пластика.

Из двух бутылок получится простая, но удобная кормушка

Кошка должна сама быстро найти новое «чудо техники», поэтому автокормушку ставят на привычное место кормления питомца.

Важно! Перед отъездом хозяин должен внимательно проверить состояние устройства. Необходимо, чтобы оно работало идеально.

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

feeder-740-500.jpg

Благодаря автоматической кормушке у вашей кошки всегда будет корм в достаточном количестве. Это особенно необходимо, если вы планируете отсутствовать дома дольше обычного. Автоматическая кормушка позаботиться о том, чтобы ваша кошка была сытой. Но где взять такое чудо-приспособление? Вариант первый — купить. Стоимость таких кормушек зависит от конфигурации, производителя, типа и колеблется в пределах 900-12 700 руб.

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


Добавить комментарий

Ваш адрес email не будет опубликован.