Tabla de contenido:
- Suministros
- Paso 1: descripción general del diseño
- Paso 2: descripción general del código
- Paso 3: Fijación de Nema 17 a la placa base y la barrena
- Paso 4: Cableado de L298N y RTC
- Paso 5: codificación con comentarios
- Paso 6: Problemas y cómo los solucioné
Video: Alimentador automático para perros: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Este es mi proyecto de un alimentador automático de mascotas. Mi nombre es Parker, estoy en el grado 11 y realicé este proyecto el 11 de noviembre de 2020 como CCA (Actividad culminante del curso) en este proyecto, les mostraré cómo hacer un comedero automático para mascotas con Arduino UNO. Puede elegir una hora que puede cambiar. ¡La comida se distribuirá a través de una barrena y alimentará a sus mascotas!
Suministros
Electrónica:
- Arduino UNO
- L298N - 10 $ - Controla el Nema 17
- NEMA 17 - 10 $ - Gira la barrena para que la comida se dispense
- RTC (DS1307) - 10 $ - Da el tiempo
- Fuente de alimentación de 12V - 5 $ - Alimenta todo
- Mini protoboard: para espacio adicional para el cableado
- Cables de puente: conecta todo
- Cables hembra a macho: conecta todo
Hardware:
- Filamento de impresión 3D - para impresora 3D
- 2 pernos M4: sujetan la placa base en su lugar
- 4 tornillos Nema 17 - Mantenga pulsado nema
- PVC T 48 mm dimensión interior 66 mm dimensión exterior - 3 $
Instrumentos:
- impresora 3d
- Taladro
- Pistola de soldar
Paso 1: descripción general del diseño
El diseño del comedero para mascotas es muy sencillo. Una tolva se coloca en la parte superior del PVC T. Luego, una cubierta se coloca en la parte posterior del PVC T (como se muestra en la imagen) con el Nema 17 adjunto. Luego, el Nema 17 se empujará hacia la parte posterior de la barrena que se puede ver arriba y un perno entrará en el costado para mantenerlo en su lugar para que no deforme el orificio que se puede ver arriba.
Luego, la barrena simplemente empujará la comida fuera de la tubería y la colocará en un tazón.
Paso 2: descripción general del código
El RTC y el paso a paso tienen una biblioteca llamada RTClib.hy Stepper.h que agrega código simplificado para el RTC y el paso a paso. Las declaraciones if son muy simples, dice que si la hora y los minutos son iguales a dicho tiempo, rotará el nema que dispensará la comida. El resto del código es muy fácil de entender incluso para alguien con un día de experiencia.
Paso 3: Fijación de Nema 17 a la placa base y la barrena
Primero, debe tomar su placa base y fijarla a su Nema 17 usando los orificios prefabricados en la placa base. Una vez hecho esto, desea conectar la barrena al Nema usando el orificio trasero. Luego conecte la placa base con la barrena y el Nema adjuntos y luego atornille los pernos M2 en cada lado.
Paso 4: Cableado de L298N y RTC
Este paso le dirá cómo conectar el L298N y el RTC
Empezaremos por los pines 8, 9, 10, 11 al L298N
- Pin 8 (blanco) a IN1
- Pin 9 (púrpura) a IN2
- Pin 10 (rosa) a IN3
- PIN 11 (amarillo) a IN4
A continuación conectaremos el Nema 17 al L298N
- OUT1 a 1 en NEMA
- OUT2 a 2 en NEMA
- OUT3 a 3 en NEMA
- OUT4 a 4 en NEMA
Conectando 12v y Arduino a L298N (No se pudo encontrar 12V, así que imagine una batería de 9V como energía)
- Voltios a 12V
- Tierra a GND
- 5 V a 5 V en placa de pruebas
Conectando RTC a Arduino
- GND a GND
- 5 V a 5 V en placa de pruebas
- SDA a A5
- SCL a A4
Pines de puente
Se supone que todos los pines de puente están en el L298N
Paso 5: codificación con comentarios
¡El código más claro en las imágenes de arriba
// Nombre: Parker Frederick
// Nombre del proyecto: Auto Pet Feeder // Fecha: Martes 10 de noviembre de 2020 // Maestra: M. Bonisteel // Desc: ¡Alimenta a tus mascotas en un momento determinado!
// Bibliotecas para las cosas que usé #include #include #include "RTClib.h"
RTC_DS1307 rtc; // Dice lo que estoy usando RTC
// Aquí es donde estableces el tiempo para la comida
// Horas int mornFeedTime = 12; int nightFeedTime = 7; // Minutos int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Segundos int mornFeedTimeS = 20; int nightFeedTimeS = 00;
char daysOfTheWeek [7] [12] = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"}; // Hace que los días normales se conviertan en días de la semana
const int feed = 200; // Estos son tus pasos, ¿cuántas veces quieres que gire?
Stepper myStepper (avance, 8, 9, 10, 11); // Tus pines para el Nema 17 y la mayoría de los demás steppers
configuración vacía () {Serial.begin (9600);
mientras (! Serial); // Si el RTC no funciona, lo mostrará en la pantalla de serie if (! Rtc.begin ()) {Serial.println ("No se pudo encontrar el RTC"); mientras (1); }
// Esto le dirá si el reloj en tiempo real está funcionando o no y lo mostrará en la pantalla serial if (! Rtc.isrunning ()) {Serial.println ("¡RTC se está ejecutando!");
rtc.adjust (Fecha y hora (F (_ FECHA_), F (_ HORA_))); // Esto le tomará tiempo a su computadora y lo usará en el RTC
// Si desea tener una hora establecida en lugar de la hora de la computadora, puede hacerlo aquí //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Año / Mes / Día / Hora / Minuto / Segundo} myStepper.setSpeed (200); // Velocidad a la que quieres que gire}
bucle vacío () {Fecha y hora ahora = rtc.now ();
// Esto hará que estas variables sean la hora actual, etc. int hr = now.hour (); int mi = ahora.minuto (); int se = ahora.segundo ();
// Codifique para que a la hora establecida dispense la comida y centrifugue 5 veces, esto si es para la alimentación de la mañana
if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("¡Desayuno!"); myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
}
// Codifique para que a la hora establecida dispense la comida y centrifugue 5 veces, esto es para la alimentación nocturna
if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("¡Cena!"); myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700);
myStepper.step (-feed); retraso (700); }
// Esto mostrará el AÑO, MES, DÍA, HORA, MINUTO, SEGUNDO en la serie
Serial.print (ahora.año (), DEC); Serial.print ('/'); Serial.print (ahora.mes (), DEC); Serial.print ('/'); Serial.print (ahora.día (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [ahora.dayOfTheWeek ()]); Serial.print (")"); Serial.print (ahora.hora (), DEC); Serial.print (':'); Serial.print (ahora.minuto (), DEC); Serial.print (':'); Serial.print (ahora.segundo (), DEC); Serial.println (); }
Sitio web que utilicé para RTC Eliminé la mayoría de las cosas además de las declaraciones if que dicen si el RTC está activado o desactivado. Utilicé principalmente este sitio web para aprender a programar el RTC
El sitio web que utilicé para el motor paso a paso me ayudó a comprender cómo programar el motor paso a paso para que se ejecute. Realmente no oculté nada. Simplemente me ayudó a entender cómo codificarlo
Paso 6: Problemas y cómo los solucioné
Algunos problemas que tuve
- Necesitaba una fuente de alimentación de 12v, solo tenía una batería de 9v, encontré una y se resolvió rápido.
- Cuando conecté L298N con NEMA 17, tenía los cables mal en A y A, lo que hizo que temblara un poco. Simplemente lo arreglé cambiando los cables al revés.
- Intenté hacer el código más simple porque en la declaración if myStepper.step (-feed); una y otra vez se veía desordenado. Así que tuve que volver a cambiarlo.
- Tenía la placa base del tamaño incorrecto como se ve en la imagen, así que tuve que imprimir en 3D una nueva un poco y ¡encajó perfectamente!
- El problema que tengo es que se atasca, ya que la barrena es demasiado pequeña, por lo que se atasca de una manera sencilla que puedo solucionar ampliando la barrena un poco.
Recomendado:
Comedero automático para perros: 4 pasos
Comedero automático para perros: ¡Fácil, útil y saludable
Dispensador automático para perros: 10 pasos
Dispensador automático para perros: Con mi proyecto me aseguro de que cuando dejes a tu perro solo en casa, nunca se quede sin comida. El alimentador automático será " pirateado " de un dispensador de copos de maíz. El dispensador es el depósito de comida para perros, la rueda en la parte inferior
Lanzador de pelotas automático para perros: 6 pasos
Lanzador de pelotas automático para perros: Ambos tenemos perros y, como todo el mundo sabe, los perros podrían pasar todo el día jugando a la pelota. Por eso, pensamos en una forma de construir un lanzador de bolas automático
Alimentador automático para perros: 5 pasos
Alimentador automático para perros: este es un tutorial paso a paso sobre cómo hacer un alimentador automático para perros con Arduino, perfecto si estás fuera de casa durante gran parte del día. En lugar de que tu perro tenga que esperar todo el día por la comida, o que te agaches en casa para alimentarlo, este dispositivo
Alimentador automático para perros Raspberry Pi y transmisor de video en vivo: 3 pasos
Alimentador automático para perros Raspberry Pi y transmisor de video en vivo: este es mi alimentador automático para perros Raspberry PI. Solía trabajar desde las 11 de la mañana hasta las 9 de la noche. Mi perro se vuelve loco si no le doy de comer a tiempo. Navegué en Google para comprar alimentadores automáticos de alimentos, no están disponibles en India y son costosas operaciones de importación