Оглавление:

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

Видео: Автоматическая кормушка для собак: 6 шагов

Видео: Автоматическая кормушка для собак: 6 шагов
Видео: Автоматическая кормушка Petwant F6 бзор, инструкция и подключение. 2024, Июль
Anonim
Автоматическая кормушка для собак
Автоматическая кормушка для собак

Это мой проект автоматической кормушки для домашних животных. Меня зовут Паркер, я учусь в 11 классе, и я сделал этот проект 11 ноября 2020 года в качестве CCA (завершающее задание курса). В этом проекте я покажу вам, как сделать автоматическую кормушку для домашних животных с Arduino UNO. Вы можете выбрать время, которое можете изменить. Корм будет подаваться через шнек и кормить ваших питомцев!

Запасы

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

  • Arduino UNO
  • L298N - 10 $ - Управляет Nema 17
  • NEMA 17 - 10 $ - Поворачивает шнек для подачи корма
  • RTC (DS1307) - 10 $ - дает время
  • Блок питания 12 В - 5 $ - Все питает
  • Мини-макетная плата - для дополнительного места для проводки
  • Провода перемычки - все соединяет
  • Женский и мужской провода - соединяет все

Аппаратное обеспечение:

  • Нить для 3D-печати - для 3D-принтера
  • 2 болта M4 - удерживайте опорную плиту на месте
  • 4 болта Nema 17 - удерживайте nema вниз
  • ПВХ Т 48мм внутренний размер 66мм внешний размер - 3 $

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

  • 3д принтер
  • Дрель
  • Паяльный пистолет

Шаг 1. Обзор дизайна

Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна

Конструкция кормушки для домашних животных очень проста. Бункер устанавливается на верхнюю часть ПВХ T. Затем на заднюю часть ПВХ T устанавливается крышка (как показано на рисунке) с прикрепленным к ней Nema 17. Затем Nema 17 будет вставлен в заднюю часть шнека, который можно увидеть выше, и болт войдет в боковую часть, чтобы удерживать его на месте, чтобы он не деформировал отверстие, которое можно увидеть выше!

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

Шаг 2: Обзор кода

Обзор кода
Обзор кода
Обзор кода
Обзор кода
Обзор кода
Обзор кода

RTC & Stepper имеет библиотеку под названием RTClib.h и Stepper.h, которая добавляет упрощенный код для RTC & Stepper. Операторы if очень просты: если часы и минуты равны указанному времени, он будет вращать nema, который будет раздавать еду. Остальной код очень легко понять даже для человека с дневным опытом.

Шаг 3: прикрепление Nema 17 к опорной плите и шнеку

Крепление Nema 17 к опорной плите и шнеку
Крепление Nema 17 к опорной плите и шнеку
Крепление Nema 17 к опорной плите и шнеку
Крепление Nema 17 к опорной плите и шнеку
Крепление Nema 17 к опорной плите и шнеку
Крепление Nema 17 к опорной плите и шнеку

Сначала вам нужно взять базовую пластину и прикрепить ее к Nema 17, используя предварительно сделанные отверстия на опорной пластине. После этого вы хотите прикрепить шнек к Nema через заднее отверстие на нем. Затем соедините опорную пластину со шнеком и прикрепленным Nema, затем вверните болты M2 с каждой стороны.

Шаг 4: Подключение L298N и RTC

Подключение L298N и RTC
Подключение L298N и RTC
Подключение L298N и RTC
Подключение L298N и RTC

Этот шаг расскажет вам, как подключить L298N и RTC.

Мы начнем с контактов 8, 9, 10, 11 на L298N.

  • Контакт 8 (белый) к IN1
  • Контакт 9 (фиолетовый) к IN2
  • Контакт 10 (розовый) к IN3
  • КОНТАКТ 11 (желтый) к IN4

Далее мы подключим Nema 17 к L298N.

  • OUT1 к 1 по NEMA
  • OUT2 - 2 по NEMA
  • OUT3 до 3 по NEMA
  • OUT4 до 4 по NEMA

