Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un Comedero Automático para Gatos Fiable – Proyecto DIY para Cuidado Sin Estrés

Componentes y Suministros

Componente Cantidad
Temporizador Mecánico de Enchufe 1
Motor Paso a Paso (Stepper) 1
Controlador de Motor Paso a Paso L9110S 1
Soporte de Eje Lineal SHF8 1
Cargador USB de Pared 1
SparkFun Arduino Pro Mini 328 - 5V/16MHz 1
Adaptador USB Macho a DIP 1
Cable de Extensión USB 1
Escuadras de Refuerzo (Corner Braces) 1

Sobre el Proyecto

Cuando me ausento de casa unos días, alimentar a mi gato siempre es un gran reto. Tengo que pedir a amigos o familiares que se ocupen de él. Busqué soluciones en internet y encontré muchos dispensadores automáticos, pero ninguno me convencía: son caros, solo sirven para pienso seco (mi gato come principalmente comida húmeda) y ocupan demasiado espacio en mi piso.

Decidí construir mi propio comedero compacto, automático y optimizado para comida húmeda. El problema de la comida húmeda es que se estropea rápido: una vez abierta la lata, tengo como máximo un día para usarla. Para ahorrar espacio, mantener la calidad del alimento y hacer el proyecto lo más barato y simple posible, diseñé una máquina que dispensa una sola ración. Esto me da dos días de libertad respecto a la alimentación del gato.

Funcionamiento

El funcionamiento es muy sencillo: lleno el recipiente (una caja de yogur vacía) con comida, cierro la tapa y conecto el cable con el temporizador de enchufe a la red de 230 VAC. Programo el temporizador para que al día siguiente alimente al gato. Cuando el dispositivo recibe corriente, el recipiente se abre mediante el motor paso a paso. Tras un día, la compuerta se abre y el gato puede comer. A mi vuelta, retiro el recipiente, limpio los restos, lo relleno con comida fresca, lo coloco de nuevo, cierro la tapa y el ciclo puede reiniciarse.

Construye un Comedero Automático para Gatos Fiable – Proyecto DIY para Cuidado Sin Estrés

Todos los pasos principales pueden verse en este video:

Código

Código para Arduino (C/C++)

El firmware se sube a la placa Arduino Pro Mini usando el IDE de Arduino (arduino.cc), un adaptador FTDI y un cable Mini-B USB. Aquí hay un video sobre cómo hacerlo: YouTube.

El código es simple: en el setup gira el motor paso a paso y en el loop espera a que se pulse el botón para girar de nuevo.

// Comedero automático para gatos por: J. Rundhall
// Código original para stepper por: R. Jordan Kreindler, octubre 2016
float RPM;
boolean isButtonpressed = false;
unsigned long timee;

// Asignación de pines
int buttonPIN = 6;
int aPin = 4;      // IN1: extremo bobina a
int bPin = 3;      // IN2: extremo bobina b
int aPrimePin = 5; // IN3: otro extremo bobina a
int bPrimePin = 2; // IN4: otro extremo bobina b

int one = aPin;
int two = bPin;
int three = aPrimePin;
int four = bPrimePin;

int degrees = 0;
int delay1 = 5;    // Retardo entre pasos (ms)
int delay2 = 200;  // Retardo tras vuelta completa (ms)
int count = 0;
int numberOfRotations = 1;

void setup() {
  Serial.begin(9600);
  pinMode(6, INPUT_PULLUP); // Botón
  pinMode(aPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(aPrimePin, OUTPUT);
  pinMode(bPrimePin, OUTPUT);
  Serial.println(" Clockwise");
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(aPrimePin, LOW);
  digitalWrite(bPrimePin, LOW);
  for(int ii=0; ii<20; ii++) doTurn();
}

void loop() {
  int sensorVal = digitalRead(6);
  if (sensorVal == LOW) {
    isButtonpressed = true;
  } else {
    if(isButtonpressed) {
      isButtonpressed = false;
      doTurn();
      digitalWrite(aPin, LOW);
      digitalWrite(bPin, LOW);
      digitalWrite(aPrimePin, LOW);
      digitalWrite(bPrimePin, LOW);
    }
  }
}

void doTurn() {
  // Método de medio paso (8 pasos por ciclo)
  // 1. aPin HIGH
  digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); delay(delay1);
  // 2. aPin y bPin HIGH
  digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); delay(delay1);
  // 3. bPin HIGH
  digitalWrite(aPin, LOW); digitalWrite(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); delay(delay1);
  // 4. bPin y aPrimePin HIGH
  digitalWrite(aPin, LOW); digitalWrite(bPin, HIGH); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); delay(delay1);
  // 5. aPrimePin HIGH
  digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); delay(delay1);
  // 6. aPrimePin y bPrimePin HIGH
  digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, HIGH); delay(delay1);
  // 7. bPrimePin HIGH
  digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); delay(delay1);
  // 8. bPrimePin y aPin HIGH
  digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); delay(delay1);

  count += 8;
  degrees = (360.0 * (count / 400.0));

  if ((numberOfRotations % 2) == 1) {
    Serial.println(" Clockwise ");
    Serial.println(degrees);
  } else {
    Serial.println(" Anti-Clockwise ");
    degrees = 360 - degrees;
    Serial.print("-");
    Serial.println(degrees);
  }

  if (count == 160) { // Vuelta completa
    numberOfRotations++;
    timee = millis();
    RPM = timee / numberOfRotations;
    RPM = (60000.00 / RPM);
    if (numberOfRotations >= 10) {
      Serial.print("RPM:");
      Serial.println(round(RPM));
    }
    delay(delay2);
    count = 0;

    // Invertir dirección tras cada vuelta
    if ((numberOfRotations) % 2 == 0) {
      aPin = four; bPin = three; aPrimePin = two; bPrimePin = one;
    } else {
      aPin = one; bPin = two; aPrimePin = three; bPrimePin = four;
    }
    digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW);
  }
}

Esquemáticos y Montaje

Primero realicé el cableado de la electrónica. Solo usé el soldador dos veces para conectar los cables de alimentación al PCB del adaptador USB. Antes de conectar a la red de 230V, recomiendo usar una fuente de laboratorio con control de corriente para verificar el cableado; si algo está mal, esto puede evitar daños. El consumo total debe ser inferior a 1 Amperio a 5 Voltios.

Después, ensamblé las escuadras de refuerzo, modifiqué la caja y la fijé a la estructura de la máquina.

Construye un Comedero Automático para Gatos Fiable – Proyecto DIY para Cuidado Sin Estrés

Proceso de manufactura

  1. Cafetera de goteo automática: historia, diseño y tendencias futuras
  2. Thermocam DIY: de idea en el aula a producto global
  3. Guía completa de alimentadores de barras automáticos: Características, beneficios y mejores prácticas
  4. Máquinas de Prensa Automáticas: Funcionamiento, Beneficios y Aplicaciones
  5. Entendiendo los Alimentadores de Prensa: Mecanismo, Función y Aplicaciones Industriales
  6. Comprender las Prensas de Potencia Automáticas: Características, Beneficios y Aplicaciones
  7. Alimentadores de barras neumáticos: solución rentable para automatización de tornos CNC
  8. Entendiendo las Curvadoras de Tubos Automáticas: Funciones, Beneficios y Aplicaciones
  9. Entendiendo las Mesas Rotativas Automáticas: Precisión y Eficiencia en Metalmecánica
  10. Guía Completa de Sistemas de Transmisión Automática
  11. Sistemas de Lubricación Automática: Cómo Funcionan y Por Qué Son Importantes