Turn Your Old MEAT GRINDER Into an Automatic CHICKEN FEEDER

3,445

8

Let me present to you a chicken feeder made out of an old meat grinder. The only expense is a Nema17 motor and a driver. You can get away with using a AC timer and a worm motor if you are not familiar with electronics. It might also work with wet dog/cat food, even without modifications (see Step 2). Sorry for lack of pictures as I didn't intend to publish it at the time of bouilding. I later connected this feeder to a 12V battery charged by a solar cell. Enjoy!

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: PARTS LIST

PARTS LIST:

  1. old meat grinder
  2. nema 17 or better
  3. nema 17 holder
  4. plastic bottle
  5. driver L298
  6. shaft coupler
  7. screw
  8. microcontroller
  9. 12V power supply

Step 2: Cut the Meat Grinder With an Angle Grinder

Cut a small opening just before the exit of the meat grinder. This allows the chicken feed to exit freely and not get stuck at the end of the worm. Don't cut too far back though as the feed might leak out.

File sides of the worm so the clearence is wider for larger pieces to pass through.

Heat shrink the plastic bottle on the top of the meat grinder. Wider and higher than mine works better. Hot glue another bottle with cap if needed.

Step 3: The Code Is for Fotocell Driven Dosage Once a Day; It Includes Chicken Gates and a Relay for 12V Battery

//code has a "counter" that counts minutes

//it goes to 0 at night and to 71 durring the day

//but only dispenses at 30 in the morning

#include "LowPower.h"

#include "Stepper.h"

int Pin0 = 9;

int Pin1 = 8;

int Pin2 = 7;

int Pin3 = 6;

int fotoThr=780;

//int enable1Motor = 3;

//int enable2Motor = 5;

int mosfetFeeder = 4;

int fotoenablePin = 2;

int t = 2; //delay

int i=0;

int j=0;

int k=0;

int _step = 0;

int sensorPin = A0;

int foto = 700;

int state = 1; //0 is closed; 1 is open

int feederInit = 35; // minutes of luminating, max 60, 0=darkness, 30 feeder start, once a day

const int stepsPerRevolution = 200;

Stepper myStepper(stepsPerRevolution, 10, 11, 12, 13);

boolean dir = true;// gre

void setup()

{

// set the speed at 60 rpm:

myStepper.setSpeed(30);

// initialize the serial port:

Serial.begin(9600);

// pinMode(enable1Motor, OUTPUT);

//pinMode(enable2Motor, OUTPUT);

pinMode(Pin0, OUTPUT);

pinMode(Pin1, OUTPUT);

pinMode(Pin2, OUTPUT);

pinMode(Pin3, OUTPUT);

pinMode(fotoenablePin, OUTPUT);

pinMode(mosfetFeeder, OUTPUT);

}

void loop()

{

digitalWrite(fotoenablePin, HIGH);

delay(50);

foto = analogRead(sensorPin);

digitalWrite(fotoenablePin, LOW);

// { dir = true; }

// else

// { dir = false; }

if (foto < fotoThr && state == 0)

{

//digitalWrite(baza1, HIGH);

delay(200); //to let dc-dc conv. power up

//digitalWrite(9, LOW);

//digitalWrite(10, LOW);

state = 1;

for (int i = 0; i < 24576; i++)

{

dir = true;

switch (_step) {

case 0:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 1:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, HIGH);

break;

case 2:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 3:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 4:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 5:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 6:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 7:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

default:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

}

if (dir) {

_step++;

} else {

_step--;

}

if (_step > 7) {

_step = 0;

}

if (_step < 0) {

_step = 7;

}

delay(t);

}

// digitalWrite(baza1, LOW);

// digitalWrite(9, HIGH);

//digitalWrite(10, HIGH);

}

if (foto > fotoThr && state == 1)

{

//digitalWrite(baza1, HIGH);

delay(200);

//digitalWrite(9, LOW);

//digitalWrite(10, LOW);

state = 0;

for (int i = 0; i < 24576; i++)

{

dir = false;

switch (_step) {

case 0:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 1:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, HIGH);

break;

case 2:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 3:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 4:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 5:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 6:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 7:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

default:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

}

if (dir) {

_step++;

} else {

_step--;

}

if (_step > 7) {

_step = 0;

}

if (_step < 0) {

_step = 7;

}

delay(t);

}

//digitalWrite(baza1, LOW);

//digitalWrite(9, HIGH);

//digitalWrite(10, HIGH);

}

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

if (foto < fotoThr )

{

feederInit++;

if(feederInit==71)

{

feederInit=70;

}

}

else

{

feederInit--;

if(feederInit==0)

{

feederInit=1;

}

}

if (foto < fotoThr && feederInit==30 )

{

for(j=0;j<5;j++)

{

digitalWrite(mosfetFeeder, HIGH);

delay(2000);

for(i=1;i<=5;i++)

{

Serial.println("counterclockwise");

myStepper.step(stepsPerRevolution);

delay(200);

}

digitalWrite(mosfetFeeder, LOW);

for(k=0;k<8;k++)

{

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

}

}

}

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

}

Step 4: Done!

Reclaimed Contest 2017

Participated in the
Reclaimed Contest 2017

Make It Move Contest 2017

Participated in the
Make It Move Contest 2017

Share

    Recommendations

    • Make It Fly Challenge

      Make It Fly Challenge
    • Stone Concrete and Cement Contest

      Stone Concrete and Cement Contest
    • Indoor Lighting Contest

      Indoor Lighting Contest

    Discussions