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

Comedero automático para gatos DIY

Componentes y suministros

Temporizador de salida mecánico
× 1
Motor paso a paso
× 1
Controlador de motor paso a paso L9110S
× 1
Soporte de eje lineal SHF8
× 1
Cargador de pared USB
× 1
SparkFun Arduino Pro Mini 328 - 5V / 16MHz
× 1
Conectores USB macho a adaptador DIP
× 1
Cable de extensión USB
× 1
Abrazadera de esquina de soportes
× 1

Acerca de este proyecto

Cuando salgo de casa por unos días, alimentar a mi gato siempre es un gran desafío. Tengo que pedirles a mis amigos o familiares que cuiden a mi gato. Busqué una solución en internet y encontré muchos productos dispensadores de comida para mascotas, pero no me gustaron. En primer lugar, son muy caras. En segundo lugar, solo son adecuados para manipular comida seca para gatos (mycat come comida húmeda la mayor parte del tiempo). Por último, son demasiado grandes, no tengo tanto espacio en mi piso. Así que decidí construir un comedero para gatos compacto, automático y optimizado con alimento húmedo. El problema con los alimentos húmedos es que se echan a perder muy rápidamente. Me di cuenta de que después de abrir una comida para gatos enlatada, tengo como máximo 1 día para usarla. Para ahorrar espacio y mantener la calidad de los alimentos y hacer que este proyecto sea lo más barato y simple posible, diseñé una máquina que puede dar una sola comida a la mascota. Me dará dos días de ausencia de mis deberes de alimentación de gatos (libertad :)).

El alimentador funciona de forma muy sencilla. Lleno el recipiente de comida (caja de yogur vacía) con comida, cierro la puerta del recipiente y enchufo el cable con un temporizador de salida a la red de 230 VCA. Configuré el temporizador para que después de un día encienda el alimentador. Cuando el instrumento está encendido, el contenedor de alimentos se abrirá mediante un servomotor. Después de un día, la puerta se abrirá y el gato podrá disfrutar de una buena comida. Cuando llego a casa, saco el recipiente de comida y limpio los restos y lo lleno con comida fresca, luego lo guardo y cierro la parte superior de la caja y el ciclo puede comenzar de nuevo.…

Todos los pasos principales se pueden ver en este video:

Código

  • Código arduino Automatic_cat_feeder
