Post on 04-Mar-2020
DISEÑO Y CONSTRUCCIÓN DE UN PROTOTIPO PARA LA SUPERVISIÓN DE
UN INVERNADERO A TRAVÉS DE INTERNET
JEANA MARCELA RAMÍREZ SANTOS
UNIVERSIDAD DE SAN BUENAVENTURA
FACULTAD DE INGENIERÍA
INGENIERÍA ELECTRÓNICA
BOGOTÁ
2007
DISEÑO Y CONSTRUCCIÓN DE UN PROTOTIPO PARA LA SUPERVISIÓN DE
UN INVERNADERO A TRAVÉS DE INTERNET
JEANA MARCELA RAMÍREZ SANTOS
Proyecto de grado para optar al título de Ingeniero Electrónico
UNIVERSIDAD DE SAN BUENAVENTURA
FACULTAD DE INGENIERÍA
INGENIERÍA ELECTRÓNICA
BOGOTÁ
2007
3
Nota de Aceptación:
___________________________ ___________________________ ___________________________ ___________________________ ___________________________ ___________________________
___________________________ Firma del Presidente del Jurado
____________________________ Firma del Jurado
____________________________ Firma del Jurado
Bogotá D.C. 25 de Mayo de 2007
4
A Dios por el hermoso regalo de la vida, a mis padres inspiradores de mil y un sueños, a mis amigos por su compañía en todos los momentos
trascendentales…
5
AGRADECIMIENTOS
Quisiera brindar mi más sincero agradecimiento a mi familia por el apoyo
incondicional que me ha brindado no sólo durante la realización de este proyecto
sino a lo largo de mi vida, y quiero reconocer que sin ellos no estaría en este
importante escalón, por ese motivo quiero decirles gracias por estar siempre junto
a mi. A Dios, a mis compañeros por los buenos momentos y la fuerza que me
brindaron para llegar hasta este punto, a mis profesores a lo largo de toda la
carrera porque fomentaron y enriquecieron día a día mi proceso educativo y a
todas las personas que colaboraron en este proyecto.
6
TABLA DE CONTENIDO
INTRODUCIÓN...............................................................................................................................................19 1. PLANTEAMIENTO DEL PROBLEMA ..............................................................................................21
1.1 ANTECEDENTES .......................................................................................................................21 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA .........................................................23 1.3 JUSTIFICACIÓN .........................................................................................................................24 1.4 OBJETIVOS.................................................................................................................................25
1.4.1 Objetivo General ...................................................................................................................25 1.4.2 Objetivos Específicos ........................................................................................................25
1.5 ALCANCES Y LIMITACIONES DEL PROYECTO.................................................................27 1.5.1 Alcances......................................................................................................................................27 1.5.2 Limitaciones .........................................................................................................................27
2. MARCO DE REFERENCIA ................................................................................................................28 2.1 MARCO CONCEPTUAL ............................................................................................................28
2.1.1 Microcontroladores ..................................................................................................................28 2.1.2 Riego por goteo o localizado .................................................................................................29 2.1.3 Fundamentos del riego por goteo automático..................................................................30
2.2 MARCO LEGAL O NORMATIVO .............................................................................................32 2.2.1. Leyes, decretos y resoluciones ...........................................................................................32 2.2.2. Norma RS232 ............................................................................................................................33
2.2.2.1. Características eléctricas de las señales ........................................................................................34 2.2.2.2. Longitud del cable...............................................................................................................................35 2.2.2.3. Señales ................................................................................................................................................36 2.2.2.5. Formato de los datos..........................................................................................................................36 2.2.2.6. Conversión entre niveles lógicos y TIA/EIA 232 ............................................................................37 2.2.2.7. Implementación con microcontrolador .............................................................................................37
2.2.3. Resolución 1114 del 24 de Noviembre de 2004 ...............................................................38 2.2.3.1. Artículo 1: Mensajes de texto SMS ..................................................................................................38 2.2.3.2. Artículo 2. (7.9.4): Mensajes enviados desde Internet ..................................................................38
2.3 MARCO TEÓRICO......................................................................................................................40 2.3.1 Cultivo de las Rosas ................................................................................................................40
2.3.1.1. Requerimientos Climáticos ............................................................................................................42 2.3.1.2. Iluminación ..................................................................................................................................44 2.3.1.3. Humedad ......................................................................................................................................44 2.3.1.4. Riego en Invernaderos .............................................................................................................45
2.3.2. Sensores de Temperatura .............................................................................................46 2.3.3. Sensores de Humedad ...................................................................................................48
2.3.3.1 Parámetros típicos para determinar la humedad: ...........................................................................49 2.3.3.2. Diferentes tipos de sensores.............................................................................................................50 2.3.3.3. Comunicación Serial...........................................................................................................................51 2.3.3.4 Comunicación Serial Asíncrona.........................................................................................................53 2.3.3.5. Protocolo RS-232................................................................................................................................55
2.3.4. Manejo De La Web ...................................................................................................................56 2.3.5. Microcontrolador..................................................................................................................................57
7
2.3.5.1 CPU .......................................................................................................................................................58 2.3.5.2. Memoria de Programa .......................................................................................................................58 2.3.5.3. Memoria de Datos ..............................................................................................................................59 2.3.5.4. Circuitería de Temporización ............................................................................................................59 2.3.5.5. Diagrama de un microcontrolador ....................................................................................................60 2.3.5.6. Memoria del programa .......................................................................................................................61
2.3.6. Bases de datos MySQL ..........................................................................................................62 3. METODOLOGÍA ...................................................................................................................................64
3.1 ENFOQUE DE LA INVESTIGACIÓN .......................................................................................66 3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA................................................................................................................66 3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN .......................................................................66 3.4 HIPÓTESIS ............................................................................................................................................66 3.5 VARIABLES..........................................................................................................................................67
3.5.1 Variables Independientes................................................................................................................67 3.5.2 Variables Dependientes ..................................................................................................................67
4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS.............................................................................68 5. DISEÑO INGENIERIL ..........................................................................................................................69
5.1. DESCRIPCIÓN DEL SISTEMA .......................................................................................................69 5.1.1. Diseño y programación del módulo de sensores ...........................................................71
5.1.1.1. Sensor de temperatura ......................................................................................................................74 5.1.1.2 Sensor de humedad ............................................................................................................................75 5.1.1.3 Microcontrolador MC68H908QT4......................................................................................................77 5.1.1.4 Transmisor Half-duplex RS485.......................................................................................................78
5.1.2. Funcionamiento de los circuitos sensores de temperatura y humedad...................79 5.1.3. Programa microcontrolador de las tarjetas de temperatura y humedad. .................81
5.2 DISEÑO Y PROGRAMACIÓN DEL MÓDULO DE CONTROL ........................................................................84 5.2.1 Relevos ........................................................................................................................................86 5.2.2 Fuente de tensión .....................................................................................................................86 5.2.3. Programación ...........................................................................................................................87 5.2.4. Reset ...........................................................................................................................................87 5.2.5. Alarma ........................................................................................................................................87 5.2.6. Microcontrolador .....................................................................................................................87 5.2.7. Interfase de Comunicación ...................................................................................................89 5.2.8. Programa microcontrolador maestro .................................................................................90
5.3. DISEÑO Y PROGRAMACIÓN DE LA INTERFAZ ........................................................................................92 5.4 DISEÑO Y PROGRAMACIÓN DE LA WEB ................................................................................................96
5.4.1 Diseño de las páginas Web ..................................................................................................100 5.4.2. Visualización de resultados en Internet...........................................................................103 5.4.3. Mensaje de texto SMS ..........................................................................................................105
5.1. CONSTRUCCIÓN DEL BANCO DE PRUEBA ..........................................................................................106 6. CONCLUSIONES ...............................................................................................................................112 7. RECOMENDACIONES......................................................................................................................114 8. BIBLIOGRAFÍA .......................................................................................................................................115 ANEXOS........................................................................................................................................................118
8
LISTA DE TABLAS
Tabla 1. Valores de tensión. 35
Tabla 2. Dispositivos de medición de temperatura. 46
Tabla 3. Rangos de temperatura correspondientes a los métodos más comunes
de medición. 48
9
LISTA DE FIGURAS
Figura 1. Microcontrolador .................................................................................................. 28 Figura 2. Riego por goteo. ................................................................................................... 31 Figura 3. Códigos de decretos.............................................................................................. 32 Figura 4. Decretos y resoluciones. ....................................................................................... 33 Figura 5. Conexión entre un DTE y un DCE. ...................................................................... 34 Figura 6. Conector DB9. ...................................................................................................... 36 Figura 7. Invernadero de rosas. ............................................................................................ 40 Figura 8. Control de temperatura. ........................................................................................ 45 Figura 9. Sensor capacitivo. ................................................................................................. 51 Figura 10. Conector DB-9 hembra, diagrama de pines........................................................ 53 Figura 11. Trama de Datos................................................................................................... 54 Figura 12. Diagrama de bloques de un microcontrolador.................................................... 61 Figura 13. Diagrama de la memoria de un programa........................................................... 62 Figura 14. Plataforma del sistema....................................................................................... 70 Figura 15. Ubicación de los sensores en el invernadero. ..................................................... 72 Figura 16. Circuito de supervisión de temperatura y humedad. .......................................... 73 Figura 17. Sensor DS1820. .................................................................................................. 75 Figura 18. Circuito multivibrador astable. ........................................................................... 75 Figura 19. Sensor de humedad HS1101 de Humirel............................................................ 77 Figura 20. Microcontrolador MC68H908QT4..................................................................... 77 Figura 21. Transmisor RS485. ............................................................................................. 79 Figura 22. Conector RJ45. ................................................................................................... 80 Figura 23. Diagrama de flujo de la programación de los microcontroladores de temperatura............................................................................................................................................... 82 Figura 24. Diagrama de flujo de la programación de los microcontroladores de humedad. 83 Figura 25. Circuito de la tarjeta maestra. ............................................................................. 85 Figura 26. Microcontrolador 68HCS908GT60CFB. ........................................................... 88 Figura 27. SN7407. .............................................................................................................. 89 Figura 28. Conector DB9. .................................................................................................... 90 Figura 29. Max 232. ............................................................................................................. 90 Figura 30. Diagrama de flujo de la programación del microcontrolador maestro. .............. 91 Figura 31. Plataforma Visual Basic (Interfaz entre la tarjeta maestra y el PC). .................. 95 Figura 32. Conexión exitosa de MyODBC. ......................................................................... 96 Figura 33. Base de datos (Supervisión). .............................................................................. 97 Figura 34. Tablas que componen la base de datos (1). ........................................................ 98 Figura 35. Tablas que componen la base de datos (2). ........................................................ 99 Figura 36. Visualización resultados del banco de prueba. ................................................. 104 Figura 37. Visualización resultados del banco de prueba. ................................................. 105
10
Figura 38. Invernadero. ...................................................................................................... 107 Figura 39. Invernadero en construcción............................................................................. 108 Figura 40. Manguera, racores y electroválvula para implementación del riego. ............... 109 Figura 41. Sistema de ventilación, extracción y calefacción del invernadero. .................. 109 Figura 42. Instalación del riego por goteo. ........................................................................ 110 Figura 43. Invernadero finalizado. ..................................................................................... 111
11
LISTA DE ANEXOS ANEXO A. Sensor de temperatura DS 1820.
ANEXO B. Sensor de humedad HS1101.
ANEXO C. Buffer SN7407.
ANEXO D. Microcontrolador MC9S08GB60.
ANEXO E. Microcontrolador MC68HC908QY4.
ANEXO F. MAX 232.
ANEXO G. Transmisor SP485.
ANEXO H. Regulador de voltaje LM7812.
ANEXO I. Racores.
ANEXO J. Programa en CodeWarrior para el manejo del puerto serial.
ANEXO K. Programa en CodeWarrior para programación del microcontrolador de
Temperatura.
ANEXO L. Programa CodeWarrior para la programación microcontrolador
maestro.
ANEXO M. Programa de la interfaz Circuito – PC realizado en Visual Basic.
ANEXO O. Programa CodeWarrior para la programación del microcontrolador de
Humedad.
ANEXO P. Caminos de la tarjeta de temperatura.
ANEXO Q. Caminos de la tarjeta de humedad y su circuito multivibrador astable.
ANEXO R. Caminos de la tarjeta maestra.
ANEXO S. Montaje de la tarjeta de temperatura.
ANEXO T. Montaje de la tarjeta de humedad y su circuito multivibrador astable.
ANEXO U. Montaje de la tarjeta maestra.
ANEXO V. Tarjeta de temperatura implementada.
ANEXO W. Tarjeta de humedad y su circuito multivibrador astable implementada.
ANEXO X. Tarjeta maestra implementada.
12
GLOSARIO Bit: Dígito binario. Elemento de información básico en la técnica digital. Su valor
puede ser 1 o 0. Es la cantidad mínima de información necesaria para establecer
la distinción entre dos alternativas. Unidad de transmisión digital correspondiente a
un digito binario.
Bits: Unidad de medida de la capacidad de transmisión de una línea de
telecomunicación.
Buffer: Circuito con funciones de amplificación o separación de una señal, tanto
de naturaleza lógica como digital.
Comunicación puerto serial: Es una interfaz de comunicaciones entre
ordenadores y periféricos en donde la información es transmitida bit a bit enviando
un solo bit a la vez.
Humedad: A la cantidad de vapor de agua presente en el aire. Se puede expresar
de forma absoluta mediante la humedad absoluta, o de forma relativa mediante la
humedad relativa o grado de humedad.
• La humedad absoluta es la cantidad de vapor de agua presente en el aire,
se expresa en gramos de agua por kilogramos de aire seco (g/kg), gramos
de agua por unidad de volumen (g/m³) o como presión de vapor (Pa o KPa
o mmHg). A mayor temperatura, mayor cantidad de vapor de agua permite
acumular el aire.
• La humedad relativa es la humedad que contiene una masa de aire, en
relación con la máxima humedad absoluta que podría admitir sin producirse
13
condensación, conservando las mismas condiciones de temperatura y
presión atmosférica. Esta es la forma más habitual de expresar la humedad
ambiental.
Interfaz: Se denomina interfaz a cualquier medio que permita la interconexión de
dos procesos diferenciados con un único proceso común.
Invernadero: Es una construcción de vidrio o plástico en la que se cultivan
plantas, a mayor temperatura que en el exterior.
Microcontrolador: Un microcontrolador es un computador completo
(microprocesador + E/S + memoria + otros + periféricos), aunque de limitadas
prestaciones, que esta contenido en el chip de un circuito integrado programable y
se destina a gobernar una sola tarea con el programa que reside en su memoria.
Sus líneas de entrada/salida soportan al conexionado de los sensores y
actuadotes del dispositivo a controlar.
MySQL: Es un sistema de gestión de base de datos, multihilo y multiusuario con
más de seis millones de instalaciones.
ODBC: Son las siglas de Open DataBase Connectivity, que es un estándar de
acceso a Bases de Datos desarrollado por Microsoft Corporation, el objetivo de
ODBC es hacer posible el acceder a cualquier dato de cualquier aplicación, sin
importar qué Sistema Gestor de Bases de Datos (DBMS por sus siglas en inglés)
almacene los datos, ODBC logra esto al insertar una capa intermedia llamada
manejador de Bases de Datos, entre la aplicación y el DBMS, el propósito de esta
capa es traducir las consultas de datos de la aplicación en comandos que el
DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben
14
ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir
comandos ODBC y el DBMS debe ser capaz de responder a ellos.
Página Web: Es una fuente de información adaptada para la World Wide Web y
accesible mediante un navegador de Internet. Ésta información se presenta
generalmente en formato HTML y puede contener hiperenlaces a otras páginas
Web, constituyendo la red enlazada de la World Wide Web.
PHP: (Hipertext Preprocessor): Es un lenguaje de programación que se usa
para la creación y diseño de sitios Web, PHP Tools o Personal Home Page Tools
es un lenguaje que es común en aplicaciones para servidores y creación de
contenido dinámico en sitios Web, también se incluyen aplicaciones en las cuales
logra trabajar aplicaciones con interfaz gráfica y conexión con diferentes tipos de
plataformas para comunicación con dispositivos electrónicos
Protocolo: Conjunto de reglas conocidas y respetadas que en los extremos de un
enlace de telecomunicaciones regulan las transmisiones en todos los sentidos
posibles.
Racor: Pieza metálica con dos roscas internas en sentidos inversos que sirve para
unir tubos y otros perfiles cilíndricos.
Regulador de tensión: Dispositivo que mantiene la tensión terminal de un
generador u otra fuente de tensión dentro de limites requeridos
independientemente de las variables de la tensión de entrada o de la carga
denominando también regulador automático de tensión.
15
Relé: Dispositivo activado por una variación de las condiciones existentes en un
circuito eléctrico y que se utiliza para establecer o para interrumpir una o mas
conexiones en el mismo o en otro circuito eléctrico.
Sensor: Dispositivo que detecta, o sensa manifestaciones de cualidades o
fenómenos físicos, como la energía, velocidad, aceleración, tamaño, cantidad, etc.
SMS: (Short Message Service): Servicio que permite el envío de mensajes de
tamaño no superior a 160 caracteres entre teléfonos móviles que utilizan el
estándar GSM.
Temperatura: Esta relacionada con los grados de calor o frió que necesitan las
plantas para su desarrollo, en condiciones normales de su hábitat o ambiente
original.
16
“DISEÑO Y CONSTRUCCIÓN DE UN PROTOTIPO PARA LA SUPERVISIÓN DE UN INVERNADERO A TRAVÉS DE INTERNET”
17
RESUMEN
Este proyecto tuvo la finalidad de realizar el diseño y construcción de un prototipo
para la supervisión de un invernadero a través de Internet con el cual se pretende
facilitar el manejo, inspección, visualización y verificación de los invernaderos de
rosas por medio de Internet y ayudar a la empresa floricultora a supervisar sus
cultivos de una manera sencilla y que está al alcance de cualquier necesidad.
Consiste en generar una supervisión de cada una de las dos variables
implementadas en un invernadero (temperatura y humedad) y que estos
resultados puedan ser visualizados por medio de una página Web, esto se logra
por medio de 4 sensores de temperatura distribuidos a lo largo del invernadero, un
sensor de humedad que se encuentra en el centro del mismo y una electro válvula
que controla la activación del sistema de riego por goteo. Los datos obtenidos por
cada una de los sensores son tomados por un microcontrolador que almacena la
información mientras el micro maestro la requiera.
La comunicación entre el sistema de control y el computador, se realizó a través
del protocolo RS-232 de comunicación serial, mediante el cable de datos del
mismo dispositivo. Los datos son transmitidos desde el micro hacia Visual Basic
que se encarga de realizar la captura de los datos que vienen desde la tarjeta y se
conecta a la base de datos por medio del programa ODBC actúa como interfaz de
comunicación entre Visual Basic y MySQL, la base de datos va guardando los
registros generados por los sensores.
Con PHP (Programación para páginas Web) se logra la comunicación del PC con
el servidor, para finalizar se visualizan todas las variables en la página Web,
18
resultados que se obtendrán cada 1 minutos y se tienen consultas de hora, día,
semana, mes y año.
Para finalizar se puede tener una visualización del invernadero por medio de una
cámara Web y si existe algún tipo de problema que los controladores no puedan
resolver se le enviará un mensaje de texto al usuario para comunicarle el error que
se presenta. El sistema será implementado en un banco de prueba.
19
INTRODUCIÓN La floricultura es una forma de la agricultura en donde los individuos son
desafiados a mantenerse al día en los avances tecnológicos, lo que lleva al
argumento que no se puede llegar a conocer todo lo que se debiera en el amplio
espectro de los cultivos de flores para cada una de sus finalidades, los cultivos de
flores día a día han tratado de introducir los recursos tecnológicos que han llegado
a mejorar y optimizar sus procesos, haciendo más rápida la supervisión y el
control de los mismos.
Colombia, como país floricultor por excelencia, requiere de abundantes
invernaderos con alta calidad para lograr mantener una buena producción y
manutención de dicho producto, en especial las rosas. En la sabana de Bogotá se
encuentran ubicados un gran número de invernaderos en donde se produce un
buen porcentaje de la producción de flores del país.
El proceso de cultivo de flores carece de soporte tecnológico, y en cambio
contratan personal capacitado en cada uno de los pasos de éste, su experiencia y
dedicación no pueden ser reemplazadas por dispositivos.
Para optimizar y mejorar los procesos de supervisión de los invernaderos, surgen
día a día propuestas para lograr un buen manejo de los mismos, sin embargo, no
se tiene una supervisión a distancia de éstos, opción que sería muy favorable para
los empresarios que poseen más de un cultivo y tienen diferentes sedes a lo largo
del territorio nacional, con lo que tendrían la posibilidad de poder supervisar sus
cultivos desde el lugar que se encuentra, ver que sucede en tiempo real y lograr
ser advertido de alguna irregularidad que no se pueda solucionar a través de
dispositivos designados para el control del invernadero.
20
Surge entonces la necesidad de crear dispositivos que sirvan a la industria para
mejorar sus procesos de producción; es ahí donde se logra identificar el valor
agregado al realizar un proyecto aplicado a la industria. Partiendo de las
referencias aportadas, obteniendo así los datos necesarios para diseñar y/o
seleccionar el sistema más adecuado para la obtención de la información
necesaria para lograr obtener resultados positivos del proyecto.
Este proyecto está constituido por los sensores que mostrarán los datos que
entregue en el PC, y para lograr esta comunicación es indispensable tener su
interfaz de comunicación y desde luego su programa que luego visualizará todos
los datos obtenidos en una página de Internet para así lograr la supervisión a
distancia y lograr un trabajo integral del empresario a cargo de los cultivos.
21
1. PLANTEAMIENTO DEL PROBLEMA
1.1 ANTECEDENTES
En el país hay alrededor 350 empresas comprometidas con la exportación,
producción y cultivo de flores, que generan directa e indirectamente trabajo a más
de 300.000 personas, de los cuales 4000 a 4500 son profesionales, Ingenieros,
Biólogos, entre otros.1
Las nuevas tecnologías están reportando grandes cambios no sólo en el área
urbana si no también en el área rural y en aquellas donde se tiene producción
agropecuaria, por esto se ve la gran diferencia que existe entre la producción
agropecuaria del pasado a la de ahora, se nota la entrada progresiva de
instrumentos y dispositivos, paquetes de software, aplicaciones de Sistemas de
Información Geográfica y la llegada inesperada de la Inteligencia Artificial
La entrada de estas tecnologías en las áreas de producción ha venido tomando
fuerza desde los últimos veinte años aproximadamente, trayendo consigo
favorables cambios a la industria en todos sus campos, como ha sido el ingreso
del software de control de funciones y el uso de aparatos automatizados y su
respectiva aplicación.
En esta entrada abrupta de la tecnología en la industria agropecuaria se pueden
ver cuatro etapas importantes en la historia, en la primera se ve como todas las
labores se ejecutaban manualmente, no intervenían dispositivos y el campesino
tenía que colmar todas las necesidades del cultivo y estar pendiente de la
supervisión del cultivo, en la segunda se incorporan algunos sistemas de
1 http://www.indap.cl/documentos/cuenta_publica/enero2003.pdf
22
mecanización, pero el trabajo manual de todas maneras es primordial para cada
uno de los procesos del cultivo, en la tercera se incorporan el uso del computador
y software para control de maquinaria y de variables y la última y más reciente
etapa en la cual se introduce el Internet.
Esta etapa es la que está generando la mayoría de cambios en la industria
agrícola, ya que ofrece muchas posibilidades a los agricultores como es la
incorporación de producción a los mercados mundiales; adelantándose a la etapa
de cultivo hasta la “Teleoperación” que es el manejo a distancia de granjas con el
simple acceso a la red.
23
1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA Teniendo en cuenta que actualmente los invernaderos no cuentan con alto
conocimiento en el sector tecnológico y sabiendo que día a día y en cada lugar del
mundo se acoge masivamente Internet y todas las facilidades que tiene para
realizar y mejorar las labores de empresas, estudiantes y porque no, gente en
común, puede generar en los invernaderos falta de competitividad, y que la
supervisión en los cultivos no sea óptima, esto trae grandes inconvenientes a la
hora de obtener resultados tangibles de un reporte detallado sobre sus
invernaderos, cuando cada uno de los encargados de los cultivos quiere estar al
tanto de sus cultivos no puede acceder a un servicio en el cual tenga datos
precisos del trabajo de su invernadero, si tiene varios cultivos en diferentes sitios
del país no puede llegar a ver que es lo que está sucediendo en tiempo real, los
sistemas de supervisión requieren estrictamente de personal humano para que no
existan fallos, además si en algún invernadero llegaran a existir fallos que el
mismo sistema de control no pudiera llegar a controlar, la persona al mando no
sería enterada a tiempo, conocería los detalles del suceso tiempo después del
mismo, cuando ya no se pudiera hacer nada, por lo tanto surge la pregunta,
¿Cómo diseñar e implementar un prototipo de supervisión de las variables del los
cultivos de flores a través de Internet, con una visualización por cámara del
invernadero y que active un aviso de errores por medio de un mensaje SMS?
24
1.3 JUSTIFICACIÓN Existen empresarios del medio de las flores los cuales tienen cultivos en todo el
territorio colombiano, por tal motivo tienen que estar viajando constantemente y no
pueden tener un perfecto reporte de sus invernaderos, la idea de este proyecto
surge de la necesidad de lograr que este empresario pueda supervisar cada uno
de los factores que intervienen en el proceso del cultivo de flores, puede revisar
como está la temperatura en su cultivo y por ende si sus factores de control están
funcionando adecuadamente; igual que los de humedad y si su respectivo sistema
de riego está actuando en su debido momento, toda esta supervisión se realiza a
través de Internet que es el medio más factible actualmente para lograr una
supervisión de tales dimensiones.
Así mismo es muy importante que el en cualquier momento del día pueda
observar las condiciones climatológicas del sitio, si su personal está haciendo las
labores correspondientes y adecuadamente o si sencillamente quiere ver como es
el estado de sus cultivos; por esto se piensa en adecuar una visualización del
invernadero para permitir al empresario una perfecta supervisión del mismo, a la
hora que desee.
Pensando en estas personas se piensa en la creación de este proyecto que con
muy pocos dispositivos logrará integrar y supervisar todos los cultivos que existan
a cargo de una sola persona sabiendo que puede acceder a estás en el momento
que lo desee y por un medio que es bastante comercial hoy en día en el mundo
entero.
25
1.4 OBJETIVOS 1.4.1 Objetivo General Diseño y construcción un prototipo que logre supervisar por Internet el estado de
la temperatura, humedad y activación de riego de un cultivo de flores.
1.4.2 Objetivos Específicos
• Analizar el funcionamiento de los invernaderos de flores, como se maneja
paso a paso el proceso de cultivo, cuáles son las condiciones requeridas
para su cultivación y cómo se mantienen las condiciones climatológicas de
los mismos.
• Caracterizar el proceso que se sigue en los cultivos para la siembra y
cosecha de las rosas.
• Diseñar la Interfaz que se va a utilizar para la comunicación entre los
sensores y el PC.
• Implementar la Interfaz que se va a utilizar para la comunicación entre los
sensores y el PC.
• Desarrollar el programa que visualizará los datos obtenidos de los sensores
del invernadero.
26
• Implementar el sistema que reportará las irregularidades que se podrían
presentar en el invernadero por medio de mensajería SMS (Sistema de
Mensajería Corta), a un celular específico.
• Adaptar el sistema de visualización por Internet para el invernadero para
observar los sucesos en el mismo.
• Construir un prototipo de invernadero para implementar el sistema de
supervisión ya mencionado.
• Realizar pruebas de cada una de las variables que intervienen en el
proyecto para corrección de errores y mediciones pertinentes.
27
1.5 ALCANCES Y LIMITACIONES DEL PROYECTO 1.5.1 Alcances Este proyecto tiene como meta principal contribuir a un avance tecnológico de
comunicación para los cultivos de Colombia, llegando a una etapa de construcción
e implementación que permita tener un prototipo de lo que sería la supervisión a
distancia de los invernaderos y las características del mismo.
A través su desarrollo se pretende realizar la construcción del sistema completo e
instalado en un banco de prueba. Es decir, al finalizar con el plazo de entrega, la
presentación sea el funcionamiento del módulo dentro del prototipo a través de
todo el sistema integrado en el mismo.
1.5.2 Limitaciones
El envío de los mensajes de texto SMS en caso de que llegue a existir un
problema en el invernadero que los controladores no puedan normalizar, a veces
los envíos de estos mensajes son demorados y pues esto sería un inconveniente
si se llegara a tener un problema en el invernadero.
A veces los servidores se desconectan de la red y se debe esperar hasta restaurar
comunicación, por esto en algunos casos la página no estará disponible para
visualizar.
28
2. MARCO DE REFERENCIA
2.1 MARCO CONCEPTUAL
2.1.1 Microcontroladores
Un microcontrolador es un circuito integrado de alta escala de integración que
incorpora la mayor parte de los elementos que configuran un controlador.
Un microcontrolador dispone normalmente de los siguientes componentes:
• Procesador o UCP (Unidad Central de Proceso).
• Memoria RAM para Contener los datos.
• Memoria para el programa tipo ROM/PROM/EPROM.
• Líneas de E/S para comunicarse con el exterior.
• Diversos módulos para el control de periféricos (temporizadores, Puertas
Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores
Digital/Analógico, etc.).
• Generador de impulsos de reloj que sincronizan el funcionamiento de todo
el sistema.
El microcontrolador (figura 1) es en definitiva un circuito integrado que incluye
todos los componentes de un computador. Debido a su reducido tamaño es
posible montar el controlador en el propio dispositivo al que gobierna.
Figura 1. Microcontrolador
Fuente: http://www.etteam.com/product/pics/17IC/MC68HC908GP32.gif
29
2.1.2 Riego por goteo o localizado2
Las plantas del jardín que no les cae agua del riego del césped se riegan
generalmente con goteo, por ejemplo: setos, grupos de arbustos, flores, rocalla,
huerto, árboles frutales, etc. Otras opciones de riego son los microdifusores o
microaspersores y las cintas de exudación.
Los elementos que componen una instalación automática de goteo son:
• Programador
Corrientemente se dedica una o varias estaciones o fases para el goteo y las
demás para los aspersores y difusores.
• Electroválvulas
Cada sector de riego lleva una electroválvula que se abre y se cierra según le
ordena el programador. Si tienes un sector de goteo, pues llevará su electroválvula
correspondiente.
Es común, por simplificar, que mucha gente ponga una sola fase para el goteo y
se riegue por igual todo lo que lleve goteo: setos, árboles, arbustos, frutales, e
incluso el huerto. Todo lo mismo. Se puede hacer, pero no es lo correcto ni mucho
menos porque cada grupo de plantas tienen necesidades de agua diferentes, no
consume lo mismo un árbol frutal que un grupo de flores.
• Reductor o regulador de presión
Los emisores de riego por goteo necesitan muy poca presión de agua para
funcionar. Incluso el agua de la red general de abastecimiento a la casa tiene
2 http://www.infojardin.com/articulos/riego-goteo-localizado.htm 15-03/2006 10:52 pm.
30
mucha presión para este tipo de riego o si se riega con una bomba que toma el
agua de pozo o depósito, por esta razón hay unos dispositivos llamados
reductores o reguladores de presión. Si no se ponen y la presión es alta, saldrán
disparados los goteros.
• Tuberías
En los riegos de jardines pequeños y medianos suele bastar con tuberías de 32 y
25 mm de diámetro de polietileno (PE). A éstas se le conectan los ramales de
goteo propiamente dicho, siendo la tubería de 16 mm para goteo, la más habitual.
• Piezas especiales
Tes, codos, enlaces, llaves, empalmes, tapones, racor, etc.
2.1.3 Fundamentos del riego por goteo automático
Cada emisor suelen echar entre 2 y 8 litros por hora, siendo típico el gotero de 4
l/h de caudal. En el suelo se forma lo que se llama el bulbo húmedo, que es el
volumen de tierra humedecida por cada gotero.
Si el suelo es más arenoso, el bulbo es más estrecho y profundo que en suelos
arcillosos, donde adopta una forma más ancha y profundiza menos.
31
Figura 2. Riego por goteo.
Aquí entra un concepto muy importante: la separación entre goteros. Es necesario
que exista un solapamiento de los bulbos húmedos. Emisores muy próximos
garantizan este solapamiento. La separación entre emisores oscila entre 30
centímetros y 1 metro.
Para arbustos, rosales o setos los goteros suelen distanciarse a unos 50 cm. en la
línea. En la figura 2 se puede ver un sistema de riego por goteo implementado en
un invernadero de rosas.
32
2.2 MARCO LEGAL O NORMATIVO
2.2.1. Leyes, decretos y resoluciones
Figura 3. Códigos de decretos.
33
Figura 4. Decretos y resoluciones.
2.2.2. Norma RS232
34
El estándar EIA/TIA 232 de la EIA (originalmente denominado RS232) data de los
años 60 (1969 la revisión "C") y describe los aspectos eléctricos (niveles de las
señales), lógicos (formato de los datos) y mecánicos (conectores) de una conexión
serie entre lo que se denomina DTE (Data Terminal Equipment) que es el equipo
donde se originan o reciben los datos (una PC, por ejemplo) y un DCE (Data
Circuit-terminating Equipment) que es el dispositivo encargado de convertir esos
datos a un formato apropiado para su transmisión (por ejemplo, un modem
externo). El ITU (ex CCITT) tiene su propia versión bajo la denominación de V.24 y
V.28.
Esta norma fue creada originalmente entonces para describir cómo conectar un
equipo tal como una PC a un dispositivo como un modem para la transmisión de
datos y nada más. Con el paso del tiempo se fue generalizando su uso a otras
aplicaciones que en rigor no están descriptas ni cubiertas por la norma original. De
hecho, en la mayoría de los casos se usa sólo un subconjunto de las señales
previstas y se conectan dispositivos de la más variada clase que no responden al
comportamiento de un DTE o un DCE (Figura 5).
Figura 5. Conexión entre un DTE y un DCE.
2.2.2.1. Características eléctricas de las señales
En RS232, las señales tienen un voltaje mayor a 5V. Un valor lógico "1", también
denominado "marca" se transmite como un voltaje negativo y un valor lógico "0",
35
también llamado "espacio" se transmite como un valor de voltaje positivo. Esta
diferencia de tensión ayuda a que las señales tengan una mayor inmunidad al
ruido. Tabla 1. Valores de tensión
SEÑALES DE DATOS
“0” lógico o espacio +3V a +5V
“1” lógico o marca -3V a -15V
SEÑALES DE CONTROL
“Off” -3V a -15V
La norma también limita el máximo slew rate de la señal a la salida del transmisor.
Esta limitación se incluyó con la intención de reducir el crosstalk entre señales
adyacentes. Mientras menores sean los tiempos de subida y caída de la señal,
menor es la probabilidad de que exista crosstalk. Por esta razón, el slew rate
máximo permitido es de 30V/uS. Con la misma finalidad, se establece una
velocidad máxima de 20 Kbit/seg.
2.2.2.2. Longitud del cable
En la norma original, se establece que la longitud máxima del cable es de 15
metros. Esta parte fue modificada en la versión "D"; en vez de especificar la
longitud máxima, se especifica una carga máxima de 2500 pF. De esta manera, la
longitud máxima del cable dependerá de la capacidad por unidad de longitud del
mismo. Esto implica que si utiliza un cable con una capacidad mas baja, se podrá
cubrir una distancia mayor. Otra limitante en la longitud del cable es que debe
presentar al circuito transmisor una carga entre 3 KOhm y 7 KOhm.
36
2.2.2.3. Señales
La norma RS232 (o EIA/TIA RS232) es una norma completa en el sentido en que
no sólo especifica las características eléctricas de las señales si no que también
define los conectores que deben usarse, las señales presentes en ellos y la
función especifica de cada una de ellas. Las señales se dividen en cuatro
categorías: señales comunes, datos, control y temporización.
2.2.2.4. Conectores
El conector DB9 (Figura 6) utilizado profusamente en las PC no responde a las
especificaciones de la norma EIA/TIA 232. Debido a su popularidad, sin embargo,
se diseñó otra norma que si lo emplea, con las mismas especificaciones eléctricas
y lógicas que la 232. Esta norma es la TIA/EIA 574.
Figura 6. Conector DB9.
2.2.2.5. Formato de los datos
La norma TIA/EIA 232 describe un método de comunicación donde la información
se envía bit a bit, en formato serie. La información debe ser descompuesta en
palabras de datos. La longitud de estas palabras es variable, aunque en la
mayoría de los casos se usan 7 u 8 bits. Para una transferencia adecuada, deben
añadirse bits adicionales, para sincronización y detección de errores. Es
importante que tanto el transmisor como el receptor usen la misma cantidad de
bits, de otro modo los datos no serán debidamente interpretados.
37
En comunicaciones síncronas, además de la señal de datos, se debe proveer de
una señal de clock, que indique la aparición de cada bit de datos. La ausencia de
señales de clock hace a las comunicaciones asíncronas más baratas y sencillas,
ya que se necesitan menos líneas en el cable. La desventaja es que el receptor
debe realizar una sincronización por cada palabra de datos, para lo cual se
requieren bits extra.
2.2.2.6. Conversión entre niveles lógicos y TIA/EIA 232
La conversión entre niveles lógicos (5V, 3,3V) y los niveles de tensión de la
TIA/EIA 232 puede realizarse con una variedad de circuitos integrados diseñados
específicamente para esa función, denominados drivers, o con transistores si no
hay demasiadas exigencias. Uno de los drivers más populares es el MAX232 y
sus derivados de distintas marcas. Una de las características sobresalientes de
este driver es que se alimenta con la misma tensión que la lógica (5 o 3,3V) y tiene
en su interior un circuito de "bomba de carga" para elevar e invertir la tensión y
obtener así los valores adecuados para la transmisión.
2.2.2.7. Implementación con microcontrolador
Es muy raro que una aplicación con microcontrolador deba implementar una
interfaz TIA/EIA232 tal como se describe en la norma, con todas las señales de un
conector DB25. Por el contrario, en la mayoría de los casos las conexiones que se
realizan no corresponden a un esquema DTE/DCE y pueden ser resultas con un
conjunto mínimo de señales. Para conectar un microcontrolador a una PC u otro
dispositivo serie a veces alcanza con sólo tres señales (GND, TX y RX) o cinco si
se emplea algún tipo de control de flujo (handshake) por hardware, agregándose
DTR y DSR o CTS y RTS.
38
2.2.3. Resolución 1114 del 24 de Noviembre de 2004
2.2.3.1. Artículo 1: Mensajes de texto SMS
Los usuarios de los servicios de telecomunicaciones a quienes se les ofrezca la
capacidad de envío y recepción de mensajes de texto (SMS, por su sigla en
inglés) tienen derecho a establecer comunicaciones de este tipo con usuarios de
la misma red o de otras redes. Para tal efecto, todos los operadores que ofrezcan
SMS a sus usuarios deberán interconectarse y cursar este tipo de tráfico.
Parágrafo: Todos los operadores que actualmente se encuentren ofreciendo SMS
a sus usuarios, deberán interconectarse y cursar este tipo de tráfico, en un término
no mayor a sesenta (60) días calendario a partir de la fecha de entrada en
vigencia de la presente resolución.
El incumplimiento de la obligación de interconexión establecida en el presente
artículo estará sujeto a las sanciones a que haya lugar por parte de las
autoridades competentes.
2.2.3.2. Artículo 2. (7.9.4): Mensajes enviados desde Internet
Los cargos por la transmisión de mensajes desde Internet a un teléfono móvil se
generan para el receptor del mensaje, esto es, para el abonado suscriptor de la
línea móvil, a menos que el operador del servicio establezca una modalidad de
cobro diferente. Sin embargo, y en razón a que aquel no tiene control directo sobre
su utilización, será necesaria su aceptación previa, para lo cual se seguirán los
siguientes parámetros:
a) Se entenderá aceptado el envío de SMS cuando habiéndosele efectuado por
parte del operador de telefonía móvil la correspondiente consulta, por cualquier
39
medio, el suscriptor no haya manifestado, también por cualquier medio, su no
aceptación.
b) Si dentro de un plazo razonable, que en ningún caso será inferior a treinta (30)
días calendario, no hay manifestación alguna por parte del suscriptor,
habiéndosele hecho saber las consecuencias que se derivan de su silencio, se
entenderá que acepta el mencionado servicio.
40
2.3 MARCO TEÓRICO
2.3.1 Cultivo de las Rosas Las rosas han sido un símbolo de belleza a través de los siglos, la mayoría de
éstas son oriundas del hemisferio norte, se tiene conocimiento más o menos de
200 especies de estas flores. En la figura 7 se puede observar un invernadero de
rosas.
Figura 7. Invernadero de rosas.
Fuente: http://www.rosale.cl/imagenes/cultivo_rosas1.jpg
Taxonomía Y Morfología: Las rosas pertenecen a la familia ROSACEAE y su
nombre científico es ROSA SP.
Las rosas comerciales son híbridos ya desaparecidos, entre estas se encuentran
la té hibrida que presenta flores atractivas con capullos laterales de tamaño
grande o mediano, gran cantidad de pétalos y largos tallos; la floribunda que son
41
unas flores en racimos, tienen una gran variedad de colores con diversos matices
y sombras. Sus tallos son espinosos y verticales.
Importancia Económica Y Distribución Geográfica: Las rosas han sido por todos
los tiempos la flor mas apetecida del mercado, su liderazgo se ha consolidado
desde la época de los 90 gracias a las variedades que se encuentran de estas, su
creciente demanda y la oferta que tienen durante todo el año.
Los principales mercados de consumo son Europa, Estados Unidos y Japón. Los
países productores de flores se encuentran distribuidos por todo el mundo, se
tiene a Holanda como potencia de este, seguido por Colombia y África, otros
países productores son México, Ecuador e India.3
Material Vegetal: Las cualidades que deben tener las rosas para corte requeridas
por el mercado, son:
• Tallo largo y rígido: 50-70 cm., según zonas de cultivo.
• Follaje verde brillante.
• Flores: apertura lenta, buena conservación en florero.
• Buena floración (= rendimiento por pie o por m2).
• Buena resistencia a las enfermedades.
• Posibilidad de ser cultivados a temperaturas más bajas, en invierno.
• Aptitud para el cultivo sin suelo.
Para lograr el enraizamiento se debe mantener una temperatura de 18º a 21ºC.
Este proceso dura 5 a 6 semanas, luego se transplantan a las macetas de 7.5 cm.
o al invernadero.
3 http://www.infojardin.com/todas_paginas_com.htm 03-04/2006 5:30 pm.
42
2.3.1.1. Requerimientos Climáticos4 Temperatura: Las temperaturas para tener una buena calidad de la rosa son entre
17º a 25ºC con una temperatura mínima de 15ºC en la noche y en el día de 28ºC.
si se llegaran a tener temperaturas mas bajas de 15ºC se retrasaría el crecimiento
de la planta o se producirían flores deformes o con exceso de pétalos, si es el
caso contrario en q la temperatura fuera superior a 25ºC se tendrían flores mas
pequeñas o con escasos pétalos.
La temperatura del suelo se podría decir que es más importante que la
temperatura del aire en un invernadero, especialmente si se cultivan arriates.
Cuando se tiene una temperatura del suelo inferior a 7ºC, las raíces crecen más
despacio y no logran absorber con facilidad el agua ni los nutrientes. Al tener un
suelo templado se dan las condiciones para que las semillas germinen y para se
desarrollen los esquejes de raíces.
Para lograr una temperatura ideal en el invernadero a veces lo ideal es bajar la
intensidad de la iluminación y para impedir la entrada de los rayos de sol
generalmente se cuelgan mallas de sombreo en los invernaderos.
Es difícil regular las altas temperaturas, especialmente en verano. Por esta razón
se dispone de un sistema de ventilación el la cubierta o se utiliza una malla de
sombreo, otra solución es mojar frecuentemente el suelo del invernadero o con un
cubo o barreño con agua para mantener una buena humedad.
A continuación se mencionan las opciones para el control de temperatura:
Para subir la temperatura se necesita un invernadero bien cerrado con una
cubierta de plástico térmico, se debe emplear doble techo para evitar el 4 http://www.infojardin.com/huerto/invernaderos-clima-cultivo.htm 03-04/2006 7:00 pm.
43
enfriamiento nocturno ya que esto forma una cámara de aire que evita que penetre
el frío de la noche; y una calefacción por aire o con agua caliente también es una
muy buena opción para mantener la temperatura a nivel.
Para bajar la temperatura se necesita tener una ventilación lateral, encalado o sea
una pintura blanca que generalmente es usada en Europa, cuando llega el otoño
se lava y se elimina, es muy parecida a la cal, también se pueden encalar los
cristales y aumentar el nivel de humedad con riegos para el suelo. Otra opción es
incorporar mallas blancas o negras que se colocan afuera del invernadero para
evitar el calentamiento del mismo, las pantallas térmicas con aluminio reflejan la
radiación y logran bajar la temperatura del cultivo y como última opción se tienen
los sistemas de refrigeración como son los nebulizadores y la pantalla
evaporadora.
Sistemas Automatizados de control de temperatura:
Calefacción: Dependiendo de la ubicación de las plantas del cultivo, se necesita
una fuente de calor adicional para complementar el que genera la radiación solar.
Estas fuentes de calor generalmente se utilizan cuando el sol se pone. Las
opciones mas conocidas de calefacción son la de instalar tuberías de agua
caliente dentro del invernadero o instalar un ventilador cerca de una estufa de gas
o aceite.
Ventilación: La ventilación es fundamental, no importa el tiempo que haga, en días
fríos también se tienen que ventilar las plantas un determinado tiempo para que
circule el aire o para los días calurosos es importante tener una buena ventilación.
Es importante la ventilación para expulsar el aire caliente y hacer que circule éste
dentro del recinto, a la hora de evitar plagas y enfermedades.
44
Se puede tener ventilación manual o eléctrica y los respiradores deben estar
situados en dos posiciones, bajas y elevadas para tener un curso de aire
adecuado. Si se tienen unos extractores en una parte alta del invernadero estos
lograrán que el aire caliente sea expulsado y permite la entrada de aire fresco.
2.3.1.2. Iluminación El índice de crecimiento para la mayoría de los cultivares de rosa sigue la curva
total de luz a lo largo del año. Así, en los meses de verano, cuando prevalecen
elevadas intensidades luminosas y larga duración del día, la producción de flores
es más alta que durante los meses de invierno.5
Para estas plantas es necesario el sombreo u oscurecimiento en temporadas
calientes del año pues las elevadas intensidades luminosas vienen con un calor
intenso, la primera medida que se debe tener es que el oscurecimiento debe ser
ligero, para lograr un cambio luminoso progresivo.
En caso de que los días sean nublados o sea temporada de invierno se
recomienda iluminación artificial para las rosas, puede resultar costoso pero es la
mejor forma de mantener bien los cultivos.
2.3.1.3. Humedad
Un aspecto de suma importancia para el manejo de flores es la humedad relativa
del invernadero. Cuando se tienen pérdidas de agua se tienen también pérdidas
en la calidad del producto, lo que ocasionan cambios en las flores como son el
marchitamiento, arrugado o cambios en la textura de la flor.
5 http://www.infoagro.com/flores/flores/rosas.htm
45
Una humedad relativa del aire ideal está entre 45 y 60%, para poder reconocer
estos niveles se utilizan higrómetros. Cuando se tiene una humedad alta en el
invernadero favorece que las plagas y las enfermedades puedan penetrar los
cultivos y dañar la producción, el caso contrario al tener humedad baja se puede
obtener la resequedad en las plantas.
Figura 8. Control de temperatura.
Imagen. http://articulos.infojardin.com/huerto/fotos-cultivo/iluminacion-artificial-inve.jpg
Cuando las hojas tienen una muy buena transpiración se logra que la humedad del
invernadero aumente, para lograr evitar que se tengan excesos de humedad se
tienen riegos en horas de la mañana y cuando sea estrictamente necesario y con
una buena ventilación (Figura 8). Para lograr subir el grado de humedad se moja
el suelo o se vaporizan las plantas periódicamente.
2.3.1.4. Riego en Invernaderos La necesidad de agua de riego es la cantidad que debe suministrarse a un cultivo
para asegurar que recibe la totalidad de sus necesidades hídricas o una fracción
determinada de éstas; ya que el riego es la única aportación de agua que se
dispone6.
6 http://www.infoagro.com/flores/flores/rosas.htm
46
2.3.2. Sensores de Temperatura La temperatura se puede medir de innumerables maneras y se tienen muchas
opciones en cuanto elementos se refiere.
En la industria, cada uno de los procesos que se tienen deben ser supervisados y
controlados, es muy común que entre estos procesos se requiera el control y
medición de temperatura, para este fin se tienen infinidad de sensores que miden
esta característica, ya para elegirlo se requiere tener en cuenta el sistema que
debe ser controlado o supervisado, en la Tabla 1 se muestran algunos de los
sensores de temperatura que son mas usados:
Tabla 2. Dispositivos de medición de temperatura
DISPOSITIVOS DE MEDICIÓN DE TEMPERATURA
Eléctricos Mecánicos Radiación Térmica
Varios
• Termocuplas
• Termoresistores
• Termistores
• Resistores de
carbono
• Diodos
• Detectores de
ruido Jonson
• Transistores
• Cristales de
cuarzo
• Sales
paramagnéticas
• Sistemas de
dilatación
• Termómetros
de vidrio con
líquidos
• Termómetros
bimetálicos
Pirómetros
de radiación
- Total (
banda ancha
)
- Óptico
- Pasa banda
- Relación
• Indicadores de
color
- Lápices
- Pinturas
Sondas
neumáticas
• Sensores
ultrasónicos
• Indicadores
pirométricos
• Termómetros
acústicos
47
Transductores: Son los elementos de un circuito que generan una superposición
de una variable física a una variable eléctrica, se encuentran dos clases de
transductores, los de entrada y los de salida, los primeros son comúnmente
conocidos como sensores que transforman una variable física a una eléctrica, la
variable eléctrica se encuentra en uno de los 5 campos de señales mas usuales
como son: radiante, magnética, térmica, química o mecánica mientras que la
variable eléctrica queda limitada a las variaciones de corriente y voltaje, directa o
indirectamente cuando se varía algún parámetro pasivo como por ejemplo la
resistencia, capacitancia e inductancia entre otras; en cuanto a los transductores
de salida o actuadotes traducen una variable eléctrica a una variable física en
cualquiera de los cinco campos anteriormente mencionados.
Los transductores de temperatura más comunes son la termocupla, la
termoresistencia y algunos elementos de estado sólido.
Cuando de seleccionar un sensor se trata se deben tener en cuenta varias
condiciones o factores, como son los rangos de la temperatura, la exactitud que se
requiere, la velocidad de la respuesta, los requerimientos de mantenimiento y los
costos, cada uno de estos factores se analizan en relación a los dispositivos que
son mas usados en la industria como termocuplas, termistores, sistemas de
dilatación, termoresistencias y pirómetros ópticos o de radiación.
En la siguiente tabla se encuentran detallados los sensores estándar existentes y
sus rangos de trabajo de temperatura.
48
Tabla 3. Rangos de temperatura correspondientes a los métodos más comunes de medición.
Sistema Rango en ºC Termocuplas -200 a 2800
Sistemas de dilatación (capilares o bimetálicos ) -195 a 760
Termoresistencias -250 a 850
Termistores -195 a 450
Pirómetros de radiación -40 a 4000
Fuente: http://www.sapiensman.com/medicion_de_temperatura/index.htm
2.3.3. Sensores de Humedad
La humedad juega un papel muy importante en los procesos industriales al igual
que la temperatura, este factor puede variar pero es importante tener un monitoreo
y algunas veces controlada.
Para lograr medir esta característica el sensor debe estar completamente en
contacto con el ambiente de proceso
Precisión en la medición de la humedad: los laboratorios de calibración y los
fabricantes lo que buscan es identificar la calidad de desempeño de los
dispositivos para medir la humedad, esto se da en que sus especificaciones y sus
datos de calibración logren mostrar la operación real de los sensores. La precisión
de un sensor es la desviación con respecto a un patrón de laboratorio y esta
característica logra ser afectada por:
• Temperatura y humedad a la que fue calibrado el sensor.
• Dependencia de la calibración con la humedad y la temperatura, muchos
sensores son no-lineales y casi todos varían con la temperatura.
• Como afecta al sensor el envejecimiento y la velocidad de envejecimiento.
49
• La sensibilidad del sensor con los contaminantes.
• La precisión que tiene el estándar usado para construir el sensor y su
certificación.7
Ya teniendo estas variaciones se puede observar que una precisión del ±1% no
muestra un desempeño efectivo cuando se trata de la operación del sensor, así
entre más preciso sea el sensor puede tener un tiempo de operación en la misma
aplicación mucho mas confiable.
2.3.3.1 Parámetros típicos para determinar la humedad:
Medición de la humedad relativa (RH): Consiste en la relación entre la presión
parcial del vapor de agua en el gas de que se trate y la presión de saturación del
vapor, a una temperatura dada. Por lo tanto la humedad relativa es función de la
temperatura. La medición es expresada como un porcentaje. La humedad relativa
es un parámetro utilizado principalmente en aplicaciones ambientales (ej.
acondicionamiento de aire) o mediciones meteorológicas ya que impacta
directamente en el confort humano. Cuando los niveles de humedad relativa son
bajos puede producirse electricidad estática que dañe al equipamiento
electrónico8.
Medición del punto de rocío/escarcha (D/F PT): se conoce como punto de rocío a
la temperatura que esta por encima de 0º grados, el cual el vapor de agua
presente en el gas lleva a su condensación; el punto de escarcha es la
temperatura que se encuentra por debajo de 0º grados en donde el vapor es
cristalizado en hielo.
7 http://www.monografias.com/trabajos10/humed/humed.shtml 03-04/2006 5:00 pm. 8 Ibíd.
50
Se conoce como magnitud fundamental al punto D/F PT que es función de la
presión del gas pero es independiente de su temperatura.
Partes por millón (PPM): Expresión del contenido de vapor de agua por fracción de
volumen (PPMv) o, si es multiplicado por la relación entre el peso molecular del
agua y el aire como PPMw.9
Este término y todos sus términos que se asocian se utilizan cuando el vapor del
agua es una impureza, un componente definido o una sucesión de gases que
participan en un proceso industrial.
2.3.3.2. Diferentes tipos de sensores
Tecnologías que son mas usadas son: Las mediciones de humedad relativa son
hechas por sensores que se basan en: psicometría, resistivos, absorción de
líquido, desplazamiento y capacitivos.
Psicometría por bulbo húmedo/bulbo seco: Consiste de un par de termómetros
eléctricos acoplados, uno opera en estado húmedo.
El termómetro se humedece gracias a la evaporación del agua, así se logra una
diferencia notoria con la temperatura ambiente, cuando el bulbo húmedo tiene su
máxima caída de temperatura la humedad de logra comparando la temperatura
de los dos termómetros en su respectiva tabla psicométrica.
Sensores por desplazamiento: Mide la expansión o contracción de un material
(nylon o celulosa), que es proporcional a los cambios de nivel en la humedad
relativa
9 Ibíd.
51
Sensor de bloque de polímero resistivo: Tienen un sustrato cerámico aislante en
donde se encuentra una grilla de electrodos los cuales están cubiertos por una sal
embebida en una resina, esta resina se recubre con una capa permeable al calor
que la protege del vapor del agua. Cuando la humedad permeabiliza la capa de
protección la resina se ioniza y los iones se movilizan dentro de ésta. Si los iones
son excitados la impedancia del sensor es medida y da el resultado de la
humedad relativa.
Sensores capacitivos: Como el de la figura 9, son apropiados para ambientes en
donde existen temperaturas altas pues su coeficiente de temperatura es bajo y el
polímero dieléctrico soporta altas temperaturas, son propicios para trabajar en
altos grados de sensibilidad y niveles bajos de humedad donde se requieren
respuestas rápidas.
Figura 9. Sensor capacitivo.
Fuente: http://www.monografias.com/trabajos10/humed/humed.shtml#dis
2.3.3.3. Comunicación Serial
El mundo de las comunicaciones internas del computador se realiza en forma
paralela alternada, por fuera del computador predominan las comunicaciones
seriales; las redes de computadores se basan en dicha comunicación. El PC utiliza
52
la norma RS232, por lo que los niveles de tensión de los pines están
comprendidos entre +15 y -15 voltios.
La información que maneja un computador puede transmitirse de un lugar a otro
en dos formas básicas, en forma serial o en forma paralela. En una transmisión
serial se forma un “tren” de bits, uno tras de otro viajan del lugar de emisión al
receptor utilizando una sola vía, en este caso será un conductor eléctrico bus
Serial, como en caso de los trenes con una sola vía si se desea transmitir en el
sentido contrario, se debe esperar que la vía este libre. En la comunicación en
paralelo cada bit tiene su vía exclusiva, con la condición de que todos viajen
simultáneamente, como en el caso de la comunicación serial para transmitir en el
sentido contrario se debe esperar que la vía este libre, a menos que se tenga una
exclusiva para el sentido contrario. La comunicación en el interior del computador
son básicamente transmisiones en paralelo utilizando una sola vía, en caso de que
se transmita en los dos sentidos debe ser alternada por cuanto solo se cuenta con
una sola vía. El computador es igual al número de bits por segundo que se
transmiten o reciben.
Para enviar información codificada de esta manera, el transmisor y receptor
registran el tiempo, el cual define el periodo baud, deben estar a la misma
frecuencia y estar sincronizados. Los bits se transmiten como grupos separados,
con una longitud típica de 7 u 8 bits, llamados caracteres. El nombre carácter se
usa porque cada grupo de bits representan una letra del alfabeto cuando el texto
esta codificado en ASCII. Cada carácter se envía en una armazón (frame)
consistiendo de un bit “0” llamado un bit de inicio, seguido por el carácter mismo,
seguido (opcionalmente) por un bit de paridad, y después un bit “1” llamado bit de
paro. La lógica del bit bajo de inicio le dice al receptor que esta empezando una
armazón, y la lógica del bit alto de paro denota el final de la armazón.
53
Figura 10. Conector DB-9 hembra, diagrama de pines.
Fuente: http://juandeg.tripod.com/Comuni1.gif
2.3.3.4 Comunicación Serial Asíncrona10
Primero se envía un bit de start, a continuación los bits de datos (primero el bit de
mayor peso) y finalmente los bits de STOP. El número de bits de datos y de bits
de Stop es uno de los parámetros configurables, así como el criterio de paridad
par o impar para la detección de errores. Normalmente, las comunicaciones serie
tienen los siguientes parámetros: 1 bit de Start, 8 bits de Datos, 1 bit de Stop y sin
paridad.
En la figura 10 se puede ver un ejemplo de la transmisión del dato binario
10011010. La línea en reposo está a nivel alto:
Se llama comunicación serial asíncrona porque el receptor sé resincroniza el
mismo con el transmisor usando el bit de inicio de cada armazón. Los caracteres
se pueden transmitir en cualquier tiempo, con un retraso de tiempo arbitrario entre
caracteres. Existen también protocolos de comunicación serial síncrona donde los
caracteres se envían en bloques sin una armazón de bits circundante. En esta
aproximación, el transmisor continuamente transmite señales, con un carácter de
10 http://juandeg.tripod.com/comserial.htm Febrero 10 2007.
54
sincronización especial que se transmite si no hay datos reales disponibles para
transmitir.
Los bits dentro de cada carácter transmitido se envían con el bit menos
significativo primero, cada bit durando un periodo baud. Los transmisores y
receptores seriales se pueden instruir para enviar o recibir de 5 a 8 bits por
carácter (ambos deben de estar de acuerdo en cuantos).
Después de que los bits de cada carácter se envían, puede seguir un bit de
paridad opcional. El bit de paridad es útil si la línea de datos esta muy ruidosa
como para proporcionar una transmisión fiel. El bit de paridad, P, se puede elegir
para dar ya sea paridad par o impar. Para paridad par, P = 1 si el número de 1’s
en el carácter es impar y P = 0 si el número es par. Es decir, en la paridad par P
se elige tal que el número de 1’s incluyendo P es par. Para paridad impar, P se
elige tal que el número de 1’s incluyendo P es impar. El receptor local revisa para
asegurar que la paridad es aun la misma a pesar de que el cable haya recogido
ruido. Si la paridad ha cambiado, algún bit se ha perdido, y el receptor pone una
bandera de error de paridad en el registro de estado (Figura 11).
Figura 11. Trama de Datos.
Fuente: http://juandeg.tripod.com/Comuni2.gif
55
Existe una herramienta básica para el manejo y ensayo de la transmisión serial
que es el HYPERTERMINAL DE WINDOWS: Este programa es una herramienta
útil para trabajar con comunicaciones seriales, ya sea para comunicarnos con otra
computadora, con un microcontrolador, con un multímetro, con un módem y en fin,
con cualquier dispositivo que esté diseñado para enviar o recibir información a
través de este medio.
La comunicación serial está compuesta principalmente de dos elementos básicos,
el hardware, que hace referencia a la configuración de los conectores y niveles de
voltaje, y el software, con el que se controla la información binaria que se quiere
transferir. Todo esto está regido por normas o protocolos donde el más utilizado
por las computadoras convencionales es el protocolo RS-232.
2.3.3.5. Protocolo RS-23211
El protocolo RS-232 es una norma o estándar mundial que rige los parámetros de
uno de los modos de comunicación serial. Por medio de este protocolo se
estandarizan las velocidades de transferencia de datos, la forma de control que
utiliza dicha transferencia, los niveles de voltajes utilizados, el tipo de cable
permitido, las distancias entre equipos, los conectores, etc.
Además de las líneas de transmisión (Tx) y recepción (Rx), las comunicaciones
seriales poseen otras líneas de control de flujo (Hands-hake), donde su uso es
opcional dependiendo del dispositivo a conectar.
A nivel de software, la configuración principal que se debe dar a una conexión a
través de puertos seriales. RS-232 es básicamente la selección de la velocidad en
baudios (1200, 2400, 4800, etc.), la verificación de datos o paridad (paridad par,
11 http://juandeg.tripod.com/rs232.htm Febrero 16 de 2006
56
impar o sin paridad), los bits de parada luego de cada dato(1 ó 2), y la cantidad de
bits por dato (7 ó 8), que se utiliza para cada símbolo o carácter enviado.
La Norma RS-232 fue definida para conectar un ordenador a un modem. Además
de transmitirse los datos de una forma serie asíncrona son necesarias una serie
de señales adicionales, que se definen en la norma. Las tensiones empleadas
están comprendidas entre +15/-15 voltios.
Puerta serial full dúplex para comunicación punto a punto a una distancia no
superior a 30 metros. Desde 3 hilos hasta 19 hilos.
El primer puerto serial denominado comúnmente COM1 tiene asignada la
interrupción IRQ4 y sus registros empiezan en la dirección de la memoria %3F8, y
de ahí en adelante hasta la %3FE. Para las máquinas que tienen un segundo
puerto serial este se denomina COM2, tiene asignada la interrupción IRQ3 y sus
registros se alojan en las direcciones %2F8 hasta la %2FE. Los puertos
denominados COM3 y COM4 a pesar de que se mapean en un espacio diferente
de los puertos anteriores, comparten las interrupciones, COM1 con COM3 y
COM2 con COM4, por esto es muy difícil utilizar los cuatro cuando se trata de
hacerlos funcionar mediante interrupciones.
2.3.4. Manejo De La Web
Existen diferentes tipos de diseños que utilizan métodos para programar, diseños
prácticos y fáciles de manejar.
PHP (Hipertext Preprocessor) es un lenguaje de programación que se usa para la
creación y diseño de sitios Web, PHP Tools o Personal Home Page Tools es un
lenguaje que es común en aplicaciones para servidores y creación de contenido
dinámico en sitios Web, también se incluyen aplicaciones en las cuales logra
57
trabajar aplicaciones con interfaz gráfica y conexión con diferentes tipos de
plataformas para comunicación con dispositivos electrónicos.
Tiene mucha similitud con lenguajes como C y Perl. Se logra crear complicadas
aplicaciones pero con una curva de aprendizaje factible, se involucra con
aplicaciones dinámicas con un simple conocimiento en los anteriores y más
conocidos programas.
Para lograr ejecutar e interpretar esta programación se tiene que hacer en el
servidor, aquí está almacenado el script, y el cliente recibe es la ejecución de
todas las acciones programadas, PHP maneja una cantidad de archivos como son
PDF, Flash entre otros, así se logra trabajar con variedades de formatos que
logran subir entre imágenes y música si se requiere.
La conexión que permite es a diferentes tipos de servidores de bases de datos
como MySQL, Postgres, Oracle, ODBC, IBM DB2, Microsoft SQL Server y SQLite;
lo cual permite la creación de Aplicaciones Web muy robustas.
Sus principales usos se ven en la programación de páginas Web dinámicas
combinadas con base de datos MySQL y tiene soporte nativo en otros motores
como ODBC y por esto se logra tener más posibilidades de conexión, puede
programarse en consola al estilo Perl, en Linux, Windows y Macintosh. Se logra
crear aplicaciones gráficas independientes del navegador combinando PHP y
GTK, esto permite desarrollar aplicaciones de escritorio en sistemas operativos
basados en Unix y Windows, Mac OS X.
2.3.5. Microcontrolador
Un Microcontrolador está diseñado para realizar la tarea de muchos circuitos
lógicos simplificando el diseño. Los pasos necesarios que el usuario tiene que
58
cubrir para desarrollar circuitos con Microcontroladores es determinar las tareas a
realizar, escribirlas en un archivo, procesarlo para que después se almacene a la
memoria del Microcontrolador. Un Microcontrolador es un circuito integrado el
cual, de no ser programado no realizará tarea alguna. Requiere de ser
programado para que realice desde la tarea más sencilla hasta el control mas
complicado.
Las ventajas del uso de los Microcontroladores son muchas y muy diversas. Los
circuitos discretos son alambrados permanentemente para realizar una función
específica. Si los requerimientos del diseño cambian, es probable que sea
necesario rediseñar todo el circuito para ajustar estas nuevas necesidades.
Con un Microcontrolador, la mayoría de los cambios pueden implementarse
simplemente reprogramando el dispositivo. Es decir, solo es necesario cambiar un
programa y no el circuito lógico.
Contiene tres unidades básicas que lo identifican como tal y son CPU para
procesar la información, Memoria de datos para guardar información y Memoria de
Programa para almacenar las instrucciones.
2.3.5.1 CPU
La Unidad de Procesamiento Central es el corazón del Microcontrolador y es aquí
donde todas las operaciones aritméticas y lógicas son realizadas. Es decir, es la
unidad que calcula todas las operaciones que son ordenadas por la memoria de
programa.
2.3.5.2. Memoria de Programa
Contiene las instrucciones organizadas en una secuencia particular para realizar
una tarea. Típicamente es denominada memoria de sólo lectura (ROM) o también
59
OTP, EPROM o FLASH que son memorias que una vez programadas almacenan
la información aunque el sistema no sea energizado. Esto permite que el
Microcontrolador ejecute el programa almacenado en Memoria inmediatamente
después de ser energizado.
2.3.5.3. Memoria de Datos
Esta es una memoria que puede ser escrita y leída según sea requerido por el
programa. Tiene las funciones de almacenamiento de datos (pila) y como
almacenamiento de variables. Este tipo de memoria es usualmente llamada
memoria RAM (Memoria de Acceso Aleatorio). Cada localidad de memoria tiene
una dirección única con la cual el CPU encuentra la información necesaria.
Los microcontroladores actuales contienen ambas memorias (Datos y Programa)
incluidas dentro del circuito integrado. Por otro lado, resulta necesario contar con
otras unidades que hacen posible el funcionamiento mínimo de un
Microcontrolador que son Circuitería de Temporización y Entradas/Salidas
2.3.5.4. Circuitería de Temporización
Los Microcontroladores usan señales de temporización llamadas Reloj que
proveen una referencia en el tiempo para la ejecución del programa. Esta señal
determina en qué momento los datos deben ser escritos o leídos de la memoria.
Así mismo, provee la sincronía con los dispositivos conectados al Microcontrolador
(Periféricos).
Entradas/Salidas: Los Microcontroladores requieren de una interfase para
comunicarse con la circuitería externa. Esta Interfase es denominada comúnmente
como Puerto.
60
Existen Puertos de Entrada y Salida los cuales permiten que las señales (o datos)
sean leídos del exterior o mandados al exterior del Microcontrolador. Los Puertos
están formados de pines, (terminales del circuito integrado) los cuales,
dependiendo de la aplicación, son conectados a un sin fin de dispositivos como
teclados, interruptores, sensores, relevadores, motores, etc.
2.3.5.5. Diagrama de un microcontrolador
Para entender la configuración básica del Microcontrolador, describiremos una
solicitud del CPU de un dato localizado en Memoria: El CPU solicita información a
la memoria (o un Puerto) por un llamado con la dirección correspondiente a la
localidad donde se encuentre el dato solicitado. La dirección (de la información
solicitada) es almacenada en el CPU como un número binario en un registro
temporal. Las salidas de este registro son mandadas por muchas vías (o una vía
sencilla) a la memoria del Microcontrolador y periféricos. Al grupo de vías de
comunicación que comparten una trayectoria común en forma paralela se le
denomina “BUS”.
Es entonces cuando el registro de dirección almacena el dato recibido. El número
de bits recibidos dependen del tipo de Microcontrolador. El dato o la información
buscada se envían a la CPU por el bus de datos. El bus de datos es diferente al
bus de direcciones ya que el bus de datos sirve únicamente para recibir o mandar
datos a memoria o periféricos.
Las señales del bus de direcciones son controladas solamente por el CPU y la
información va siempre del CPU a los bloques de memoria. Por otro lado, la
información en el bus de datos puede ser de entrada o salida al CPU por medio
del registro de datos.
61
En otras palabras, el bus de datos es bi-direccional y el bus de direcciones es uni-
direccional. El ancho de los buses de datos y de direcciones también pueden ser
diferentes, dependiendo del tipo de microcontrolador y del tamaño de la memoria.
A continuación en la figura 12 se muestra a bloques el CPU, Memorias y Buses.
Figura 12. Diagrama de bloques de un microcontrolador.
2.3.5.6. Memoria del programa
La Memoria de Programa contiene el programa del Microcontrolador. Es decir es
aquí donde se almacenan los comandos a ejecutar por el CPU para realizar una
tarea de control determinados por el usuario dependiendo de los requerimientos
de la aplicación. Existen muchos tipos de memoria de programa ROM, EPROM,
OTP, EEPROM, FLASH.
62
Figura 13. Diagrama de la memoria de un programa.
Existe un registro que se identifica como PC (Program Counter) o Contador de
Programa. El PC es requerido por el CPU para apuntar a la localidad de memoria
que contiene las instrucciones del programa.
Algunos Microcontroladores también almacenan información de status del
controlador en la pila antes de responder a alguna interrupción. El programa
puede utilizar la pila para guardar datos temporalmente, especialmente cuando se
desea almacenar datos entre subrutinas. No todas las pilas de los
Microcontroladores son accesibles al usuario. El diagrama de memoria de los
programas de los microcontroladores se muestra en la figura 13.
2.3.6. Bases de datos MySQL
SQL, Structure Query Language (Lenguaje de Consulta Estructurado) es un
lenguaje de programación para trabajar con base de datos relacionales como
MySQL, Oracle, etc.
Es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de
la GNU. Su diseño multi-hilo le permite soportar una gran carga de forma muy
63
eficiente. MySQL fue creada por la empresa sueca MySQL AB, que mantiene el
copyright del código fuente del servidor SQL, así como también de la marca.
Aunque MySQL es software libre, MySQL AB distribuye una versión comercial de
MySQL, que no se diferencia de la versión libre más que en el soporte técnico que
se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya
que de no ser así, se vulneraría la licencia GPL.
Este gestor de bases de datos es, probablemente, el gestor más usado en el
mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran
aceptación es debida, en parte, a que existen infinidad de librerías y otras
herramientas que permiten su uso a través de gran cantidad de lenguajes de
programación, además de su fácil instalación y configuración.
Las principales características por las cuales se escogió este gestor de bases de
datos son las siguientes:
1. Aprovecha la potencia de sistemas multiprocesador, gracias a su
implementación multi-hilo.
2. Soporta gran cantidad de tipos de datos para las columnas.
3. Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc.).
4. Gran portabilidad entre sistemas.
5. Soporta hasta 32 índices por tabla.
6. Gestión de usuarios y passwords, manteniendo un muy buen nivel de
seguridad en los datos.
64
3. METODOLOGÍA Para el desarrollo del proyecto, se desarrollaron los siguientes pasos:
• Recolección de la información que documente sobre este tipo de proyectos.
• Análisis cada parte de un cultivo, la siembra de las rosas, el cultivo, como
es el cuidado de las flores, la temperatura adecuada, la humedad requerida,
el manejo de cada uno de los instrumentos de control.
• Escogencia de los sensores de humedad y temperatura con los cuales se
va a trabajar.
• Diseño de los circuitos de trabajo y su compatibilidad con el PC quien es el
que recibirá cada una de las variables
• Observación de las características de los componentes más relevantes de
las tarjetas preseleccionadas teniendo en cuenta su manual de
características.
• Escogencia del software y la programación que recolectará los datos de la
tarjeta de adquisición de datos.
• Revisión de la compatibilidad con conexión a bases de datos, la rapidez y
capacidad de respuesta del software.
65
• Construcción de cada una de las páginas que revelarán los resultados
almacenados, el programa adecuado para diseñar la página se escoge
según las técnicas de diseño que se posean.
66
3.1 ENFOQUE DE LA INVESTIGACIÓN
La metodología a utilizar es la empírico analítica ya que se elaborará la
construcción de un sistema dado el previo análisis de diseño que proporcionará
las características y requerimientos del sistema.
3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA
Línea de investigación de USB: “Tecnologías Actuales y Sociedad”
Sublínea de facultad: “Instrumentación y Control de Procesos”
Campo de Investigación: “Sistemas de Adquisición y Control de Variables”
3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN
La principal fuente de investigación es Internet, libros de programación y tutoriales,
dado que es un medio cómodo para la realización de éste proyecto. Se pretende
buscar técnicas y opciones para recolectar información como medio de guía para
generar un diseño e implementación.
3.4 HIPÓTESIS
Con el diseño de un sistema que permita medir, supervisar, y generar un reporte
se podrá llevar el monitoreo de la temperatura, humedad y la activación de riego
67
por un software implementado en la plataforma Visual Basic, almacenando la
información en una base de datos y una interfase que permita el análisis de los
datos adquiridos, realizando pruebas desde una tarjeta de adquisición de datos
hacia el computador. Todo esto visualizado por Internet, con visualización del
prototipo. En el caso que exista alguna variable que no pueda ser normalizada
envía un mensaje SMS al celular reportando la falla.
3.5 VARIABLES
3.5.1 Variables Independientes
• Sensores o entradas del sistema. Se escogerán según su función dentro
del sistema, es necesario también tener en cuenta que sean asequibles y
fáciles de manipular.
• Identificar el tipo de alimentación a utilizar. Esta variable es de vital
importancia en el desarrollo del proyecto, ya que es necesario tener de un
sistema no interrumpido de alimentación para dotar de energía a todo el
sistema. Esto incluye circuito de adquisición de datos, microcontrolador,
entradas, etc.
3.5.2 Variables Dependientes
• Diseño del circuito: Depende de la selección del microcontrolador, los
sensores y la herramienta de software apropiada para realizar la simulación
del mismo.
• Diseño de la interfaz PC-Tarjeta: Depende del circuito diseñado y la
plataforma para el diseño Web que se vaya a utilizar.
68
4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS
Como primera medida se entra a evaluar los resultados que entregan las variables
al ser analizadas por el sistema, para el sistema en el computador maestro se
visualizan por medio de Visual Basic, aquí se pueden ajustar los valores en los
cuales se necesita o se requiere que los sistemas de control se activen, se
observan los resultados obtenidos de temperatura y humedad, se da la opción de
guardar estas condiciones de trabajo.
Otra opción para poder ver las variables y esta es la fundamental es en página
Web, en cualquier computador que tenga acceso a Internet, aquí se visualiza el
valor de la temperatura y de la humedad en tiempo real, y cada uno de los
historiales de hora, día, semana, mes y año. Y la opción de poder ver el
invernadero en Internet, una fotografía tomada cada minuto podrá dar una
visualización en tiempo real del mismo.
Como último resultado se tiene el mensaje de texto enviado en dado caso que se
llegue a tener una condición de fallos en el sistema que los controladores no
puedan regular, este mensaje viene establecido por medio del código PHP el cual
es un script que envía un correo a la página de uno de los grandes operadores
que poseen un sistema de envío de mensajes al celular.
69
5. DISEÑO INGENIERIL 5.1. DESCRIPCIÓN DEL SISTEMA En este capítulo se explica el diseño, construcción e implementación del sistema
de supervisión, los sensores utilizados, las tarjetas diseñadas y su funcionamiento;
los microcontroladores que se escogieron con sus correspondientes circuitos y
programas, la fuente de voltaje, el uso de los relevos, el dispositivo de
comunicación, la alarma de aviso de fallos, así como los programas utilizados para
la comunicación entre la tarjeta y el computador, el programa de Visual Basic, la
base de datos implementada en MySQL, la comunicación entre la base de datos e
Internet, el entorno gráfico de las páginas; por último se explicará el programa
para la visualización del invernadero por medio de una cámara Web y el envío de
mensajes de texto para la detección de los errores.
En la figura 14 se puede observar un diagrama de bloques sobre el
funcionamiento del sistema, cada una de estas etapas se explican a continuación.
70
Figura 14. Plataforma del sistema.
Para la explicación este sistema se ha dividido en seis importantes procesos con
los cuales se garantiza la completa presentación del mismo y por supuesto el
cumplimiento de los objetivos previamente planteados. Estos seis procesos son:
71
1. Diseño y programación del módulo de sensores.
2. Diseño del módulo de control.
3. Diseño y programación de la interfaz.
4. Diseño y programación de la Web
5. Montaje.
6. Construcción del prototipo.
5.1.1. Diseño y programación del módulo de sensores
Esta es una de las 6 grandes etapas que se van a manejar. Es importante en el
sistema pues es la que va a obtener los datos de las variables que se manejan en
el banco de prueba, es la que va a transmitir a la tarjeta de adquisición de datos y
va a indicar según sus valores al microcontrolador cuales son los sistemas de
control que deben ser activados, este es el módulo que nos va a ayudar a tomar
las muestras que se van a visualizar en Internet.
A su vez, esta se divide en 2 partes, ya que se van a obtener resultados de dos
variables como lo son la humedad y la temperatura, por esto mismo existen dos
diseños.
72
Figura 15. Ubicación de los sensores en el invernadero.
La figura 15 muestra la ubicación de los sensores de temperatura y humedad a lo
largo del invernadero, se puede ver que se tienen 4 sensores de temperatura, esto
es para lograr un control preciso de la temperatura del lugar, estos invernaderos
generalmente son de grandes dimensiones lo que hace que la temperatura que se
tiene en el extremo norte posiblemente no sea la misma que se tiene en el
extremo sur, esta condición se explica mejor con un ejemplo:
Suponiendo que en la parte norte se encuentra la entrada del invernadero, esto
acarrea muchos factores, abrir la puerta, tráfico en el exterior entre otros, pero en
dado momento del día llega un camión con plaguicidas para el invernadero, este
se estaciona muy cerca a la entrada logrando que se eleve la temperatura en el
costado norte del cultivo, mientras en el extremo sur la temperatura se encontrará
73
mas baja, factores como éste llevan a que en el diseño de la tarjeta se
implementen cuatro sensores de temperatura. Estos sensores tomarán la
temperatura de cada punto y por software se tendrá la temperatura del cultivo
entero por medio de un promedio que se hace en el microcontrolador maestro. El
prototipo tiene de largo de un metro los sensores estarán ubicados cada 25
centímetros uno del otro.
Con la humedad en el aire ocurre un caso diferente, este factor es el mismo en
todo el lugar, por esto se implementa un sensor de humedad a lo largo del
invernadero.
Ya claro este punto se puede observar en la figura 16 los diseños de los circuitos
de los sensores de humedad y temperatura.
Figura 16. Circuito de supervisión de temperatura y humedad.
74
5.1.1.1. Sensor de temperatura
Luego de evaluar varios sensores de temperatura, evaluando rango de trabajo,
capacidad de respuesta, compatibilidad con los microcontroladores y decidiendo si
sería análogo o digital se tuvo entre la preselección al LM35 y al DS1820. El
sensor seleccionado es el DS1820, este tiene amplio rango de escala y por tener
la gran ventaja de ser un sensor digital no necesita calibración y tiene una interfaz
directa con el microcontrolador, mientras el LM 35 es un sensor digital que
necesita de circuitos de amplificación y demanda mas tiempo para su calibración,
Es un dispositivo ideal para realizar el monitoreo de temperaturas en recintos
amplios simplemente con una sencilla instalación se vinculan los DS1820
dispuestos en los puntos en que se desea medir la temperatura. Los valores de
temperatura máximos y mínimos que se manejan en los invernaderos como ya se
había dicho son: De 18°C a 21°C en proceso de enraizamiento de la planta mas o
menos entre 5 y 6 semanas de sembrada la planta, después de este proceso entre
17°C a 25°C, para la noche no debe ser menor a 15°C y en el día no mayor a
25°C. La configuración del sensor se puede observar en la figura 17.
Periódicamente una computadora maestra interrogará a todos los termómetros,
almacenará la medición y podrá tomar las acciones de control necesarias
(conexión de calefactor, ventilador, extractor, etc.)
75
Figura 17. Sensor DS1820.
5.1.1.2 Sensor de humedad
Figura 18. Circuito multivibrador astable.
76
Como se puede observar en la figura 18 El sensor escogido para trabajar es el HS
1101 de Humirel, el circuito está montado como un típico multivibrador astable
diseñado para un 555. Este sensor se utiliza como un condensador variable, lo
que hace es cargarse por medio de la resistencia de 562K (R5) y 49.9K (R3) hasta
que llega a la tensión umbral, luego se descarga solo a través de la resistencia de
49.9K (R3) hasta llegar a la tensión Trigger pues en descarga la resistencia de
49.9K (R3) está conectada a tierra. Esta carga y descarga determinada por las
resistencias ya nombradas determinan el ciclo de trabajo del sensor. La
resistencia de 1K (R2) protege contra cortocircuitos.
La resistencia de 1.238K (R4) desequilibra la compensación de temperatura
interna del 555 introduce un coeficiente de temperatura emparejado al del
HS1101.
El sensor cuando entrega los valores de voltaje toma su medida en humedad la
cual se identifica con unos rangos determinados:
3.55V]~[100%~1.41V]~%10[=PH
Con esto se puede observar que cuando se tiene un voltaje de 1.41V la relación
de humedad medida es del 10% RH, y cuando se tiene un voltaje de 3.55V la
humedad que se está midiendo es del 100%.
Teniendo estos datos claros se puede averiguar la ganancia del circuito:
H
ccPH V
VA
max
=
408.155.35
==V
VAPH
77
Figura 19. Sensor de humedad HS1101 de Humirel.
El sensor mostrado en la figura 19 tiene un rango de trabajo de -40 a 100°C, la
tensión de alimentación recomendada es de 10V y el rango de humedad de
trabajo es de 0 a 100% RH. El rango de humedad manejado en los invernaderos
esta entre 45% y 60%.
5.1.1.3 Microcontrolador MC68H908QT4
El microcontrolador utilizado tanto para el dispositivo de temperatura como para el
de humedad es el MC68H908QT4 mostrado en la figura 20. Se escogió por ser un
microcontrolador de bajo costo que posee las líneas de entrada y salida
necesarias para ser utilizado como la interfase entre el sensor y el
microcontrolador maestro.
Figura 20. Microcontrolador MC68H908QT4.
78
Tiene un módulo de conversor análogo digital (ADC) de 10 bits de resolución y 4
canales con un conversor del tipo de “Aproximaciones Sucesivas”, un formato de
salida a 10 bits u 8 bits, conversión simple o continua, apagado automático del
módulo en el modo “conversión simple”, tiempo de muestreo y velocidad de
conversión configuradas por el software, un indicador de conversión completada e
interrupción, 3 fuentes distintas de referencia de clock para la conversión que son
oscilador externo, interno fijo e interno especial; operación del módulo en estados
STOP y WAIT, lo que permite un menor consumo de energía y además menor
ruido en la conversión y disparo de conversión asincrónico seleccionable por
software.
5.1.1.4 Transmisor Half-duplex RS485
El RS-485 como el mostrado en la figura 21 permite velocidades de transmisión
cercanas a 1 megabit por segundo, así como longitudes de la línea de hasta 1200
metros.
También tiene otra característica muy importante en ambientes industriales, puede
soportar hasta 32 nodos (equipos emisores/receptores) conectados por cada
segmento de red. Estos distintivos lo hacen muy adecuado para el trabajo que fue
diseñado, aplicaciones industriales.
79
Figura 21. Transmisor RS485.
5.1.2. Funcionamiento de los circuitos sensores de temperatura y humedad
Para la explicación del funcionamiento de la tarjeta hay que volver a mencionar
que esta es usada para la implementación de los 4 sensores de temperatura y el
sensor de humedad, este último para su correcto funcionamiento tiene también
implementado el circuito multivibrador astable que ya fue explicado junto con su
respectivo sensor en la sección anterior. Se analizará el circuito de la figura 16.
El microcontrolador trabaja con un cristal de 24 MHz que se comunica digitalmente
a través de un pin de entrada salida con el sensor de temperatura DS1820
Este microcontrolador tiene una comunicación serial Half Duplex a 9600/N/8/1
(configuración del puerto serial en donde 9600 es la velocidad del puerto en bps, n
es no paridad, es un bit para verificar errores, 8 son los bits de datos que se
transmiten a la vez y 1 son los bits de stop que va a manejar el protocolo). Esta
comunicación obtiene por medio de la interfase RS485 encargada de hacer
comunicaciones a larga distancia y es muy eficiente para lugares de ruido.
80
Este circuito se alimenta a través del conector RJ45 como el mostrado en la figura
22, este trabaja a un voltaje de 12V, se conecta en serie con los otros conectores
de su misma clase que se encuentran en cada una de los circuitos de los sensores
para su comunicación con la tarjeta maestra.
Figura 22. Conector RJ45.
El circuito maneja un regulador lineal de 5V, este regulador ayuda al buen
funcionamiento de los integrados, pues estos trabajan también a este voltaje de
5V.
La resistencia de final de línea implementada en el circuito de Humedad solo debe
ir en uno de los cuatro circuitos de los sensores de temperatura, tiene que ser en
el más lejano, esta resistencia es de 1K ohmios que se encuentra en la figura 18
del circuito multivibrador astable.
Los condensadores de la fuente son para eliminación de ruido, cada uno de los
integrados tiene su condensador de bypass (eliminación de ruido), este debe ir lo
mas cercano posible a la fuente de alimentación, y va al pin de alimentación
positivo.
La resistencia 4.7k es la resistencia de Pull Up Sensor, la resistencia de 10M que
llega al micro y la configuración del cristal son especificadas por el fabricante del
microcontrolador.
81
El circuito de humedad está configurado igual que el circuito de temperatura,
observando la figura 22 varía para este circuito JP1 la pequeña tarjeta del 555
reemplaza el sensor de temperatura, JP2 conecta el sensor de humedad con la
board del circuito.
Para poder ajustar los valores que el fabricante aconseja en este sensor se debe
poner el “Trimer” del microcontrolador en un valor crítico según el datasheet.
En la configuración del oscilador astable estandar del 555 donde el condensador
determina la frecuencia máxima de oscilación esta es determinada por el sensor
de humedad HS1101 el cual cambia su capacitancia de forma proporcional de
acuerdo a las mediciones que se hagan en el banco de prueba.
5.1.3. Programa microcontrolador de las tarjetas de temperatura y humedad. Los programas de cada uno de los microcontroladores de esta etapa son hechos
en un programa de Freescale llamado CodeWarrior versión 5.7.0, este programa
lee los datos obtenidos por el sensor y los envía al microcontrolador maestro. Para
ver los programas consultar el ANEXO K y O.
La programación de los microcontroladores para los sensores de temperatura es
de la siguiente manera:
82
Figura 23. Diagrama de flujo de la programación de los microcontroladores de temperatura.
83
La programación del microcontrolador para el sensor de humedad es de la
siguiente manera:
Figura 24. Diagrama de flujo de la programación de los microcontroladores de humedad.
84
El programa para el manejo de la comunicación serial se encuentra en el ANEXO
J.
5.2 Diseño y programación del módulo de control Este módulo es definitivo para la comunicación y adquisición de datos, aquí es
donde realmente se va a tener todo el control de cada una de las variables que se
manejan en el banco de prueba, donde se almacenan los datos y se transmiten al
PC.
85
Figura 25. Circuito de la tarjeta maestra.
86
A continuación se explicará cada una de las etapas que se visualizan en la figura
29.
5.2.1 Relevos Existen 3 relevos que se van a utilizar de la siguiente manera:
Relevo 1: Activa y desactiva y cuando sea necesario los dos ventiladores
instalados en el banco de prueba, uno para ventilación y el otro para extracción del
aire, los dos irán conectados en paralelo. Este relevo va al Pin 42 del
Microcontrolador
Relevo 2: Activa y desactiva cuando sea necesario el bombillo instalado como
calefacción. Este va al Pin 41 del Microcontrolador.
Relevo 3: activa y desactiva cuando sea necesaria la electroválvula que controla el
sistema de riego por goteo del prototipo. Este va al Pin 40 del Microcontrolador.
Este sistema de switcheo posee una resistencia de 18 omhios que va a tierra y es
la que sirve para la limitación de corriente, un diodo en inverso y paralelo a la
bobina del relevo para consumir las corrientes inversas generadas por la misma
bobina (Diodo de protección), todo esto es manejado a 12V.
5.2.2 Fuente de tensión Esta fuente proporciona voltajes de 12V, 5V y 3.3V DC. La regulación de 12V y 5v
se hace con reguladores lineales estandar y la regulación de 3.3V se hace a
través de un regulador LM7812 que es un regulador variable ajustado para
funcionar a 3.3, la regulación se lleva a cabo por medio de las dos resistencias R4
87
y R5, estas ajustan el voltaje de salida del LM7812 para que sea
aproximadamente de 3.3V. Los condensadores estabilizan la señal y corrigen las
señales de ruido.
5.2.3. Programación
Es un pinhead de 6 pines para el programador del micro para ser utilizado con la
interfase o quemador multilink que usa el codeWarrior para programar el micro.
Esta parte se utiliza para programar el micro maestro
5.2.4. Reset Un simple pulsador que tiene la función de resetear el circuito cada vez que se
necesite. Va al Pin 6 del Microcontrolador
5.2.5. Alarma Se utiliza una alarma por si en dado caso alguna variable no logre ser controlada
esta pueda ser activada. Es la configuración de un swich con un transistor para
activar un busser piezoeléctrico controlado desde el micro por programación. Va al
Pin 23 del microcontrolador.
5.2.6. Microcontrolador El microcontrolador escogido es el 68HCS908GT60CFB mostrado en la figura 26,
seleccionado para ser el microcontrolador maestro por su facilidad de
programación, su buena relación costo beneficio. Posee dos puertos de
comunicación serial que son necesarios para comunicarse con el PC y los
sensores sin tener necesidad de estar verificando constantemente el envío y
88
recepción de datos, también posee suficiente memoria para manejar los buffers de
comunicación y tiene la capacidad de trabajar con un bus de 20MHz generado por
un cristal de 4MHz lo que le permite ejecutar mas instrucciones que un
microcontrolador estandar del mercado.
Figura 26. Microcontrolador 68HCS908GT60CFB.
El sistema de oscilador es especificado por el fabricante, trabaja con un cristal de
4MHz que internamente es aumentado a 20MHz por medio del FLL interno del
microcontrolador (La frecuencia de bus interna del microcontrolador es de 20MHz).
Los condensadores de bypass que se utilizan para esta implementación son
recomendados por el fabricante para su completo funcionamiento. Los leds son
indicadores de estado con resistencias de limitación de corriente de 470 omhios
89
para no exceder el consumo de 5mA por cada uno de los pines del
microcontrolador.
5.2.7. Interfase de Comunicación En esta parte se hace la comunicación entre el computador y la tarjeta de
adquisición de datos.
El buffer que se utiliza es el 7407 como el mostrado en la figura 27, este tiene la
propiedad que sus salidas son Open Collector para acoplar la lógica del
microcontrolador de 3.3V a la lógica de comunicación de 5 voltios.
Figura 27. SN7407.
Los buffer que se dirigen hacia el microcontrolador no usan resistencia de pull-up
externa porque para su funcionamiento se usa la interna que posee el
microcontrolador.
90
Figura 28. Conector DB9.
La max 232 en configuración estandar ordena los niveles del estandar 232 que
utiliza el computador. Se conecta a través de un conector DB9 hembra de forma
directa como el de la figura 28.
Figura 29. Max 232.
La comunicación con los sensores a través del RS485 (comunicación Hallduplex)
(figura 29), utiliza la misma configuración de conector, lo único que cambia en esta
conexión es que tiene un Jumper (pinhead) para activar o desactivar la resistencia
de fin de línea.
5.2.8. Programa microcontrolador maestro
El programa del microcontrolador para recoger los datos de los sensores y
controlar las variables se visualizar en el ANEXO L.
91
Figura 30. Diagrama de flujo de la programación del microcontrolador maestro.
92
5.3. Diseño y programación de la interfaz Ya para este punto y teniendo la mayoría del sistema implementado podría decirse
que se ha establecido la comunicación satisfactoriamente con el computador, a
continuación se explica la interfaz entre el circuito y el computador, un lenguaje en
el cual se puedan visualizar los datos en el PC, esta herramienta la complementa
Visual Basic, un programa que está implementado para recibir todas las variables
de la tarjeta de adquisición de datos, muestre las variables de control que se están
trabajando y además tenga una conexión con MySQL.
Para revisar el programa consultar el ANEXO M. El programa se realiza la
siguiente función:
Como primera medida se escoge el puerto de comunicación a trabajar y se
determina el muestreo de cada una de las variables que se trabajan, luego se
activa la interfaz de comunicación entre la base de datos y Visual Basic, ya con
esto determinado se empieza a trabajar por eventos, el primero sería cargar la
aplicación, segundo carga el index de selección del puerto y lo pone de primero.
Se trabaja con el puerto serial, se configura y se visualizan las activaciones y
desactivaciones del mismo, la configuración estandar del puerto es 9600/N/8/1 con
1024 en la entrada del buffer y 512 en la salida.
Para enviar la temperatura y el PH lo que hace es incrementar el contador de
segundos, este compara con el valor de muestreo, cuando estos dos valores son
iguales envía el dato, se abre el puerto, entra, si el puerto esta cerrado lo abre,
revisa cual es el puerto seleccionado y lo abre, confirma si está abierto, se activa
el timer de segundos. Cuando se trata de abrir un puerto que no existe genera el
93
número de error, si el puerto esta abierto y revisa si lo cerro, se habilita el timer de
segundos.
Cuando se ingresan los datos este revisa si es un número decimal, almacena el
tipo de dato, dependiendo si es double o integrer y guarda los datos en una
cadena temporal, verifica si los campos de temperatura PH y tiempo están vacíos.
Se activa el buffer para transmitir los datos, se hacen las sumatorias para guardar
los datos, se agregan los caracteres de inicio, los caracteres de fin, se indica la
posición de escritura y se agrega la información de las variables, se verifican los
valores que estos no sean nulos, se incrementa el contador donde se va a escribir
el próximo dato a leer.
Ya con estos datos se procede a establecer los rangos de trabajo de las variables,
para la temperatura y para la humedad. Se establecen los valores máximos y
mínimos de las dos variables y ya con esto se define cuales de los sistemas se
activan. Los sistemas que se manejan son un ventilador, un extractor de aire,
calefacción por medio de un bombillo alógeno y el sistema de riego por goteo.
Se agrega al buffer el indicador del parámetro que se envía, se incrementa el
contador donde se escribirá el siguiente dato del buffer, se incrementa el contador
que indica la posición donde se escribirá el siguiente dato del buffer, se agrega el
comando guardar los datos y se envía el buffer al puerto serial y envía los datos
para activación.
Luego se procede a guardar los datos que se van a transmitir agregando el
carácter de inicio a la trama del buffer, se agrega el comando de lectura, se
agrega el fin de la trama y se envían los datos por el puerto serial.
94
Cuando se ha cumplido el tiempo de un segundo del timer, el buffer guarda los
datos a ser transmitidos, luego incrementa el contador de segundos, verifica si el
contador de segundos es igual al muestreo de ser así hace la petición de datos al
micro, pone en cero el contador de segundos, agrega el carácter de inicio de
trama al buffer en 0, agrega el comando de lectura de datos, genera el carácter de
fin de trama y finalmente se envía el buffer al puerto serial para enviar los datos.
En el momento que existe un evento en el puerto serial el byte que se recibe en la
conversión llega al puerto, recibe el dato, se guardan los datos recibidos y se
verifica si se esta recibiendo un byte, se apaga el timer de recepción y empieza de
nuevo el conteo, se guarda el dato en el buffer de recepción y se queda recibiendo
datos en el buffer mientras existan datos en el buffer y luego se enciendo de
nuevo el timer para esperar el siguiente byte.
Para poner datos en el buffer de recepción se verifica que el número de datos no
sea el límite del buffer, se incremente en 1 el contador de datos, se escribe el dato
en la siguiente posición libre del buffer, se incrementa el valor de la siguiente
posición vacía y se verifica que el indicador de la siguiente posición libre no sea
mayor al tamaño del buffer, en caso contrario se pone un 0.
Para lectura en el buffer entonces como primera medida se verifica si se pudo leer
el dato, se inicializa la variable de respuesta para indicar que no ha leído datos, se
verifica que existan datos en el buffer, se decrementa el contador de datos del
buffer, se lee el dato en la siguiente posición de lectura, se verifica el indicador de
siguiente posición y se asigna la respuesta indicando la lectura del dato.
Para finalizar se verifican los datos, se actualizan las posiciones se asegura que
se estén activando los sistemas adecuadamente, verifica si se activan y que todos
los registros hayan tenido todo el proceso correspondiente.
95
Este código genera un resultado de este tipo para visualización del usuario:
Figura 31. Plataforma Visual Basic (Interfaz entre la tarjeta maestra y el PC).
Para finalizar con esta etapa se debe explicar la conexión de Visual Basic con la
Base de datos, esto se logra con un programa llamado ODBC que envía una
petición de datos al micro según el tiempo de muestreo, lo que recibe lo guarda
directamente a la base de datos, actúa como una interfaz entre estos dos
programas, se configura con respecto a la base de datos y este genera
inmediatamente un mensaje de aprobación de la conexión.
96
Figura 32. Conexión exitosa de MyODBC.
5.4 Diseño y programación de la Web En esta etapa del proyecto se diseña, implementa y construye la base de datos del
sistema y las páginas Web que van a ser visualizadas en Internet.
Existe una plataforma bastante útil que integra MySQL, apache y PHP, es un
servidor local que se llama WM Server Versión 3.3, esta plataforma de trabajo
97
ayuda a que todo el sistema montado pueda ser probado solo configurando sus
condiciones iniciales.
Como primera medida en esta etapa se procede al diseño e implementación de la
base de datos en MySQL. La figura 33 muestra la base de datos implementada.
La base de datos se llama supervisión, Tiene 6 tablas: Anual, Datos, Día, Hora,
Mensual y Semanal. Las tablas se muestran en las figuras 33 y 34.
Figura 33. Base de datos (Supervisión).
Los valores de cada uno de los campos están designados según el dato que vaya
a almacenarse, en los campos de temperatura y la humedad se indexan datos
decimales por lo que se define que es tipo “decimal”, para la activación de riego
que es un número entero se le asigna que este campo es tipo “int”, la fecha es tipo
“date” y la hora tipo “time”, todos son valores no nulos, lo que significa que nunca
uno de sus campos puede estar vacío.
98
Figura 34. Tablas que componen la base de datos (1).
Para casos como hay en la tabla de mes y año en donde existen campos que
dicen cual fue el mes de la consulta y para el caso del año identifica el año de la
consulta, este campo esta denominado de tipo varchar (10), lo que quiere decir
99
que los datos que ingresan aquí son letras y los caracteres permitidos son de un
máximo de 10.
Figura 35. Tablas que componen la base de datos (2).
Ya con la base de datos lista se procede a realizar las páginas en PHP para la
visualización de la base de datos y la parte gráfica de la misma.
100
5.4.1 Diseño de las páginas Web Para poder obtener conexión entre la base de datos y PHP se tiene que ejecutar un programa llamado “librería.php”. <? function Conexion() { /*mysqli_connect requiere 4 parámetros: 1ero. Nombre del Servidor 2do. Nombre del usuario de Mysql 3ro. Password del usuario de Mysql 4to. Nombre de la base de datos de Mysql */ $conectID = mysql_connect("localhost", "root", ""); /* check connection */ if (!$conectID) { printf("Error al conectar con la BD: %s\n", mysql_connect_error()); exit(); } else {$db=mysql_select_db("supervision",$conectID);} return $db; } //Cierra la conexión abierta por Marcela(); function CConexion() { $connect = Conexion(); mysql_close ($connect); } ?>
El funcionamiento del anterior Script sería de la siguiente manera: Como primera medida se realiza la conexión y se abre la base de datos con la sentencia “function Conexion()”. Se necesita tener la conexión con el servidor local, y por lo tanto que revise si se tiene la conexión y si no existe que genere un error y que lo anuncie esto se realiza con la “sentencia mysql_connect”. Luego de tener el servidor local conectado se procede por seleccionar la base de datos con la cual se quiere trabajar, en este caso supervisión. Para finalizar la consulta, se genera la sentencia final que hace que la conexión pueda ser cerrada.
101
Ahora se va a realizar la consulta que va a mostrar los resultados enviados por el micro de las variables trabajadas. <? include('Libreria.php'); //Abre la conexión a la BD $conexion=Conexion(); $query=mysql_query("Select item, temperatura, humedad, activacion_riego, fecha, hora from datos"); while($row = mysql_fetch_array($query, MYSQL_ASSOC)) { $c1=$row["item"]; $c2=$row["temperatura"]; $c3=$row["humedad"]; $c4=$row["activacion_riego"]; $c5=$row["fecha"]; $c6=$row["hora"]; echo"<p><b><u>INVERNADERO DATOS</u></b> </p><p>Fecha: $c5 </p><p>Hora: $c6 </p><p>Temperatura: $c2 ºC </p><p>Humedad: $c3 % </p><p>Activación de Riego: $c4 Veces"; } ?> Se llama a la librería y esta a su vez llama el archivo PHP con la función de conexión, logra que se visualicen las variables de la base de datos en la página, luego de llamar ese código se procede a seleccionar la tabla que se va a visualizar con cada uno de los campos que contiene con la sentencia “mysql_query”, se ejecuta una sentencia que hace que recorra el array con los resultados de la consulta, lo que hace es un tipo de chequeo en la base de datos para verificar los resultados que tiene que mostrar en PHP. Luego de esto se le asigna a cada variable un valor que será su identificación a la hora de imprimir los datos con la sentencia $row. Para finalizar se muestran los resultados de la consulta con la función echo, esto es lo que se visualizará en la página, los datos que se encuentran en la base de
102
datos y su significado o todas las cosas que se quieren mostrar en la página, todo el entorno gráfico es plasmado en este sitio. Para el llenar las otras tablas de la base de datos se ingresará todo desde PHP. <? include('Libreria.php'); $conexion=Conexion(); $query=mysql_query("Select item, temperatura, humedad, activacion_riego, fecha, hora from datos order by fecha, hora DESC"); //Recorre el array con los resultados de la consulta while($row = mysql_fetch_array($query, MYSQL_ASSOC)) { $c1=$row["item"]; $c2=$c2+$row["temperatura"]; $c3=$c3+$row["humedad"]; $c4=$c4+$row["activacion_riego"]; $c5=$row["fecha"]; $c6=$row["hora"]; $count=$count+1; if($count == 4) { $c2=$c2/4; echo "Temperatura: $c2"; $c3=$c3/4; echo "Humedad: $c3"; echo "Activación de Riego: $c4 veces"; mysql_query("INSERT INTO dato (hora) VALUES('$c3' ) ") or die(mysql_error()); mysql_query("INSERT INTO dato (hora) VALUES('$c2' ) ") or die(mysql_error()); mysql_query("INSERT INTO dato (hora) VALUES('$c4' ) ") or die(mysql_error()); echo "Data Inserted!";
103
} } ?> Para el ingreso de los datos a la tabla hora se llama igual a la librería para hacer la conexión, se recorre el array como en el programa anterior, se llaman a cada una de las variables de la tabla pero en este Query se agrega una sentencia, que los datos sean organizados por fecha y hora. Luego para asignar las variables del valor de cada una de las columnas se hacen las operaciones correspondientes para que los resultados indexados a la base de datos sean los de la hora. Como las variables que se van a consultar son Temperatura, Humedad y Activación de riego en cuando se asignan los valores a las variables en estos valores se agrega una operación que irá sumando cada uno de los valores correspondientes, cuando se termina de asignar los valores se ejecuta un “if” que hace que esta sumatoria se detenga cuando los valores leídos sean igual a 4, entonces, ya tomados los 4 datos arrojados por el micro cada 15 minutos se suman y para realizar el promedio de la hora para la Temperatura y la Humedad se toman cada uno de los valores asignados y se dividen en 4, para la variable de activación de riego la sumatoria muestra las veces que se tuvo q activar el riego en el transcurso de esa hora. Para ingresar los datos a cada una de las tablas de la base de datos se trabaja con la sentencia “insert”, luego de realizadas las operaciones en PHP para realizar el promedio se encarga de insertar los resultados.
5.4.2. Visualización de resultados en Internet
Así se visualiza la página en Internet con los resultados del banco de prueba:
104
Figura 36. Visualización resultados del banco de prueba.
La figura 36 muestra un pantallaza de la primera página que se mostrará en el
invernadero inmediatamente se entre a la página, al hacer clic en el hipervínculo
“Entrar” va a abrirse un “Popup” en todo el centro de la pantalla, en el están
contenidos los datos de la temperatura, humedad y activación de riego, también se
tiene una visualización del banco de prueba actualizando cada 15 segundos. El
programa utilizado para generar la visualización por cámara se llama Fwink, este
se configura con el servidor y empieza a capturar video.
Los entornos gráficos de las páginas fueron trabajados en Macromedia
Dreamweaver y Fireworks, dos programas especializados para el diseño dinámico
de páginas Web.
105
Figura 37. Visualización resultados del banco de prueba.
Los históricos de Hora, Día, Semana, Mes y Año se visualizan de la misma
manera que los datos inmediatamente se entra a la página, con promedios
dependiendo de la opción que se escoja. La figura 37 muestra como es la
visualización de los datos en Internet con el video del invernadero en tiempo real.
5.4.3. Mensaje de texto SMS Este sistema se activa si el invernadero se presenta un problema que ninguna de
los controladores pueda regular, este mensaje dirá cual es la variable que ha sido
afectada.
106
La configuración de este sistema se lleva a cabo gracias a la tecnología SMS
aplicada en la empresa Comcel S.A. ya que con solo abrir una cuenta de correo
en su página y configurar un correo externo a los de esta empresa se puede lograr
que se envíe el mensaje sin ningún tipo de inconveniente, además de un código
en Javascript que después de realizar todo el proceso ya explicado en el proyecto
y descubrir algún tipo de error hace que se ejecute esta sentencia:
<?
$mensaje=$_POST["message"];
$correo=$_POST["email"];
$destinatario="marpoke82@hotmail.com";
$motivo="comentario desde archivosmicroopticos.com";
mail("$destinatario",$motivo, $mensaje,"FROM: $correo\nX-Mailer: PHP");
?>
5.1. Construcción del banco de prueba
107
Figura 38. Invernadero.
Para la construcción del invernadero mostrado en la figura 38 se siguieron los
siguientes pasos. Como primera medida es buscar un soporte para las plantas, se
utiliza un cajón hecho en madera cedro blanco de 1x 60 cm. de largo, este cajón
es impermeabilizado con emulsión asfáltica para evitar que la madera sea
carcomida por comejenes, gorgojos, orugas ó termitas, luego se hacen las bases
que sostendrán el plástico que protege las flores, se cogen 6 barras de la misma
madera del cajón, cuatro de 60 cm. para las 4 esquinas y dos de 1 MT para el
centro de los lados largos, se aseguran al cajón con tornillos de 2” y 1.5’’, y otros 3
palos de 60 cm. que van de extremo a extremo de los estos para asegurar el
plástico y los tornillos. En la figura 39 se puede observar los avances del
invernadero hasta el punto ya descrito.
108
Figura 39. Invernadero en construcción.
Con esto asegurado, se procede al acondicionamiento de la planta, se utilizan 3
bultos de arena mezclados con cascarilla y humus, se esparce bien en el cajón y a
continuación se introducen las rosas.
Se siembran 6 plantas, son pocas porque ellas en espacios pequeños y si están
muy cerca la una de la otra empezarán a pelear por comida, ocasionando que se
mueran.
Las rosas mini, requieren mucha atención, por esto son llevadas con cuidado del
vivero al banco de prueba, sacándolas de las materas con cuidado, sus raíces
están aprisionadas por el reducido espacio, se necesita que las raíces se acoplen
bien al invernadero pero sin forzar la planta, se abren unos pequeños huecos
según el espesor de las raíces, y se introducen ahí, se cubren con tierra e
inmediatamente se incorpora el riego por goteo. Las piezas del riego por goteo se
muestran en la figura 40.
109
Figura 40. Manguera, racores y electroválvula para implementación del riego.
Figura 41. Sistema de ventilación, extracción y calefacción del invernadero.
Se incorpora una manguera de poliuretano de 6mm, se le abren huecos cada 8
centímetros con una pequeña aguja, la manguera se incorpora a lo largo y en el
centro del invernadero, una en cada hilera donde van las plantas, no muy lejos de
las raíces de las mismas, siempre hay que evitar que caiga agua sobre las hojas y
las flores de las plantas, se puede hacer que a las plantas les salgan animales y la
dañen, los tubos se aseguran con tornillos para madera. El riego goteando con
poca presión para adaptar las condiciones de la planta. El tubo va a una T de 6mm
es para que los dos lados del tubo puedan suministrar agua a todas las plantas del
banco de prueba, luego la otra extensión del tubo va a la Electro-Válvula que
110
controlará la activación del riego y la otra extensión a un racor espina de pescado
que se adapta a la llave del acueducto.
Para incorporar el plástico se toman las medidas y se corta, se aseguran a los
soportes al mismo cajón para evitar que las condiciones atmosféricas dañen las
plantas.
Uno de los frentes del invernadero no es asegurado, ayudará a que se pueda
manipular la planta por ejemplo para cortar las hojas secas, supervisar el
funcionamiento del riego por goteo, (figura 42) o cualquier percance que se pueda
presentar.
Figura 42. Instalación del riego por goteo.
Para finalizar, se adecuan los sistemas de control y supervisión, ventiladores a los
dos lados de los frentes cortos, uno como ventilador, el otro como extractor, el
111
bombillo de luz alógena que va a hacer la función de calentador. Los sistemas
implementados se muestran en la figura 41. Los circuitos van fuera del
invernadero, pero cada uno de los sensores se acomodan según las
características del mismo, los 4 sensores de temperatura van a estar distribuidos
cada 25 cm. uno del otro, es para la medida de temperatura, con cada uno de los
datos tomados se hace un promedio y con esto se tiene la temperatura total. El
sensor de humedad solo se utiliza uno, esta condición será la misma en todo el
invernadero, éste ira en el centro del mismo. El riego es controlado según las
condiciones de la temperatura y la humedad al igual que el ventilador y el
extractor. La cámara se incorpora en una de las esquinas en donde tenga una
vista completa de las rosas. Y todo conectado a un computador con acceso a
Internet. El invernadero finalizado con todas los sistemas de control incorporados
se muestran en la figura 43.
Figura 43. Invernadero finalizado.
112
6. CONCLUSIONES
• Los microcontroladores están en auge, son una excelente opción a la hora
de hacer diseños académicos e industriales. El programador puede resolver
aplicaciones de complejidad media y grande. La potencia, velocidad y bajo
costo de estos dispositivos pone a disposición de los diseñadores los
dispositivos ideales para resolver proyectos de microelectrónica
programada.
• Tanto el almacenamiento como la consulta de los registros en la base de
datos es eficiente, además que MySQL es una herramienta muy sencilla de
utilizar, sobretodo en esta aplicación ya que el servidor local WM Server
tiene una excelente conectividad entre PHP y la base de datos, los
resultados de consulta se generan rápido, la inserción de los datos desde
PHP o algún programa de adquisición de datos es eficaz y su facilidad de
manejo lo convierte en parte importante en el sistema.
• El desarrollo de la interfaz con Visual Basic es bastante sencillo, ya que da
muchas facilidades a la hora de implementar los códigos fuente de las
aplicaciones, su compatibilidad con el puerto serial y el buffer permite una
comunicación ideal a la hora de transmitir, recibir y hasta almacenar datos.
• El tiempo de respuesta del sensor de temperatura hace que la captura de
los datos sea más efectiva, su tiempo de respuesta es bastante corto lo que
hace que el objetivo se cumpla en un tiempo bastante alentador, los
sensores digitales resultan una gran opción para la implementación de
circuitos que necesiten respuestas de trabajo ideales para las necesidades
de los usuarios.
113
• Aunque el sensor de humedad sea análogo su respuesta de trabajo es muy
buena, además, el microcontrolador hace mas sencilla la operación de este
dispositivo pues sus características permiten trabajar con este tipo de
sensores y adaptarlos perfectamente a las exigencias del sistema.
114
7. RECOMENDACIONES
• Para programar los dispositivos se debe tener en cuenta el diseño y las
pruebas del mismo programa, es recomendable realizarlas a través de
diagramas de flujo, maquinas de estado, diagrama de clases, pero es
importante implementar pruebas en papel o simuladores antes de involucrar
directamente el dispositivo ya que con esto se puede ahorrar tiempo y no se
exponen elementos del hardware.
• Para determinar los parámetros en el caso la temperatura y la humedad es
necesario permitir además de la visualización de los datos el análisis de los
mismos mediante software en un PC, esto con el fin de permitir la
automatización como parte del proceso de análisis de las pruebas.
• Mejorar la comunicación entre el equipo y el PC, con el fin de disminuir el
tiempo requerido para la transferencia de los datos. Como posible solución
se puede utilizar el sistema de comunicación USB (Universal Serial Bus), el
cual está presente en la mayor parte de los PC que se consiguen en la
actualidad.
• Para la implementación del proyecto en las empresas es preciso obtener
las licencias de Visual Basic, CodeWarrior y el paquete Macromedia
(Dreamweaver, Flash y Fireworks).
• Para mejorar este proyecto se podría investigar otro tipo de variables que
afecten o beneficien los cultivos y así manipularlas e implementarlas en
futuras pruebas de diseño.
115
8. BIBLIOGRAFÍA
• CABELLO TORRALBO Antonio. CABRERA GARCÍA Rafael.
Consideraciones Sobre la Fertilización Nitrogenada en los Cultivos
Hortícolas de Invernadero. España. Junta de Andalucía. 2003. 98 p.
• CERNA Polo, ALEJANDRINA Dora. Eficiencia y Productividad del Cultivo
de Flores (Claveles) en el Callejón de Huaylas. España. 2002. 126 p.
• ANGULO USASTEGUI José M, ROMERO YESA Susana. Microcontroladores Pic
Diseño Práctico y Aplicaciones. España. 2002. 266 p.
• CREUS Antonio. Instrumentación Industrial. Barcelona. Marcombo. 1979.
350 p.
116
WEBLIOGRAFÍA
Infoagro http://www.infoagro.com: Empresa especializada en información, soporte y venta
de implementos para la agricultura. Se utilizó para la consulta del marco teórico.
Consultada Marzo 5.
Comisión de Regulación de Telecomunicaciones – República de Colombia http://www.crt.gov.co/: Normatividad y regulación del uso de las telecomunicaciones en el territorio nacional. Se utilizó para buscar parte del marco legal y normativo de este proyecto. Consultada Febrero 8.
Wikipedia, Enciclopedia de Uso libre versión en español. http://es.wikipedia.org/wiki/Portada: Buscador Web de reconocimiento mundial. Se utilizó para buscar las palabras del glosario. Consultada Mayo 18.
Monografías http://www.monografias.com: Portal Web centro de tesis, documentos,
publicaciones y recursos educativos. Se utilizó para buscar parte del marco
teórico. Febrero 15.
Infojardín http://www.infojardin.com: Página Web especializada en información sobre
jardinería. Se utilizó para parte del marco teórico. Marzo 6.
117
Nacional Semiconductors http://www.national.com: Empresa encargada de la distribución y diseño de
Dispositivos electrónicos. Se utilizó para consulta de datasheets y diseño de las
tarjetas.
Freescale Semiconductor http://www.freescale.com: Distribución y diseño de dispositivos electrónicos de alta
tecnología, software y documentación. Se utilizó para consulta de los datasheets
de los microcontroladores y para información y descarga del software de
programación de los microcontroladores (CodeWarrior).
WM Creation http://www.wmcreation.it/: Herramientas para diseño e implementación de
aplicaciones Web. Se utilizó para descarga y consulta de la plataforma del servidor
local (WM Server).
Microsoft http://www.microsoft.com/latam/vbasic/: Implementación de software. Se utilizó
para consulta sobre el programa de interfaz (Visual Basic).
118
ANEXOS ANEXO A
119
120
121
122
123
ANEXO B
124
125
ANEXO C
126
127
ANEXO D
128
129
130
131
132
ANEXO E
133
134
135
ANEXO F
136
137
138
ANEXO G
139
140
141
142
ANEXO H
143
144
ANEXO I
145
146
147
148
ANEXO J /* MODULE Events */ #pragma MESSAGE DISABLE C1420 /* WARNING C1420: Result of function-call is ignored */ #include "Cpu.h" #include "Events.h" extern unsigned char RxBitCont; extern unsigned char TxBitCont; extern unsigned char RxData; extern unsigned char TxData; extern unsigned char TxBuff[10]; extern unsigned char WritePtTx; extern unsigned char ReadPtTx; extern unsigned char ContTx; extern unsigned char RxBuff[10]; extern unsigned char WritePtRx; extern unsigned char ReadPtRx; extern unsigned char ContRx; /* ** ============================================ ** Event : DataInput_OnInterrupt (module Events) ** ** From bean : DataInput [ExtInt] ** Description : ** This event is called when an active signal edge/level has ** occurred. ** Parameters : None ** Returns : Nothing ** ============================================ */ void DataInput_OnInterrupt(void) { /* place your DataInput interrupt procedure body here */ unsigned char TempL; unsigned char TempH; unsigned int Time; TempL = TCNTL; TempH = TCNTH; Time = TempL + (TempH * 256); Time += 150; Time %= 332; TCH0H = (Time >> 8) & 0xFF; TCH0L = Time & 0xFF; RxBitCont = 0; RxData = 0; TSC0; TSC0_CH0F = 0; TSC0_CH0IE = 1;
149
DataInput_Disable(); } void OnRxBit(void) { if(RxBitCont == 0) { if(DataInput_GetVal() != 0) { TSC0_CH0IE = 0; DataInput_Enable(); } else { RxBitCont++; } } else { RxData >>= 1; RxData &= 0x7F; if(DataInput_GetVal()) { RxData |= 0x80; } RxBitCont++; if(RxBitCont == 9) { TSC0_CH0IE = 0; DataInput_Enable(); if(ContRx < 10) { RxBuff[WritePtRx] = RxData; WritePtRx++; WritePtRx %= 10; ContRx++; } } } } void OnTxBit(void) { if(TxBitCont == 0) { DataOutput_ClrVal(); TxBitCont++; } else { if(TxBitCont < 9)
150
{ if(TxData & 0x01) { DataOutput_SetVal(); } else { DataOutput_ClrVal(); } TxBitCont++; } else { if(TxBitCont == 9) { DataOutput_SetVal(); TxBitCont++; } else { if(ContTx != 0) { TxData = TxBuff[ReadPtTx]; ReadPtTx++; ReadPtTx %= 10; ContTx--; TxBitCont = 0; } else { TSC_TOIE = 0; DIR_ClrVal(); } } } } } /* END Events */ /*
151
ANEXO K /* MODULE Sensor_Temperatura_DS1820 */ /* Including used modules for compiling procedure */ #include "Cpu.h" #include "Events.h" #include "Sensor.h" #include "DIR.h" #include "DataOutput.h" #include "DataInput.h" #include "BitTime.h" /* Include shared modules, which are used for whole project */ #include "PE_Types.h" #include "PE_Error.h" #include "PE_Const.h" #include "IO_Map.h" #define SENSOR 0x01 typedef struct SCRATCHPAD { signed int Temperatura; unsigned char Th; unsigned char Tl; unsigned int Reservado; unsigned char CountRemaint; unsigned char CountPerC; unsigned char CRC; }; unsigned char Reset(void); void Write1(void); void Write0(void); unsigned char ReadBit(void); void WriteByte(unsigned char Dato); unsigned char ReadByte(void); unsigned char SendChar(unsigned char Dato); unsigned char ReciveChar(unsigned char * Dato); struct SCRATCHPAD Data; unsigned char * Pt; unsigned char Cont; unsigned char TxBuff[10]; unsigned char WritePtTx = 0; unsigned char ReadPtTx = 0; unsigned char ContTx = 0; unsigned char RxBuff[10]; unsigned char WritePtRx = 0; unsigned char ReadPtRx = 0; unsigned char ContRx = 0; unsigned char RxBitCont = 0;
152
unsigned char TxBitCont = 0; unsigned char RxData = 0; unsigned char TxData = 0; unsigned char Temp = 0; signed int Temperatura; void main(void) { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ /* Write your code here */ /* For example: for(;;) { } */ TSC0_CH0IE = 0; for(;;) { if(Reset()) { WriteByte(0xCC); WriteByte(0x44); for(Cont = 0; Cont < 100; Cont++) { Cpu_Delay100US(100); if(ContRx != 0) { if(ReciveChar(&Temp)) { if(Temp == SENSOR) { SendChar(Temperatura & 0xFF); SendChar((Temperatura >> 8) & 0xFF); } } } } if(Reset()) { WriteByte(0xCC); WriteByte(0xBE); Pt = (unsigned char *) &Data; for(Cont = 0; Cont < 8; Cont++) { Pt[Cont] = ReadByte(); } Temperatura = Data.Temperatura; } }
153
} /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/ unsigned char Reset(void) { EnterCritical(); Sensor_SetDir(TRUE); Sensor_ClrVal(); Cpu_Delay100US(6); Sensor_SetDir(FALSE); Cpu_Delay100US(1); if(Sensor_GetVal() == FALSE) { ExitCritical(); return TRUE; } ExitCritical(); return FALSE; } void Write1(void) { EnterCritical(); Sensor_SetDir(TRUE); Sensor_ClrVal(); asm { NOP NOP NOP NOP NOP } Sensor_SetDir(FALSE); ExitCritical(); Cpu_Delay100US(1); } void Write0(void) { EnterCritical(); Sensor_SetDir(TRUE); Sensor_ClrVal(); Cpu_Delay100US(1); Sensor_SetDir(FALSE); ExitCritical(); Cpu_Delay100US(1);
154
} unsigned char ReadBit(void) { unsigned char res; EnterCritical(); Sensor_SetDir(TRUE); Sensor_ClrVal(); asm { NOP NOP NOP NOP NOP } Sensor_SetDir(FALSE); asm { NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP } res = Sensor_GetVal();
155
ExitCritical(); Cpu_Delay100US(1); return res; } void WriteByte(unsigned char Dato) { unsigned char cont; for(cont = 0; cont < 8; cont++) { if((Dato & 0x01) == 0x01) { Write1(); } else { Write0(); } Dato >>= 1; } } unsigned char ReadByte(void) { unsigned char res = 0; unsigned char cont; for( cont = 0; cont < 8 ; cont++) { res <<= 1; res &= 0xFE; if(ReadBit() == TRUE) { res |= 0x01; } } return res; } unsigned char SendChar(unsigned char Dato) { if(ContTx < 10) { if(TSC_TOIE == 0) { TxBitCont = 0; TxData = Dato; DIR_SetVal(); TSC; TSC_TOF = 0; TSC_TOIE = 1; }
156
else { TxBuff[WritePtTx] = Dato; WritePtTx++; WritePtTx %= 10; ContTx++; } return TRUE; } return FALSE; } unsigned char ReciveChar(unsigned char * Dato) { if(ContRx > 0) { *Dato = RxBuff[ReadPtRx]; ReadPtRx++; ReadPtRx %= 10; ContRx--; return TRUE; } return FALSE; } /* END Sensor_Temperatura_DS1820 */ /*
157
ANEXO L /* MODULE Control_Temperatura */ /* Including used modules for compiling procedure */ #include "Cpu.h" #include "Events.h" #include "PC.h" #include "Sensores.h" #include "DIR.h" #include "Riego.h" #include "Ventilacion.h" #include "Calefaccion.h" #include "LedRojo.h" #include "LedVerde.h" #include "Milisegundo.h" #include "Alarma.h" /* Include shared modules, which are used for whole project */ #include "PE_Types.h" #include "PE_Error.h" #include "PE_Const.h" #include "IO_Map.h" #include "FLASH Program.h" #define EEPROM 0xC000 void LeerParametrosEEPROM(unsigned char * Data,unsigned char Size); void EscribirParametrosEEPROM(unsigned char * Data,unsigned char Size); void EnviaParametros(void); void EnviaInformacion(void); unsigned int Temperatura = 0; unsigned int Humedad = 0; unsigned int Sensores[5] = {0,0,0,0,0}; unsigned int Contador = 0; unsigned int TimerVentilacion = 5; unsigned int TimerCalefaccion = 5; unsigned int TimeSleep = 0xFFFF; unsigned int TimeOutSensor = 0xFFFF; unsigned int TemperaturaRiego = 0; unsigned int TemperaturaVentilacion = 0; unsigned int TemperaturaCalefaccion = 0; unsigned int HumedadRiego = 0; unsigned int HumedadVentilacion = 0; unsigned int HumedadCalefaccion = 0; unsigned int TimeOnRiego = 0; unsigned int TimeOnVentilacion = 0; unsigned int TimeOnCalefaccion = 0; unsigned int TimeOffRiego = 0; unsigned int TimeOffVentilacion = 0; unsigned int TimeOffCalefaccion = 0;
158
unsigned char MayorMenor = 0; unsigned char Banderas = 0; unsigned char Activados = 0; unsigned char Leidos[5] = {0,0,0,0,0}; unsigned char Buffer[100]; unsigned int ContBuff = 0; unsigned char Sensor = 0; unsigned char Pos = 0; unsigned char Paquete[100]; unsigned int ContPaqu = 0; unsigned char * Pointer; void main(void) { PE_low_level_init(); { if(TimerRiego == 0) { if(MayorMenor & 0x01) { if(Temperatura > TemperaturaRiego) { if((Activados & 0x01) == 0) { Activados |= 1; TimerRiego = TimeOnRiego; Riego_SetVal(); } } else { if(Activados & 0x01) { Activados &= 0xFE; TimerRiego = TimeOffRiego; Riego_ClrVal(); } } } else { if(Temperatura <= TemperaturaRiego) { if((Activados & 0x01) == 0) { Activados |= 1; TimerRiego = TimeOnRiego; Riego_SetVal(); }
159
} else { if(Activados & 0x01) { Activados &= 0xFE; TimerRiego = TimeOffRiego; Riego_ClrVal(); } } } } if(TimerRiego == 0) { if(MayorMenor & 0x02) { if(Humedad > HumedadRiego) { if((Activados & 0x01) == 0) { Activados |= 1; TimerRiego = TimeOnRiego; Riego_SetVal(); } } else { if(Activados & 0x01) { Activados &= 0xFE; TimerRiego = TimeOffRiego; Riego_ClrVal(); } } } else { if(Humedad <= HumedadRiego) { if((Activados & 0x01) == 0) { Activados |= 1; TimerRiego = TimeOnRiego; Riego_SetVal(); } } else { if(Activados & 0x01) { Activados &= 0xFE;
160
TimerRiego = TimeOffRiego; Riego_ClrVal(); } } } } if(TimerVentilacion == 0) { if(MayorMenor & 0x04) { if(Temperatura > TemperaturaVentilacion) { if((Activados & 0x02) == 0) { Activados |= 2; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x02) { Activados &= 0xFD; TimerVentilacion = TimeOffVentilacion; Ventilacion_ClrVal(); } } } else { if(Temperatura <= TemperaturaVentilacion) { if((Activados & 0x02) == 0) { Activados |= 2; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x02) { Activados &= 0xFD; TimerVentilacion = TimeOffVentilacion; Ventilacion_ClrVal(); } } } }
161
if(TimerVentilacion == 0) { if(MayorMenor & 0x08) { if(Humedad > HumedadVentilacion) { if((Activados & 0x02) == 0) { Activados |= 2; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x02) { Activados &= 0xFD; TimerVentilacion = TimeOffVentilacion; Ventilacion_ClrVal(); } } } else { if(Humedad <= HumedadVentilacion) { if((Activados & 0x02) == 0) { Activados |= 2; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x02) { Activados &= 0xFD; TimerVentilacion = TimeOffVentilacion; Ventilacion_ClrVal(); } } } } if(TimerCalefaccion == 0) { if(MayorMenor & 0x10) { if(Temperatura > TemperaturaCalefaccion) {
162
if((Activados & 0x04) == 0) { Activados |= 4; TimerCalefaccion = TimeOnCalefaccion; Calefaccion_SetVal(); } } else { if(Activados & 0x04) { Activados &= 0xFB; TimerCalefaccion = TimeOffCalefaccion; Calefaccion_ClrVal(); } } } else { if(Temperatura <= TemperaturaCalefaccion) { if((Activados & 0x04) == 0) { Activados |= 4; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x04) { Activados &= 0xFB; TimerCalefaccion = TimeOffCalefaccion; Calefaccion_ClrVal(); } } } } if(TimerCalefaccion == 0) { if(MayorMenor & 0x20) { if(Humedad > HumedadCalefaccion) { if((Activados & 0x04) == 0) { Activados |= 4; TimerCalefaccion = TimeOnCalefaccion; Calefaccion_SetVal(); }
163
} else { if(Activados & 0x04) { Activados &= 0xFB; TimerCalefaccion = TimeOffCalefaccion; Calefaccion_ClrVal(); } } } else { if(Humedad <= HumedadCalefaccion) { if((Activados & 0x04) == 0) { Activados |= 4; TimerVentilacion = TimeOnVentilacion; Ventilacion_SetVal(); } } else { if(Activados & 0x04) { Activados &= 0xFB; TimerCalefaccion = TimeOffCalefaccion; Calefaccion_ClrVal(); } } } } if(Banderas & READ_SENSORES) { Banderas &= ~READ_SENSORES; Banderas &= ~SENSOR_TIMEOUT; Banderas &= ~ON_RX_SENSOR; Sensores_ClearRxBuf(); Sensor = 0; DIR_SetVal(); Sensores_SendChar(Sensor + 1); TimeOutSensor = 500; } if(Banderas & ON_RX_SENSOR) { TimeOutSensor = 0xFFFF; Banderas &= ~ON_RX_SENSOR; Banderas &= ~SENSOR_TIMEOUT; Sensores_RecvBlock(Buffer,2,&ContBuff); Sensores_ClearRxBuf();
164
Sensores[Sensor] = 0; if(ContBuff == 2) { Sensores[Sensor] = (unsigned int) Buffer[0]; Sensores[Sensor] += (unsigned int) (Buffer[1] * 256); Leidos[Sensor] = 1; } else { Leidos[Sensor] = 0; } Sensor++; if(Sensor < 5) { DIR_SetVal(); Sensores_SendChar(Sensor + 1); TimeOutSensor = 500; } else { if(Leidos[4]) { Humedad = Sensores[4]; } else { if(Leidos[4]) { Humedad = Sensores[4]; } else { Humedad = 0; } Temperatura = 0; Pos = 0; for(Contador = 0; Contador < 4; Contador++) { if(Leidos[Contador]) { Temperatura += Sensores[Contador]; Pos++; } } if(Pos) { Temperatura /= Pos; } TimeSleep = 1000; } }
165
if(Banderas & ON_RX_PC) { Banderas &= ~ON_RX_PC; PC_RecvBlock(Buffer,100,&ContBuff); ContBuff--; Pointer = (unsigned char *) &HumedadRiego; Pos++; *Pointer = Buffer[Pos++]; Pointer++; *Pointer = Buffer[Pos]; break; case 9: Pointer = (unsigned char *) &HumedadVentilacion; Pos++; *Pointer = Buffer[Pos++]; Pointer++; *Pointer = Buffer[Pos]; break; case 10: Pointer = (unsigned char *) &HumedadCalefaccion; Pos++; *Pointer = Buffer[Pos++]; Pointer++; *Pointer = Buffer[Pos]; break; case 16: Pointer = (unsigned char *) &TimeOnRiego; Pos++; *Pointer = Buffer[Pos++]; Pointer++; *Pointer = Buffer[Pos]; break; case 17: Pointer = (unsigned char *) &TimeOnVentilacion; Pos++; *Pointer = Buffer[Pos++]; Pointer++; unsigned char cont; Direccion = (unsigned int) EEPROM; ErasePage(Direccion); for(cont = 0; cont < Size; cont++) { ProgramByte(Direccion,Data[cont]); Direccion++; } } void EnviaParametros(void) { unsigned char * Pt; ContPaqu = 0;
166
Pt = (unsigned char *) &TemperaturaRiego; Paquete[ContPaqu++] = 2; Paquete[ContPaqu++] = 4; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 5; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 6; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 8; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 33; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 34; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 64; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = 3; PC_SendBlock(Paquete,ContPaqu,&ContPaqu); } void EnviaInformacion(void) { unsigned char * Pt; Pt = (unsigned char *) &Temperatura; ContPaqu = 0; Paquete[ContPaqu++] = 2; Paquete[ContPaqu++] = 255; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt; Pt++; Paquete[ContPaqu++] = *Pt;
167
Pt++; Paquete[ContPaqu++] = Activados; Paquete[ContPaqu++] = 3; PC_SendBlock(Paquete,ContPaqu,&ContPaqu); } /* END Control_Temperatura */
168
ANEXO M Private ContSegundos As Integer Private RxBuffer(499) As Byte Private WriteRx As Integer Private ReadRx As Integer Private ContRx As Integer Private Sub Abrir_Click()On Error GoTo errores If Serial.PortOpen = False Then If Val(Muestreo.Text) <> 0 Then Serial.CommPort = Puerto.ListIndex + 1 Serial.PortOpen = True If Serial.PortOpen = True Then Muestreo.Enabled = False Puerto.Enabled = False ContSegundos = 0 Segundo.Enabled = True Leer.Enabled = True Guardar.Enabled = True Abrir.Caption = "Cerrar &Puerto" End If Else MsgBox ("El tiempo de muestreo no puede ser nulo") End If Else Serial.PortOpen = False If Serial.PortOpen = False Then Segundo.Enabled = False Muestreo.Enabled = True Puerto.Enabled = True Leer.Enabled = False Guardar.Enabled = False Abrir.Caption = "Abrir &Puerto" End If End If errores: If Err = 8002 Then MsgBox ("El puerto " & Puerto.Text & " no existe") End If End Sub Private Sub Cerrar_Click() End End Sub Private Sub Form_Load() Puerto.ListIndex = 0 WriteRx = 0 ReadRx = 0 ContRx = 0
169
ConectarDB End Sub Private Sub SoloNumeros(ByRef texto As String) Dim temp As String Dim cont As Integer temp = "" For cont = 1 To Len(texto) If Mid(texto, cont, 1) = "0" Or Val(Mid(texto, cont, 1)) > 0 Then temp = temp & Mid(texto, cont, 1) End If Next texto = "" texto = texto & temp End Sub Private Sub SoloDecimal(ByRef texto As String) Dim temp As String Dim cont As Integer tama = 2 For cont = 0 To 2 If Len(Temperatura(cont).Text) <> 0 Then tama = tama + 3 End If Next For cont = 0 To 2 If Len(PH(cont).Text) <> 0 Then tama = tama + 3 End If Next For cont = 0 To 2 If Len(TimeOn(cont).Text) <> 0 Then tama = tama + 3 End If Next For cont = 0 To 2 If Len(TimeOff(cont).Text) <> 0 Then tama = tama + 3 End If Next tama = tama + 3 tama = tama - 1 ReDim Buffer(tama) As Byte Buffer(0) = 2 Buffer(tama) = 3 ActualPos = 1 For cont = 0 To 2 If Len(Temperatura(cont).Text) <> 0 Then Tempe = CDbl(Temperatura(cont).Text) Tempe = Tempe * Valor = Tempe
170
Buffer(ActualPos) = 4 + cont ActualPos = ActualPos + 1 Buffer(ActualPos) = Valor Mod 256 ActualPos = ActualPos + 1 Valor = Valor - (Valor Mod 256) Buffer(ActualPos) = Valor / 256 ActualPos = ActualPos + 1 End If Next For cont = 0 To 2 If Len(PH(cont).Text) <> 0 Valor = Val(PH(cont).Text) Buffer(ActualPos) = 8 + cont ActualPos = ActualPos + 1 Buffer(ActualPos) = Valor Mod 256 ActualPos = ActualPos + 1 Valor = Valor - (Valor Mod 256 Buffer(ActualPos) = Valor / 256 ActualPos = ActualPos + 1 End If Next For cont = 0 To 2 If Len(TimeOn(cont).Text) <> 0 Then Valor = Val(TimeOn(cont).Text) Buffer(ActualPos) = 16 + cont ActualPos = ActualPos + 1 Buffer(ActualPos) = Valor Mod 256 ActualPos = ActualPos + 1 Valor = Valor - (Valor Mod 256) Buffer(ActualPos) = Valor / 256 ActualPos = ActualPos + 1 End If Next For cont = 0 To 2 If Len(TimeOff(cont).Text) <> 0 Then Valor = Val(TimeOff(cont).Text) Buffer(ActualPos) = 32 + cont ActualPos = ActualPos + 1 Buffer(ActualPos) = Valor Mod 256 ActualPos = ActualPos + 1 Valor = Valor - (Valor Mod 256 Buffer(ActualPos) = Valor / 256 ActualPos = ActualPos + End If Next Valor = 0 If MayorTempRiego.Value Then Valor = Valor + 1 End If If MayorPhRiego.Value Then Valor = Valor + 2
171
End If If MayorTempVentilacion.Value Then Valor = Valor + 4 End If If MayorPhVentilacion.Value Valor = Valor + 8 End If If MayorTempCalefaccion.Value Then Valor = Valor + 16 End If If MayorPhCalefaccion.Value Then Valor = Valor + 32 End If Buffer(ActualPos) = 64 ActualPos = ActualPos + 1 Buffer(ActualPos) = Valor Mod 256 ActualPos = ActualPos + 1 Buffer(ActualPos) = 128 Serial.Output = Buffer End Sub Private Sub Leer_Click() Dim Buffer(2) As Byte End Sub Private Sub Segundo_Timer() Dim Buffer(2) As Byte ContSegundos = ContSegundos + 1 If ContSegundos = Val(Muestreo.Text) Then ContSegundos = 0 Buffer(0) = 2 Buffer(1) = 255 Buffer(2) = 3 Serial.Output = Buffer End If End Sub Private Sub Serial_OnComm() Dim dato As Byte Dim temp As Dim cont As Integer If Serial.CommEvent = 2 Then Do Set temp = Nothing TimerRx.Enabled = False temp = Serial.Input dato = temp(0) PutByteInRxBuff dato Loop While Serial.InBufferCount TimerRx.Enabled = True
172
End If End Sub Private Sub Temperatura_Change(Index As Integer) Dim temp As temp = Temperatura(Index).Text SoloDecimal temp Temperatura(Index).Text = temp End Sub Private Sub TimeOff_Change(Index As Integer) Dim temp As String temp = TimeOff(Index).Text SoloNumeros temp TimeOff(Index).Text = temp End Sub Private Sub TimeOn_Change(Index As Integer) Dim temp As String temp = TimeOn(Index).Text SoloNumeros TimeOn(Index).Text = temp End Sub Private Sub PutByteInRxBuff(ByVal dato As Byte) If ContRx < 500 ContRx = ContRx + 1 RxBuffer(WriteRx) = dato WriteRx = WriteRx + 1 WriteRx = WriteRx Mod 500 End If End Sub Private Function GetByteFromRxBuff(ByRef dato As Byte) As Boolean Dim res As Boolean res = False If ContRx > 0 Then ContRx = ContRx - 1 dato = RxBuffer(ReadRx) ReadRx = ReadRx + 1 ReadRx = ReadRx Mod 500 res = True End If GetByteFromRxBuff = res Private Function GetRxBuff(ByRef Datos() As Byte) As Integer Dim cont As Integer cont = 0 While GetByteFromRxBuff(Datos(cont)) cont = cont + 1 Wend GetRxBuff = cont
173
End Function Private Sub TimerRx_Timer() Dim Datos() As Byte Dim cont As Integer Dim tama As Integer Dim Valor As Integer Dim Deci As Double Dim Tempera As String Dim Humedad As String Dim Activados As String Dim Sentencia As String Dim Fecha As String Dim Hora As String TimerRx.Enabled = False ReDim Datos(ContRx) As Byte tama = GetRxBuff(Datos) tama = tama - 1 cont = 1 If Datos(0) = 2 And Datos(tama) = 3 Then tama = tama - 1 Valor = 0 Deci = 0 Select Case Datos(cont) Case 4 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) Deci = Valor Deci = Deci / 10 Temperatura(0).Text = CStr(Deci) Case 5 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) Deci = Valor Deci = Deci / 10 Temperatura(1).Text = CStr(Deci) Case 6 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) Deci = Valor Deci = Deci / 10 Temperatura(2).Text = CStr(Deci) Case 8 cont = cont + 1 Valor = Datos(cont) cont = cont + 1
174
Valor = Valor + (256 * Datos(cont)) PH(0).Text = CStr(Valor) Case 9 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) PH(1).Text = CStr(Valor) cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) PH(2).Text = CStr(Valor) Case 16 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) TimeOn(0).Text = CStr(Valor) Case 17 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) TimeOn(1).Text = CStr(Valor) Case 18 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) TimeOn(2).Text = CStr(Valor) Case 32 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) TimeOff(0).Text = CStr(Valor) Case 33 'I cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) TimeOff(1).Text = CStr(Valor) Case 34 cont = cont + 1 Valor = Datos(cont) If Valor Mod 2 = 1 Then MayorTempRiego.Value = True MenorTempRiego.Value = False Else MenorTempRiego.Value = True MayorTempRiego.Value = False
175
End If Valor = Valor - (Valor Mod 2) Valor = Valor / 2 If Valor Mod 2 = 1 Then MayorPhRiego.Value = True MenorPhRiego.Value = False Else MenorPhRiego.Value = True MayorTempCalefaccion.Value = True MenorTempCalefaccion.Value = False Else MenorTempCalefaccion.Value = True MayorTempCalefaccion.Value = False End If Valor = Valor - (Valor Mod 2) Valor = Valor / 2 If Valor Mod 2 = 1 Then MayorPhCalefaccion.Value = True MenorPhCalefaccion.Value = False Else MenorPhCalefaccion.Value = True MayorPhCalefaccion.Value = False End If Case 255 cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) Deci = Valor Deci = Deci / 10 Tempera = CStr(Deci) Tempera = Replace(Tempera, ",", ".") cont = cont + 1 Valor = Datos(cont) cont = cont + 1 Valor = Valor + (256 * Datos(cont)) Humedad = CStr(Valor) cont = cont + 1 Activados = CStr(Datos(cont)) Fecha = Format(Now, "yyyy/mm/dd") Hora = Format(Now, "HH:MM:SS") Sentencia = "INSERT INTO datos(temperatura,humedad,activacion_riego,fecha,hora) VALUES ('" & Tempera & "','" & Humedad & "','" & Activados & "','" & Fecha & "','" & Hora & "')" EjecutaSentenciaSQL Sentencia End Select cont = cont + 1 Wend End If End Sub
176
ANEXO O /* Including used modules for compiling procedure */ #include "Cpu.h" #include "Events.h" #include "DataInput.h" #include "DataOutput.h" #include "Dir.h" #include "Frecuencia.h" /* Include shared modules, which are used for whole project */ #include "PE_Types.h" #include "PE_Error.h" #include "PE_Const.h" #include "IO_Map.h" #include <string.h> #define SENSOR 0x05 void SendChar(unsigned char Dato); unsigned char ReciveChar(unsigned char * Dato); void itoa(unsigned char * cade,unsigned int num); unsigned char RxBuff[10]; unsigned char Valor[4] = {'0','0','0','0'}; unsigned char WritePtRx = 0; unsigned char ReadPtRx = 0; unsigned char ContRx = 0; unsigned char RxBitCont = 0; unsigned char RxData = 0; unsigned char Temp = 0; unsigned char Band = 0; unsigned int Frecuencia = 0; void main(void) { PE_low_level_init(); /* Write your code here */ /* For example: for(;;) { } */ for(;;) { while(ReciveChar(&Temp)) { if((Temp == SENSOR)) { itoa(Valor,Frecuencia); for(Temp = 0; Temp < 4; Temp++) { SendChar(Valor[Temp]); }
177
} } } for(;;){} } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/ void SendChar(unsigned char Dato) { unsigned char BitCont = 0; EnterCritical(); Dir_SetVal(); Cpu_Delay100US(1); PTA_PTA0 = 0; Cpu_Delay100US(8); while(BitCont < 8) { if((Dato & 0x01) == 0x01) { PTA_PTA0 = 1; } else { PTA_PTA0 = 0; } Dato >>= 1; BitCont++; Cpu_Delay100US(8); } PTA_PTA0 = 1; Cpu_Delay100US(10); Dir_ClrVal(); Band = 0; ExitCritical(); } unsigned char ReciveChar(unsigned char * Dato) { if(ContRx > 0) { *Dato = RxBuff[ReadPtRx]; ReadPtRx++; ReadPtRx %= 10; ContRx--; return TRUE; } return FALSE; } void itoa(unsigned char * cade,unsigned int num) {
178
unsigned char cont; unsigned char dat; for(cont = 0; cont < 4; cont++) { dat = '0'; dat += num % 10; num /= 10; cade[3 - cont] = dat; } } /* END Sensor_PH */
179
ANEXO P
180
ANEXO Q
181
ANEXO R
182
ANEXO S
183
ANEXO T
184
ANEXO U
185
ANEXO V
186
ANEXO W
187
ANEXO X