Подключение 12 В и Arduino к L298N (не удалось найти 12 В, поэтому представьте батарею 9 В в качестве источника питания)

  • Вольт до 12В
  • Земля на GND
  • От 5 В до 5 В на макетной плате

Подключение RTC к Arduino

  • GND к GND
  • От 5 В до 5 В на макетной плате
  • SDA в A5
  • SCL в A4

Перемычки

Все перемычки должны быть на L298N

Шаг 5. Кодирование с комментариями

Кодирование с комментариями
Кодирование с комментариями
Кодирование с комментариями
Кодирование с комментариями
Кодирование с комментариями
Кодирование с комментариями

Код более понятен на изображениях выше

// Имя: Паркер Фредерик

// Название проекта: Auto Pet Feeder // Дата: вторник, 10 ноября 2020 г. // Учитель: М. Бонистил // Описание: Кормите своих питомцев в указанное время!

// Библиотеки для вещей, которые я использовал #include #include #include "RTClib.h"

RTC_DS1307 rtc; // Говорит, какой RTC я использую

// Здесь вы устанавливаете время для еды

// Часы int mornFeedTime = 12; int nightFeedTime = 7; // Минуты int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Секунды int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7] [12] = {«Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота»}; // Превращает обычные дни в дни недели

const int feed = 200; // Это ваши шаги, поэтому сколько раз вы хотите, чтобы он вращался

Stepper myStepper (подача, 8, 9, 10, 11); // Ваши контакты для Nema 17 и большинства других степперов

void setup () {Serial.begin (9600);

в то время как (! серийный); // Если RTC не работает, он отобразит его на последовательном экране if (! Rtc.begin ()) {Serial.println ("Не удалось найти RTC"); в то время как (1); }

// Это сообщит вам, работают ли часы реального времени, и отобразит их на последовательном экране if (! Rtc.isrunning ()) {Serial.println ("RTC is running!");

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Это займет у вашего компьютера время и будет использовать его в RTC

// Если вы хотите установить время вместо компьютерного, вы можете сделать это здесь //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Год / Месяц / День / Час / Минута / Секунда} myStepper.setSpeed (200); // Скорость, с которой он должен разворачиваться}

недействительный цикл () {DateTime now = rtc.now ();

// Это сделает эту переменную текущим часом и т. Д. Int hr = now.hour (); int mi = now.minute (); int se = now.second ();

// Закодируем так, чтобы в установленное время он выдавал еду и вращался 5 раз, это если для утреннего кормления

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Завтрак!"); myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

}

// Закодируем так, чтобы в установленное время он выдавал еду и вращался 5 раз, это для ночного кормления

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Ужин!"); myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700);

myStepper.step (-фид); задержка (700); }

// Это отобразит ГОД, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТУ, СЕКУНДУ в серийном номере

Serial.print (now.year (), DEC); Серийный.принт ('/'); Serial.print (now.month (), DEC); Серийный.принт ('/'); Serial.print (now.day (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()]); Serial.print (")"); Serial.print (now.hour (), DEC); Serial.print (':'); Serial.print (now.minute (), DEC); Serial.print (':'); Serial.print (now.second (), DEC); Serial.println (); }

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

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

Шаг 6: Проблемы и как их исправить

Проблемы и как их исправить!
Проблемы и как их исправить!

У меня было несколько проблем

  • Мне нужен был источник питания на 12 В, у меня была только батарея на 9 В, я нашел один, и проблема была быстро решена.
  • При подключении L298N к NEMA 17 у меня были неправильные провода на A и A - из-за чего он немного дрожал. Я просто поправил, поменяв провода на другую сторону.
  • Пытался сделать код более простым, потому что в операторе if myStepper.step (-feed); снова и снова выглядел беспорядочно. Поэтому мне пришлось вернуть его обратно.
  • У меня была опорная пластина неправильного размера, как показано на картинке, поэтому мне пришлось немного распечатать новую, и она идеально подошла!
  • У меня проблема в том, что это заедание, так как шнек слишком мал, поэтому он заклинивает, простой способ, который я могу исправить, - это немного увеличить шнек!

Рекомендуемые: