Inicio

Capítulo 1_ El invernadero

Capítulo 2_ El riego y humedad en el suelo

Capítulo 3_ Placa de Adquisición de datos y excitación de actuadores

Capítulo 4_ Sensado de humedad

Capítulo 5_ Sensado de temperatura

Capítulo 6_ Sistema de ventilación

Capítulo 7_ Pantalla LCD

Capítulo 8_Software Asociado

8.1- Módulo de depuración

8.2- Programa de control

8.2.1- Esquema global

8.2.2- Inicialización

8.2.3- Estructura de menúes

8.2.4- Eventos

8.2.4.1- Tomar una decisión de temperatura

8.2.4.2- Tomar decisión de humedad

8.2.4.3- Registrar datos en el disco

8.2.4.4- Detener el riego

8.2.4.5- Timer de motor de ventanas

8.2.5- Manejo de errores

8.2.6- Implementación

8.3- Visor de estadísticas

Conclusiones

Bibliografía

Fotos

Sistema de control automático de temperatura y ventilación de un Invernadero

Capítulo 8_Software Asociado

Se diseñaron e implementaron tres módulos de software diferentes para el funcionamiento del sistema. El primero fue un módulo de depuración y ajuste de los sensores y actuadores, luego se implementó el programa de control propiamente dicho y por último el módulo de análisis de datos resultantes.

8.1- Módulo de depuración

La función primordial de este módulo fue la de permitirnos probar el correcto funcionamiento a medida que se iban agregando nuevos módulos de hardware y sensores al sistema. Consta de entrada por teclado completo y salida por pantalla principal.

Este módulo fue desarrollado en C y tiene las siguientes opciones:

  • Permite ver los valores en tiempo real de todos los sensores con sus respectivos valores convertidos a la magnitud que están midiendo.
  • Permite actuar directamente sobre cada salida del 8255 en forma individual.
  • Permite ver los valores de entrada de las entradas digitales del 8255.
  • Permite actuar sobre las ventanas además de mostrar su estado.

8.2- Programa de control

El programa de control se diseñó bajo las siguientes especificaciones:

  • Debe sensar todas las variables que ingresan por los sensores y calcular sus valores de acuerdo a los diseños y parámetros fijados en las etapas anteriores.
  • Debe tomar las decisiones de control correspondientes para influir sobre la temperatura y humedad dentro del invernadero como ser el abrir o cerrar ventanas o el iniciar y finalizar el riego. Además debe permitir la configuración de los valores de referencia para que el usuario final pueda fijarlas dentro de parámetros normales de operación como ser la temperatura a la que se abren y cierran las ventanas o los valores de humedad en los que se debe regar.
  • Debe poder guardar datos para servir como un sistema de adquisición de datos. Además debe implementarse algún medio de intercambio de dicha información con otra computadora para permitir que se puedan realizar los análisis correspondientes que sirvan para verificar el funcionamiento general del sistema y sus posibles fallas.
  • Las interfases con el usuario deben ser la pantalla LCD y el teclado reducido correspondiente, ya que debido a la naturaleza del sistema no sería práctico el utilizar un monitor convencional y un teclado completo.
  • Debe poder recuperarse de las fallas de alimentación, es decir que guarde en memoria no volátil los parámetros de configuración generales del sistema.

 

8.2.1- Esquema global

Para ello el programa funciona de la siguiente forma:

Figura 8.1_ Diagrama de Flujo Principal

Al empezar, primero se inicializa el sistema, luego ocurre lo mismo con los eventos los eventos y se empieza a ejecutar el bucle principal que verifica cuando se debe ejecutar cada evento y si se produce algún error al procesarlo. Por último se verifica si no se quiere salir del sistema. En caso de producirse algún error se sale del sistema registrando de que tipo de error se trata y la fecha y hora a la que se produjo. Antes de salir del sistema se aseguran que todas las salidas se anulen (es decir que todos los relés estén en estado normal).

 

8.2.2- Inicialización

La inicialización del sistema consta de los procesos graficados en el diagrama que sigue.

Figura 8.2_Diagrama de Flujo de Inicialización

