Alimentador de peces Arduino
lunes, 31 de octubre de 2011Este proyecto de Arduino es tan simple como el mecanismo de un botijo, literalmente, conceptualmente esto es un botijo hecho con arduino, pero es probable que sea el más práctico de los realizados hasta ahora. Cuanto más complicado más inútil, y viceversa, cuanto más simple más práctico, bonita moraleja.
Una de las limitaciones propias de tener animales y plantas en casa son las obligaciones que generan. Da igual que los animales sean canarios y peces, para ellos un martes es indistinguible de un domingo, su estómago funciona de igual forma.
En nuestra última salida a Galicia decidimos no incordiar a ningún familiar/amigo con la tarea de «pasarse a ver si lo canarios tienen agua y darle de comer a los peces«. Dispuse un depósito de 8 litros de agua como bebedero y me ingenié un sistema de alimentación para los peces (alrededor de 80-100 platys) que viven en la tinaja del patio.
El problema de la alimentación de los peces es que si se les dá en exceso se contamina el agua y puede provocar un bloom bacteriano que en el peor de los casos acabe con un buen montón de peces muertos y si se les dá poco pues 3/4 de lo mismo. Si bien los platys se «distraen» mordisqueando algas y con el agua fresca se les puede «aletargar» fácilmente una temporada preferí no arriesgarme con un semana de parón y sobretodo costando tan poco trabajo.
(En el vídeo, si no teneis ganas de escuchar el rollo, para ver el funcionamiento moverse hasta el minuto 2:00)
Dispensador de comida
La mayor dificultad de este invento viene dada por la particular presentación de la comida de peces: pesa muy poco, absorbe humedad ambiental como una esponja reseca y es muy grande. En las primeras pruebas que hice, con un bote abierto completamente, la humedad ambiental del patio era suficiente para que por la mañana la comida estuviese convertida en pasta grumosa y solidificada en el fondo del envase, hasta tal punto solidificada que ni sacudiéndolo con fuerza caía fuera del bote.
La solución vino disponiendo una tapa basculante que evitaba la «caída de humedad» dentro del bote (y posibles chispeos veraniegos) y procurando que los movimientos del bote fuesen bastante bruscos para «desatascar» el contenido.
Esta tapadera basculante tiene una ventaja, el propio movimiento de giro del bote provoca que esta tapadera golpee el envase en cada giro, consiguiendo que «desatranque» posibles apelmazamientos de las escamas.
La segunda solución fue pulverizar la comida, triturando las escamas y dejándola con un aspecto mucho más polvoriento, en lugar de las escamas/láminas que tienden a atascar fácilmente la boca de salida provocando que, o bien no cae comida ó bien cae mucha de golpe.
El programa del temporizador
El programa es bien simple. Opté por descargar e instalar la librería Time/TimeAlarm que dispone de una serie de funciones básicas y elementales.
Prácticamente el programa lo único que hace es establecer una fecha/hora (setTime, las 0:0:0 del 20/Sep/11) y a continuación 4 ejecuciones de la función servirComida, la primera a los 3 segundos de iniciarse el sistema y otras tres a las 6, 12 y 18 horas del inicio (nota: ten en cuenta que no son las 18:00 horarias sino las 18 horas transcurridas desde que enchufaste el Arduino).
La función servirComida gira 3 veces el servo con intervalos de 1000+2000 milisegundos entre giros y deja el bote en una posición inclinada para que evacue el agua de la tapa (caso de lluvia) y asegure el cierre con la tapadera.
#include <Servo.h>
#include <Time.h>
#include <TimeAlarms.h>
Servo motorServo;
int ang = 0;
int anguloInicio = 360; // angulo de inicio
int anguloFin = 1; // hasta un maximo de 180
int numeroDeTazones = 3; //cuantos giros d el cubilete
void setup()
{
setTime(0,0,0,9,20,11);
motorServo.attach(9);
pinMode(13, OUTPUT);
Alarm.alarmRepeat(6,0,0, servirComida);
Alarm.alarmRepeat(12,0,0, servirComida);
Alarm.alarmRepeat(18,0,0, servirComida);
Alarm.timerOnce(3, servirComida);
}
void loop() {
Alarm.delay(1000); // wait one second between clock display
}
void servirComida() {
delay(1000);
for(int tazon = 0; tazon < numeroDeTazones; tazon ++) {
digitalWrite(13, HIGH);
for(ang = anguloInicio; ang > anguloFin; ang -= 3) {
motorServo.write(ang);
delay(10);
}
digitalWrite(13, LOW);
delay(2000);
}
}
La instalación como podéis ver en el vídeo es genuinamente casera. Simplemente procurad que el dispensador caiga suficientemente alejado del borde y que el cableado/placa esté protegido de la lluvia (una vieja caja de destornilladores de electrónica tiene el tamaño ideal para alojar una placa arduino)
Observaciones
– Se puede mejorar notablemente su funcionamiento simplemente cambiando el tipo de comida, en lugar de usar escamas usar alguna de las presentaciones en forma de gránulos, píldoras, etc…
– Experimenta con los ángulos de inicio y fin del giro al inicio del sistema. La combinación correcta viene dada por la posición del dispensador, motor, soporte, etc..
– No, efectivamente los peces no aprendieron en una semana a relacionar comida <-> led verde, entre otras cosas porque la luz del led es casi imperceptible durante el día, y una semana es muy poco tiempo.
manuti
#1/ 31 de October/2011 a 10:39:29
Otros comentarios de «manuti»
Cambia el "contra" por un "cuanto", que me estas dañando las córneas. "Contra más complicado más inútil"
Por lo demás, que sepas que quiero adoptarte como hermana mayor o pequeño, o que me adoptes tú. Cada vez me sorprendes más y mejor.
Trebol-a
#2/ 31 de October/2011 a 11:18:54
Otros comentarios de «Trebol-a»
jajaja, joé que delicaos...
yo con tanto pescadito no estoy en condiciones de adoptar más, pero se agradece el intento ! :D
Miguel
#3/ 01 de November/2011 a 10:27:19
Otros comentarios de «Miguel»
Joder, Alberto, te estás convirtiendo en un elemento del imaginario colectivo más entrañable y querido por muchxs: el viejo inventor o el inventor loco, lleva cuidao :-)
Jaz
#4/ 17 de March/2014 a 05:29:09
Otros comentarios de «Jaz»
Disculpa que arduino utilisaste???? me podrias decir porfa???
Trebol-a
#5/ 17 de March/2014 a 09:35:00
Otros comentarios de «Trebol-a»
Hola Jaz,
es una placa Arduino UNO
dennys
#6/ 25 de March/2015 a 18:53:08
Otros comentarios de «dennys»
ayudame enviandome la coneccion al arduino, te agradecería un monton... mi correo ajva91@gmail.com
pablo
#7/ 12 de May/2015 a 13:14:17
Otros comentarios de «pablo»
una pregunta con las librerias y usas algun modulo de reloj externo para llevar la cuenta del tiempo o lo haces con el propio arduino?
Trebol-a
#8/ 12 de May/2015 a 16:36:45
Otros comentarios de «Trebol-a»
En el ejemplo de arriba utiliza una librería externa (time) pero porque entonces desconocía la función millis() que indica los milisegundos desde que se inició la aplicación, nativa en Arduino y más que suficiente para el uso que necesito.
Humberto
#9/ 11 de September/2015 a 12:36:07
Otros comentarios de «Humberto»
Hola lo único que usas es un les? Y el servo? Me podrías facilitar los materiales? Y de ser posible un diagrama si es que lo tuvieses???
Humberto
#10/ 11 de September/2015 a 12:36:43
Otros comentarios de «Humberto»
Un led, perdón?
Trebol-a
#11/ 11 de September/2015 a 19:13:28
Otros comentarios de «Trebol-a»
Hola Humberto,
bueno a lo del led no le hagas mucho caso, era sólo un "juego" para ver si los peces aprendían en 4 días a acudir a la luz, es prescindible completamente.
Esta instalación la hice ya hace 5 años ya no existe y no tengo ningún esquema de ella.
Ahora tengo una bastante más compleja que incluye esta funcionalidad de alimentador de peces que está inspirada en esta y cuyo funcionamiento es idéntico. De esta otra puedes sacar las conexiones y los componentes usados, la tienes aqui: http://bit.ly/1q50nWh
24 de December, 2024 @ 18:44