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

На главную

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

Для автоматизации кормления кур необходимо было придумать автоматическую кормушку на 5-6 кур для дачи, не сложную в техническом исполнении, с применением недорогих и простых в обработке материалов. Выбор пал на кормушку по типу бункерной с крышкой контролирующей процесс кормления.

С помощью автоматической кормушки я хотел решить следующие задачи: Кормление кур дважды в день, утром и вечером. Для деревенских и дачных кур этого вполне достаточно. Ограниченный по времени процесс кормления, так как после того как куры наедаются они начинают грести и разбрасывать корм, который потом не едят. Запаса корма должно хватать на одну неделю для 5-6 кур, или больше, в зависимости от количества птицы. Очевидно для этого необходимо использовать емкость по типу бункер. Управлять кормушкой будет микроконтроллер на платформе Arduino. Почти все относящееся к электромеханической части было куплено на зарубежных популярных интернет магазинах.

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

Бункер кормушки заполняется кормом, корытце из которого кормится птица прикрывается крышкой. Утром при определенной освещенности считываемой датчиком освещенности (значение подбирается экспериментально), крышка открывается и остается открытой на время заданное регулировочным потенциометром. Далее крышка закрывается. Вечером процесс повторяется так же при определенной освещенности. Если кормушка будет эксплуатироваться в помещении, то датчик освещенности нужно вынести из помещения. Использование микросхемы часов реального времени совместно с микроконтроллером было бы самым логичным для кормления точно по часам, но эта схема значительно усложняет конструкцию. Решено было испробовать схему с фоторезистором, которая себя вполне оправдала при изготовлении автоматической дверцы для курятника. Один фоторезистор следит за уровнем освещенности на улице, второй фоторезистор помещен в бункер и следит за наполняемостью бункера кормом. Пока корм есть, он закрывает датчик от света, и наоборот, нет корма датчик освещен. Сообщает об отсутствие корма, а также привлекает внимание кур перед кормежкой пьезоэлемент. Предусмотрена кнопка, нажав которую, можно инициировать кормежку.

Потребуется:

Схема Автоматической кормушки для кур на Arduino

Схема автоматической кормушки для кур.

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

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

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

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

Энергию для питания кормушки вырабатывает 96 вт.ч солнечная панель.

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

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

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

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

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

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

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

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

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

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

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

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

Видео работы механизма автоматической дверцы для курятника.


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

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

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

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

Результаты опытной эксплуатации.

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

Возможные улучшения.

Места для кормления можно сделать с двух противоположных сторон, что бы избежать "дедовщины" в курятнике при кормлении.

Пример скетча для автоматической кормушки под управлением Arduino.

//demon200870@yandex.ru
#define buz 5 // Пьезоэлемент
#define IN3 8 // Направление вращение двигателя
#define IN4 7 // Направление вращение двигателя
#define ENB 6 // ШИМ вывод для управления двигателем
#define PEREV 7 //видимо лишнее
#define PinButton 9 //подключение кнопки
#define D1 3 // подключение концевика 1 низ
#define D2 2 // подключение концевика номер 2
#define ledGreen 11

#define FotoRezistorPin A0 // фоторезистор
#define FotoRezistorPin1 A5 //пин фоторезистора определяющего наполняемость бункера
#define TimeRezistorPin A2 //пин потенциометра времени задержки

int valueFotoRezistor = 0; // переменная для хранения значения фоторезистора
int valueFotoRezistorFull = 0; // переменная для хранения значения фоторезистора
unsigned long valueTimeRezistor = 0; //хранение значения времени задержки
int DK1;//переменная для первого концевика
int DK2;//переменная для второго концевика
int H; //переменная флаг состояния крышки относительно предыдущего состояния
int var=0;