En esta etapa se inicializan todas las variables internas del programa como ser valores de referencia para la toma de decisiones de control de temperatura y humedad, luego se inicializa el 8255 para configurar que puertos son salidas (puertos A y C) y que puertos son entradas (puerto B únicamente), luego se inicializa la pantalla LCD para poder empezar a mostrar datos por la misma y por último se registra en el archivo de eventos la fecha y hora en que se encendió el sistema.

La etapa de iniciar eventos tiene la siguiente estructura:

Figura 8.3_ Diagrama Inicio de Eventos

Aquí se comienzan los ciclos respectivos de temperatura, humedad y registro de los datos en el disco, además de fijar los respectivos períodos de ejecución de los mismos.

8.2.3- Estructura de menúes

El bucle principal se ocupa de refrescar la pantalla de LCD que constantemente mantiene la fecha y la hora actual, además de los últimos valores de temperatura y humedad medidos. Esto sirve como un indicador de que el sistema está activo y funcionando normalmente. También aquí se realiza el soporte general del menú del usuario que le permite configurar y ver distintos parámetros del sistema. El menú tiene la siguiente estructura.

Figura 8.4_ Estructura de Menúes

En los primeros dos ítems se pueden fijar los distintos parámetros que sirven para la decisión de control sobre la humedad y temperatura. El tercer ítem permite al usuario ajustar la fecha y hora del sistema. El cuarto ítem permite ver en forma detallada el estado de todos los sensores tanto de temperatura y humedad. El quinto ítem permite controlar en modo manual la apertura o cierre de las ventanas y activar o desactivar el riego. El sexto ítem permite copiar los archivos "EVENTOS.LOG" y "DATOS.LOG" a un diskette para su posterior análisis. Por último el sexto ítem permite pasar al modo de adquisición de datos (que no toma decisiones de control sino solamente registra datos) o al modo automático y también el de desactivar totalmente el sistema.

Mientras se realiza cualquier operación con los menúes, los eventos de sistema se ejecutan normalmente.

8.2.4- Eventos

Los eventos que se pueden ejecutar son los siguientes:

  • Toma de decisión de temperatura.
  • Toma de decisión de humedad.
  • Registrar datos en el disco.
  • Detener el riego.
  • Timer de motor de ventanas.

8.2.4.1- Tomar una decisión de temperatura

Aquí se toman mediciones de todos los sensores de temperatura y se fijan de la siguiente manera Tinterna=(T1 + T2) / 2 ; Texterna = T3 y Tsuelo = T4. Luego se toma una decisión de control basado en un algoritmo de temperatura que se describe en la sección 6.4.

Este algoritmo entra en funcionamiento únicamente si se está en modo automático y actúa sobre la apertura y cierre de ventanas (pudiendo actuar sobre dos ventanas en forma independiente) además de poder iniciar un riego superficial (de unos 3 minutos) como última medida para bajar la temperatura. Se fijó un período de 15 minutos para la ejecución de este evento.

8.2.4.2- Tomar decisión de humedad

Este evento se divide también en dos, en la primera parte se capturan los datos de los sensores de humedad y luego se toma una decisión de riego. Para realizar una medición de humedad se debe primero encender los sensores y luego esperar aproximadamente 1 minuto a que se estabilicen los valores. Se calcula entonces el promedio para fijar un valor medio Hmedia = (H1 + H2)/2. La decisión sobre el riego sigue el diagrama de flujo que se muestra en la sección 4.4 y se basa en la medición actual y anterior de humedad. Las decisiones de riego se toman únicamente si se está en modo automático.

Este evento se fijó en un período de ocho horas ya que debido a la naturaleza de la variable humedad y fundamentalmente a causa de los retardos inherentes a su transmisión en el suelo no resulta práctico el tomar mas de cuatro decisiones por día.

8.2.4.3- Registrar datos en el disco

Cada una hora se registran los últimos datos medidos en el disco rígido en un archivo llamado "DATOS.LOG" el cual contiene la siguiente información:

  • Año, mes, día y hora de la medición.
  • Valor de temperatura interna del invernadero.
  • Valor de humedad del suelo.
  • Valor de temperatura externa.

Estos datos se pueden copiar a un diskette para ser analizados en forma manual o mediante el módulo de estadísticas gráficas que se explica en la siguiente sección.

