Autor Tema: Mi Proyecto Para Mi Acuario  (Leído 12673 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Mi Proyecto Para Mi Acuario
« en: 15 de Septiembre de 2009, 00:20:03 »
Bueno esta es la primera ves que escribo en este fabuloso foro, que me ha ayudado mucho aun sin haber realizado la primera pregunta todavia  :lol:... Bueno por aca traigo un proyecto que e estado haciendo para mi acuario, para llevar el control del encendido y apagado de las luces y alimentacion automatica de los peces.

No voy a escribir mucho sobre el tema aun pero luego luego comento el funcionamiento y posibles mejoras que le podria hacer, y posibles mejoras que ustedes me puedan aportar.

La programacion es en CCS y utilizo el RTOS del CCS, al principio lo hice sin el RTOS pero lo quise implementar para practicar y porq con el me libere de algunos recursos externos que debia utilizar para despertar al pic de un sleep  :mrgreen:

Bueno espero sus comentarios y posibles sugerencial al respecto, luego sigo explicando el proyecto y aca les dejo el codigo y el archivo del proteus para que lo simulen (la clave que pide el circuito es 0 si mas no recuerdo)  
« Última modificación: 16 de Septiembre de 2009, 17:16:17 por manuel_j555 »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Mi Proyecto Para Mi Acuario
« Respuesta #1 en: 15 de Septiembre de 2009, 00:28:54 »
posteate unas foticos,...se ve interesante yo tambien quiero incursionar en mi acuario..
saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #2 en: 15 de Septiembre de 2009, 00:35:57 »
Bueno en realidad no lo tengo implementado todavia  :(,  es un proyecto que comence hace menos de 2 meses y no e tenido el dinero todavia para comprar los componentes.

Esto viendo si consigo una pantalla de Nokia por hay a ver si me ahorro el comprar una pantalla LCD 16x2 que es la que uso en el proyecto y asi le añado mas funciones como mostrar la fecha y le coloco una alarma que me indique mas o menos cuando me tocan los cambios de agua, o quien quita le coloque procesos de cambios de aguas automaticos cada cierto tiempo...

Por el momento solo lo tengo plasmado en la PC

Desconectado anfegori91

  • PIC12
  • **
  • Mensajes: 71
Re: Mi Proyecto Para Mi Acuario
« Respuesta #3 en: 15 de Septiembre de 2009, 00:36:18 »
Qué gran aporte¡¡
gracias por compartir el proyecto.. me despeja algunas dudas acerca del ccsrtos.
Como idea opcional, tal vez se podría añadir un sensor en donde pones el alimento para avisar si hay que llenar de nuevo el recipiente.

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #4 en: 15 de Septiembre de 2009, 00:52:27 »
Bueno la verdad todavia no tengo bien definido como voy hacer el montaje del alimentador, pero estuve practicando con un envase con agujeros a los lados, en la parte mas baja posible, pegado al envase le coloque un motor que funciona como un vibrador como los de celular. Y al vibrar el motor va cayendo un poco de comida al acuario, le coloque que el motor durara encendido solo medio segundo y ajusto la cantidad de comida escogiendo el numero de veces que voy activar el motor por alimentacion...

Pero la verdad no tengo idea de como medir la cantidad de comida que va quedando en el recipiente, e visto por hay unas imagenes en internet de alimentadores automaticos, voy a ver si coloco las fotos aqui pero la verdad es q no me e puesto a ver como colocarlas ya que es la primera ves que escribo en este foro. :?


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #5 en: 15 de Septiembre de 2009, 01:05:16 »
Muy buen proyecto! Lo único que veo y no me convence son las demoras tan grandes (delay_ms) dentro de las tareas  :? revisa el siguiente link


Saludos!
« Última modificación: 15 de Septiembre de 2009, 01:13:42 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #6 en: 15 de Septiembre de 2009, 01:15:49 »
A eso si tuve que dejarlas asi porque no entendi bien eso de la funcion "rtos_yield()" ya que supongo que uno no puede ajustar la demora al tiempo que uno necesite, sino que, esta se ajusta al tiempo que hallamos colocado en el "rate", pero si hay manera de rediseñar esa parte del codigo bueno se agradece.

Bueno tambien lo que pasa es que no he practicado lo del RTOS, si no que de una ves lo implemente en el proyecto, y deje las demoras porque no hay ninguna tarea que necesite estar ejecutandose todo el tiempo solo la que activa alimentación y luces pero las demoras no la afectan mucho.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #7 en: 15 de Septiembre de 2009, 01:20:35 »
En el mensaje anterior modificado enlace una explicación de rtos_yield. Cada tarea se ejecuta una sola vez y se deshabilita sola?
No contesto mensajes privados, las consultas en el foro

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #8 en: 15 de Septiembre de 2009, 01:35:14 »
Exacto  :lol: gracias al tutorial del amigo reiniertl fue que me anime a usar el RTOS del CCS y como dice en sus explicaciones

"Sin embargo yield() no es una función realmente poderosa, al menos en este RTOS, porque pone a dormir a la tarea durante un período completo del valor rate, que especificamos al declarar la función como una tarea del RTOS, y eso en ocasiones no es lo que deseamos. Aún así es mejor que el procesador de nuestro PIC esté haciendo algo útil y no perdiendo el tiempo."

Ok, en mi caso el valor del rate es 50ms y es un periodo demasiado corto para mostrar un msj en pantalla y como la verdad no se otra manera de parar la ejecucion de esa tarea por tiempos largos, le coloque las demoras.

Aunque se podria utilizar la funcion rtos_await de alguna manera para que se quede esperando a que se cumpla alguna condicion que seria algun contador de otra tarea, aunque no se si es una manera eficiente de realizar esa especia de pausa.

       Cada tarea se ejecuta una sola vez y se deshabilita sola?

Supongo que hablas de las tareas de configuracion, si son esas si, se ejecutan una ves y al terminar de ejecurase de desabilitan, la unica tarea que siempre esta habilitada es la que se encarga de las luces y la aliemntacion de los peces.

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #9 en: 15 de Septiembre de 2009, 02:07:32 »
Bueno intentare reemplazar los delay por rtos_yield utilizando codigo parecido al del amigo reiniertl colocando dicha funcion dentro de un clico repetitivo:

Código: [Seleccionar]
for (variable = 0 ; variable <= 20 ; variable++)
{
    rtos_yield();//suponiendo que el rate de dicha tarea es 50ms, para tener un tiempo aproximado de 1 segundo
                      //si es que la funcion trabaja como pienso, esperando 50ms para volver a ejecutarse...
}

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #10 en: 15 de Septiembre de 2009, 09:37:50 »
Si quieres una demora de 2.5 segundos por ejemplo para una tarea que se ejecuta cada 50ms, tenes lo siguiente:

Código: C
  1. for(i=0;i<50;i++){
  2.     rtos_yield();
  3. }

Si las demás tareas están bien diseñadas, osea ninguna ocupa más del rate, entonces tendrás una demora mas o menos precisa.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Mi Proyecto Para Mi Acuario
« Respuesta #11 en: 15 de Septiembre de 2009, 10:12:23 »
Y no se podria usar alguna interrupcion de timer?? Por ej, ponemos a dormir una tarea hasta q el timer interrumpa, y mientras tanto se ejecutan las demas.
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #12 en: 15 de Septiembre de 2009, 10:23:13 »
Y no se podria usar alguna interrupcion de timer?? Por ej, ponemos a dormir una tarea hasta q el timer interrumpa, y mientras tanto se ejecutan las demas.
Saludos!!
No se como se podría aplicar eso  :? Porque lo que hace rtos_yield es cederle el control a otra tarea y espera hasta el próximo ciclo
No contesto mensajes privados, las consultas en el foro

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #13 en: 15 de Septiembre de 2009, 16:14:06 »
Bueno la verdad no se si alguna tarea utiliza mas tiempe que el de su rate no e calculado eso, pero bueno para este caso no me preocupa mucho ya que no es necesario una demora exacta para mostrar los mensajes en el LCD.

Y no se podria usar alguna interrupcion de timer?? Por ej, ponemos a dormir una tarea hasta q el timer interrumpa, y mientras tanto se ejecutan las demas.
Saludos!!

Podria ser usando la funcion rtos_await(condicion) y hacemos la condicion verdadera dentro de la atencion a la interrupcion por el timer, es lo que se me ocurre por ahora...

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #14 en: 15 de Septiembre de 2009, 17:49:53 »
Bueno aca subo de nuevo el proyecto con las algunas modificaciones,reemplaze los delay por rtos_yield. Aparte elimine una funcion "Alimentando" y meti dicho codigo dentro de la tarea "leer_configuraciones", esto para reemplazar los delay por rtos_yield.

Pero ahora resulta que el modulo de cambiar la clave me da errores, deberia mostrar un mensaje en pantalla y lo que en realidad hace es mostrar caracteres a lo loco, y la verdad no se a que se deba  :?