Arduino

Диспенсер корма для домашних животных

Оставляя своих питомцев на целый день одних в квартире нужно быть уверенным, что она будут накормлены и напоены. Эта задача легко решается с помощью дозатора для раздачи корма. Используя такое устройство, вы можете быть уверены, что животное будет накормлено и при этом не перекормлено.
Инструменты и материалы:
-Ардуино UNO;
-Разъем питания для платы Arduino;
-Сервопривод (плюс винты и крепления двигателя);
-Переключатель RS26 — 2 шт;
-Переключатель;
-Батарея 9 В;
-5-мм светодиод;
-Провода;
-Мебельные магниты — 4 шт;
-Пиломатериалы;
-Акрил;
-Эпоксидная смола;
-Акриловый клей;
-Лазерный резак;
-Кусачки;
-Инструмент для зачистки проводов;
-Напильник;
-Паяльник;
-Компьютер с Arduino IDE;

Шаг первый: лазерная резка фанеры
Корпус дозатора вырезается из фанеры. Файлы для резки можно скачать ниже.
Plywood (2).ai
Plywood (1).ai

Шаг второй: лазерная резка акриловых деталей
Остальные детали вырезаются из акрила. На рисунках ниже указано для чего используется каждая деталь.
Файлы для резки можно скачать ниже.
Acrylic (1).ai
Acrylic (2).ai
Funnel.ai

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

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

Шаг пятый: бункер
Теперь нужно склеить загрузочный бункер. Бункер выполнен в виде прямоугольной воронки. В нижней узкой части воронки приклеивается основание.

Шаг шестой: сборка
Устанавливает колесо внутрь корпуса. Как воронка, так и колесо являются съемными частями, так легче чистить дозатор.

Дальше нужно установить переключатели. Переключателей два и они имеют по 12 контактов. Нужно припаять провода к контактам 1, 4 и 7 на обоих переключателях. Еще один провод припаивается к земле одного из переключателей и от него припаивается перемычка к земле второго переключателя.

Дальше устанавливает сервопривод и соединяет его ось с осью колеса. Устанавливает плату Arduino UNO. Светодиод устанавливает в самое верхнее отверстие лицевой панели корпуса. Устанавливает и подключает батарею.
Два 12-и контактных переключателя устанавливаются на передней панели, а выключатель на задней.

Шаг седьмой: подключение
Теперь нужно подключить все электрические компоненты.
Мотор
Подключите красный провод к порту 5V.
Подключите оранжевый провод к цифровому порту 9.
Подключите коричневый провод к земле (GND).

Переключатель количества корма
Подключите провод от контакта 1 к цифровому порту 2.
Подключите провод от контакта 4 к цифровому порту 3.
Подключите провод от контакта 7 к цифровому порту 4.

Таймер
Подключите провод от контакта 1 к цифровому порту 5.
Подключите провод от контакта 4 к цифровому порту 6.
Подключите провод от контакта 7 к цифровому порту 7.

Переключатель Вкл. / Выкл.
Подключите одну клемму переключателя к красному проводу держателя батареи. Второй провод от клеммы подключите к красному проводу разъема питания. Подключите черный провод держателя батареи к черному проводу разъема питания.

Светодиод
Светодиод подключается к GND и Vin, соблюдая полярность.

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

 Показать / Скрыть текст#include <Servo.h> //Servo library

int fill = 0; //default motor starting position when the continer fills.
int empty= 135; // motor position when emptying the container
int amount = 1; // number of cups to feed
int interval = 4; // interval between feeds in seconds
Servo mainServo;

void setup() {
// put your setup code here, to run once:
mainServo.attach(9);

pinMode(2, INPUT_PULLUP); // pin 1 on amount switch
pinMode(3, INPUT_PULLUP); // pin 4 on amount switch
pinMode(4, INPUT_PULLUP); // pin 7 on amount switch
pinMode(5, INPUT_PULLUP); // pin 1 on time switch
pinMode(6, INPUT_PULLUP); // pin 4 on time switch
pinMode(7, INPUT_PULLUP); // pin 7 on time switch

}

void loop() {
// put your main code here, to run repeatedly:
amount = 1 ; // set to min value
if ( digitalRead(2) == LOW){
amount = 1;
}
else if (digitalRead(3) == LOW) {
amount = 2;
}
else if (digitalRead(4) == LOW) {
amount = 3;
}

runmotor();
if (digitalRead(5) == LOW) {
interval = 4;
}
else if (digitalRead(6) == LOW) {
interval = 8;
}
else if (digitalRead(7) == LOW) {
interval = 12;
}

delay(interval * 3600000);
}

void runmotor(){
for(;amount > 0; amount—) {
mainServo.write(empty);
Serial.write("Motor run starting");
delay(2000);
while(mainServo.read() >100){
mainServo.write(fill);
delay(2000);
mainServo.write(empty);
}
mainServo.write(fill);
delay(2000);
Serial.write("Motor run completed");
Serial.println();
}
}<br>

Источник

Похожие статьи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть
Закрыть