Automatic_cat_feeder código arduino C / C ++
Código fuente del firmware de Arduino. Cargué el código en la mini placa Arduino pro con la ayuda del software Arduino IDE (https://www.arduino.cc/en/Main/Software), un adaptador FTDI y un cable USB Mini-B. Aquí hay un video sobre cómo realizar este proceso:https://www.youtube.com/watch?v=78HCgaYsA70
El código es simple. En la configuración, girará el stepper que en el bucle principal espera hasta que se presione el botón y luego se moverá nuevamente.
 // Comedero automático para gatos hecho por:J. Rundhall // Código original para steper de:Bosquejo de R. Jordan Kreindler, escrito en octubre de 2016, para rotar RPM flotante; booleano isButtonpressed =false; unsigned long timee; // Asignaciones de pinesint buttonPIN =6; int aPin =4; // IN1:bobina a one endint bPin =3; // IN2:bobina b one endint aPrimePin =5; // IN3:bobina aPrime otro extremo de la bobina aint bPrimePin =2; // IN4:bobina bPrime otro extremo de la bobina bint uno =aPin; int dos =bPin; int tres =aPrimePin; int cuatro =bPrimePin; int grados =0; // int delay1 =20; // El retraso entre cada paso en milisegundos. Delay1 =5; // El retraso entre cada paso en milisegundos // int delay2 =50; // El retraso después de cada revolución completa, en milisegundos. Delay2 =200; // El retraso después de cada revolución completa, en milisegundos. Count =0; // El número de pasosint numberOfRotations =1; // El número de veces que el rotor ha // girado 360 grados.void setup () {// Establecer todos los pines como salida para enviar señales de salida desde el Arduino // UNO a los devanados de la bobina del estatorSerial.begin (9600); // abre el puerto serie, establece la velocidad de datos en 9600 bps pinMode (6, INPUT_PULLUP); // ButtonpinMode (aPin, OUTPUT); pinMode (bPin, OUTPUT); pinMode (aPrimePin, OUTPUT); pinMode (bPrimePin, OUTPUT); Serial.println ("Clockwise"); // Empezar con todas las bobinas offdigitalWrite (aPin, LOW ); digitalWrite (bPin, LOW); digitalWrite (aPrimePin, LOW); digitalWrite (bPrimePin, LOW); for (int ii =0; ii <20; ii ++) doTurn ();} void loop () {// leer el valor del botón en una variable int sensorVal =digitalRead (6); // Tenga en cuenta que el pull-up significa que la lógica del botón está invertida. Va // ALTO cuando está abierto y BAJO cuando se presiona. Encienda el pin 13 cuando el // botón esté presionado y apáguelo cuando no lo esté:if (sensorVal ==LOW) {isButtonpressed =true; } else {if (isButtonpressed) {isButtonpressed =false; doTurn (); escritura digital (aPin, BAJA); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, BAJO); }}} void doTurn () {// Enviar corriente a // 1. El aPin // 2. El aPin y el bPin // 3. El bPin // 4. Luego al bPin y al aPrimePin // 5. Luego al aPrimePin // 6. Luego al aPrimePin y al bPrime Pin // 7. Luego al bPrimePin // 8. Luego al bPrimePin y al aPin. // Produciendo así pasos usando el método de medio paso // 1. Establezca el aPin High digitalWrite (aPin, HIGH); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, BAJO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 // 2. Energiza aPin y bPin a HIGH digitalWrite (aPin, HIGH); escritura digital (bPin, ALTA); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, BAJO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 3. Establece bPin en High digitalWrite (aPin, LOW); escritura digital (bPin, ALTA); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, BAJO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 4. Establezca bPin y aPrimePin en HIGH digitalWrite (aPin, LOW); escritura digital (bPin, ALTA); digitalWrite (aPrimePin, ALTO); digitalWrite (bPrimePin, BAJO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 5. Establezca el Pin aPrime en high digitalWrite (aPin, LOW); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, ALTO); digitalWrite (bPrimePin, BAJO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 6. Establezca aPrimePin y bPrime Pin en HIGH digitalWrite (aPin, LOW); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, ALTO); digitalWrite (bPrimePin, ALTO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 7. Establezca bPrimePin en HIGH digitalWrite (aPin, LOW); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, ALTO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos // 8. Establezca bPrimePin y aPin en HIGH digitalWrite (aPin, HIGH); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, ALTO); // Permita un cierto retraso entre la activación de las bobinas para permitir // que el rotor paso a paso responda. retraso (retraso1); // Entonces, delay1 milisegundos cuenta =cuenta + 8; grados =(360.0 * (cuenta / 400.0)); if ((numberOfRotations% 2) ==1) {// Verifica si el número de rotaciones es par Serial.println ("Clockwise"); Serial.println (grados); // Imprime la posición angular en grados} else {// Si numberOfRotations es un número impar Serial.println ("Anti-Clockwise"); grados =360 - grados; Serial.print ("-"); // Imprime un signo menos Serial.println (grados); // Imprimir la posición angular en grados} if (count ==160) {// Una revolución completa del paso a paso numberOfRotations =++ numberOfRotations; tiempoe =milis (); RPM =timee / numberOfRotations; // Tiempo medio de una rotación RPM =(60000,00 / RPM); // Número de rotaciones por minuto if (numberOfRotations> =10) {Serial.print ("RPM:"); Serial.println (ronda (RPM)); // Imprimir RPM como entero} delay (delay2); // retraso2 / 1000 segundo (s) después de cada rotación completa count =0; // Restablecer el contador de pasos a cero // Dirección inversa después de cada giro if ((numberOfRotations)% 2 ==0) {// Verificar si el número de rotaciones es par // si es así, invertir la dirección aPin =cuatro; bPin =tres; aPrimePin =dos; bPrimePin =uno; } else {// Si el número de rotaciones es impar aPin =uno; bPin =dos; aPrimePin =tres; bPrimePin =cuatro; } escritura digital (aPin, BAJA); digitalWrite (bPin, BAJO); digitalWrite (aPrimePin, BAJO); digitalWrite (bPrimePin, BAJO); }} 

Esquemas

Primero, hice el cableado de la electrónica. Usé solo dos veces mi soldador para conectar los cables de alimentación al PCB adaptador USB. Antes de conectarse a la red de 230V, recomiendo utilizar una fuente de alimentación de mesa de laboratorio con control de corriente y medición de corriente. Si cableó algo incorrectamente, esta verificación podría evitarle daños en el adaptador o en otro componente. El consumo total debe ser inferior a 1 amperio a 5 voltios.
En segundo lugar, ensamblé las riostras, luego modifiqué la caja y la fijé a la estructura de la máquina.

Proceso de manufactura

  1. Cafetera de goteo automática
  2. Cree una Thermocam de bricolaje
  3. Los pormenores de los alimentadores automáticos de barras
  4. ¿Qué es una máquina de prensa automática?
  5. ¿Qué es un alimentador de prensa?
  6. ¿Qué es una prensa automática?
  7. ¿Qué es un alimentador de barras neumático?
  8. ¿Qué es una dobladora automática de tubos?
  9. ¿Qué es la mesa giratoria automática?
  10. Comprender el sistema de transmisión automática
  11. Comprender el sistema de lubricación automática