martes, 10 de abril de 2012

Aquarium: Prototipo

Una vez diseñada la electrónica toca implementarla para poder ponerla a prueba. Para ello he montado el circuito con lo que se conoce como "Spread Table Integration". Esto es, juntar todos los elementos esparcidos por la mesa y con un montón de cables. Para hacer el prototipo portátil lo he puesto dentro de una maleta de plástico tal y como se muestra en la siguiente figura:

Spread table integration

Como se observa, se han fabricado diferentes módulos que pueden emplearse en distintos proyectos y se han conectado entre sí siguiendo el esquema del artículo anterior. Despues de acabar de probar el prototipo, los módulos se guardan para un uso futuro en otro proyecto.

En la figura se aprecia:

  1 - Placa STM8L Discovery
  2 - Módulo con un regulador 7805
  3 - Modulo con un driver H L923D
  4 - Módulo de pulsadores y leds (sólo se usan 3 pulsadores)
  5 - Relés

Una vez que tenemos la parte eléctrica resuelta, queda la programación.


Programando el prototipo

El documento UM0991 explica como descargar el entorno de desarrollo STVD y el compilador Cosmic Compiler.

Actualización
Actualmente tengo instaladas las versiones de evaluación, limitadas a 32k tanto del Compilador Cosmic como el de Raisonance. Ambos funcionan correctamente bajo STVD. No obstante, la versión del código indicada en esta proyecta únicamente compila sin errores bajo Raisonance.


Una vez tenemos ambas herramientas instaladas, podemos descargar el fichero:


Este fichero contiene tres proyectos, uno de ellos, denominado "Discover" contiene el código fuente del software que viene preprogramado en la placa. Ya contiene el enlace a todas las librerias necesarias para trabajar con todos los periféricos, incluido el LCD. Por tanto, para desarrollar un nuevo proyecto, basta con modificar el código contenido en main.c

El proyecto Aquarium es, desde el punto de vista del software, bastante sencillo. El software se desarrollará al estilo Arduino, lo más simple posible y sin emplear interrupciones.

Básicamente tendremos:

  1. Una rutina de inicialización que inicia los puertos de I/O y otros periféricos como el oscilador de 32kHz y el reloj de tiempo real. También leerá la configuración previa guardada en memoria no volátil.
  2. Un bucle de dentro de main ( ) que irá comprobando que no se pulse el botón OK ni tampoco se de la hora a la que se tenga que hacer alguna acción como encender o apagar la luz o la bomba o dar de comer a los peces.
  3. Diferentes rutinas que son llamadas cuando se da algún evento de interacción con el usuario o con el acuario.

Dado que el sistema no emplea interrupciones, se deberá cuidar la programación para evitar que nos saltemos algún evento cuando se está procesando otro.

El fichero "main.c" es el único fichero modificado dentro del proyecto Discovery. El contenido del fichero main modificado es accesible desde este enlace:



Desde un punto de vista funcional el sistema, cuando está en marcha, muestra la hora actual en el LCD. Por defecto la bomba de filtrado está siempre en marcha. En cada instante se verifica si la luz debe estar encendida dependiendo de la hora de encendido y apagado de la luz.
Cuando llega la hora de dar comida a los peces, el sistema  para la bomba y hace un número programable de ciclos de giro en el alimentador de comida. A continuación se programa el sistema para que la bomba se encienda un cierto tiempo mas tarde (15 minutos por defecto).

En cualquier momento, mientras se muestra la hora, se puede pulsar el botón (OK). Ello invoca el menú de configuración, el cual permite realizar las siguientes acciones:
  • Dar de comer a los peces sin esperar la hora programada
  • Cambiar entre los modos manual y automático de funcionamiento
  • Fijar la hora actual
  • Fijar la hora de encendido de la luz
  • Fijar la hora de apagado de la luz
  • Fijar la hora en que han de comer los peces
  • Fijar el número de giros que debe hacer el alimentador
  • Guardar la configuración en la memoria EEPROM del microcontrolador
El sistema arranca en modo automático y controla la luz, la bomba y la alimentación de los peces. Si se pasa a modo manual, la bomba y la luz quedan en marcha y se pueden controlar con los interruptores S5 y S6 (ver esquema). En modo manual, para alimentar los peces se puede emplear la primera opción del menú.

Cada vez que arranca el sistema, se mira si hay información de configuración en la memoria EEPROM del microcontrolador. Por tanto, cuando se apaga el sistema por completo, lo único que se pierde es la información de la hora actual.


Probando el prototipo

Una vez programado todo el sistema sólo queda ponerlo a prueba, para ello se pone sobre el acuario tal y como se muestra en la figura y se deja unos dias funcionando.

Prototipo en funcionamiento

Una vez verificado el funcionamiento del prototipo, lo último que queda es desarrollar la versión final del sistema.

Continua con la versión final


2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola,

    Me ha parecido muy interesante tu proyecto, no se si seguirás revisando el blog, escribía porque estoy utilizando el stm8l discovery, me ha surgido un problemilla y me gustaría saber si me podrías echar un cable

    ResponderEliminar