void setup() {
// initialize the serial port:
Serial.begin(9600);
pinMode(ledGreen, OUTPUT);
pinMode(PinButton, OUTPUT);
pinMode(buz, OUTPUT); //пьезоэлемент
pinMode(IN3, OUTPUT);//подключение к мотор шилду
pinMode(IN4, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(D1, INPUT); //настройка пина концевика на вход
digitalWrite(D1, HIGH);//запишем высокий уровень в пин
pinMode(D2, INPUT); //настройка пина концевика на вход
digitalWrite(D2, HIGH);//запишем высокий уровень в пин
fotoresistor();
kalibrovkaH(); //определяем значение флага
}

void loop()
{
fotoresistor();
timeRezistor();
fotoRezistorFull();
Serial.print("H=");
Serial.println(H);
proverka();
PressButton();
ledGreenPower();

}
void PressButton()
{
if (digitalRead(PinButton)==HIGH)
{
DK2=digitalRead(D2);//
music();
openkrishka();//открыть крышку
Serial.println("open");
while (DK2==HIGH)
{
digitalRead(D2); //чтение состояния концевика
DK2=digitalRead(D2);
}
motor_stop();
Serial.print("JrutKuri");
delay(valueTimeRezistor);//подождать пока поедят
DK1=digitalRead(D1);
closekrishka();//закрыть крышку
Serial.println("close");
while(DK1==HIGH)
{
digitalRead(D1); //чтение состояния концевика
DK1=digitalRead(D1);
count();
}
//H=2;
motor_stop();
var=0;//обнуляем переменную счета времени ошибки
}
}
void count()
{
var=var+1;
Serial.print("Var=");
Serial.println(var);
if (var>1500){motor_stop();Error();}
}
void fotoresistor()
{
valueFotoRezistor=analogRead(FotoRezistorPin); //считываем значение с фоторезистора
Serial.println(valueFotoRezistor);
}
void fotoRezistorFull()
{
valueFotoRezistorFull=analogRead(FotoRezistorPin1); //считываем значение с фоторезистора
Serial.print("FotoRezistorFull=");
Serial.println(valueFotoRezistorFull);
if(valueFotoRezistorFull > 1022)//подобрать значение, что бы днем при пустом бункере
//было не меньше чем установлено значение, а ночью гарантировано меньше, что б не пищал.
{
Empty();
}
}
void kalibrovkaH()
{
if (valueFotoRezistor > 100)
{
H=2;
}
if (valueFotoRezistor < 100)
{
H=1;
}
}
void timeRezistor()
{
valueTimeRezistor=analogRead(TimeRezistorPin);
valueTimeRezistor=map(valueTimeRezistor, 0,1023,0,1800000); //от 0 до 30 минут
Serial.print("TimeRezistor=");
Serial.println(valueTimeRezistor);
}
void proverka()
{
if ((valueFotoRezistor < 100)&& (valueFotoRezistor > 50) && (H==1))
{
DK2=digitalRead(D2);//
music();
openkrishka();//открыть крышку
Serial.println("open");
while (DK2==HIGH)
{
//digitalRead(D2); //чтение состояния концевика
DK2=digitalRead(D2);
}
motor_stop();
Serial.print("JrutKuri");
delay(valueTimeRezistor);//подождать пока поедят
DK1=digitalRead(D1);
closekrishka();//закрыть крышку
Serial.println("close");
while(DK1==HIGH)
{
//digitalRead(D1); //чтение состояния концевика
DK1=digitalRead(D1);
count();
}
H=2;
motor_stop();
var=0;
}
if ((valueFotoRezistor > 300)&&(valueFotoRezistor < 350) && (H==2))
{
DK2=digitalRead(D2);//
music();
openkrishka();//открыть крышку
Serial.println("open");
while (DK2==HIGH)
{
digitalRead(D2); //чтение состояния концевика
DK2=digitalRead(D2);
}
motor_stop();
Serial.print("JrutKuri");
delay(valueTimeRezistor);//подождать пока поедят
DK1=digitalRead(D1);//
closekrishka();//закрыть крышку
Serial.println("close");
while(DK1==HIGH)
{
digitalRead(D1); //чтение состояния концевика
DK1=digitalRead(D1);
count();
}
H=1;
motor_stop();
var=0;
}
}
void closekrishka()//закрываем крышку
{
Serial.println("Back");
int value;//=255;
for(value=0; value<=255; value+=1)
{
digitalWrite(IN3, HIGH); // Задаем направление вращения
digitalWrite(IN4, LOW);
analogWrite(ENB, value); // Задаем скорость вращения
delay(5);
}
}
void openkrishka()
{
Serial.println("Forward");
int value;//=255;
for(value=0; value<=255; value+=1)
{
digitalWrite(IN3, LOW); // Задаем направление вращения
digitalWrite(IN4, HIGH);
analogWrite(ENB, value); // Задаем скорость вращения
delay(5);
}
}
void motor_stop()
{
digitalWrite(ENB, LOW);
//Serial.println("Motor_Stop");
}
void Empty()//звуковой сигнал раз в 3 сек.
{
tone(buz,1568,150);
delay(3000);
}
void ledGreenPower()//подумать о периодическом мигании для экономии энергии
{
digitalWrite(ledGreen, HIGH);
}
void Error()
{
Serial.print("Error");
motor_stop();
tone(buz, 1568,150);
delay(500);
}
void music()
{
tone(buz,1568,150); // 6ой Спуск вниз
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,830,150);
delay(150);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(300);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(150);
tone(buz,1174,150);
delay(150);
delay(300);
tone(buz,1568,150);
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,2093,300);
delay(300);
tone(buz,2093,150);
delay(150);
tone(buz,2093,600);
delay(600);
tone(buz,1568,150);
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,830,150);
delay(150);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(300);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(150);
tone(buz,1174,150);
delay(450);
tone(buz,1244,300);
delay(450);
tone(buz,1174,450);
delay(450);
tone(buz,1046,600);
delay(1200 );
tone(buz,1568,150);
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,830,150);
delay(150);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(300);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(150);
tone(buz,1174,150);
delay(150);
delay(300);
tone(buz,1568,150);
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,2093,300);
delay(300);
tone(buz,2093,150);
delay(150);
tone(buz,2093,600);
delay(600);
tone(buz,1568,150);
delay(150);
tone(buz,1480,150);
delay(150);
tone(buz,1396,150);
delay(150);
tone(buz,1244,300);
delay(300);
tone(buz,1318,150);
delay(300);
tone(buz,830,150);
delay(150);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(300);
tone(buz,880,150);
delay(150);
tone(buz,1046,150);
delay(150);
tone(buz,1174,150);
delay(450);
tone(buz,1244,300);
delay(450);
tone(buz,1174,450);
delay(450);
tone(buz,1046,600);
delay(5000);
}

На главную