8.2.4.4- Detener el riego

Este evento se encarga de apagar la electroválvula según se haya fijado. Existen tres tipos de riego según el tiempo que lleva cada uno:

  • Riego superficial: es un riego sumamente corto de unos tres minutos y tiene la función de bajar la temperatura cuando la ventilación de las ventanas no es suficiente. Como este es un riego asociado a la decisión de temperatura tendrá menos prioridad que los dos que siguen.
  • Riego corto: es un riego de treinta minutos que se produce cuando el suelo no ha pasado el límite mínimo de humedad pero su variación indica que se está secando demasiado rápido, o sea tiene como función que el secado se lentifique.
  • Riego largo: es un riego profundo de unos noventa minutos que se produce cuando el suelo está por debajo del valor mínimo de humedad requerida.

8.2.4.5- Timer de motor de ventanas

Este evento se ejecuta cuando la apertura o cierre de una ventana toma demasiado tiempo, tiene como función el de prevenir fallas mecánicas o eléctricas en los motores.

8.2.5- Manejo de errores

Constantemente luego de que se ejecuta algún evento, se verifica que no se haya producido ningún error. Los errores que se pueden detectar y registrar son los siguientes:

  • Error cable cortado: se produce cuando se detecta que falta alguno de los sensores de temperatura.
  • Error ventana: se produce cuando se cumple el timer de apertura/cerrado de ventanas, lo cual indica que ha habido algún problema con el sistema mecánico o eléctrico de las mismas.
  • Error sensores fin de carrera: se produce cuando los sensores de fin de carrera de las ventanas no dan valores válidos como ser que están abiertas y cerradas al mismo tiempo.
  • Error interno: se produce cuando hay alguna inconsistencia en el programa de control o en la placa de adquisición de datos.

Una vez que son detectados se registran en el archivo "EVENTOS.LOG" junto con la fecha y la hora en que se produjo y la ejecución del programa se detiene.

8.2.6- Implementación

Para cumplir con los objetivos propuestos se decidió el utilizar el compilador Borland C++ 3.0 para DOS, y realizar el programa en lenguaje C.

El código fuente se dividió en los siguientes módulos de acuerdo a su función:

  • LCD.C : Consta de todas las funciones relacionadas con la escritura y borrado básico de caracteres a la pantalla LCD, además de algunos efectos especiales.
  • PLACAADQ.C : Consta de todas las funciones de bajo nivel que interactúan directamente con la placa de adquisición, como ser las rutinas de escritura y lectura de puertos del 8255, además de las de captura de valores del ADC0808.
  • PANTALLA.C : Consta de algunas funciones y constantes necesarias para un manejo de pantalla y teclado.
  • PRINCIPA.C : Este es el módulo que contiene el programa principal además de funciones de manejo de menúes del usuario, toma de decisiones de control, registro de eventos y datos, y control global de errores.

El ejecutable resultante se incluyó en el archivo "AUTOEXEC.BAT" de la PC para que se ejecute cada vez que se reinicie la computadora. De esta manera se tiene recuperación ante falla de alimentación.

8.3- Visor de estadísticas

El visor de estadísticas es un programa de análisis gráfico que funciona bajo el sistema operativo Windows y se realizó utilizando Visual Basic 6.

Figura 8.5_ Gráfica de Temperatura

Figura 8.6_ Gráfica de Valores Históricos

Este módulo recibe los datos que se generan con el programa de control a través del archivo "datos.log" y realiza el siguiente análisis:

  • Gráfica temperatura a lo largo de un día en particular, o agrupadas en promedios diarios a lo largo de un mes o agrupadas en promedios mensuales. Se dibujan tanto la temperatura interior como la exterior en la misma gráfica para su comparación.
  • Gráfica humedad a lo largo de un día en particular, o agrupadas en promedios diarios a lo largo de un mes o agrupadas en promedios mensuales.
  • Se muestran los valores históricos de temperatura interna máxima y mínima, temperatura externa máxima y mínima, y humedad máxima y mínima con la fecha y hora a la cual se produjeron.



Eduardo A. Sciutto - Juan E. Mascareña - Universidad Nacional de la Patagonia San Juan Bosco - Octubre 2000