Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO...

146
Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN AGRÍCOLA TRABAJO FIN DE GRADO Dirigido por Lluís Guash Pesquer José Luis Ramírez Falo Grado de Ingeniería Eléctrica Tarragona 2017

Transcript of Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO...

Page 1: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Francesc Miralles Benet

SISTEMA DE CONTROL AUTOMÁTICO EN UNA

EXPLOTACIÓN AGRÍCOLA

TRABAJO FIN DE GRADO

Dirigido por Lluís Guash Pesquer

José Luis Ramírez Falo

Grado de Ingeniería Eléctrica

Tarragona

2017

Page 2: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Índice

1 INTRODUCCIÓN .................................................................................................... 6

1.1 Objeto del proyecto ............................................................................................ 6

1.2 Alcance .............................................................................................................. 6

1.3 Situación y emplazamiento de la parcela ........................................................... 6

1.4 Instalaciones existentes ...................................................................................... 7

1.4.1 Instalación de riego ..................................................................................... 7

1.4.2 Suministro de agua a la vivienda ................................................................ 8

1.4.3 Instalación de alumbrado exterior .............................................................. 8

1.5 Requisitos de diseño .......................................................................................... 8

1.5.1 Funcionalidad del sistema requerido .......................................................... 9

1.5.2 Programador del riego ................................................................................ 9

1.5.3 Control del nivel de agua en el depósito................................................... 10

1.5.4 Encendido/Apagado Iluminación exterior ................................................ 10

1.5.5 Apertura/cierre del acceso a la explotación .............................................. 10

2 COMPONENTES DEL SISTEMA DE CONTROL.............................................. 11

2.1 Introducción ..................................................................................................... 11

2.2 Estructura del Sistema de Control ................................................................... 12

2.3 Componentes utilizados en el prototipo ........................................................... 12

2.3.1 Arduino Uno SMD ................................................................................... 12

2.3.2 Herramienta de desarrollo utilizada (IDE) .............................................. 14

2.3.3 Herramienta de desarrollo de la App ,App Inventor 2 ............................. 15

2.3.4 Sensores .................................................................................................... 15

2.3.5 Sensor de ultrasonidos HC-SR04 ............................................................. 16

2.3.6 Sensor de movimiento PIR (HC-SR501) ................................................. 17

2.3.7 Sensor de humedad y temperatura DHT11............................................... 18

2.3.8 Interruptor final de carrera ........................................................................ 19

2.3.9 Módulo: 8 relés 5V .................................................................................. 19

2.3.10 LCD 16x2 por protocolo I2C ................................................................... 21

2.3.11 Reloj RTC DS1302 ................................................................................... 22

2.3.12 Módulo Bluetooth HC-06 ......................................................................... 23

2.3.13 Keypad 3×4 ............................................................................................. 24

Page 3: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

2.3.14 Variador de frecuencia.............................................................................. 25

2.3.14.1 Características serie Micromaster ..................................................... 26

2.3.14.2 Esquema General............................................................................... 26

2.3.14.3 Programación del variador ................................................................ 27

3 PROTOTIPO DEL SISTEMA DE CONTROL ..................................................... 31

3.1 Introducción ..................................................................................................... 31

3.2 Esquema general .............................................................................................. 31

3.3 Diseño del encapsulado ................................................................................... 32

3.4 Diseño electrónico del sistema......................................................................... 36

3.4.1 Estructura General del Hardware ............................................................. 36

3.4.2 Módulo de control .................................................................................... 37

3.4.3 Módulo de sensores .................................................................................. 37

3.4.4 Módulo de Actuadores ............................................................................. 38

3.4.5 Módulo de Comunicación ........................................................................ 38

3.4.6 Asignación de los puertos de Arduino ...................................................... 39

3.5 Configuración de los componentes integrados ................................................ 40

3.5.1 Dispositivo Bluetooth ............................................................................... 40

3.5.2 Sensores de presencia ............................................................................... 41

3.5.2.1 Configuración del sensor PIR ........................................................... 41

3.5.3 Variadores de frecuencia .......................................................................... 42

3.5.3.1 Control del riego................................................................................ 43

3.5.3.2 Control del nivel depósito ................................................................. 44

3.5.3.3 Control puerta acceso ........................................................................ 45

3.5.4 Configuración Reloj RTC ......................................................................... 47

3.6 Interfaz de usuario ........................................................................................... 47

3.6.1 Diseño de la aplicación móvil con App Inventor ..................................... 47

3.6.1.1 Designer ............................................................................................ 49

3.6.1.2 App Inventor Blocks Editor .............................................................. 51

3.6.1.3 Análisis del diseño de bloques .......................................................... 51

3.6.1.4 Conclusiones App desarrollada ......................................................... 52

3.6.2 Interfaz local de usuario ........................................................................... 53

3.6.2.1 Menú principal .................................................................................. 53

3.6.2.2 Menú control riego ............................................................................ 53

Page 4: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

3.6.2.3 Menú control depósito ....................................................................... 54

3.6.2.4 Menú temporizador bomba riego ...................................................... 54

3.6.2.5 Menú temporizador bomba depósito ................................................. 54

3.6.2.6 Menú Parámetros depósito ................................................................ 54

3.6.2.7 Menú Control iluminación ................................................................ 55

3.6.2.8 Menú control puerta acceso............................................................... 55

3.7 Particularidades del sistema en parcela de estudio .......................................... 55

3.7.1 Instalación del los sensores de movimiento en los puntos de luz ............. 55

3.7.2 Instalación del sensor de ultrasonidos ...................................................... 56

3.7.3 Instalación del sensor detector de presencia en la puerta de acceso ......... 56

4 PRESUPUESTO ..................................................................................................... 58

4.1 Material integrado en el prototipo ................................................................... 58

4.2 Material auxiliar ............................................................................................... 59

4.3 Mano de obra ................................................................................................... 59

4.4 Presupuesto total .............................................................................................. 59

5 Conclusiones ........................................................................................................... 59

5.1 Puntos a destacar .............................................................................................. 60

5.2 Puntos a mejorar .............................................................................................. 61

6 Anexos .................................................................................................................... 62

6.1 Proceso configuración módulo Bluetooth ........................................................ 62

6.1.1 Código ...................................................................................................... 63

6.1.2 Test de comunicación ............................................................................... 64

6.1.3 Configuración del nombre del dispositivo HC-06 .................................... 64

6.1.4 Cambiar Código de Vinculación .............................................................. 65

6.1.5 Configurar la velocidad de comunicación ................................................ 66

6.2 Configuración reloj RTC ................................................................................. 67

6.2.1 Codigo de configuración .......................................................................... 67

6.3 Código programación completo del sistema automático ................................ 68

6.3.1 Definición de variables y llamada de librerías ......................................... 68

6.3.2 Void setup ................................................................................................. 74

6.3.3 Void inicio ................................................................................................ 76

6.3.4 Vooid loop ................................................................................................ 77

7 Esquemas .............................................................................................................. 128

Page 5: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

7.1.1 Registro catastro finca ...................... Error! No s'ha definit el marcador.

7.1.2 Esquema instalaciones existentes ........................................................... 129

7.1.2.1 Sistema de riego .............................................................................. 130

7.1.2.2 Sistema llenado depósito ................................................................. 131

7.1.2.3 Instalaciones alumbrado exterior .................................................... 132

7.2 Encapsulado del sistema ................................................................................ 133

7.2.1 Esquema encapsulado nº1 ...................................................................... 134

7.2.2 Esquema encapsulado nº2 ...................................................................... 135

7.3 Distribución de los pines de Arduino para los controladores ........................ 136

7.4 Distribución de la alimentación para los controladores ................................. 137

7.5 Esquema de fuerza ......................................................................................... 138

7.6 Esquema de control ........................................................................................ 139

7.7 Esquema interfaz local ................................................................................... 140

7.7.1 Esquema Interfaz local nº1 ..................................................................... 141

7.7.2 Esquema Interfaz local nº2 ..................................................................... 142

7.7.3 Esquema Interfaz local nº3 ..................................................................... 143

7.7.4 Esquema Interfaz local nº4 ..................................................................... 144

7.7.5 Situación y alcance de los Sensores PIR, en la parcela de estudio ......... 145

7.8 Diagrama de flujo del sistema automático ..................................................... 146

8 Referencias bibliográficas. ................................................................................... 147

Page 6: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 6

1 INTRODUCCIÓN

1.1 Objeto del proyecto

La finalidad del trabajo es el diseño e instalación de un sistema fiable y económico que

automatice alguna de las tareas típicas de una explotación agraria: el riego, el suministro

de agua potable, la puerta de acceso y la iluminación exterior. Se optará por ofrecer un

sistema de control con una funcionalidad parecida a la de los sistemas de control

automáticos que hay en el mercado pero a un coste inferior.

Se construirá un prototipo que podrá ser configurado por el usuario de forma local

(mediante teclado y pantalla), o de forma remota mediante una aplicación Android.

1.2 Alcance

El presente proyecto trabajo “sistema de control automático en una explotación agraria

“se encuadra como un trabajo académico final en el que el alumno debe demostrar los

conocimientos que ha adquirido y las capacidades que se prevén en el plan de estudios

del grado de ingeniería eléctrica.

El diseño y la implementación de un prototipo es un proyecto que abarca otras áreas

aparte de la ingeniería eléctrica; se desarrollarán conocimientos de programación,

desarrollo de “aplicaciones apk” prediseñadas o la configuración de microcontroladores.

Esta obra busca la innovación , el desarrollo físico y aplicable al control automático de

cualquier explotación agraria de tamaño medio, gracias a la flexibilidad que ofrece el

sistema.

Por otro lado el auge de los microcontroladores y su desarrollo ha hecho posible que

existan en el mercado una gran gama de componentes fiables y a un precio muy

asequible. Desde esta perspectiva se abarca este proyecto, con el objetivo de diseño e

implementación del sistema más fiable, eficiente y económico que se pueda plantear.

1.3 Situación y emplazamiento de la parcela

Se trata de una parcela de 10.200 m2 (1 hectárea aproximadamente) de superficie,

situada entre la localidad de Tortosa y Bitem .En la explotación agrícola que cuenta con

un pozo propio, hay una vivienda edificada. La superficie agrícola explotada total es de

unos 6800 m2 con una plantación de 350-400 naranjos.

En la Figura 1 se presenta una imagen, que junto a los planos del emplazamiento que se

presentan en los anexos facilitará la visualización de la localización del terreno a

analizar.

Page 7: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 7

Figura 1. Vista en planta de la parcela 85 (Google Maps)

De todas formas en el esquema [7.1.1],se detalla la situación de los elementos más

característicos de la parcela.

1.4 Instalaciones existentes

En esta explotación ya hay instalaciones en uso, para las diferentes tareas que se

realizan, riego de los arboles, suministro de agua a la vivienda y puntos de luz

exteriores.

1.4.1 Instalación de riego

El sistema de riego se abastece del agua del pozo mediante el uso de una bomba

trifásica sumergida, de 1.1kW de potencia. Dicha bomba se encuentra a una

profundidad de 11 metros por debajo del nivel de tierra.

El panel de control para este sistema consiste en un pulsador de paro y otro de marcha

que se encuentran dentro de un armario empotrado en la pared de la caseta adyacente,

situado a 3 metros del pozo.

En el esquema [7.1.2.1] se encuentra el esquema de esta instalación.

El agua se canaliza mediante tuberías de PVC, donde se pueden distinguir 3 tramos:

El primer tramo de tuberías tiene una longitud de 40 metros con un diámetro de

18 cm.

El tramo intermedio con una longitud de 20 metros es el encargado de

alimentar a las distintas líneas de riego.

Por último la canalización se divide en cinco líneas de subministro con una

longitud de 120 m que reparten el agua a los diferentes surtidores que existen a

lo largo de las líneas.

Page 8: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 8

1.4.2 Suministro de agua a la vivienda

Estas instalaciones consisten en una bomba trifásica exterior, situada en la superficie del

pozo y anclada en la piedra por medio de un sistema de fijación.

El sistema tiene una bomba trifásica de 0,8kW que extrae agua del pozo: esta agua es

conducida por un sistema de tuberías, cuya longitud total es de 52 metros con una altura

a superar de 11 metros hasta el depósito situado en la azotea de la casa. La sección de

canalización es de 6 cm de diámetro.

En el esquema [7.1.2.2] se encuentra el esquema de esta instalación.

El panel de control para el manejo de la bomba encargada de llenar el depósito, se

encuentra su vez, dentro de un armario empotrado en la pared de la caseta adyacente,

situado a 3 metros del pozo. En el mismo se encuentra el contactor de la bomba de

superficie y dos pulsadores: pulsador de paro y marcha.

1.4.3 Instalación de alumbrado exterior

EL sistema de iluminación es muy básico, consiste en 2 puntos de luz gobernados por

un interruptor que se encuentra dentro de la vivienda.

Se utilizan focos halógenos de 400 W para exteriores.

En el esquema [7.1.2.3] se encuentra el esquema de esta instalación.

1.5 Requisitos de diseño

Hay que diseñar un sistema de control para automatizar ciertas tareas en una

explotación agrícola eficiente, fiable y adaptable a diferentes casos.

El objetivo principal es controlar y/o automatizar las tareas más comunes que se puedan

dar en este tipo de actividades, ya sea el riego de los árboles frutícolas, el suministro de

agua potable a la vivienda, la iluminación exterior y la apertura/cierre de la puerta de

acceso.

Para ello, también es un requisito crear una interface adecuada para poder interactuar

con el usuario. Se hará a través de dos vías: local, mediante pantalla y teclado, o remota,

mediante una aplicación para dispositivos Android.

También es necesario que los motores de inducción trifásicos que accionan las bombas

y la puerta de acceso a la propiedad tengan un arranque y parada suave. De este modo

los motores trabajaran en mejores condiciones y se impedirán “golpes de ariete” en la

instalación hidráulica, y golpes entre la puerta y su marco. .

Page 9: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 9

Otro punto importante a tener presente, es la adaptabilidad del sistema. Además de ser

compatible con la parcela de estudio, el sistema es adaptable a diferentes casos con el

mínimo cambio en su estructura.

El sistema de control ha de permitir personalizar diferentes variables o estados tales

como:

Temporización de la hora de inicio y fin del sistema de riego por goteo.

Temporización de la hora de inicio y fin del sistema de llenado del depósito si

éste no estuviese lleno.

Temporización de la hora de inicio y fin del sistema de iluminación de la

explotación.

Control por medio de teclado o aplicación móvil del sistema de riego.

Control por medio de teclado o aplicación móvil del sistema de llenado del

depósito.

Control del nivel del agua en el depósito automático.

Control por medio de teclado o aplicación móvil de la apertura o cierre del

acceso a la explotación.

Iluminación automática por detección de presencia.

1.5.1 Funcionalidad del sistema requerido

Como se ha hecho mención en los puntos anteriores, el prototipo ha de controlar y

automatizar diferentes tareas, con funciones muy diversas.

Para la realización de estos procesos es necesario conocer el estado de diferentes

variables como por ejemplo: el nivel de agua contenida en el depósito, la posición en la

que se encuentra la puerta de acceso, etc…

El sistema de control que se implemente en la explotación junto con un conjunto de

sensores, módulos y actuadores habrán de permitir la ejecución correcta de todas

funciones.

A continuación se detallarán todos los procesos a realizar:

1.5.2 Programador del riego

Esta parte del sistema permite al usuario configurar mediante el teclado del dispositivo,

la duración y los días de la semana para accionar el riego por goteo en la explotación.

Igualmente se podrá accionar el bombeo de agua en horas no programadas.

El control de la bomba incluirá un variador de frecuencia que optimice el arranque y

paro así como la ampliación de la vida útil de las instalaciones.

Page 10: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 10

1.5.3 Control del nivel de agua en el depósito

El sistema se encargará de accionar la bomba de superficie cuando el nivel de agua esté

bajo un umbral previamente configurado por el operario. Si por el contrario, el nivel de

líquido supera una cierta altura, se procede a la desactivación de ésta.

En el control de la bomba, se incluye un variador de frecuencia que optimiza el

arranque/paro y un sensor para medir la cantidad de agua depositada.

1.5.4 Encendido/Apagado Iluminación exterior

El control de encendido y apagado de las luces podrá hacerse de tres formas diferentes:

Directamente con el uso del teclado físico

Inalámbricamente con el móvil.

Programando la hora de su activación/desactivación gracias al uso del algún

teclado .

Activación de los puntos de luz mediante detectores de presencia, que en todo

caso, se podrán habilitar o deshabilitar dependiendo de la configuración

establecida.

1.5.5 Apertura/cierre del acceso a la explotación

Este sistema controla el motor instalado en la puerta de acceso que está accionada

linealmente siguiendo unas guías.

En el control de acceso se integra un variador de frecuencia. Este elemento permitirá el

cambio de la dirección de giro del motor.

Para evitar accidentes se ha de proveer de algún sistema que detendrá el cierre de la

puerta si detecta un objeto cruzando. Pasados unos segundos, la instalación ha de

comprobar el estado del sistema de seguridad y, en caso negativo, proceder al cierre de

la puerta.

Cuando el usuario quiera acceder o salir del recinto en horas intempestivas, sólo tendrá

que ejecutar la aplicación móvil para gobernar la puerta.

Page 11: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 11

2 COMPONENTES DEL SISTEMA DE CONTROL

2.1 Introducción

De cara al control de la explotación agraria, se plantean distintas soluciones disponibles

en el mercado: ordenadores, microcontroladores, PLC.

Un aspecto importante a destacar, es la facilidad de operación para el usuario y su

flexibilidad. Por otra parte, al tratarse de una zona agrícola ubicada en el tramo del río

Ebro, la atmósfera está llena de partículas de polvo y con un alto grado de humedad.

Otra característica que se valora, es el consumo de energía, dado que este sistema

supone el funcionamiento continuo a lo largo del año. Por último, el precio es un punto

muy importante a tener presente. Así que, con todos estos parámetros, la solución se

hace más evidente.

En primer lugar, la instalación de un ordenador como sistema de control, no cumple

todos los requisitos, es decir, el consumo de energía es relativamente elevado; además,

se tendría de añadir una tarjeta con los pines de entrada y salida. Finalmente, el precio lo

sitúa como una de las soluciones menos económicas y viables. El PLC, pese a tener

ventajas superiores, (como por ejemplo la robustez y la estabilidad en la operación),

muy por encima del PC o el microcontrolador, presenta la desventaja del precio además

de una complejidad de manipulación para el usuario. Por tanto, se perfila como una

solución demasiado industrial para este tipo de aplicaciones.

Finalmente, la opción de emplear un microcontrolador presenta ventajas en todos los

puntos clave con el único inconveniente de una baja robustez, que para un entorno

agrario, es insuficiente. El precio se sitúa muy por debajo de las dos soluciones

anteriormente citadas, además de poseer la potencia suficiente para el control de un

sistema de estas características, en una explotación agraria.

El mercado ofrece una gama de microcontroladores muy amplia. Quizás los más

populares a día de hoy, sea los diferentes modelos de la compañía Arduino, con un gran

número de versiones adaptadas a todas las necesidades imaginables. Una de las

principales ventajas es la incorporación de código abierto para su programación, El uso

por parte de los microcontroladores Arduino, de un código abierto, ha permitido que se

puedan encontrar placas a muy buen precio en el mercado. También presenta una

amplísima comunidad activa de usuarios que aportan continuamente nuevos

conocimientos, ampliando así, las posibilidades de esta gamma de microcontroladores.

Page 12: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 12

2.2 Estructura del Sistema de Control

El Prototipo integrara diferentes dispositivos que serán descritos a lo largo de este

capítulo.

Los sensores se encargarán de recoger información de las variables de interés, el

controlador procesará los datos recogidos y según la acción que ingrese el usuario por

medio de las diferentes interfaces disponibles, el sistema ejecutará una operación u

otra.

Figura 2. Estructura General del sistema

2.3 Componentes utilizados en el prototipo

A continuación, detallaremos todos los componentes que se han utilizado en el sistema.

En los siguientes capítulos, se procederá a la explicación de su conexionado,

configuración y como se han integrado en todo el conjunto. En cada caso, se justificará

su elección para este proyecto.

2.3.1 Arduino Uno SMD

Arduino Uno R3 es una placa con un microcontrolador de la marca Atmel, con la

circuitería de soporte, donde se incluyen reguladores de tensión, puerto USB (que

permite programar el microcontrolador desde cualquier PC).

Este modelo de Arduino, dispone de 14 pines configurables, como entrada o salida, y a

los que pueden conectarse los sensores y actuadores que sean capaces de transmitir o

recibir señales digitales de 0V hasta los 5V.

También dispone de 6 pines analógicos configurables como entrada o salida. Mediante

las entradas analógicas podemos obtener diferentes datos de los sensores en forma de

Page 13: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 13

niveles de tensión. Las salidas analógicas de las que algunos pines disponen, pueden

utilizarse para enviar señales de control en forma de señales PMW.

Cada uno de los 14 pines digitales funcionan con una tensión de 5V y puede

subministrar una corriente máxima de hasta 40 mA.

Cada pin que se encuentran en el microprocesador dispone de una resistencia pull-up

interna de entre 20 KΩ Y 50 KΩ que, por defecto, se encuentran deshabilitadas.

Pines más singulares del modelo UNO de entrada y salida:

RXyTX: Se usan para transmisiones serie de señales TTL.

PMW: Arduino dispone de 6 salidas destinadas a la generación de señales

PMW de hasta 8 bits.

SPI: Los pines 10, 11, 12 y 13 pueden utilizarse para llevar a cabo

comunicaciones SPI, que permiten trasladar información full dúplex en un

entorno Maestro/Esclavo.

I2C: Permite establecer comunicaciones a través de un bus I2C. El bus I2C es

un producto de Phillips para la interconexión se sistemas embebidos. En la

actualidad se pueden encontrar una gran diversidad de dispositivos que utilizan

esta interfaz.

Resumen de las características técnicas:

Microcontrolador Atmega328

Voltaje de operación 5V

Voltaje de entrada 7-12V

Voltaje entrada limite 6-20V

Pines para entrada/ salida digital 14 (6 se pueden utilizar como salida PMW)

Pines para entrada analógica 6

Corriente continua por pin IO 40mA

Corriente continua en el pin 3,3V 50mA

Memoria Flash 32KB

SRAM 2KB

EEPROM 1KB

Frecuencia del reloj 16 MHz

Tabla 1.Características del micorcontrolador

Page 14: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 14

Figura 3. ArduinoUNO con microcontrolador en formato SMD

2.3.2 Herramienta de desarrollo utilizada (IDE)

El micro proporciona un software consistente en un entorno de desarrollo (IDE) que

implementa el lenguaje de programación de Arduino y el bootloader ejecutado en la

placa. La principal característica del software de programación y del lenguaje de

programación es su sencillez y facilidad de uso. El software hecho para Arduino es

portable, es decir, el mismo firmware que hemos hecho para un

Arduino/Microcontrolador, sirve para otras placas de la misma plataforma u otras placas

compatibles. Para este proyecto, se ha utilizado la versión 1.6.12 del IDE de Arduino.

La interfaz del IDE de Arduino es sencilla e intuitiva. Tiene en la parte superior un

menú con la mayoría de funciones en el que se pueden configurar diferentes variables:

como el puerto USB, que vamos a usar, y el modelo de microcontrolador que

utilizaremos.

En la parte superior, se encuentra una opción para compilar el código en busca de fallos

(botón con forma de tick) y otro para cargar el código en la placa Arduino (botón con

forma de fecha).

En la parte central de la interfaz del programa es donde se desarrolla el código.

Por último, en la parte inferior, la aplicación nos muestra diferente información cuando

compilamos el código o lo cargamos a la placa, desde los posibles fallos o advertencias

hasta la memoria ocupada por el sketch.

Page 15: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 15

Figura 4. Interfaz IDE

2.3.3 Herramienta de desarrollo de la App ,App Inventor 2

App Inventor es una herramienta creada originalmente por Google para la programación

de aplicaciones del sistema operativo Android,se pueden crear aplicaciones nativas para

smartphone o tableta. Actualmente se encuentra en la versión nº2, y está siendo

controlada y mantenida diariamente por el prestigioso MIT-Massachusetts Institute of

Technology.

2.3.4 Sensores

Hoy en día, Arduino ha tomado fuerza dentro de la comunidad de desarrolladores de

aplicaciones electrónicas y se han generado una gran variedad de módulos que permiten

realizar proyectos Arduino de una forma ágil y sencilla. Es por eso que, a continuación,

se describirá la lista de sensores que se han utilizado para la elaboración del sistema de

control automático.

Page 16: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 16

2.3.5 Sensor de ultrasonidos HC-SR04

Es un sensor que permitirá detectar objetos o calcular distancias entre distintos puntos.

El sensor ultrasónico HC-SR04 es uno de los sensores más utilizados en proyectos con

Arduino debido al bajo precio e intervalo de detección, ya que es bastante amplio. Va

desde los 3 cm hasta 5 m con una precisión de 3 mm.

Este sensor tiene el mismo funcionamiento que un radar ya que envía pulsos a alta

frecuencia, en este caso en la franja de los ultrasónicos. Está compuesto por dos

piezoeléctricos: un transmisor y receptor ambos en forma de cilindro. El transmisor se

encarga de emitir la señal ultrasónica para luego ser rebotada a través de un objeto,

llegando al cilindro receptor. Debido a que la señal tardará un tiempo en regresar desde

que se emite, es obvio pensar que la velocidad con la cual llegará al receptor está

íntimamente relacionada con la distancia de transmisión y rebote.

Se expresa matemáticamente como: Distancia = 170 (m/s) * t(s)

Para este proyecto, se utilizará el HC-SR04 como medidor del nivel del agua contenida

en el depósito.

Características:

Alimentación 5V.

Rango de medición: 3 cm a 400 cm.

Corriente de alimentación: 15 mA.

Frecuencia del pulso: 40 Khz.

Apertura del pulso ultrasónico: 15º

Señal de disparo: 10uS.

Este sensor tiene únicamente cuatro pines. Dependiendo del fabricante, puede tener

desde tres hasta cinco pines. Para este caso se tiene:

VCC: Voltaje de alimentación

TRIG: Pin de disparo

ECHO: Pin de eco

GND: Ground

Page 17: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 17

Figura 5. Sensor de ultrasonidos HC-SR04

2.3.6 Sensor de movimiento PIR (HC-SR501)

Los sensores PIR se basan en la medición de la radiación infrarroja. Todos los cuerpos

emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura.

Los dispositivos PIR disponen de un sensor piezoeléctrico que se encarga de captar esta

radiación y convertirla en una señal eléctrica.

Cada sensor está compuesto por dos captadores de radiación y dispone de un circuito

eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad

de infrarrojos, la señal eléctrica resultante es nula. Por el contrario, si los dos captadores

reciben una medición diferente, se genera una señal eléctrica.

De esta forma, si un cuerpo atraviesa uno de los campos, se genera una señal eléctrica

diferencial, que es captada por el sensor, y emite una señal digital.

Para este proyecto, se utiliza este tipo de captador para el control de la iluminación

exterior.

Características

El módulo incluye el sensor, lente, controlador PIR BISS0001 y regulador.

Rango de detección: 3 m a 7 m, ajustable mediante trimmer (Sx)

Lente fresnel de 19 zonas, ángulo < 100º

Salida activa alta a 3.3 V

Tiempo en estado activo de la salida configurable mediante trimmer (Tx)

Redisparo configurable mediante jumper de soldadura

Page 18: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 18

Consumo de corriente en reposo: < 50 μA

Voltaje de alimentación: 4.5 VDC a 20 VDC

Este sensor tiene únicamente tres pines :

VCC: Alimentación 5V.

GND: Ground

DAT: Pin de datos digita.

Figura 6. Sensor infrarrojos pasivo (PIR)

2.3.7 Sensor de humedad y temperatura DHT11

La temperatura y la humedad son variables, y se pretenden conocerlas en todo

momento, más aun en explotaciones agrícolas .Entre los diferentes modelos de sensores

que existen en el mercado, se ha optado por el DHT 11.

El DHT11 es un sensor de temperatura y humedad digital. Utiliza un sensor capacitivo

de humedad y un termistor para medir el aire circundante, y refleja los datos mediante

una señal digital en el pin de datos.

Características

Alimentación: 3Vdc ≤ Vcc ≤ 5Vdc

Rango de medición de temperatura: 0 a 50 °C

Precisión de medición de temperatura: ±2.0 °C .

Resolución Temperatura: 0.1°C

Rango de medición de humedad: 20% a 90% RH.

Precisión de medición de humedad: 4% RH.

Resolución Humedad: 1% RH

Tiempo de sensado: 1 seg.

Este sensor tiene únicamente tres pines.

Page 19: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 19

VCC: Alimentación 5V.

GND: Ground.

DAT: Pin de datos digita.

Figura 7. Sensor DHT11

2.3.8 Interruptor final de carrera

Este dispositivo electromecánico consta de un accionador vinculado mecánicamente a

un conjunto de contactos. Cuando un objeto entra en contacto con el accionador, el

dispositivo opera los contactos para cerrar o abrir una conexión eléctrica.

Figura 8. Esquema eléctrico interruptor final de carrera

2.3.9 Módulo: 8 relés 5V

En este proyecto, el control de los variadores de frecuencia se hace mediante la

configuración y el accionamiento de sus salidas digitales. Para ello, se requiere de una

Page 20: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 20

señal de 15 V. El control de las diferentes salidas hacia los variadores se hará con relés

que a su vez están controlados por el microcontrolador.

El prototipo incorpora una tarjeta de relés opto acoplados, formado por 8 canales. Cada

canal es controlado por una entrada TTL, la cual puede ser fácilmente conectada al

Arduino.

Características

Cargas de hasta 250 Vac y 30 Vdc de 10 A.

8 canales independientes protegidos con optoacopladores

8 Relés (Relays) de 1 polo 2 tiros

El voltaje de la bobina del relé es de 5 VDC

Led indicador para cada canal (enciende cuando la bobina del relé esta activa)

Activado mediante corriente: el circuito de control debe proveer una corriente

de 15 a 20 mA

Terminales de conexión de tornillo (clemas)

Terminales de entrada de señal lógica con headers macho.

Este sensor tiene 8 pines de control y 2 pines para la alimentación.

VCC: Alimentación 5V.

GND: Ground.

IN1: Pin control canal 1.

IN2: Pin control canal 2.

IN3: Pin control canal 3.

IN4: Pin control canal 4.

IN5: Pin control canal 5.

IN6: Pin control canal 6.

IN7: Pin control canal 7.

IN8: Pin control canal 8.

Page 21: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 21

2.3.10 LCD

16x2 por

protocolo I2C

Las pantallas de cristal líquido LCD (Liquid Cristal Display) tienen la capacidad de

mostrar caracteres alfanuméricos, permitiendo representar la información que generan

los diferentes sensores o procesos que estén activos. La pantalla consta de una matriz de

caracteres 5x8 puntos distribuidos en dos, líneas de 16 caracteres.

Características:

Consumo muy reducido, del orden de 7.5mW

Voltaje de alimentación: 5 VDC

Pantalla de caracteres ASCII, además de los caracteres japoneses

Kanji, caracteres griegos y símbolos matemáticos.

Desplazamiento de los caracteres hacia la izquierda o a la derecha

Memoria de 40 caracteres por línea de pantalla, visualizándose 16 caracteres

por línea.

Movimiento del cursor y cambio de su aspecto

Permite que el usuario pueda programar 8 caracteres

Pueden ser gobernados de 2 formas principales:

Conexión con bus de 4 bits

-Conexión con bus de 8 bits

Conexión por modulo I2C:

Figura 9.Módulo 8 relés

Page 22: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 22

Figura 10: LCD 16x2.

EL Módulo adaptador LCD a I2C que se usará está basado en el controlador I2C

PCF8574, el cual es un expansor de entradas y salidas digitales controlado por I2C, este

módulo se usa para controlar un LCD.

Este modulo tiene únicamente cuatro pines.

VCC: Alimentación 5V.

GND: Ground.

SDA: Pin SDA.

SCL: Pin SCL

El modulo solo tiene 4 cables que se corresponden a GND, 5V, SDA y SCL.

Figura 11. Módulo I2C

2.3.11 Reloj RTC DS1302

Page 23: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 23

Un módulo RTC (Real Time Clock) o "Reloj de tiempo real" consiste en un circuito

integrado alimentado por una batería que, en todo momento, registra la fecha, día de la

semana y hora, al igual que un reloj digital convencional. Estos datos, únicamente

podrán ser consultados mediante comunicación I2C.

Este módulo permitirá la temporización de todos los procesos que queramos

automatizar dentro de la explotación .Garantiza también, el correcto funcionamiento del

sistema en caso de apagón o interrupción del subministro eléctrico momentáneo.

Características:

Lleva a cabo todas las funciones de un reloj en tiempo real: pues, en tiempo

real, cuenta segundos, minutos, horas, día de la semana, día del mes, mes y año

con compensación de año bisiesto.

RAM interna de 31 x 8

Interfaz en serie sencilla: sólo se requieren tres cables para comunicarse con el

reloj.

Se puede transmitir o recibir la información byte por byte o en modo Burst.

Bajo consumo de potencia: tensión de funcionamiento de 2.0 V a 5.5 V.

Utiliza menos de 300 nA a 2.0V.

Rango de temperatura: de 0 °C a +70 °C.

Este módulo tiene únicamente cinco pines:

VCC: Alimentación 5V.

GND Ground.

CLK: pin reloj.

DAT: pin de I/O, datos.

RST: reset.

Figura 12.Reloj rtcDS1302

2.3.12 Módulo Bluetooth HC-06

Para la comunicación vía móvil con el microcontrolador se ha optado por la tecnología

Bluetooth.

Page 24: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 24

El Bluetooth es un estándar de comunicación inalámbrica que permite la transmisión de

datos a través de radiofrecuencia en la banda de 2,4 GHz.

El HC 06 es un módulo de Bluetooth tipo slave. Tiene la ventaja de ser económico,

puede encontrarse fácilmente y es sencillo de configurar.

Características:

Los pines de conexión del módulo son VCC, GND, TXD, RXD, STATE Y

WAKEUP.

El led indica el estado de la conexión Bluetooth.

Tensión de alimentación3.6~~6V.

Consumo de corriente cuando no está pareado: 30mA, pareado: 10mA.

Alcance de 20 metros. Pueden ser distancias superiores dependiendo del

entorno.

Configuración mediante comandos AT.

Dimensiones :3.57cm*1.52cm

Este módulo tiene únicamente cuatro pines:

Vcc: Alimentación del módulo entre 3,6V y 6V.

GND: La masa del módulo.

TXD: Transmisión de datos.

RXD: Recepción de datos a un voltaje de 3,3V.

Figura 13. Modulo Bluetooth

2.3.13 Keypad 3×4

El accionamiento de los diferentes actuadores y la introducción de valores se realizan

mediante la integración de un teclado.

El teclado matricial es un dispositivo compuesto de una serie de pulsadores conectados

de forma matricial (en filas y columnas), el teclado posee los valores 0, 1, 2, 3, 4, 5, 6,

Page 25: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 25

7, 8, 9, *, #, estos caracteres ocupan las 12 teclas de un teclado 3×4, para que estos

teclados realicen la función de una matriz, cada casilla es asignada a una fila o a una

columna.

Características:

Dimensiones del teclado: 69,2 x 76,9 x 0,8 mm

Longitud del cable: 3-1 / 3 "o 86m

Alimentación máxima: 35VDC, 100mA

Aislamiento: 100M Omh, 100V

Auto-Adhesión

Este dispositivo utiliza 7 pines como entradas para el microcontrolador.

Figura 14.Teclado matricial

2.3.14 Variador de frecuencia

El variador de frecuencia es un convertidor de energía cuya misión es controlarla y

entregarla al motor de corriente alterna, por medio de la modulación de la frecuencia de

alimentación suministrada al mismo. Un variador de frecuencia es un caso especial de

variador de velocidad. Estos dispositivos forman parte de la familia denominada

Accionamientos en CA (AC Drives), constituida por otros equipos para el manejo de

motores de corriente alterna, tales como Partidores Suaves, que se emplean sólo para la

partida y parada de los motores, y no para modificar la velocidad en régimen

permanente.

La puesta en marcha, la regulación de velocidad o el frenado de los diferentes motores

que intervienen en los procesos agrícolas, se harán mediante el modelo Micromaster .

Page 26: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 26

2.3.14.1 Características serie Micromaster

La serie MICROMASTER es una gama de convertidores para modificar la velocidad

de motores trifásicos. Los distintos modelos disponibles abarcan un rango de potencias

desde 120 W para entrada monofásica hasta 75 kW con entrada trifásica.

Los convertidores están controlados por microprocesador y utilizan tecnología IGBT

(Insulated Gate BipoIar Transistor) de última generación. Esto los hace fiables y

versátiles. Un método especial de modulación por ancho de impulsos con frecuencia de

pulsación seleccionable permite un funcionamiento silencioso del motor. Extensas

funciones protectoras, ofrecen una protección excelente tanto del convertidor como del

motor.

Características principales:

Accionamiento de motores con una potencia comprendida entre 120W y

75Kw.

Frecuencia de salida: 0-380 Hz.

Par de puesta en parcha elevado.

Elevada precisión para regular la velocidad.

Dispone de 3 entradas digitales parametrizables y una entrada analógica.

Capacidad de control remoto con el enlace serie RS-485.

Programación de parámetros.

Parámetros predefinidos de fábrica.

Permite el control de la frecuencia de salida con diferentes procedimientos.

Posibilidad de frenado de los motores.

Incorpora una salida relé programable.

2.3.14.2 Esquema General

Page 27: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 27

Figura 15. Esquema general del convertidor Micromaster, se pueden distinguir las entradas y salidas tanto de

potencia como de control, y el panel de control.

Las partes principales de este variador son:

Panel de control: sirve para configuración de los diferentes parámetros,

visualización de las diferentes variables mediante el display y el comando del

motor gracias a las teclas de control.

Entradas analógicas, corresponden a los terminales 3 y 4. Estas entradas puede

conectarse una señal de entre 0V Y 10V, la frecuencia de salida del inversor

será proporcional al nivel de tensión que se mida en la entrada.

Entradas digitales, corresponden a los terminales 5,6y 7.Se pueden conectar

tres salidas digitales de un autómata, en este caso serán las salidas de los

diferentes relés controlados por el microcontrolador Arduino. Para realizar la

conexión a las entradas del variador, se utilizará la fuente interna de tensión de

15V cuya salida se encuentra en el terminal 8.

2.3.14.3 Programación del variador

Este modelo dispone de 85 parámetros que permiten configurar el comportamiento del

motor. A continuación, se nombrarán los principales parámetros utilizados:

P001 tipo de visualisación: permite elegir la variable que se quiera ver por la pantalla.

Page 28: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 28

P002 Tiempo de aceleración. Esta opción controla la duración desde la puesta en

marcha hasta alcanzar la velocidad de consigna deseada.

P003 Tiempo de desaceleración: permite controlar el tiempo que tardará el motor en

desacelerar su velocidad de rotación hasta el paro.

P005 Consigna de frecuencia digital: permite introducir la frecuencia a la que el motor

funcionará en condiciones nominales.

P006 Selección del origen para la consigna de frecuencia: Para habilitar las entradas

digitales o analógicas en el control de la velocidad del motor.

P007 Control del teclado: habilita las teclas frontales del variador para realizar cambios

como por ejemplo la parada, cambio de la frecuencia que alimenta a la bomba etc.

P009 Ajuste de protección de parámetros

P012 Frecuencia mínima del motor: Permite establecer una velocidad de rotación

mínima del motor.

P012 Frecuencia máxima del motor: Permite establecer un límite de velocidad máxima.

P051 Selección de la función de control:

Permite seleccionar el parámetro que será controlado mediante la activación/

desactivación del la entrada digital DIN1, los parámetros que podemos controlar son:

Deshabilitar entrada.

Giro del motor a derechas.

Giro del motor a izquierdas.

Inversión de giro.

Frecuencias fijas 1-6.

Marcha impulso horario.

Aumento de frecuencia.

Reducción de frecuencia.

Activación del freno CC.

P052 Selección de la función de control:

Permite seleccionar el parámetro que será controlado mediante la activación/

desactivación del la entrada digital DIN2, los parámetros que podemos controlar son:

Deshabilitar entrada.

Giro del motor a derechas.

Giro del motor a izquierdas.

Inversión de giro.

Frecuencias fijas 1-6.

Marcha impulso horario.

Page 29: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 29

Aumento de frecuencia.

Reducción de frecuencia.

Activación del freno CC.

P053 Selección de la función de control.

Permite seleccionar el parámetro que será controlado mediante la activación/

desactivación del la entrada digital DIN3, los parámetros que podemos controlar son:

Deshabilitar entrada.

Giro del motor a derechas.

Giro del motor a izquierdas.

Inversión de giro.

Frecuencias fijas 1-6.

Marcha impulso horario.

Aumento de frecuencia.

Reducción de frecuencia.

Activación del freno CC.

P081 Frecuencia nominal de la placa correspondiente al motor:

En este parámetro hay que introducir la frecuencia de funcionamiento nominal del

motor en Hz, definida en la placa de características de cada uno de ellos.

P082 Velocidad nominal de la placa correspondiente al motor:

En este parámetro se debe introducir la velocidad en régimen permanente del motor en

rpm, definida en la placa de características de cada uno de ellos .

P083 Intensidad nominal de la placa correspondiente al motor:

En este parámetro se debe de introducir la intensidad en régimen permanente del motor

en amperios, definida en la placa de características de cada uno de ellos.

P084 Tensión nominal de la placa correspondiente al motor:

En este parámetro se debe de introducir la tensión de alimentación del motor.

P085 Intensidad nominal de la placa correspondiente al motor:

En este parámetro se debe de introducirla potencia del motor en kW.

P086 Limite de intensidad de corriente del motor:

Expresada en % define la intensidad por sobrecarga como porcentaje de la intensidad

nominal del motor que es admisible durante un minuto como máximo.

P944 Reajuste a los valores de fábrica:

Page 30: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 30

Si se utiliza esta opción todos los valores volverán al estado predefinido de fábrica

salvo el parámetro P101.

Page 31: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 31

3 PROTOTIPO DEL SISTEMA DE CONTROL

3.1 Introducción

En este capítulo se explican las fases del diseño de la estructura física, los circuitos

electrónicos y eléctricos, el firmware y la aplicación Android diseñada para dispositivos

móviles.

En la parte física, se especificará qué solución al encapsulado se ha elegido para

proteger los diferentes circuitos que integran el sistema, frente a los agentes externos o

suciedad del ambiente. La parte eléctrica y electrónica del proyecto incluye los diseños

esquemáticos de todos los elementos involucrados en el prototipo, la estructura general

del hardware con sus módulos de sensores, actuadores y de comunicación. Para la parte

del firmware y de la aplicación para el dispositivo móvil se desarrollan todas las etapas

de la ingeniería de software y se definen la plataforma y los protocolos de comunicación

que se va a implementar.

3.2 Esquema general

A continuación, se presenta el diagrama general del sistema de control, en la figura 16,

y se procede con la descripción de la secuencia del funcionamiento del sistema

completo.

El usuario tiene dos maneras de interactuar con el sistema de control agrícola:

Mediante el teclado instalado en el panel frontal del encapsulado que contiene

toda la electrónica.

De manera remota por medio de la App. Las salidas de los diferentes relés se

activarán o desactivarán dependiendo de la opción que haya escogido el

usuario.

Figura 16. Diagrama general de la interacción de las partes del sistema y el usuario

Page 32: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 32

El mecanismo de control es capaz de controlar la iluminación de la explotación

directamente, con el accionamiento de los relés que han sido asociados a dicha tarea.

Para el control de los diferentes motores y bombas, se ha optado por la integración de

diferentes controladores de velocidad. El microcontrolador, mediante la

activación/desactivación de cinco relés, controla los tres variadores de frecuencia. Los

diferentes variadores actúan de un modo u otro, dependiendo de la acción requerida por

el usuario. Así pues, es posible controlar el encendido y apagado, sentido de giro,

velocidad y tiempo de aceleración/desaceleración de los diferentes motores eléctricos.

Se pueden supervisar las variables de operación que son: nivel de almacenamiento en el

depósito y estado de los diferentes relés en la pantalla LCD instalada.

En el esquema [7.8] muestra el diagrama de flujo del prototipo, se detalla la secuencia

de tareas que realiza el dispositivo.

3.3 Diseño del encapsulado

El prototipo se ha construido aprovechando cajas estándar para derivaciones eléctricas,

se trata de una caja estanca rectangular, de superficie y con 10 entradas. Con tapa con

tornillos, fabricado en termoplástico con IP 66 recomendado para exterior. Esta caja

dispone de espacio suficiente para el hardware de interfaz.

La caja ha requerido algunas modificaciones para permitir la conexión de alimentación,

señales desde el exterior o la integración del LCD y teclado.

La integración ha presentado varios retos interesantes, porque es necesario garantizar

que el sistema integrado no sufre interferencias debido a la proximidad de los cables y

dispositivos entre sí. Esto es especialmente importante para las conexiones que

gobiernan los relés (dos de los cuales, gobiernan los puntos de luz que están conectados

a la línea eléctrica de la explotación .Para asegurar el correcto funcionamiento, las

salidas de los relés y los cables que conectan a los diferentes periféricos del sistema

tienen distintas salidas físicas hacia el exterior del encapsulado de otro modo, el modulo

que contiene los ocho relés, está ubicado lo mas lejos de los otros componentes ,en la

parte inferior de la caja de derivación.

En un lateral superior de la caja se ha dispuesto todas las líneas de los conectores de

alimentan a los diferentes dispositivos electrónicos: sensores, modulo Bluetooth, LCD

etc. Y las líneas de comunicación I2C que conecta el microcontrolador con el teclado y

LCD.

Además, el conjunto a dado un cierto grado de robustez al sistema aparte de un sellado

seguro.

Page 33: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 33

Figura 17. Vista frontal del encapsulado con el sistema integrado en su interior

Page 34: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 34

Figura 17. Vista posterior de la tapadera del encapsulado con el sistema integrado en su interior

Page 35: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 35

Figura 18. Vista interior del encapsulado con el sistema integrado

En los esquemas [7.2.1.2 y 7.2.2] se encuentra el encapsulado con los componentes

integrados en su interior.

Page 36: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 36

3.4 Diseño electrónico del sistema

En las siguientes secciones se desarrolla el diseño electrónico divido en cuatro partes:

controlador, sensores, actuadores y comunicación.

3.4.1 Estructura General del Hardware

La siguiente figura presenta el esquema general del hardware del sistema de control. En

el diagrama de bloques se pueden visualizar los cuatro módulos que componen el

control electrónico del sistema implementado.

Figura 19: Esquema general del Hardware

El controlador contiene el núcleo del proyecto que es el encargado de procesar la

información proveniente de los sensores, actuadores, y los datos remotos recibidos por

el módulo de comunicación Bluetooth. El módulo de sensores está conformado por: dos

pares de sensores PIR que van a estar ubicados en el exterior. De este modo, cuando

detecten presencia y se den las condiciones horarias, el controlador dará la señal de

activación del punto de luz asociado al sensor PIR correspondiente, un tercer sensor

PIR para asegurar el cierre de la puerta de acceso en condiciones de seguridad, en caso

de que algún objeto cruce la trayectoria durante el proceso de cierre, se detendrá hasta

nueva orden. El sensor por ultrasonidos deberá de ser instalado en la parte interior de la

tapa del depósito de agua para el monitoreo del nivel de superficie. Por último,

localizado dentro del encapsulado, estará el sensor de temperatura y humedad cuyos

datos serán mostrados en la LCD.

El número de actuadores controlados incluyendo los variadores de frecuencia, son ocho:

Page 37: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 37

-Dos electrobombas trifásicas, para el caso concreto de la parcela de estudio, una de

ellas están situada dentro del pozo a una profundidad de once metros y la otra una

bomba de superficie, está ubicada a nivel de superficie anclada al borde del perímetro

del pozo.

- Un motor trifásico, que debe realizar la apertura y cierre de la puerta de acceso, tres

variadores que actúan sobre el motor y las electrobombas.

-Por último, ubicados a lo largo de la explotación, dos puntos de luz.

El módulo de comunicación como ya se ha descrito en el capítulo (poner capítulo

correspondiente) usa la tecnología Bluetooth para la comunicación entre la App

instalada en el móvil y el sistema de control.

3.4.2 Módulo de control

La temporización de eventos durante el año o el área de la interacción persona-

microcontrolador requiere de elementos auxiliares conectados al microcontrolador.

Está formado por un teclado matricial 3x4, un reloj RTC de alta precisión, una pantalla

LCD vía I2C de 2x16 caracteres y el núcleo del sistema que contiene el firmware.

Concretamente se trata del microcontrolador Arduino Uno SMD.

El diagrama esquemático del conexionado se encuentra en los anexos [7.3 y 7.4], como

se puede visualizar en diagrama. El uso del PCF8574 vía I2C, ha reducido al mínimo el

número de pines ocupados por este dispositivo.

3.4.3 Módulo de sensores

Las variables que el sistema necesita conocer en todo momento para satisfacer los

requerimientos de diseño, requieren captar una serie de magnitudes físicas que implican

una colección de sensores. Para ello, se han seleccionado las mejores soluciones para

los diferentes casos, teniendo en cuenta los criterios de diseño.

Los diferentes parámetros que el sistema habrá de captar son:

-Nivel del depósito de agua,

- Temperatura y humedad,

- Presencia de movimiento en distintas áreas de la explotación.

Esta parte del sistema está formado por: el sensor de temperatura y humedad DHT-11,

tres sensores de presencia PIC. El diagrama esquemático del circuito se encuentra en los

esquemas [7.3 y 7.4].

Page 38: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 38

3.4.4 Módulo de Actuadores

Las diferentes tareas serán realizadas por los actuadores: el motor y las bombas

trifásicas y los puntos de luz o relés que están asociados a ellos. El diagrama

esquemático se encuentra en [7.3 y 7.4], el esquema de fuerza en [7.5], y el esquema de

control en [7.6].

Se distingue en primer lugar, el conexionado del microcontrolador con las conexiones

internas que requiere el control de los relés. En segundo lugar, se muestra el esquema de

fuerza y control; en éste, se visualiza la interacción de los relés controlados por el

microprocesador, conectados a las diferentes entradas de los convertidores de

frecuencia. En el caso de los puntos de luz, los relés controlan directamente la apertura

y cierre de la iluminación. El módulo de actuadores utiliza únicamente las entradas de

control de la tarjeta que contiene los ocho relés.

Para cerrar el circuito de potencia de cada relé, es necesario desenergizar la bobina de

su interior (tensión en puerto de control nula). Por el contrario, si se quiere abrir el

circuito de potencia tiene que haber una señal alta (5 V), en el puerto de control

Todos los circuitos que utilizan los relés se harán mediante la utilización de los

contactos NA (normalmente abiertos).

Relé nº Función asociada

1 Activar/desactivar la bomba de riego.

2 Activar la bomba de suministro de agua, en la

vivienda (máximo caudal).

3 Reducir ½ la frecuencia de alimentación, del

motor que suministra agua a la vivienda (½

del máximo caudal).

4 Activar la apertura de la puerta (giro a

derechas del motor).

5 Activar el cierre de la puerta (giro a izquierdas

del motor).

6 Encender/apagar luces exteriores.

Tabla 2. Acciones asociadas a los reles

3.4.5 Módulo de Comunicación

El sistema podrá conectarse al dispositivo móvil del usuario usando el protocolo de

comunicaciones Bluetooth. El microcontrolador seleccionado soporta este tipo de

tecnología y dispone de dos puertos encargados de la transmisión y recepción de datos,

Tx y Rx respectivamente. Estos pines corresponden al pin digital D0 Y D1.

El dispositivo HC-06, por su coste y fiabilidad, se presenta como una excelente

solución. La información de la configuración de este dispositivo se encuentra en el

anexo [6.1].

Page 39: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 39

3.4.6 Asignación de los puertos de Arduino

Los diferentes módulos citados en los sub-apartados anteriores requieren de las

diferentes entradas y salidas del microcontrolador.

A continuación, se adjunta una tabla donde se puede ver cada pin de la placa,

especificando su función, naturaleza del pin, función de entrada o de salida.

Nº Pin

Funció

Digital/Analógico

Salida/Entrada

A0 Control relé nº5 Analógico Salida

A1 Control relé nº6 Analógico Salida

A2 Salida segundo

sensor PIC

Analógico Entrada

A3 Salida primer sensor

PIC

Analógico Entrada

A4 Comunicación I2C ,

puerto SDA

Analógico Entrada

A5 Comunicación I2C ,

puerto SCL

Analógico Salida

D0 Comunicación

Bluetooh, RX

Digital Entrada

D1 Comunicación

Bluetooh, TX

Digital Salida

D2 Control relé nº1 Digital Salida

D3 Control relé nº2 Digital Salida

D4 Control relé nº3 Digital Salida

D5 Control relé nº4 Digital Salida

D6 Final de carrera Digital Entrada

D7 Puerto Trig.

ultrasonidos

Digital Salida

D8 Puerto Echo.

ultrasonidos

Digital Entrada

D9 Sensor presencia

puerta acceso.

Digital Entrada

D10 Puerto CLK reloj rtc. Digital -

D11 Puerto DAT reloj rtc. Digital Entrada

D12 Puerto RST reloj rtc. Digital Salida

D13 Señal digital sensor

DHT 11

Digital Entrada

Tabla 3. Tabla de asignación de los puertos del microcontrolador.

Page 40: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 40

Como se desprende de la tabla anterior, todos los puertos de conexión que dispone este

modelo de controlador, han sido utilizados por un elemento u otro, aprovechando al

máximo las posibilidades que ofrece el modelo de placa escogido.

3.5 Configuración de los componentes integrados

Algunos elementos seleccionados requieren ser calibrados y configurados para su

correcta integración y funcionamiento. Seguidamente, se detallarán los pasos seguidos y

la estructura final de cada elemento.

3.5.1 Dispositivo Bluetooth

La configuración de este dispositivo es necesaria para establecer el nombre que

representará al módulo de comunicación, cuando se rastree su señal en el móvil y así

sincronizar los dispositivos. Por otra parte, el modulo Bluetooth solicitará una clave de

acceso al móvil para establecer conexión y, finalmente, la velocidad de transmisión de

la información.

Mediante el envió de comandos AT enviados desde el IDE de Arduino, es posible

modificar diferentes parámetros. El conexionado del microcontrolador junto con los

pasos seguidos se encuentra detalladamente explicado en el anexo [6.1].

A continuación, se puede ver la tabla resumen de los comandos AT utilizados, su

función y la configuración adoptada:

Comando utilizado Función Datos de

configurado

Explicación

AT+BAUD< > Establece la

velocidad de

conexión con el

microcontrolador.

9600 Este valor de 9600

baudes es un valor típico

de velocidad aunque

otros valores también

son compatibles.

AT+NAME<Nombre> Asigna un

nombre al

dispositivo

Bluetooth.

Proyecto

URV

Establecemos el nombre

de “controlador” para su

identificación .

AT+PIN<9025> Configurar el

código PIN de

emparejamiento.

9025 El usuario tendrá que

introducir la contraseña

de 4 dígitos,para

establecer la

comunicación.

Tabla 4. Comandos AT de configuración del dispositivo Bluetooth

Page 41: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 41

.

3.5.2 Sensores de presencia

En este proyecto se utilizan tres sensores de este tipo, dos para el circuito de

iluminación exterior y uno para el sistema de cierre de la puerta. Estos dispositivos

tienen en su estructura dos potenciómetros para calibrar la duración del puso de salida y

la sensibilidad.

En los siguientes subapartados se detalla la posición de los diferentes potenciómetros de

cada sensor de presencia PIR.

Calibración del sensor PIR

Básicamente, el sensor requiere un tiempo de preparación para comenzar a tomar

lecturas de forma adecuada. Esto se debe a las condiciones de adaptación de las

operaciones al ambiente para las cuales fue instalado. El tiempo de calibración varía

entre los 10 y 60 segundos. Esta calibración sucederá cada vez que se conecte o reinicie

el prototipo.

3.5.2.1 Configuración del sensor PIR

En el circuito impreso del sensor, hay soldados 2 potenciómetros y un jumper que nos

permiten modificar su comportamiento y adaptarlo a nuestras necesidades, permitiendo

el ajuste del rango de detección y el tiempo de duración de la señal de salida una vez

detectado movimiento.

Figura 20. Ubicación de los potenciómetros para la configuración interna del dispositivo

Nivel de sensibilidad: el potenciómetro situado a la derecha, establece el nivel de

sensibilidad del sensor. Para establecer cuál es la mejor posición, existen factores que

han de tenerse en cuenta. Para el caso de la explotación agraria donde se quiere

implementar el sistema, la existencia de animales como perros y gatos puede activar el

Page 42: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 42

sensor cuando no es el objetivo que se busca. En todo caso, se han de realizar una serie

de pruebas y ajustes hasta encontrar la posición que satisfaga al usuario.

Duración del pulso de consigna: ajustando el potenciómetro izquierdo, controlamos la

duración del pulso digital que el pin de salida del sensor envía al sistema de control. En

el algoritmo de programación del micro, la duración del encendido siempre tendrá un

pequeño incremento provocado por la duración del pulso del propio sensor. De este

modo, se requiere que la duración del pulso que genera el PIR, sea lo más corta en el

tiempo.

En todos los sensores de presencia, la posición del potenciómetro izquierdo ha de ser

la que garantice una mínima duración del pulso en el pin de datos, una rotación

antihoraria hasta el tope.

En la detección y apertura de las luces, la posición el potenciómetro derecho, no ha de

situarse al máximo valor de la resistencia, debido a la presencia de pequeños animales o

aves que pueden interferir y activar el sensor. Experimentalmente, la mejor posición

posible, es dar una rotación de entre 140º y 150º.

En el caso del cierre de la puerta de acceso, por seguridad, se calibra el potenciómetro

de su derecha en sentido horario hacia el tope del extremo.

Figura 21. Posición de configuración de los dos potenciómetros, sistema de iluminación

Figura 22. Posición de configuración del potenciómetro, sistema de cierre acceso

3.5.3 Variadores de frecuencia

Page 43: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 43

El modelo Micromaster permite la configuración de los diferentes parámetros mediante

la pantalla y las teclas ubicadas en el panel frontal. Es capaz de configurar sus entradas

digitales en función del estado lógico en que se encuentren (15 V o 0 V) e interpreta una

instrucción previamente configurada.

Dependiendo de la tarea que realiza el motor eléctrico, las entradas digitales serán

configuradas de un modo u otro, implicando un comportamiento concreto al motor

eléctrico que controla.

Seguidamente, se justificará y detallará la configuración elegida para cada una de las

tareas que se especifican en los requerimientos en la fase de diseño.

3.5.3.1 Control del riego

La ventaja que integrar este dispositivo en el control de riego radica en aumentar la vida

útil de la instalación, la bomba sumergida y los diferentes elementos que forman la

canalización para evacuar el agua.

Un arranque suave de la bomba de extracción de agua reduce los picos de corriente que

se producen en el arranque del motor así como los esfuerzos mecánicos producidos por

los cambios de presión dentro de las tuberías, evitando el efecto golpe de ariete. Por otra

parte, en el paro de la bomba, también habrá una desaceleración controlada.

Para lograr este objetivo, se ha fijado el tiempo de aceleración/desaceleración, desde la

puesta en marcha hasta alcanzar la velocidad de régimen permanente del motor, o, en el

caso de la desaceleración, desde que se da la consigna de paro hasta que el motor se

para completamente.

A continuación, se exponen los valores introducidos y los programas configurados en

el variador de frecuencia que permiten cumplir los requisitos de diseño:

Nº programa Valor introducido Descripción

002 5 El motor de riego tendrá un

arranque suave que tardará 5

segundos en alcanzar las

condiciones nominales de

funcionamiento.

003 10 El motor de riego tendrá una

parada suave, tardará 10

segundos en alcanzar el paro

por completo.

005 50 Establecemos la frecuencia a

la que funcionará el

convertidor.

006 0 Seleccionamos la frecuencia

de origen programada en

P005.

007 0 Establecemos el control del

variador mediante las

Page 44: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 44

entradas digitales (DIN1,

DIN2, DIN3).

051 1 Establecemos el DIN1 como

encendido del motor a

derechas.

052 0 Desactivada entrada DIN 2.

053 0 Desactivada entrada DIN 3.

081 50 Establecemos frecuencia

nominal motor (Hz).

082 1500 Establecemos velocidad

nominal del motor (rpm)

083 5,1 Establecemos corriente

nominal del motor (A)

084 400 Establecemos tensión

nominal motor. (V)

085 1,1 Establecemos potencia

nominal motor (kW)

Tabla 5. Configuración del variador de frecuencia , riego

3.5.3.2 Control del nivel depósito

El llenado del depósito, al igual que sistema de riego, está formado por el motor

trifásico que extrae líquido y el sistema de canalización hasta el depósito, donde se

almacenará el agua para su uso posterior en diferentes aplicaciones, con el añadido de

que, en este caso, por medio del sensor de ultrasonidos, se ha de controlar el nivel de

agua en todo momento y llenar el depósito, en caso de no superar el nivel mínimo de

altura.

Nº programa Valor introducido Descripción

002 5 El motor de riego tendrá un

arranque suave que tardará 5

segundos en alcanzar las

condiciones nominales de

funcionamiento.

003 10 El motor de riego tendrá una

parada suave, tardará 10

segundos en alcanzar el paro

por completo.

005 50 Establecemos la frecuencia a

la que funcionará el

convertidor.

006 0 Seleccionamos la frecuencia

de origen programada en

P005.

007 0 Establecemos el control del

variador mediante las

entradas digitales (DIN1,

DIN2, DIN3).

012 25 Ajustamos la Frecuencia

mínima de funcionamiento

Page 45: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 45

para tener dos velocidades de

llenado del depósito.

013 50 Frecuencia máxima del motor

051 1 Establecemos el DIN1 como

encendido del motor a

derechas.

052 12 Cuando esta entrada se active,

el variador proporcionará una

frecuencia menor establecida

en P012.

053 0 Desactivada entrada DIN 3.

081 50 Establecemos frecuencia

nominal motor (Hz).

082 1500 Establecemos velocidad

nominal del motor (rpm)

083 4,3 Establecemos corriente

nominal del motor (A)

084 400 Establecemos tensión

nominal motor. (V)

085 0,8 Establecemos potencia

nominal motor (kW)

Tabla 6. Configuración del variador de frecuencia, suministro de agua en la vivienda

Debido a la sección más reducida del sistema de tuberías en comparación con el sistema

de riego, los cambios de presión y los esfuerzos mecánicos soportados son mayores. El

variador de frecuencia controlará la duración de la aceleración del actuador para evitar

que, tanto los picos de corriente en la activación de la bomba como las variaciones de

presión que se generan dentro de los conductores que canalizan el agua, sean lo más

pequeños posibles, dentro de un tiempo razonable, hasta llegar al régimen permanente

de funcionamiento.

De todos modos, para tener mediciones más correctas del nivel de agua del depósito,

cuando la distancia entre el sensor por ultrasonidos y la superficie del agua sea inferior a

80 Cm, la bomba proporcionará un flujo de agua más reducido, minimizando los errores

de lectura del sensor.

Seguidamente, se expone los valores introducidos y los programas configurados en el

variador de frecuencia que permiten cumplir los requisitos.

3.5.3.3 Control puerta acceso

El control de la apertura y cierre de la puerta de acceso implica un cambio de sentido de

giro en el motor, la integración de un variador de frecuencia controlada por el

microcontrolador. Además, el cambio de sentido de giro ha de permitir la integración

de un sensor de presencia PIR para efectuar el control de forma segura.

Page 46: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 46

En la siguiente tabla, se exponen los valores introducidos y los programas configurados

en el variador de frecuencia que permiten cumplir los requisitos:

Nº programa Valor introducido Descripción

002 5 El motor de riego tendrá un

arranque suave que tardará 5

segundos en alcanzar las

condiciones nominales de

funcionamiento.

003 10 El motor de riego tendrá una

parada suave, tardará 10

segundos en alcanzar el paro

por completo.

005 50 Establecemos la frecuencia a

la que funcionará el

convertidor.

006 0 Seleccionamos la frecuencia

de origen programada en

P005.

007 0 Establecemos el control del

variador mediante las

entradas digitales (DIN1,

DIN2, DIN3).

012 50 Ajustamos la Frecuencia

mínima de funcionamiento,

en esta tarea no se requiere de

cambio de velocidad

013 50 Frecuencia máxima del motor

051 1 Establecemos el DIN1 como

encendido del motor a

derechas.

052 2 Establecemos el DIN2 como

encendido del motor a

izquierdas.

053 0 Entrada Din 3 desactivada

081 50 Establecemos frecuencia

nominal motor (Hz).

082 1500 Establecemos velocidad

nominal del motor (rpm)

083 2,6 Establecemos corriente

nominal del motor (A)

084 400 Establecemos tensión

nominal motor. (V)

085 0,4 Establecemos potencia

nominal motor (kW)

Tabla 7. Configuración del variador de frecuencia , puerta acceso

Page 47: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 47

3.5.4 Configuración Reloj RTC

Este dispositivo nos permite trabajar con un reloj de tiempo real, que no olvidará la hora

a menos que la pila se agote. En este caso, se perdería toda la configuración y volvería

al estado de fábrica. Para la temporización de las diferentes tareas, es necesario

configurar la fecha y hora.

La configuración de este dispositivo se hace mediante el microcontrolador junto con el

código de programación. Una vez subido el código y ejecutado el algoritmo, el reloj ya

es capaz de proporcionar la hora y fecha actual al sistema de control.

Tanto el código de programación como los pasos seguidos se encuentran al anexo [6.2].

3.6 Interfaz de usuario

Seguidamente, se detallarán los dos modos de comunicación que dispone el prototipo.

En primer lugar, la interfaz remota vía Bluetooth con la explicación detallada de todo el

proceso de diseño de la App y posteriormente, los diferentes menús y submenús de la

interfaz local.

3.6.1 Diseño de la aplicación móvil con App Inventor

App Inventor es un entorno de desarrollo de aplicaciones para dispositivos Android. Se

basa en un servicio web que te permite almacenar en la nube el proyecto y realiza un

seguimiento de sus proyectos. El programa tiene dos partes, en primer lugar Designer,

se implementa la Interfaz de usuario, eligiendo y situando los elementos con los que

éste interactuará, y los componentes que utilizará la aplicación. En el Blocks Editor, se

definirá el comportamiento de los componentes de tu aplicación.

La App del dispositivo móvil transmite valores vía Bluetooth al módulo HC-06. Este

último recibe el dato digital y, se lo envía por el transmisor/receptor digital al Arduino.

El microcontrolador mediante el código de programación, interpreta el valor recibido

como una instrucción. En todo caso activara o desactivara las salidas digitales que

gobiernan los relés y así realizar las diferentes tareas que ya se han descrito en capítulos

anteriores.

Como ya se ha hecho mención, la App del dispositivo móvil enviará diferentes valores

al módulo HC-06. Para este diseño se han elegido números, del 1 al 8. Cada uno de

ellos será interpretado por el sistema de la siguiente forma:

Page 48: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 48

Valor enviado/recibido Función asociada en el sistema

1 Encender motor de riego:cerrar el circuito de

potencia del relé nº1 dando la señal al variador

para la puesta en marcha suave de la bomba.

2 Paro del motor de riego: abrir el circuito de

potencia del relé nº1 dando la señal al variador

para la el paro suave de la bomba.

3 Encender motor del llenado del depósito: cerrar el

circuito de potencia del relé nº2 dando la señal al

variador para la puesta en marcha controlada de la

bomba .

4 Apagar motor del llenado del depósito: Abrir el

circuito de potencia del relé nº2 o nº3,en función

del nivel del agua del depósito, dando la señal al

variador para el paro suave de la bomba .

5 Abrir puerta de acceso: cerrar el circuito de

potencia del relé nº4 dando la señal al variador

para la puesta en marcha del motor (giro a

derechas) .

6 Cerrar puerta de acceso: cerrar el circuito de

potencia del relé nº5 dando la señal al variador

para la puesta en marcha del motor (giro a

izquierdas) .

7 Encender luces exteriores : Se activarà el relé nº6

que corresponde a los 2 puntos de luz , cerrando el

circuito de iluminación.

8 Apagar luces del exterior: Abrir el circuito de

potencia del relé nº6, corresponde a los 2 puntos

de luz , abriendo el circuito de iluminación.

Tabla 8. Configuración del la aplicación móvil

Page 49: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 49

3.6.1.1 Designer

En Designer, se implementa la Interfaz de usuario, eligiendo y situando los elementos

con los que éste interactuará, y los componentes que utilizará la aplicación.

La idea es disponer de 9 botones en la App del móvil para el manejo del sistema. Las

teclas tendrán implicadas un comportamiento en la aplicación que enviará un dato

numérico para cada caso.

Selección del botón. Nombre asociado. Dato enviado al sistema de

control/función.

Tecla 1 Conectar Establecer conexión con el

HC-06

Tecla 2 Activar riego Enviará el dato

numérico: 1

Tecla 3 Desactivar riego Enviará el dato

numérico: 2

Tecla 4 Activar llenado depósito

agua

Enviará el dato

numérico: 3

Tecla 5 Desactivar llenado depósito

agua

Enviará el dato

numérico: 4

Tecla 6 Abrir puerta de acceso Enviará el dato

numérico: 5

Tecla 7 Cerrar puerta de acceso Enviará el dato

numérico: 6

Page 50: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 50

Tecla 8 Encender luces de exterior Enviará el dato

numérico: 7

Tecla 9 Apagar luces de exterior Enviará el dato

numérico: 8

Tabla 9. Configuración del las teclas de la aplicación móvil

La colocación de los diferentes botones es sencilla. Desde la interfaz de la App

Inventor, seleccionamos el elemento “Button” y lo situamos en la posición que ocupará

en la pantalla de dicha App. Finalmente, la interfaz constará de nueve botones y sólo

hará falta programar cada tecla.

Figura 23. Diseño de la interfaz remota

Page 51: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 51

3.6.1.2 App Inventor Blocks Editor

En el “Blocks Editor”, se definirá el comportamiento de los componentes de la

aplicación. Cada bloque utilizado, involucra un cierto código de programación,

facilitando y agilizando el proceso de creación de la App. En la interfaz, se distinguen

todos los tipos de bloques con su color característico.

3.6.1.3 Análisis del diseño de bloques

En la creación de la App, hay que tener en cuenta lo que ha de pasar antes y después de

sincronizarse con el dispositivo móvil, es decir, dos estados: antes de presionar el botón

conectar, y después. Para eso, se utilizarán las instrucciones

“BeforePicking/AfterPicking”.

Antes de establecer conexión con el sistema de control de la explotación agraria, la

aplicación debe de buscar todos los dispositivos dentro de su área.

Figura 24. Bloques de programación nº1

En la figura 24, el comando BeforePicking buscará todos los dispositivos y mostrará al

usuario todos los nombres asociados a estos.

Siguiente paso: cuando el usuario haya seleccionado el dispositivo, en nuestro caso el

HC-06, la instrucción AfterPicking ,figura 25, permite establecer el estado de la App

después de la selección del dispositivo.

Figura 25.Bloques de programación nº2

Configuración de los botones:

Para que el controlador del sistema de control active o desactive los diferentes relés

mediante el uso de la aplicación, hace falta que la App le envíe los diferentes datos: en

este caso números.

Asociaremos un número a cada botón que se ha creado en Designer de la siguiente

manera:

Page 52: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 52

Figura 26. Bloques de programación nº3

En la figura 26, establecemos el valor que será enviado al HC-06 cuando el usuario

haga clic en “Button1”, en este caso se enviará el valor “1” para desactivar el relé nº1

que controla la entrada digital nº1 del variador de frecuencia del motor de riego.

Para las diferentes teclas de la aplicación se hará un duplicado del bloque cambiando el

botón asociado y el tipo de dato que será enviado, teniendo en cuenta la tabla de

asignaciones anterior.

Figura 27.Conjunto de los bloques de programación asociados a cada botón

3.6.1.4 Conclusiones App desarrollada

La aplicación desarrollada cumple todos los puntos establecidos por el diseño del

sistema, permitiendo la ejecución de todas las tareas de forma remota. La interfaz es

sencilla y directa con los botones justos para el control de la explotación agraria.

El tamaño de la aplicación móvil es de unos 3.7 MB.

Page 53: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 53

3.6.2 Interfaz local de usuario

Los esquemas [7.7.1, 7.7.2, 7.7.3 y 7.7.4], muestran las alternativas que ofrece la

interfaz local de usuario. Se despliega cada pantalla de las opciones del modo de

operación del sistema de control automático y las flechas indican el sentido de

navegación en la interfaz hombre-máquina. Este sistema de interfaz permite la

navegación a través de los diferentes menús con el uso de tres teclas del teclado

matricial:

Tecla Función

*

Volver al menú principal.

0 Navegación entre los

diferentes menús.

# “Enter” Entrar en el menú

actual.

1,2,3,4,5,6,7,8,9 Configurar variables del

sistema, ej.: altura del

depósito.

Tabla 10. Función de las teclas, interfaz local

3.6.2.1 Menú principal

La pantalla “menú principal” es la primera que se muestra cuando se inicializa el

sistema. Se muestra en la pantalla LCD, en esta pantalla se visualizan diferentes

parámetros, como la temperatura, riego y la hora actual, además de visualizar las

acciones que se estén realizando.

3.6.2.2 Menú control riego

En el segundo menú (cuando se pulsa una vez la tecla “0”), el usuario puede presionar

los botones que se indican a continuación:

1) Activar la bomba.

2) Desactivar bomba.

3) Salir al menú principal.

Page 54: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 54

Para la temporización del motor de riego, a igual que el motor del depósito de agua

tiene un menú dedicado exclusivamente a su temporización, (debido a que se ha

considerado un parámetro que constantemente puede variar), se simplifica y agiliza el

proceso de temporización.

3.6.2.3 Menú control depósito

En el segundo menú, (cuando se pulsa por segunda vez la tecla “0”), el usuario puede

presionar los botones que se indican a continuación:

1) Llenar depósito.

2) Desactivar llenado de depósito.

*) Salir al menú principal.

Para la temporización del motor del depósito, como en el caso del motor de riego, tienen

un menú dedicado exclusivamente a su temporización.

3.6.2.4 Menú temporizador bomba riego

En el tercer menú, (cuando se pulsa por tercera vez la tecla “0”), el usuario visualizará,

en el caso de que se haya temporizado el riego en la explotación, la hora de inicio y hora

final de la temporización. Pulsando la tecla #, el sistema pedirá los valores horarios

necesarios de inicio y final de la temporización para finalmente volver al menú

principal.

3.6.2.5 Menú temporizador bomba depósito

En el cuarto menú, (cuando se pulsa por cuarta vez la tecla “0”), el usuario visualizará,

en el caso que se haya temporizado el llenado del depósito, la hora de inicio y hora final

de la temporización. Pulsando la tecla #, el sistema pedirá los valores horarios

necesarios de inicio y final de la temporización para finalmente volver al menú

principal.

3.6.2.6 Menú Parámetros depósito

En el quinto menú, (cuando se pulsa por quinta vez la tecla “0”), la LCD visualizará el

nivel actual del depósito junto con el Enunciado “Parámetros del depósito”. Si se pulsa

#, el usuario podrá configurar el parámetro de la altura del depósito, mediante la

pulsación de la tecla “4”. Las medidas introducidas de altura son unidades de cm.

Page 55: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 55

3.6.2.7 Menú Control iluminación

En el sexto menú, (cuando se pulsa por sexta vez la tecla “0”), el LCD muestra el

menú del control de iluminación. Si se pulsa #, el usuario tiene la posibilidad de

temporizar la activación/desactivación (tecla 3) o encender/apagar directamente la línea

de iluminación. (Tecla: 1 y 2 respectivamente).

1) Activar luces.

2) Desactivar luces.

3) Temporización luces.

*)Salir al menú principal.

3.6.2.8 Menú control puerta acceso

En el séptimo menú, (cuando se pulsa por séptima vez la tecla “0”), el LCD muestra el

menú de acceso. El usuario puede, si se pulsa #, abrir o cerrar la apertura de la puerta,

presionando los botones que se indican a continuación:

1) Abrir puerta.

2) Cerrar puerta.

*) Salir al menú principal.

3.7 Particularidades del sistema en parcela de estudio

Integrar el sistema de control en la parcela añade un grado de dificultad y requiere

superar distancias físicas. A continuación, se detallan las particularidades de la parcela

que afectan a cada componente y la solución adoptada.

3.7.1 Instalación del los sensores de movimiento en los puntos de luz

La longitud del lugar donde se pretende instalar el prototipo hasta los dos puntos de luz,

es de 20 y 25 metros respectivamente. Dicha longitud implica una caída de tensión.

Para este caso, el sensor de movimiento se alimenta a 5 V y tiene un consumo de 50µA.

En cualquier caso, la caída de tensión será mínima pero de igual manera se corroborará.

Page 56: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 56

Longitud

(m)

Tensión

alimentación

Consumo de

corriente

Sección cable

(mm2)

Caída de

tensión (V)

Caída de

tensión (%)

20 5V 50*10-6 A 0.75 47*10-6 ≥ 0.1 %

25 5V 50*10-6ª 0.75 60*10-6 ≥ 0.1 %

Tabla 11. Caída de tensión sensor presencia, puntos de luz

Se utilizará un cable de sección 0.75mm2 para todos los pines de los dos sensores.

En el esquema [7.7.5] se muestra la posición y el alcance de detección de estos

dispositivos implantados en la parcela de de estudio.

3.7.2 Instalación del sensor de ultrasonidos

La longitud del lugar desde donde se pretende instalar el prototipo hasta la tapa del

depósito en el cual se debe de instalar el sensor, es de 32 metros. Dicha longitud implica

una caída de tensión. Para este caso, el sensor de movimiento se alimenta a 5 V y tiene

un consumo de 15 mA. En cualquier caso, la caída de tensión será mínima pero de igual

manera se revisará.

Longitud

(m)

Tensión

alimentación

Consumo de

corriente

(A)

Sección

cable

(mm2)

Caída de

tensión

(V)

Caída de

tensión (%)

55 5V 0.135 0.75 35*10-3 0.7 %

Tabla 12. Caída de tensión sensor ultrasonidos

Se utilizará un cable de sección 0.75mm2 para todos los pines del sensor.

3.7.3 Instalación del sensor detector de presencia en la puerta de acceso

La longitud desde donde se pretende instalar el prototipo hasta la puerta de acceso en el

cual se debe instalar el sensor, es de 55 metros. Dicha longitud implica una caída de

tensión. El sensor de movimiento se alimenta a 5 V y tiene un consumo de 15 mA. La

caída de tensión será mínima pero de igual manera se corroborará.

Page 57: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 57

Longitud

(m)

Tensión de

alimentación

Consumo

de

corriente

(A)

Sección

cable

(mm2)

Caída de

tensión

(V)

Caída de

tensión

(%)

55 5V 0.15 0.75 40*10-3 0.8 %

Tabla 13. Caída de tensión sensor presencia,puerta acceso

Page 58: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 58

4 PRESUPUESTO

En este apartado se presenta una estimación detallada de los costes de realización del

sistema de control implementado en este proyecto fin de grado.

Para el cálculo del presupuesto, se deben tener en cuenta los siguientes aspectos:

Los costes que se mostrarán estarán expresados en Euros.

Se tomarán dos decimales para las cantidades económicas, redondeando en el

caso de que sea necesario.

En el presente documento se especifican los costes asociados a la elaboración del

proyecto “sistema de control automático en una explotación agrícola”, así como los

costes relacionados con la implementación del prototipo. Los costes de los diferentes

elementos, se encuentran desglosados en diferentes grupos:

4.1 Material integrado en el prototipo

Componente Unidades Precio unitario

(€/u)+IVA

Total acumulado

Arduino Uno SMD 1 4.95 4.95

Detector

movimiento PIC

HC-SR501

3 1.35 4,05

Sensor Ultrasonidos

HC-SR04

1 1,00 1,00

Sensor temperatura

y humedad DHT 11

1 1.99 1.99

LCD I2C 1 2.50 2.50

Reloj RTC DS1302 1 1.20 1.20

Módulo Bluetooth

HC-06

1 3.90 3.90

Keypad

3x4

1 2.60 2.60

Interruptor final de

carrera

1 2,15 2,15

HUB USB 2.0 1 5.99 5.99

Conectores

alimentación e I2C

6 0.75 4.50

Caja de conexiones 1 3.75 3.75

Cable USB 2 2.00 4.00

Jumpers 94 0.13 7.00

Elementos de

fijación

componentes

electrónicos

16 0.05 0.80

Page 59: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 59

Variador de

frecuencia

Micromaster

3 327,71€ 983.13

TOTAL 1033.51

Tabla 14. Presupuesto material integrado en el prototipo

4.2 Material auxiliar

Componentes Unidades Precio unitario

(€/u)+IVA

Total acumulado

(€)

Destornillador 2 2.50 5,00

Cableado utilizado

durante el desarrollo del

prototipo

12 0.20 2,40

Transformador USB 1 4.99 4.99

Alargador USB 1 6,00 6,00

Pinzas cocodrilo 8 0.30 2,40

Total 20,79

Tabla 15. Presupuesto material auxiliar

4.3 Mano de obra

Tabla 16. Presupuesto mano de obra

4.4 Presupuesto total

Coste asociado Precio(€)

Material integrado en el prototipo 1033,51

Material auxiliar 20,79

Mano de obra 18.000,00

Total proyecto 19.054,30

Tabla 17. Presupuesto total

5 CONCLUSIONES

El proyecto realizado en este documento llamado “sistema de control automático para

una explotación agrícola” consiste en el desarrollo de un prototipo que pueda realizar

las tareas más comunes, control de la iluminación, automatización del riego, del

Personal €/hora Horas utilizadas Total integrante €

Ingeniero eléctrico 60 300 18000,00

TOTAL 18000,00

Page 60: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 60

suministro de agua o la apertura y cierre de la puerta de acceso, de manera programada

y que se puedan controlar tanto localmente como a distancia, desde un dispositivo

Android.

La estructura física del prototipo consta de una caja de derivación donde se integran la

gran mayoría de componentes. Esta estructura satisface la normativa

internacional CEI 60529 Degrees of Protection, dando una robustez al sistema y

proporcionando un aislamiento aceptable frente a los diferentes agentes externos.

Acoplado a la estructura, se encuentra el hardware del sistema que compone los

circuitos electrónicos diseñados para el funcionamiento del sistema automático. El

hardware está dividido en 4 módulos: Controlador, Sensores, Actuadores y

Comunicación Bluetooth.

El módulo del controlador consta de un microcontrolador Arduino UNO SMD, un

sistema de reloj de tiempo real RTC y una interfaz local de usuario formada por un

teclado matricial y una pantalla LCD. El controlador, está conectado a todos los demás

módulos. Los parámetros de configuración y programación ingresados por el usuario de

manera local, son procesados de manera que condiciona el funcionamiento del sistema a

gusto de éste y a las diferentes situaciones que puedan darse. El reloj de tiempo real

RTC actualiza constantemente la hora en su memoria RAM interna aunque el

subministro eléctrico se interrumpa, permitiendo la temporización de eventos.

El módulo de los sensores está formado por 3 sensores de presencia: dos para el control

de la iluminación y el último, para el cierre de la puerta de acceso con garantías de

seguridad. Un sensor de temperatura y humedad proporcionará en todo momento dichas

variables que son de gran interés en el sector agrícola, y por último, el sensor por

ultrasonidos que monitoriza el nivel de agua.

El módulo de actuadores está formado por ocho relés, de los cuales serán utilizados seis

de ellos. Éstos, con el cierre o apertura de sus contactos de potencia, gobiernan las

diferentes entradas digitales de los tres variadores de frecuencia, permitiendo el correcto

control de los motores asociados a cada variador.

El módulo de comunicación Bluettoth, permite establecer una comunicación remota con

el usuario, a través de la App diseñada y el dispositivo HC-06. Experimentalmente se ha

comprobado distancia de alcance máxima en la explotación agrícola, entre 20 y 25

metros si el usuario se encuentra en el interior de la vivienda y entre 40 y 50 metros

como máximo si el usuario se encuentra en el exterior, garantizando la comunicación

del dispositivo Android con el sistema de comunicación remota para el caso más

desfavorable, el control de la puerta de acceso.

5.1 Puntos a destacar

A continuación se detallan las características fundamentales del prototipo construido:

El prototipo realizado permite adaptarse a diferentes situaciones gracias a la

sencilla configuración que requiere.

Dispositivo modular, la sustitución de un elemento defectuoso por otro es

sencillo.

El coste de los diferentes componentes y la realización del prototipo están muy

por debajo del precio barajando en otras opciones como los PLC’s .

Ofrece una interfaz sencilla y directa, tanto la remota como la local.

Page 61: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 61

Gracias a la utilización del microcontrolador Arduino y la flexibilidad que

ofrece, en el caso de querer ampliar el sistema de control, el microcontrolador

utilizado hace uso de todos sus puertos. Para disponer de más entradas y

salidas, sólo se ha de cambiar el microcontrolador, respetando los puertos ya

utilizados. Una de las mejores opciones, sería la integración del modelo

Arduino MEGA que cuenta con más de 54 puertos, y es capaz de controlar al

menos 5 tarjetas de ocho relés.

5.2 Puntos a mejorar

La robustez del prototipo.

Necesidad de garantizar la estanqueidad en todos los pequeños orificios

practicados en la caja de derivación.

Algunos sensores requieren un encapsulado adicional para su puesta en

marcha, como es el caso del sensor por ultrasonidos ya que se encuentra en un

ambiente húmedo.

El control o la activación automática de los puntos de luz no se hace por

separado debido a la limitación de puertos del modelo Arduino UNO SMD, se

podría solucionar utilizando el modelo Arduino Mega.

Page 62: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 62

6 ANEXOS

6.1 Proceso configuración módulo Bluetooth

El siguiente código permite configurar el modulo Bluetooth HC-06 desde Arduino.

Se puede ajustar el nombre, la contraseña y los baudios a usar con el puerto serie.

La configuración Bluetooth se guarda en el módulo, así que no es necesario configurarlo

cada vez que se reinicie el sistema.

Es necesario abrir el monitor serie del IDE para la configuración del dispositivo.

Figura 28. Monitor serie del IDE

Page 63: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 63

Figura 29.Conexión con Arduino para la puesta en marcha de la configuración del dispositivo

6.1.1 Código

#include <SoftwareSerial.h> // Incluimos la librería SoftwareSerial

SoftwareSerial BT(10,11); // Definimos los pines RX y TX del Arduino conectados al

Bluetooth .

void setup()

BT.begin(9600); // Inicializamos el puerto serie BT que hemos

creado.

Serial.begin(9600); // Inicializamos el puerto serie.

void loop()

if(BT.available()) // Si llega un dato por el puerto BT se envía

al monitor serial.

Serial.write(BT.read());

Page 64: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 64

if(Serial.available()) // Si llega un dato por el monitor serial se

envía al puerto BT.

BT.write(Serial.read());

R

6.1.2 Test de comunicación

Para corroborar el perfecto funcionamiento del módulo HC-06 y el sistema de

comunicación AT, enviamos el comando “AT” y el sistema tiene que devolver “OK” ,

si no, se verificarán las conexiones con el microcontrolador y la alimentación.

Como era de esperar se superó la prueba.

Figura 30. Comprobación de comunicación

6.1.3 Configuración del nombre del dispositivo HC-06

Por defecto, el módulo Bluetooth se llama “HC-06”, para este proyecto el nombre que

se quiere mostrar es : Proyecto URV.

Comando AT enviado: AT+NAME< Proyecto URV >

Respuesta de confirmación esperada: OKsetname

Como era de esperar, la configuración fue exitosa.

Page 65: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 65

Figura 31.Confirmación del nombre

6.1.4 Cambiar Código de Vinculación

Por defecto, viene con el código de vinculación “1234”, para cambiarlo y poner el

código requerido por el proyecto, hay que enviar el siguiente comando AT:

Comando AT enviado: AT+PIN<9025>

Respuesta de confirmación esperada: OKsetPIN

La configuración del pin fue adecuada.

Figura 32. Confirmación del código de vinculación

Page 66: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 66

6.1.5 Configurar la velocidad de comunicación

La velocidad por defecto es de 9600 baudios, para cambiarlo, aunque en este proyecto

no es necesario ,se hace uso del siguiente comando AT.

Comando AT enviado: AT+BAUD4

Respuesta de confirmación esperada: OK<baudrate>

Cuando el número del final equivale a una velocidad, los valores pueden ser:

Numero Baudrate

1 1200

2 2400

3 4800

4 9600

5 19200

6 38400

7 57600

8 11520

Tabla 18. Velocidades de transmisión de datos

La configuración de la velocidad de comunicación fue correcta.

Figura 33.Confirmación de la velocidad

Page 67: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 67

6.2 Configuración reloj RTC

Al configurar el dispositivo RTC, es necesario introducir la hora y fecha exactas, para la

correcta configuración del reloj. Hay que cargar un sketch en el microcontrolador con

el reloj debidamente conectado. Dentro del sketch, como se muestra, se define la hora y

fecha del momento en que se vaya a cargar toda esa información dentro del Arduino. Es

por eso que, la fecha del día que se configuró fue un Martes a las 14:42:59 con data

15/3/2017.

Figura 34.Conexión con Arduino para la puesta en marcha de la fecha y hora del dispositivo

6.2.1 Codigo de configuración

#include <DS1302.h> // Inicialización del modulo

DS1302 rtc(11,12,2); //Asignación de puertos

Time t; //Inicio de la variable que contiene la fecha y hora

void setup()

// Desproteger contra escritura

rtc.halt(false);

rtc.writeProtect(false);

Page 68: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 68

rtc.setDOW(TUESDAY); // Configurar día de la semana: MARTES.

rtc.setTime(14,42,59); // Configurar hora en formato 24h con minutos y

segundos.

rtc.setDate(15,3,2017); // Configurar fecha en formato día/mes/año.

void loop()

Una vez subido el programa al microcontrolador, el reloj queda configurado y sigue la

hora en todo momento. No es necesario volver a configurarlo a no ser que se agote la

pila.

6.3 Código programación completo del sistema automático

A lo largo del siguiente subapartado se expondrá el código de programación y se

explicara detalladamente, en primer lugar se detallaran las librerías utilizadas para el

reconocimiento de alguno de los componentes integrados en el prototipo, en segundo

lugar se detallaran las variables del sistema y las constantes y finalmente el programa

principal.

6.3.1 Definición de variables y llamada de librerías

#include <DHT.h> // Librería del sensor dht11.

#include <Wire.h> //Librería Controlador Arduino.

#include <DS1302.h> //Libería reloj rtc.

#include <Keypad_I2C.h> //Librería teclado matricial por I2C.

#include <Keypad.h> //Librería teclado matricial.

#include <LiquidCrystal_I2C.h> // Librería pantalla LCD por protocolo

I2C.

//Declaración de variables y constantes del sistema agrupadas según la

función que desempeñan.

Page 69: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 69

//Comunicación Bluetooth.

int estado=0; //Guarda el valor numérico actual enviado desde la App.

int estadoanterior =0; // Guarda el valor numérico anterior enviado

desde la App.

//Sensor presencia nº1.

int val=0; //Variable para la medición del sensor presencia.

boolean activado = false; //Booleano para detectar cuando se ha

detectado pico de presencia.

unsigned int presento1 = 0; //Marcador cuando detecta presencia nº1.

unsigned int presento2 = 0; //Marcador cuando detecta redisparo nº1.

unsigned long tiempo12 = 0; //Variables encargada del contaje del

tiempo.

unsigned long espera = 2000; //Tiempo a esperar o temporizar en

milisegundos.

unsigned long redisparo = 1000; // durante este tiempo comprueba si

hay nuevos disparos en el sensor PIR.

//Sensor presencia nº2.

int val2=0; //variable para la medición del sensor presencia.

boolean activado2 = false; //Variable detección presencia sensor nº2

unsigned long tiempo22 = 0; //Control del tiempo.

unsigned long espera2 = 2000; //Tiempo a esperar en milisegundos.

unsigned long redisparo2 = 1000; // Durante este tiempo si hay nuevos

disparos del PIR, reinicio la temporización.

//Sensor temperatura y humidad

#define DHTPIN 13 //Seleccionamos el pin en el que se conectará el

sensor.

#define DHTTYPE DHT11 //Variable para indicar el modelo de sensor.

DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por

Arduino para comunicarse con el sensor.

int h ; //variable que contendrá el valor de humidad.

int t1 ; //variable que contendrá el valor de temperatura.

Page 70: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 70

//Reloj RTC.

DS1302 rtc(12,11,10); //Se inicia una variable que será usada por

Arduino para el correcto funcionamiento del reloj.

Time t; //Variable que contendrá la hora actual.

//Teclado I2C con integrado PCF8574.

const byte FILAS = 4; //Indicamos el número de filas del teclado.

const byte COLUMNAS = 4; //Indicamos el número de columnas del

teclado.

char teclas[FILAS][COLUMNAS] = //Indicamos como queremos que nos

devuelva el valor de la tecla pulsada en cada caso.

'1','2','3',

'4','5','6',

'7','8','9',

'*','0','#'

;

byte PinsFilas[FILAS] = 4,5,6,7; //Indicamos los pines de

configuración de filas y columnas.

byte PinsColumnas[COLUMNAS] = 2,1,0;

int i2caddress = 0x3F; //Indicamos la dirección I2C de nuestro

dispositivo.

Keypad_I2C kpd = Keypad_I2C( makeKeymap(teclas), PinsFilas,

PinsColumnas, FILAS, COLUMNAS, i2caddress ); //Configuración de los

parámetros del teclado.

//LCD_I2C

LiquidCrystal_I2C lcd(0x27,16,2); //Configuración de la dirección I2C

de la pantalla y dimensiones LCD.

//Definición Iconos característicos mostrados por LCD.

byte customChar[8] = //Icono LCD humidad.

B00100,

B00100,

Page 71: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 71

B01110,

B01110,

B11111,

B11111,

B11111,

B01110

;

byte customChar1[8] = //Icono LCD temperatura.

B00100,

B01010,

B01010,

B01110,

B01110,

B11111,

B11111,

B01110

;

byte customChar2[8] = // Icono grados Celsius.

B11000,

B11000,

B00111,

B01000,

B01000,

B01000,

B01000,

B00111

;

//Variables para la navegación del menú.

int contador = 0 ; //Guarda el número de pulsaciones de la tecla “0”

para la transición a los diferentes menús.

Page 72: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 72

bool submenu4 = false ; //Variable necesaria para entrar dentro del

menú nº4.

bool submenu3 = false ; //Variable necesaria para entrar dentro del

menú nº3.

bool submenu2 = false ; //Variable necesaria para entrar dentro del

menú nº2.

bool submenu1 = false ; //Variable necesaria para entrar dentro del

menú nº1.

bool submenu5 = false; //Variable necesaria para entrar dentro del

menú nº5.

bool submenu6 = false; //Variable necesaria para entrar dentro del

menú nº6.

long tiempo = millis() ; //Variable para definir el tiempo entre

transiciones.

//Temporización riego.

char minutos[10]; //Tabla donde se guardarán el valor de la hora de

inicio en minutos.

char horas[10]; //Tabla donde se guardarán el valor de la hora de

inicio.

char minutos1[10]; //Tabla donde se guardarán el valor de la hora

final en minutos.

char horas1[10]; //Tabla donde se guardarán el valor de la hora

final.

float hori = 0; //Valor numérico hora inicio.

float minu = 0; //Valor numérico minutos inicio.

float hori1 = 0; //Valor numérico hora final.

float minu1 = 0; //Valor numérico minutos final.

int horainicio = 0; //Valor numérico entero hora inicio.

int mininicio = 0; //Valor numérico entero minutos inicio.

int horaduracion = 0; ; //Valor numérico entero hora final.

int minduracion = 0; //Valor numérico entero minutos final.

//Temporización suministro agua depósito.

char minutos3[10]; //Tabla donde se guardarán el valor de la hora de

inicio en minutos.

Page 73: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 73

char horas3[10]; //Tabla donde se guardarán el valor de la hora de

inicio.

char minutos4[10]; //Tabla donde se guardarán el valor de la hora

final en minutos.

char horas4[10]; //Tabla donde se guardarán el valor de la hora

final.

float hori3 = 0; //Valor numérico hora inicio.

float minu3 = 0; //Valor numérico minutos inicio.

float hori4 = 0; //Valor numérico hora final.

float minu4 = 0; //Valor numérico minutos final.

int horainicio2 = 0; //Valor numérico entero hora inicio.

int mininicio2 = 0; //Valor numérico entero minutos inicio.

int horaduracion2 = 0; ; //Valor numérico entero hora final.

int minduracion2 = 0; //Valor numérico entero minutos final.

//Temporización luces.

char minutos3iluminacion[10]; //Tabla donde se guardarán el valor de

la hora de inicio en minutos.

char horas3iluminacion[10]; //Tabla donde se guardarán el valor de la

hora de inicio.

char minutos4iluminacion[10]; //Tabla donde se guardarán el valor de

la hora final en minutos.

char horas4iluminacion[10]; //Tabla donde se guardarán el valor de

la hora final.

float hori3iluminacion = 0; //Valor numérico hora inicio.

float minu3iluminacion = 0; //Valor numérico minutos inicio.

float hori4iluminacion = 0; //Valor numérico hora final.

float minu4iluminacion = 0; //Valor numérico minutos final.

int horainicio2iluminacion = 0; //Valor numérico entero hora inicio.

int mininicio2iluminacion = 0; //Valor numérico entero minutos

inicio.

int horaduracion2iluminacion = 0; //Valor numérico entero hora final.

int minduracion2iluminacion = 0; //Valor numérico entero minutos

final.

Page 74: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 74

bool luz1= false; //variable booleana del sistema de encendido de

luces por presencia nº1.

bool luz2= false; //variable booleana del sistema de encendido de

luces por presencia nº2.

//Sensor ultrasonidos depósito y mesura nivel de agua depósito.

long duration; //variable donde se almacena la señal ECHO del sensor.

long distanceCm; //variable donde se almacena la longitud

monitorizada.

long h_nivel //Variable nivel llenado depósito agua

long hmax_int //Variable distancia entre sensor y nivel del agua,

depósito.

const int TRIG_PIN = 7; //Asigna el pin 7 del microcontrolador al

TRIGGER.

const int ECHO_PIN = 8; //Asigna el pin 8 del microcontrolador al

ECHO.

//Cierre seguridad puerta.

bool Cierredepuerta = false; //Marca de inicio de cierre de la puerta

de acceso.

bool cirpuerta = false; //Marca para el cierre de la puerta de

acceso.

bool rearpuerta = false; //variable del sistema de detección de

presencia.

bool activado3 = false. //Marca para la detección de presencia en

acceso.

int val3 = 0; //Variable para la lectura del dato del sensor

presencia.

int tiempo123 //Variable conteo segundos.

int Finalcarrera = false; //Marca de cierre de la puerta de acceso.

6.3.2 Void setup

El void setup es la primera función en ejecutarse dentro de un programa en Arduino. Es,

básicamente, donde se “setean” las funciones que llevará a cabo el microcontrolador.

Aquí es donde establecemos algunos criterios que requieren una ejecución única.

Código:

Page 75: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 75

Serial.begin(9600); //Iniciamos conexión serie.

dht.begin(); //Se inicia el sensor temp/humit.

kpd.begin(); //Iniciamos el teclado.

lcd.init(); //inicialización de la pantalla LCD.

lcd.backlight(); //Activación iluminación LCD

lcd.clear(); //Borra cualquier carácter mostrado en la LCD.

pinMode(A0,OUTPUT); //Asignamos el puerto analógico A0 como

salida(puerto de control relé nº5).

pinMode(A1,OUTPUT); //Asignamos el puerto analógico A1 como

salida(puerto de control relé nº6).

pinMode(A2,INPUT); //Asignamos el puerto analógico A2 como

entrada(datos presencia nº1).

pinMode(A3,INPUT); //Asignamos el puerto analógico A3 como

entrada(datos presencia nº2).

digitalWrite(A0, HIGH); //Salida A0 con valor lógico alto.

digitalWrite(A1, HIGH); //Salida A1 con valor lógico alto.

pinMode(2,OUTPUT); //Asignamos el Puerto digital nº2 como salida.

pinMode(3,OUTPUT); //Asignamos el Puerto digital nº3 como salida.

pinMode(4,OUTPUT); //Asignamos el Puerto digital nº4 como salida.

pinMode(5,OUTPUT); //Asignamos el Puerto digital nº5 como salida.

pinMode(6,INPUT); //Asignamos el Puerto digital nº6 como entrada.

pinMode(9,INPUT); //Asignamos el Puerto digital nº9 como entrada.

pinMode(TRIG_PIN,OUTPUT); //Asigna el pin digital nº7 del al TRIGGER.

pinMode(ECHO_PIN,INPUT); //Asigna el pin digital nº8 al puerto ECHO

del sensor por ultrasonidos.

digitalWrite(2,HIGH); //Salida dig. 2 con valor lógico alto.

digitalWrite(3,HIGH); //Salida dig. 3 con valor lógico alto.

digitalWrite(4,HIGH); //Salida dig. 4 con valor lógico alto.

digitalWrite(5,HIGH); //Salida dig. 5 con valor lógico alto.

digitalWrite(7,HIGH); //Salida dig. 6 con valor lógico alto.

digitalWrite(8,HIGH); //Salida dig. 7 con valor lógico alto.

Page 76: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 76

lcd.createChar(0, customChar); //Creación icono humedad.

lcd.createChar(1, customChar1); // Creación icono temperatura.

lcd.createChar(2, customChar2); // Creación icono grados celsius.

inici();//Se hace llamada a función de inicialización de la LCD,

animación encendido.

lcd.clear(); //Se borra cualquier carácter en la LCD.

tiempo = millis(); //Asignamos a la variable “tiempo” el conteo en

milisegundos.

6.3.3 Void inicio

El sistema, cuando se enciende, muestra una animación de bienvenida. Exponiendo el

título de este proyecto.

Código:

void inici()

for (int i = 0; i<=17; i++) //Inicio bucle “subida”.

lcd.setCursor(i,0); //Sitúa el cursor en posición.

lcd.print("."); //Imprime punto.

lcd.setCursor(i,1); //Sitúa el cursor en posición.

lcd.print("."); //Imprime punto.

delay(75); //Esperamos 75 milisegundos.

for (int i = 16; i>=0; i--) //Inicio bucle “bajada”.

lcd.setCursor(i,0); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime punto.

delay(75); //Espera 75 milisegundos.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("SISTEMA DE"); //Imprime texto.

Page 77: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 77

delay(300); //Espera 300 milisegundos.

lcd.setCursor(4,1); //Sitúa el cursor en posición.

lcd.print("CONTROL"); //Imprime texto.

delay(1500); //Espera 1,5 segundos.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("AUTOMATICO"); //Imprime texto.

delay(300); //Espera 300 milisegundos.

lcd.setCursor(5,1); //Sitúa el cursor en posición.

lcd.print("EXPLOTACIÓN");

lcd.clear(); //Se borra cualquier carácter en pantalla.

delay(1500); //Espera 1,5 segundos.

lcd.setCursor(3,0); //Sitúa el cursor en posición.

lcd.print("AGRÍCOLA"); //Imprime texto.

delay(1500); //Espera 1,5 segundos.

6.3.4 Vooid loop

La función loop en Arduino, es la que se ejecuta un número

infinito de veces. Al encenderse el Arduino se procesa el

código del setup y luego entra al loop, el cual se repite de

forma indefinida hasta que se apague o se reinicie el

microcontrolador.

Código:

void loop()

char tecla = kpd.getKey(); //Asignamos el valor devuelto por el

teclado a la variable tecla.

if(Serial.available()>0) // Si el puerto serie está habilitado.

Page 78: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 78

estado = Serial.read(); // Lee los datos de recibidos el

puerto Serie(datos Bluetooth.

//Configuración teclas menú.

if (tecla=='*') //condición para salir al menú principal.

submenu1 = false ; //Salir del submenú nº1.

submenu2 = false ; //Salir del submenú nº2.

submenu3 = false ; //Salir del submenú nº3.

submenu4 = false ; //Salir del submenú nº4.

submenu5 = false ; //Salir del submenú nº5.

submenu6 = false ; //Salir del submenú nº6.

contador = 0 ; //variable para ir al menú principal.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if (tecla=='#') //Condición para entrar en el submenú del menú

actual.

submenu1 = true ; //Entrar del submenú nº1 si se cumplen

otras condiciones.

submenu2 = true ; //Entrar del submenú nº2 si se cumplen

otras condiciones.

submenu3 = true ; //Entrar del submenú nº3 si se cumplen

otras condiciones.

submenu4 = true ; //Entrar del submenú nº4 si se cumplen

otras condiciones.

submenu5 = true ; //Entrar del submenú nº5 si se cumplen

otras condiciones.

submenu6 = true ; //Entrar del submenú nº6 si se cumplen

otras condiciones.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if (tecla == '0') //Tecla Navegación a los diferentes menús.

submenu1 = false ; //Salir del submenú nº1.

submenu2 = false ; //Salir del submenú nº2.

submenu3 = false ; //Salir del submenú nº3.

Page 79: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 79

submenu4 = false ; //Salir del submenú nº4.

submenu5 = false ; //Salir del submenú nº5.

submenu6 = false ; //Salir del submenú nº6.

contador++; //incrementamos el valor del contaje de

“contador”.

tiempo = millis(); //Asignación del valor millis() a la

variable tiempo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if (contador == 8) //Si llegamos al valor máximo del

contador.

contador = 0; //Reinicio del contaje (dirige al

usuario al menú principal).

//Menú principal.

if(contador==0) //Valor asignado para entrar en el menú

principal.

if (millis() - tiempo < 4000 ) //Primera transición del

menú principal.

t = rtc.getTime(); //Asociamos la variable “t” a la

fecha que proporciona el RTC.

lcd.setCursor(8,0 ); //Sitúa el cursor en posición.

lcd.print(t.hour,DEC); // Imprime en la LCD Hora en

formato 0-23.

lcd.print(":"); // Imprime carácter.

if (t.min < 10 ) //Si el número a imprimir es

menor a diez.

lcd.print("0"); //Imprime primero un cero.

lcd.print(t.min, DEC); // Imprime Minutos.

h = dht.readHumidity(); //lee el valor lógico del

puerto digital 13 y lo guarda en la variable “t”.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

Page 80: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 80

lcd.write(0); Imprime icono humedad.

lcd.print(h); // Imprime el valor de humidad en

pantalla.

lcd.print("%"); // Imprime carácter.

t1 = dht.readTemperature(); //Se lee valor lógico

del puerto digital 13 y lo guarda en “t1”.

lcd.setCursor(0,0); // Sitúa el cursor en posición.

lcd.write(1); //Imprime icono temperatura.

lcd.print(t1); //Imprime el valor de temperatura en

pantalla.

lcd.write(2); //Imprime icono grados Celsius.

if ((millis() - tiempo > 4010)&& (millis() - tiempo <

8000))

//Segunda transición del menú principal.

lcd.setCursor(5,0 ); // Sitúa el cursor en posición.

t = rtc.getTime(); //Asociamos la variable “t” a la

fecha que proporciona el RTC.

lcd.print(" "); // Imprime carácter vacio.

lcd.print(t.date, DEC); //Imprime carácter: Día del

mes.

lcd.print("/"); //Imprime carácter.

lcd.print(t.mon); //Imprime carácter: Mes actual.

lcd.print("/"); //Imprime carácter.

lcd.print(t.year, DEC); //Imprime carácter: Año

actual.

if ((millis() - tiempo > 8010)) //Tercera transición

del menú principal.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis(); //Actualización valor de la

variable “tiempo”.

Page 81: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 81

//Menú nº1 riego.

if (contador == 1) //Valor asignado para entrar en el menú

principal.

if(submenu1 == false) //Si no se ha pulsado la tecla “#”

para entrar en submenú.

lcd.setCursor(1,0); // Sitúa el cursor en posición.

lcd.print("Control bomba"); //Imprime texto.

lcd.setCursor(5,1); // Sitúa el cursor en posición.

lcd.print("riego"); //Imprime texto.

if(submenu1 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu1 = true ; //Se reafirma asignación.

if (millis() - tiempo < 4000 ) //Primera

transición del menú nº1.

lcd.setCursor(0,0); // Sitúa el cursor en

posición.

lcd.print("1-Activar "); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en

posición.

lcd.print("2-Paro "); //Imprime texto.

if ((millis() - tiempo > 4010)&& (millis() - tiempo <

8000)) //Segunda transición del

menú nº1.

lcd.setCursor(0,0); //Sitúa el cursor en

posición.

lcd.print("*- Salir "); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en

posición.

lcd.print(" "); //Imprime texto

vacio.

Page 82: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 82

if ((millis() - tiempo > 8010)) //Tercera

transición del menú nº1.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis(); //Actualización del valor de

la variable “tiempo”.

if (tecla == '1') //Acciones si se pulsa el botón

“1” dentro del menú nº1.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("Motor riego"); //Imprime texto.

lcd.setCursor(3,1); //Sitúa el cursor en

posición.

lcd.print("Activado"); //Imprime texto.

digitalWrite(2,LOW); //Cierre del circuito de

potencia del relé nº1.

rele_1 = true; //Asigna valor conforme se ha

cerrado c.potencia relé nº1.

delay(700); //Espera 0,7 segundos.

if (tecla == '2') //Acciones si se pulsa el botón

“2” dentro del menú nº1.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("Motor riego"); //Imprime texto.

lcd.setCursor(2,1); //Sitúa el cursor en

posición.

lcd.print("Desactivado"); //Imprime texto.

digitalWrite(2,HIGH); //Apertura del circuito

de potencia del relé nº1.

rele_1 = false; //Asigna valor conforme se ha

abierto el circuito de potencia del relé nº1.

Page 83: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 83

delay(700); //Espera 0.7segundos.

//MENU Nº2 suministro agua vivienda.

if (contador == 2) //Valor asignado para entrar en el menú

nº2.

if(submenu2 == false) //Si no se ha pulsado la tecla “#”

para entrar en submenú.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Control deposito"); //Imprime texto.

lcd.setCursor(5,1); //Sitúa el cursor en posición.

lcd.print("agua"); //Imprime texto.

if(submenu2 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu2 = true ; //Se reafirma asignación.

if (millis() - tiempo < 4000 ) //Primera

transición del menú nº2.

lcd.setCursor(0,0); //Sitúa el cursor en

posición.

lcd.print("1- Bombear agua"); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en

posición.

lcd.print("2- Paro bomba"); //Imprime texto.

if ((millis() - tiempo > 4010)&& (millis() - tiempo <

8000)) //Segunda transición del menú nº2.

lcd.setCursor(0,0); //Sitúa el cursor en

posición.

lcd.print("*- Salir "); //Imprime

texto.

lcd.setCursor(0,1); //Sitúa el cursor en

posición.

Page 84: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 84

lcd.print(" "); //Imprime

texto.

if ((millis() - tiempo > 8010)) //Tercera

transición del menú nº2.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis(); //Actualización del valor

de la variable “tiempo”.

if (tecla == '1') //Acciones si se pulsa el botón

“1” dentro del menú nº2.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("Motor BOMBA"); //Imprime texto.

lcd.setCursor(3,1); //Sitúa el cursor en

posición.

lcd.print("Activado"); //Imprime texto.

digitalWrite(3,LOW); //Cierre del circuito de

potencia del relé nº2 (llenado a máximo

caudal).

rele_3 = true; //Asigna valor conforme se ha

cerrado c.potencia nº2.

delay(700); //Espera 0.7segundos.

if (tecla == '2') //Acciones si se pulsa el botón

“2” dentro del menú nº2.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("Motor BOMBA"); //Imprime texto.

lcd.setCursor(2,1); //Sitúa el cursor en

posición.

lcd.print("Desactivado"); //Imprime texto.

Page 85: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 85

digitalWrite(3,HIGH); //Apertura del circuito

de potencia del relé nº2 (llenado depósito a

alta velocidad).

digitalWrite(4,HIGH); //Apertura del circuito

de potencia del relé nº3 (llenado depósito a

baja velocidad).

rele_3 = false; //Asigna valor conforme se ha

abierto el circuito de potencia nº2 y nº3.

delay(700); //Espera 0.7segundos.

//MENÚ Nº3 temporización riego.

if (contador == 3) //Valor asignado para entrar en el menú

principal.

if(submenu2 == false) //Si no se ha pulsado la tecla “#”

para entrar en submenú.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("Temp. Riego"); //Imprime texto.

if ((horainicio > 0 )||(horaduracion > 0) ||

(mininicio > 0) || (minduracion > 0)) //Si se

ha temporizado el riego.

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print(horainicio); //Imprime la hora de

inició que tendrá lugar el riego.

lcd.print(":"); //Imprime texto.

lcd.print(mininicio); //Imprime los minutos de

la hora de inició que tendrá lugar el riego.

lcd.print(" to "); //Imprime texto.

lcd.print(horaduracion); //Imprime la hora de

fin del riego.

lcd.print(":"); //Imprime texto.

lcd.print(minduracion); //Imprime los minutos

de fin del riego.

Page 86: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 86

if ((horainicio == 0 )&&(horaduracion == 0)&&

(mininicio == 0)&&(minduracion == 0)) //Si no se ha

temporizado el riego.

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print("NO Temporizado"); //Imprime texto.

if(submenu2 == true) //Si se ha pulsado la tecla “#”

para entrar en submenú.

submenu2 = true; //Se reafirma la asignación.

int i=0,j=0,k=0,l=0; //Iniciamos variables

contaje de tablas.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("HORA INICIO"); //Imprime texto.

for(i=0;i<=1;i++) //El sistema ira pidiendo la

hora en formato 0-24h.

lcd.setCursor(6+i,1); //Sitúa el cursor

en posición del actual dígito a

introducir.

lcd.blink(); //Parpadeo de la posición

ocupada por el digito introducido por

pantalla.

tecla = kpd.waitForKey(); //El sistema

espera a recibir un valor por teclado via

I2C.

if ((tecla != '#') && (tecla != '*'))

//Si el usuario pulsa tecla valida.

horas[i]=tecla; //Asigna valor a la

posición acual de la tabla.

lcd.print(horas); //Imprime el

carácter pulsado.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

Page 87: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 87

lcd.setCursor(2,0); //Sitúa el

cursor en posición.

lcd.print("HORA INICIO");

//Imprime texto.

lcd.setCursor(6,1); //Sitúa el

cursor en posición.

lcd.print(horas); //Imprime la

hora de inicio introducida por el

usuario.

if ((tecla == '#') || (tecla ==

'*')) //Si el usuario por error

pulsa una tecla que no es un

número, el sistema lo tendrá en

cuenta y descartará el carácter.

i= i-1 ; //Retrocede posición

dentro del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

actual del dígito.

delay(250); //Espera 0.25 segundos.

float hori = atoi(horas); // Conversión de

array a float.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MIN. INICIO"); //Imprime texto.

for(j=0;j<=1;j++) //El sistema pide los minutos

de inicio de la temporización dígito a dígito.

lcd.setCursor(6+j,1); //Sitúa el cursor

en posición del dígito a introducir.

lcd.blink(); //parpadea la posición del

dígito a introducir.

Page 88: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 88

tecla = kpd.waitForKey(); //El sistema

espera la pulsación de un valor en el

teclado.

if (tecla != '#' && tecla != '*') //Si

la tecla introducida por el usuario es un

carácter numérico se asigna el valor de

la tecla a una posición del array.

minutos[j]=tecla; //Asignación del

valor del teclado al array.

lcd.print(minutos); //Muestra por

pantalla el valor de minutos de

inicio de la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el

cursor en posición.

lcd.print("MIN. INICIO");

//Imprime texto.

lcd.setCursor(6,1); //Sitúa el

cursor en posición.

lcd.print(minutos); //Imprime el

valor de los minutos de inicio de

la temporización.

if ((tecla == '#') || (tecla == '*'))

//Si el usuario por error pulsa una tecla

que no es un número, el sistema lo tendrá

en cuenta y descartará el carácter.

j= j-1 ; //Retrocede posición del

array.

delay(100); //Espera 0.1segundos.

lcd.noBlink(); //Dejar de parpadear la posición

del dígito a introducir.

delay(250); //Espera 0.25 segundos.

float minu = atoi(minutos); // Conversión de

array a float .

Page 89: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 89

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("HORA FINAL"); //El sistema solicita

al usuario la introducción de la hora de fin de

la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

for(k=0;k<=1;k++) //El sistema pide la hora

de fin de la temporización.

lcd.setCursor(6+k,1); //Sitúa el cursor

en posición del dígito a introducir.

lcd.blink(); //parpadea la posición del

dígito a introducir.

tecla = kpd.waitForKey(); //El sistema

espera a recibir un valor por teclado vía

I2C.

if (tecla != '#' && tecla != '*') //Si

la tecla introducida por el usuario es un

carácter numérico se asigna el valor de

la tecla a una posición del array.

horas1[k]=tecla; //Asignación del

valor del teclado al array.

lcd.print(horas1); //Muestra por

pantalla el valor de minutos de

inicio de la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el

cursor en posición.

lcd.print("HORA FINAL");

//Solicita al usuario la

introducción de la hora de fin de

la temporización.

lcd.setCursor(6,1); //Sitúa el

cursor en posición.

lcd.print(horas1); //Imprime el

valor de los minutos de inicio de

la temporización en la LCD.

Page 90: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 90

if ((tecla == '#') || (tecla == '*'))

//Si el usuario por error pulsa una tecla

que no es un número, el sistema lo tendrá

en cuenta y descartará el carácter.

k= k-1 ; //Retrocede posición del

array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

asignada.

delay(500); //Espera 0.5 segundos.

float hori1 = atoi(horas1); // Conversión de

array a float .

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MINUTOS FINAL"); //Solicita al

usuario la introducción de los minutos de fin

de la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

for(l=0;l<=1;l++) //El sistema pide los

minutos de fin de la temporización.

lcd.setCursor(6+l,1); //Sitúa el cursor en

posición del dígito a introducir.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

minutos1[l]=tecla; //Asignación del

valor del teclado al array.

Page 91: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 91

lcd.print(minutos1); //Imprime el

carácter pulsado.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MINUTOS FINAL"); //Solicita al

usuario la introducción de los minutos de

fin de la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(minutos1); //Imprime el

carácter pulsado.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

l= l-1 ; //Retrocede posición del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

asignada.

delay(500); //Espera 0.5 segundos.

float minu1 = atoi(minutos1); // Conversión de

array a float.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

horainicio =hori; //Conversión de float a int

de la hora de inicio de la temporización.

mininicio =minu; //Conversión de float a int

del valor de minutos inicio de la

temporización.

horaduracion =hori1; //Conversión de float a

int. de la hora final de la temporización.

minduracion =minu1; //Conversión de float a

int del valor de minutos final de la

temporización.

Page 92: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 92

if (( horainicio> 23 )||( mininicio> 59 )||(

horaduracion> 23 )||( minduracion> 59 )) //Si

el usuario ha introducido un valor en la

configuración de la hora erróneo o fuera de

rango.

for(i=0;i<=1;i++) //borra los valores

de las tablas en cada una de las

posiciones.

horas[i]=0; //Reinicio valor por

defecto.

horas1[i]=0; //Reinicio valor por

defecto.

minutos[i]=0; //Reinicio valor por

defecto.

minutos1[j]=0; //Reinicio valor por

defecto.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

lcd.print("Hora no valida"); //Se avisa al

usuario de la introducción de un valor fuera de

rango.

delay(700); //Espera 0.7 segundos.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

lcd.print("Inserte de nuevo "); //Imprime

texto.

delay(700); //Espera 0.7 segundos.

lcd.setCursor(4,1); //Sitúa el cursor en

posición.

lcd.print("la hora "); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

submenu2 == false; //Reinicio del proceso de

configuración del temporizado.

delay(50); //Espera 50 milisegundos.

submenu2 == true; //Reinicio del proceso de

configuración del temporizado.

Page 93: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 93

if (( horainicio<= 23 )&&( mininicio<= 59 )&&(

horaduracion<= 23 )&&( minduracion<= 59 ))

//Si los valores de temporización están dentro

de los rangos.

hori =0; //Reinicio valor por defecto.

hori1=0; //Reinicio valor por defecto.

minu=0; //Reinicio valor por defecto.

minu1=0; //Reinicio valor por defecto.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

lcd.print("Temp. riego"); //Imprime

texto.

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print(horainicio); //Muestra el valor

de la hora de inicio de la temporización.

lcd.print(":"); //Imprime carácter.

lcd.print(mininicio); //Muestra el valor

del minuto de inicio de la temporización.

lcd.print(" to "); //Imprime texto.

lcd.print(horaduracion); //Muestra el

valor de la hora del fin de la

temporización.

lcd.print(":"); //Imprime carácter.

lcd.print(minduracion); //Muestra el

valor del minuto del fin de la

temporización.

delay(1500); //Espera 1,5 segundos.

submenu1 = false; //El usuario después

de temporizar, se le dirige al menú

principal.

submenu2 = false; //El usuario después

de temporizar, se le dirige al menú

principal.

Page 94: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 94

contador = 0 ; //Se reinicia el valor

para mostrar el menú principal después de

la configuración de la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

//Menú nº4, temporizador suministro agua en la vivienda.

if (contador == 4) //Valor asignado para entrar en el menú

nº4.

if(submenu3 == false) //Si no se ha pulsado la tecla “#”

para entrar en submenú.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("Temp. Bomba"); //Imprime texto.

if ((horainicio2 > 0 )||(horaduracion2 > 0 )

||(minduracion2 > 0 ) || ((mininicio2 > 0)) //Si

se ha temporizado el suministro de agua.

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print(horainicio2); //Imprime la hora de

inicio de la temporización.

lcd.print(":"); //Imprime texto.

lcd.print(mininicio2); //Imprime los minutos de

la hora de inicio que tendrá lugar el riego.

lcd.print(" to "); //Imprime texto.

lcd.print(horaduracion2); //Imprime la hora de

fin de la temporización.

lcd.print(":"); //Imprime texto.

lcd.print(minduracion2); //Imprime los minutos

de fin de la temporización.

if ((horainicio2 == 0 ) && (horaduracion2 == 0 ) &&

(minduracion2 == 0 ) && (horainicio2 == 0 )) //Si

no se ha temporizado el suministro de agua.

Page 95: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 95

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print("NO Temporizado"); //Imprime texto.

if(submenu3 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu3 = true; //Se reafirma la asignación.

int i=0,j=0,k=0,l=0; //Iniciamos variables contaje

de tablas.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("HORA INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(i=0;i<=1;i++) //El sistema irá pidiendo la hora

en formato 0-24h.

lcd.setCursor(6+i,1); //Sitúa el cursor en

posición.

lcd.blink(); //Parpadeo de la posición ocupada

por el dígito introducido por pantalla.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si el

usuario aprieta tecla valida.

horas3[i]=tecla; //Actualizar posición dentro

de la tabla.

lcd.print(horas3); //Imprime el carácter

pulsado.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("HORA INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

Page 96: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 96

lcd.print(horas3); //Imprime la hora de inicio

introducida por el usuario.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

i= i-1 ; //Retrocede posición dentro del

array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

actual del dígito.

delay(500); //Espera 0.5 segundos.

float hori3 = atoi(horas3); // Conversión de array a

float.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("MIN. INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(j=0;j<=1;j++) //El sistema pide los minutos de

inicio de la temporización dígito a dígito.

lcd.setCursor(6+j,1); //Sitúa el cursor en

posición del dígito a introducir.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

la pulsación de un valor en el teclado.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

minutos3[j]=tecla; //Asignación del

valor del teclado al array.

Page 97: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 97

lcd.print(minutos3); //Muestra por

pantalla el valor de minutos de inicio de

la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MIN. INICIO"); //Imprime

texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(minutos3); //Imprime el valor

de los minutos de inicio de la

temporización.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

j= j-1 ; //Retrocede posición del array.

delay(100); //Espera 0.1segundos.

lcd.noBlink();//Deja de parpadear la posición actual

del dígito.

delay(250); //Espera 0.25 segundos.

float minu3 = atoi(minutos3); // Conversión de array

a float.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("HORA FINAL"); //El sistema solicita al

usuario la introducción de la hora de fin de la

temporización.

lcd.setCursor(6,1); Sitúa el cursor en posición.

for(k=0;k<=1;k++)//El sistema pide la hora de fin de

la temporización, dígito a dígito.

Page 98: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 98

lcd.setCursor(6+k,1); //Sitúa el cursor en

posición del dígito a introducir.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si la

tecla pulsada por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

horas4[k]=tecla; //Asignación del valor

del teclado al array.

lcd.print(horas4); //Muestra por

pantalla el valor de minutos de inicio de

la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("HORA FINAL"); //Solicita al

usuario la introducción de la hora de fin

de la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(horas4); //Imprime el valor de

los minutos de inicio de la temporización

en la LCD.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

k= k-1 ; //Retrocede posición del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

asignada.

delay(500); //Espera 0.5 segundos.

Page 99: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 99

float hori4 = atoi(horas4); // Conversión de array a

float .

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("MINUTOS FINAL"); //Solicita al usuario la

introducción de los minutos de fin de la

temporización.

lcd.setCursor(6,1); //Sitúa el cursor en posición del

dígito a introducir.

for(l=0;l<=1;l++) //El sistema pide los minutos de

fin de la temporización, dígito a dígito.

lcd.setCursor(6+l,1); //Sitúa el cursor en

posición del dígito a introducir.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

minutos4[l]=tecla; //Asignación del valor

del teclado a posición del array.

lcd.print(minutos4); //Imprime el

carácter pulsado.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MINUTOS FINAL"); //Solicita

al usuario la introducción de los minutos

de fin de la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(minutos4); //Imprime el

carácter pulsado.

Page 100: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 100

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

l= l-1 ; //Retrocede posición del array.

delay(100); //Espera 0,1 segundos.

lcd.noBlink(); //Deja de parpadear la posición.

asignada

delay(100); //Espera 0,1 segundos.

float minu4 = atoi(minutos4); // Conversión de array

a float.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

horainicio2 =hori3; //Conversión de float a int de

la hora de inicio de la temp.

mininicio2 =minu3; //Conversión de float a int del

valor de minutos inicio de la temp.

horaduracion2 =hori4; //Conversión de float a int de

la hora final de la temp.

minduracion2 =minu4; //Conversión de float a int del

valor de minutos final de la temp.

if (( horainicio2> 23 )||( mininicio2> 59 )||(

horaduracion2> 23 )||( minduracion2> 59 ))

//Si el usuario ha introducido un valor en la

configuración de la hora erróneo o fuera de rango.

for(i=0;i<=1;i++) //borra los valores de las

tablas en cada una de las posiciones.

horas3[i]=0; //Reinicio valor por defecto.

horas4[i]=0; //Reinicio valor por defecto.

minutos3[i]=0; //Reinicio valor por defecto.

minutos4[j]=0; //Reinicio valor por defecto.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Hora no valida");

Page 101: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 101

delay(700); //Espera 0,7 segundos.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Inserte de nuevo "); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.setCursor(4,1); //Sitúa el cursor en posición.

lcd.print("la hora "); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

submenu3 == false; //Reinicio del proceso de

configuración del temporizado.

delay(50); //Espera 50 milisegundos.

submenu3 == true; //Reinicio del proceso de

configuración del temporizado.

if (( horainicio2<= 23 )&&( mininicio2<= 59 )&&(

horaduracion2<= 23 )&&( minduracion2<= 59 )) //Si

los valores de temporización están dentro de los

rangos.

hori =0; //Reinicio valor por defecto.

hori1=0; //Reinicio valor por defecto.

minu=0; //Reinicio valor por defecto.

minu1=0; //Reinicio valor por defecto.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

lcd.print("Temp. riego");

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print(horainicio2); //Muestra el valor de

la hora de inicio.

lcd.print(":"); //Imprime carácter.

lcd.print(mininicio2); //Muestra el valor del

minuto de inicio.

Page 102: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 102

lcd.print(" to "); //Imprime texto.

lcd.print(horaduracion2); //Muestra el valor de

la hora del fin de la temporización.

lcd.print(":"); //Imprime carácter.

lcd.print(minduracion2); //Muestra el valor de

la hora del fin de la temporización.

delay(1500); //Espera 1.5segundos.

submenu3 = false ; //El usuario después de

temporizar, es expulsado del menú de

temporización.

contador = 0 ; //Se reinicia el valor para

mostrar el menú principal después de la

configuración de la temporización.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

//MENU 5, configuración del depósito.

if (contador == 5) //Valor asignado para entrar en el menú nº4.

if(submenu4 == false) //Si no se ha pulsado la tecla “#” para

entrar en submenú.

lcd.setCursor(3,0); //Sitúa el cursor en posición.

lcd.print("Parametros"); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print("Deposito"); //Imprime texto.

lcd.setCursor(9,1); //Sitúa el cursor en posición.

if(submenu4 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu4 = true; //Se reafirma la asignación.

if (millis() - tiempo < 4000 ) //Primer enunciado del

menú nº5.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

Page 103: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 103

lcd.print("1-Configurar altura depósito");

lcd.setCursor(5,1); //Sitúa el cursor en posición.

h_nivel = h_max_int – distanceCm ; //Cálculo del

nivel del depósito.

lcd.print(h_nivel); //Muestra por pantalla el valor

de la altura del depósito configurada por el usuario.

lcd.print(" cm"); //Imprime texto.

if ((millis() - tiempo > 4010)&& (millis() - tiempo <

4100)) //Transición intermedia del menú nº5.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

if ((millis() - tiempo > 4100)&& (millis() - tiempo <

8000)) //Segundo enunciado del menú nº5.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("*-Salir ."); //Imprime texto.

lcd.setCursor(5,1); //Sitúa el cursor en posición.

h_nivel = h_max_int – distanceCm ; //Cálculo del

nivel del depósito.

lcd.print(h_nivel); //Muestra por pantalla el valor

de la altura del depósito configurada por el usuario.

lcd.print(" cm"); //Imprime texto.

if ((millis() - tiempo > 8010)) //Segunda transición

intermedia del menú nº5.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis(); //Asignamos a la variable

“tiempo” el conteo en milisegundos, reiniciamos

cuenta.

if (tecla == '1') //Acciones si se pulsa el botón “1”

dentro del menú nº5.

Page 104: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 104

int i=0; //Inicialización de la variable para el

recuento del array.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

for(i=0;i<=2;i++) //El sistema ira pidiendo dígito

a dígito la altura del depósito.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Altura depósito"); //Imprime texto.

for(i=0;i<=2;i++) //El sistema irá pidiendo la

altura en Cm, dígito a dígito.

lcd.setCursor(6+i,1); //Sitúa el cursor en la

posición actual del dígito a introducir.

lcd.blink(); //Parpadeo de la posición ocupada

por el dígito a introducir por pantalla.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*')

//Si el usuario pulsa tecla válida.

h_max[i]=tecla; //Asigna valor a la

posición actual de la tabla.

lcd.print(h_max); //Imprime el carácter

pulsado.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("Altura depósito "); //Imprime

texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(h_max); //Imprime el carácter

pulsado.

if ((tecla == '#') || (tecla == '*')) //Si el

usuario por error pulsa una tecla que no es un

nùmero, el sistema lo tendrá en cuenta y descartará

el carácter.

Page 105: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 105

i= i-1; //Retrocede posición dentro del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición actual del

dígito.

delay(500) ; //Espera 0.5 segundos.

float h_max_sup = atoi(h_max); // Conversión de array a

float.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.noBlink(); //Deja de parpadear la posición actual del

dígito.

delay(500); //Espera 0.1 segundos.

lcd.clear(); //Se borra cualquier carácter en pantalla.

//Menú nº6 Control de luces.

if (contador == 6) //Valor asignado para entrar en el menú nº4.

if(submenu5 == false) //Si no se ha pulsado la tecla “#” para

entrar en submenú.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("Control"); //Imprime texto.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print("iluminación"); //Imprime texto.

if(submenu5 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu5 = true ; //Se reafirma la asignación.

if (millis() - tiempo < 2000 ) //Primer enunciado del

menú nº6.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

Page 106: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 106

lcd.print("1- ON luz "); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print("2- OFF luz" ); //Imprime texto.

delay(700); //Espera 0.7 segundos.

if ((millis() - tiempo > 2010)&& (millis() - tiempo <

4010)) //Segundo enunciado del menú nº6.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("3- Temporizar encendido ");

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print("*- Salir "); //Imprime texto.

if ((millis() - tiempo > 2010)&& (millis() - tiempo <

4000)) //tercer enunciado del menú nº6

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print(" Temp. Luz " ); //Imprime

texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime carácter vacío.

lcd.print(horainicio2iluminacion); //Muestra el valor

de la hora de inicio de la temporización.

lcd.print(":");//Imprime carácter.

lcd.print(mininicio2iluminacion); //Muestra el valor

del minuto de inicio de la temporización.

lcd.print(" to ") //Imprime texto;

lcd.print(horaduracion2iluminacion); //Muestra el

valor de la hora del fin de la temporización.

lcd.print(":"); //Imprime carácter.

lcd.print(minduracion2iluminacion); //Muestra el

valor del minuto del fin de la temporización.

lcd.print(" "); //Imprime texto.

if ((millis() - tiempo > 4050)) //transición del menú

nº6.

Page 107: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 107

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis();//Actualización del valor de la

variable, para empezar de nuevo, en la primera

transición del menú nº6.

if (tecla == '1') //Acciones si se pulsa el botón “1”

dentro del menú nº6.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("Luz "); //Imprime texto.

lcd.setCursor(3,1); //Sitúa el cursor en posición.

lcd.print("Activado"); //Imprime texto.

digitalWrite(A1, LOW); //Cierre del circuito de

potencia del relé nº6.

delay(700); //Espera 0.7segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

luz1=true; //Asigna valor conforme se ha cerrado

circuito de potencia nº6.

if (tecla == '2') //Acciones si se pulsa el botón “2”

dentro del menú nº6.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("Luz 2"); //Imprime texto.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print("Activado"); //Imprime texto.

digitalWrite(A1, HIGH); //Apertura del circuito de

potencia del relé nº6.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

Page 108: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 108

luz1=false; //Asigna valor conforme se ha abierto el

circuito de potencia nº6.

if (tecla == '3') //Acciones si se pulsa el botón “3”

dentro del menú nº6.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

int i=0,j=0,k=0,l=0; //Iniciamos variables recuento

de tablas.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("HORA INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(i=0;i<=1;i++) //El sistema irá pidiendo la hora,

en formato 0-24h.

lcd.setCursor(6+i,1); //Sitúa el cursor en

posición del actual dígito a introducir.

lcd.blink(); //Parpadeo de la posición ocupada

por el dígito introducido por pantalla.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si el

usuario pulsa tecla valida.

horas3iluminacion[i]=tecla; //Asigna valor a

la posición actual de la tabla.

lcd.print(horas3iluminacion); //Imprime el

carácter numérico pulsado.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("HORA INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(horas3iluminacion); //Imprime la

hora de inicio introducida por el usuario.

Page 109: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 109

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

i= i-1 ; //Retrocede posición dentro del

array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

actual del dígito.

delay(500); //Espera 0.5 segundos.

float hori3iluminacion = atoi(horas3iluminacion); //

Conversión de array a float.

lcd.clear(); /Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("MIN. INICIO"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(j=0;j<=1;j++) //El sistema pide los minutos de

inicio de la temporización dígito a dígito.

lcd.setCursor(6+j,1); //Sitúa el cursor en

posición.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

la pulsación de un valor en el teclado.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

minutos3iluminacion[j]=tecla;

//Asignación del valor del teclado al

array.

lcd.print(minutos3iluminacion);

//Muestra por pantalla el valor de

minutos de inicio de la temporización.

Page 110: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 110

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MIN. INICIO"); //Imprime

texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(minutos3iluminacion);

//Imprime el valor de los minutos de

inicio de la temporización.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

j= j-1 ; //Retrocede posición del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Dejar de parpadea la posición del

dígito a introducir.

delay(500); //Espera 0.5 segundos.

float minu3iluminacion = atoi(minutos3iluminacion);

// Conversión de array a float .

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("HORA FINAL"); //El sistema solicita al

usuario la introducción de la hora de fin de la

temporización.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(k=0;k<=1;k++) //El sistema pide la hora de fin

de la temporización.

lcd.setCursor(6+k,1); //Sitúa el cursor en

posición del digito a introducir.

Page 111: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 111

lcd.blink(); //parpadea la posición del digito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

horas4iluminacion[k]=tecla; //Asignación

del valor del teclado al array.

lcd.print(horas4iluminacion); //Muestra

por pantalla el valor de la hora de

inicio de la temporización.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor

en posición.

lcd.print("HORA FINAL"); //Solicita al

usuario la introducción de la hora de fin

de la temporización.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(horas4iluminacion); //Imprime

el valor de los minutos de inicio de la

temporización en la LCD.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

k= k-1 ; //Retrocede posición del array.

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); Deja de parpadear la posición

asignada del dígito introducido.

delay(500); //Espera 0.5 segundos.

float hori4iluminacion = atoi(horas4iluminacion); //

Conversión de array a float.

Page 112: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 112

lcd.clear();//Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("MINUTOS FINAL"); //Imprime texto.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

for(l=0;l<=1;l++)//El sistema pide los minutos de fin

de la temporización.

lcd.setCursor(6+l,1); //Sitúa el cursor en la

posición del dígito a introducir.

lcd.blink(); //parpadea la posición del dígito

a introducir.

tecla = kpd.waitForKey(); //El sistema espera

a recibir un valor por teclado vía I2C.

if (tecla != '#' && tecla != '*') //Si la

tecla introducida por el usuario es un carácter

numérico se asigna el valor de la tecla a una

posición del array.

minutos4iluminacion[l]=tecla;

//Asignación del valor del teclado al

array.

lcd.print(minutos4iluminacion);

//Imprime el carácter pulsado.

lcd.clear(); //Se borra cualquier

carácter en pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en

posición.

lcd.print("MINUTOS FINAL"); //Imprime

texto.

lcd.setCursor(6,1); //Sitúa el cursor en

posición.

lcd.print(minutos4iluminacion);

//Imprime el carácter pulsado.

if ((tecla == '#') || (tecla == '*')) //Si

el usuario por error pulsa una tecla que no es

un número, el sistema lo tendrá en cuenta y

descartará el carácter.

l= l-1 ; //Retrocede posición del array.

Page 113: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 113

delay(100); //Espera 0.1 segundos.

lcd.noBlink(); //Deja de parpadear la posición

asignada.

delay(500); //Espera 0.5 segundos.

float minu4iluminacion = atoi(minutos4iluminacion);

lcd.clear(); //Se borra cualquier carácter en

pantalla.

horainicio2iluminacion=hori3iluminacion;

//Conversión de float a int de la hora de inicio de

la temporización.

mininicio2iluminacion=minu3iluminacion; //Conversión

de float a int del valor de minutos inicio de la

temporización.

horaduracion2iluminacion=hori4iluminacion;

//Conversión de float a int de la hora final de la

temporización.

minduracion2iluminacion=minu4iluminacion;

//Conversión de float a int del valor de minutos

final de la temporización.

if (( horainicio2> 23 )||( mininicio2> 59 )||(

horaduracion2> 23 )||( minduracion2> 59 ))

//Si el usuario ha introducido un valor en la

configuración de la hora erróneo o fuera de rango.

for(i=0;i<=1;i++) //borra los valores de las

tablas en cada una de las posiciones.

horas3iluminacion[i]=0; //Reinicio valor

por defecto.

horas4iluminacion[i]=0; //Reinicio valor

por defecto.

minutos3iluminacion[i]=0; //Reinicio

valor por defecto.

minutos4iluminacion[j]=0; //Reinicio

valor por defecto.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

Page 114: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 114

lcd.print("Hora no valida"); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

lcd.print("Inserte de nuevo "); //Imprime

texto.

delay(700); //Espera 0.7 segundos.

lcd.setCursor(4,1); //Sitúa el cursor en

posición.

lcd.print("la hora "); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

submenu5 == false; //Reinicio del proceso de

configuración del temporizado.

delay(50); //Espera 50 microsegundos.

submenu5 == true; //Reinicio del proceso de

configuración del temporizado.

if (( horainicio2iluminacion<= 23 )&&(

mininicio2iluminacion<= 59 )&&(

horaduracion2iluminacion<= 23 )&&(

minduracion2iluminacion<= 59 ))

//Si los valores de temporización están dentro de

los rangos.

hori3iluminacion =0; //Reinicio valor por

defecto.

hori4iluminacion=0; //Reinicio valor por

defecto.

minu3iluminacion=0; //Reinicio valor por

defecto.

minu4iluminacion=0; //Reinicio valor por

defecto.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en

posición.

Page 115: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 115

lcd.print("Temp. luz ext."); //Imprime texto.

lcd.setCursor(1,1); //Sitúa el cursor en

posición.

lcd.print(horainicio2iluminacion); //Muestra

el valor de la hora de inicio.

lcd.print(":"); //Imprime carácter.

lcd.print(mininicio2iluminacion); //Muestra el

valor del minuto de inicio.

lcd.print(" to "); //Imprime texto.

lcd.print(horaduracion2iluminacion); //Muestra

el valor de la hora del fin de la

temporización.

lcd.print(":"); //Imprime carácter.

lcd.print(minduracion2iluminacion); //Muestra

el valor del minuto del fin de la

temporización.

delay(1500); //Espera 1.5 segundos.

submenu1 = false ; //El usuario después de

temporizar, se le dirige al menú principal.

submenu2 = false ; //El usuario después de

temporizar, se le dirige al menú principal.

submenu3 = false ; //El usuario después de

temporizar, se le dirige al menú principal.

contador = 0 ; //Se reinicia el valor para

mostrar el menú principal después de la

configuración de la temporización.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

//Menú nº7, control de la puerta de acceso.

if (contador == 7) Valor asignado para entrar en el menú nº7.

Page 116: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 116

if(submenu6 == false) //Si no se ha pulsado la tecla “#” para

entrar en submenú

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Control Puerta"); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime texto vacio.

if(submenu6 == true) //Si se ha pulsado la tecla “#” para

entrar en submenú.

submenu6 = true; //Se reafirma la asignación.

if (millis() - tiempo < 4000 ) //Primer enunciado del

menú nº7.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("1-Abrir puerta "); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print("2-Cerrar puerta "); //Imprime texto.

if ((millis() - tiempo > 4010)&& (millis() - tiempo <

8000)) //Segundo enunciado del menú nº7.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("*- Salir "); //Imprime texto.

lcd.setCursor(0,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime texto.

if ((millis() - tiempo > 8010)) //transición a primer

enunciado, del menú nº7.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

tiempo = millis(); // Actualización del valor de la

variable, para empezar de nuevo, en la primera

transición del menú nº6.

if (tecla == '1') //Acciones si se pulsa el botón “1”

dentro del menú nº7.

Page 117: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 117

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("Abriendo puerta"); //Imprime texto.

lcd.setCursor(3,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime texto vacío.

digitalWrite(5,LOW); //Cierre del circuito de

potencia del relé nº4.

delay(5000); //Espera 5 segundos.

if (tecla == '2')

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(2,0); //Sitúa el cursor en posición.

lcd.print("Cerando puerta"); //Imprime texto.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime texto vacío.

digitalWrite(5,HIGH); //Apertura del circuito de

potencia del relé nº4.

delay (700); //Espera 0.7 segundos.

analogWrite(A0,0); //Cierre del circuito de potencia

del relé nº6.

cirpuerta = true; //Activación de la marca del

cerrado de la puerta de acceso.

delay(700); //Espera 0.7 segundos.

//Mesura y control del llenado del depósito.

digitalWrite(TRIG_PIN, LOW); //Desactivación del Trigeer.

delayMicroseconds(2); //Espera 2 microsegundos.

digitalWrite(TRIG_PIN, HIGH); //Activación del Trigeer.

Page 118: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 118

delayMicroseconds(10); //Espera 10 microsegundos.

digitalWrite(TRIG_PIN, LOW); //Desactivación del Trigger.

duration = pulseIn(ECHO_PIN,HIGH); // Conversión del tiempo

transcurrido desde el envío de la señal del Trigger, hasta la

captación.

distanceCm = duration / 29.1 / 2 ; // Conversión del tiempo a cm.

//Control de la temporización del riego.

if((t.hour == horainicio )&&(t.min == mininicio )) //Si es la hora

de inicio programado para el riego.

digitalWrite(2,LOW); //Cierre del circuito de potencia del relé

nº1.

else if((t.hour == horaduracion )&&(t.min == minduracion )) //Si

es la hora del fin de la temporización del riego.

digitalWrite(2,HIGH); //Apertura del circuito de potencia del

relé nº1.

//Control de la temporización del riego y cierre de la bomba del

suministro de agua a la vivienda.

if((t.hour == horainicio2 )&&(t.min == mininicio2 )&&(diposit_ple ==

false )) //Si es la hora de inicio programado.

digitalWrite(3,LOW); //Cierre del circuito de potencia del relé

nº2 (caudal máximo de agua).

else if ((t.hour == horaduracion )&&(t.min == minduracion ))

digitalWrite(3,HIGH); //Apertura del circuito de potencia del

relé nº2 (caudal máximo de agua).

digitalWrite(4,HIGH); //Apertura del circuito de potencia del relé nº2

( ½ del caudal máximo de agua).

if ( distanceCm <= 30) //Si la distancia entre el nivel de agua i el

sensor por ultrasonidos es inferior a 30 cm se desactiva la bomba.

digitalWrite(3,HIGH); //Apertura del circuito de potencia del

relé nº2 (caudal máximo de agua).

digitalWrite(4,HIGH); //Apertura del circuito de potencia del

relé nº2 ( ½ del caudal máximo de agua).

Page 119: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 119

medio = false ; //Asignación de la variable booleana para cuando

el depósito se encuentra lleno de agua.

diposit_ple = true ; //Asignación de la variable booleana para

cuando el depósito se encuentre lleno de agua.

if (contador == 0) //Si el depósito está lleno y el usuario

está visualizando la interface del menú principal.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

lcd.print("Dep. lleno"); //Indica al usuario el estado del

depósito.

else //Si el depósito no está lleno.

lcd.setCursor(6,1); //Sitúa el cursor en posición.

lcd.print(" "); //Imprime texto vacío.

if ( distanceCm <= 50) //Si la distancia entre el nivel de agua y el

sensor por ultrasonidos es inferior a 50 cm se procederá a reducir

el caudal.

medio = true ; //Asignación del estado del depósito para

reducir el caudal de agua.

if ( medio == true) //Si se ha activado la marca se procede al

cambio de caudal del llenado del depósito.

digitalWrite(3,low); //cierre del circuito de potencia del

relé nº2 (puesta en marcha de la bomba).

delay (400) //Espera 0,4 segundos.

digitalWrite(4,LOW); //Cierre del circuito de potencia del relé

nº3 (½ del caudal máximo de agua, reduce frecuencia alimentación

motor a la mitad).

//Control de la temporización de la iluminación.

if((t.hour == horainicio2iluminacion )&&(t.min ==

mininicio2iluminacion )) //Si es la hora del encendido de las luces

programado.

digitalWrite(A1, LOW); //Cierre del circuito de potencia del

relé nº6.

Page 120: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 120

else if ((t.hour == horaduracion2iluminacion )&&(t.min ==

minduracion2iluminacion )) //Si es la hora del apagado de las luces

programado.

digitalWrite(A1, HIGH); //Apertura del circuito de potencia del

relé nº6.

//Control cierre de la puerta de acceso.

val3 = digitalRead(9); //Leemos el valor analógico que nos devuelve

el sensor presencia nº3.

if (cirpuerta == true) //Si se está cerrando la puerta.

if (val3 == HIGH) //si detecta presencia en la puerta

de acceso.

Activado3 = true; //Asignamos marca de presencia en la

puerta.

tiempo123 = millis(); //Reiniciamos recuento de segundos

para dar tiempo a evacuar la zona de acceso.

Rearpuerta = false ; //Asignamos marca de presencia en la

puerta para que ésta no sigua cerrándose.

if (activado3) //Si se ha detectado presencia.

if ((val3 == HIGH) && ( millis() - tiempo123 < redisparo))

//Si dentro del intervalo de tiempo de espera, el sistema

vuelve a detectar presencia.

tiempo123 = millis();//reiniciamos el recuento,

actualización de la variable del tiempo.

if (millis() - tiempo123 < 5000) Si no han pasado más de

cinco segundos.

analogWrite(A0, 255); //Apertura del circuito de potencia

del relé nº5.

else

Rearpuerta = true ; //Marca para el final de conteo fin de

presencia.

if (Rearpuerta == true) //Si durante el intervalo de tiempo no

se ha detectado ninguna presencia.

Page 121: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 121

analogWrite(A0, 0); //Cierre del circuito de potencia del

relé nº5.

Finalcarrera = digitalRead(6); //lectura digital de pin.

if (Finalcarrera == HIGH) //Si la puerta ha terminado de

cerrarse.

analogWrite(A0, 255); //Apertura del circuito de potencia

del relé nº5.

Rearpuerta = false ; //Asignamos marca del rearme de la

puerta.

cierrepuerta = false ; //Asignamos marca del fin del cierre

de la puerta de acceso.

//Control de presencia puntos de luz.

val = analogRead(A3); //Leemos el valor analógico que nos devuelve el

sensor presencia nº1.

if (luz1 == false) //Si el usuario no ha activado las luces.

if (val > 100) //si detecta presencia en sensor nº1.

activado = true; //Asignamos marca de detección de

presencia.

tiempo12 = millis();//Reiniciamos conteo de la

duración de la apertura de las luces.

if (activado) //Si se ha detectado presencia.

if ((val > 125) && ( millis() - tiempo12 < redisparo))

//Si detecta presencia durante el recuento.

tiempo12 = millis();//reinicio de la variable del

tiempo.

if (millis() - tiempo12 < espera) //Mientras no termine

el recuento del tiempo transcurrido.

digitalWrite(A1, LOW); //Cierre del circuito de

potencia del relé nº6 (activación de los puntos de

luz).

Page 122: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 122

else

digitalWrite(A1,HIGH); //Si ha pasado el recuento

del tiempo transcurrido.

activado = false; //Asignación de valor de fin de

presencia.

val2 = analogRead(A2); //Leemos el valor analógico que nos devuelve

el sensor presencia nº2.

if (luz2 == false) //Si el usuario no ha activado las luces.

if (val2 > 125) //si detecta presencia en sensor nº1.

activado2 = true; //Asignamos marca de detección de

presencia.

tiempo22 = millis(); //reinicio de la variable del tiempo.

if (activado2) //Si se ha detectado presencia.

if ((val2 > 125) && ( millis() - tiempo22 < redisparo2))

//Si detecta presencia durante el conteo de tiempo.

tiempo22 = millis();//reinicio de la variable del

tiempo transcurrido.

if (millis() - tiempo22 < espera2) //Mientras no termine

el recuento del tiempo transcurrido.

digitalWrite(A0,LOW); //Cierre del circuito de

potencia del relé nº6 (activación de los puntos de

luz).

else

digitalWrite(A0,HIGH); //Si ha pasado el conteo del

tiempo transcurrido.

activado2 = false; //Asignación de valor de fin de

presencia.

Page 123: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 123

//Control de acciones recibidas por el módulo Bluetooth HC-06.

if((estado== '0')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “0”,y el número

es diferente al enviado con anterioridad.

digitalWrite(2,LOW); //Cierre del circuito de potencia del

relé nº1 (activación de la bomba de riego).

estadoanterior = estado ; //Actualización de estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("Riego"); //Imprime texto.

delay(300); //Espera 0.3 segundos.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print("Activado"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if((estado== '1')&&(estadoanterior != estado)) //Si el usuario

ha pulsado la tecla asociada al número “1”,y el número es

diferente al enviado con anterioridad.

digitalWrite(2,HIGH); //Apertura del circuito de potencia

del relé nº1 (desactivación de la bomba de riego).

estadoanterior = estado ; //Actualización de estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(4,0); //Sitúa el cursor en posición.

lcd.print("Riego"); //Imprime texto.

delay(300); //Espera 0.3 segundos.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print("Desactivado"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

Page 124: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 124

if((estado== '2')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “2”,y el número

es diferente al enviado con anterioridad.

if (( 30 < distanceCm)&&(estadoanterior != estado)) //Si

el depósito no está lleno.

digitalWrite(3,LOW); //Cierre del circuito de

potencia del relé nº2 (activación de la bomba de

suministro de agua en la vivienda).

estadoanterior = estado ; //Actualización de estado.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Llenando dep."); //Imprime texto.

delay(300); //Espera 0.3 segundos.

lcd.setCursor(3,1); //Sitúa el cursor en posición.

lcd.print("Activado"); //Imprime texto.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

else if (estadoanterior != estado) //Si el anterior

dato obtenido por el HC-06 es diferentes al actual.

lcd.clear(); Se borra cualquier carácter en

pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Deposito lleno"); //Imprime texto.

estadoanterior = estado ; //Actualización del valor

del estado.

delay(700); //Espera 0.7 segundos.

lcd.clear(); //Se borra cualquier carácter en

pantalla.

if((estado== '3')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “3”,y el número

es diferente al enviado con anterioridad.

Page 125: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 125

digitalWrite(3,HIGH); //Apertura del circuito de potencia

del relé nº2 (activación de la bomba de suministro de agua

en la vivienda).

digitalWrite(4,HIGH); //Cierre del circuito de potencia

del relé nº3 (activación de la bomba de suministro de agua

en la vivienda).

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(1,0); //Sitúa el cursor en posición.

lcd.print("Llenando dep."); //Imprime texto.

delay(300); //Espera 0.3 segundos.

lcd.setCursor(2,1); //Sitúa el cursor en posición.

lcd.print("Desactivado"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

estadoanterior = estado ; //Actualización del valor del

estado.

if((estado== '4')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “4”,y el número

es diferente al enviado con anterioridad.

digitalWrite(5,HIGH); //Apertura del circuito de potencia

del relé nº4 (apertura de la puerta de acceso).

estadoanterior = estado; //Actualización del valor del

estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("Abriendo puerta"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if((estado== '6')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “5”,y el número

es diferente al enviado con anterioridad.

digitalWrite(4,HIGH); //Cierre del circuito de potencia

del relé nº4 (apertura de la puerta de acceso).

delay(400); //Espera 0,4 segundos.

Page 126: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 126

digitalWrite(5,LOW); //Apertura del circuito de potencia

del relé nº5 (cierre de la puerta de acceso).

estadoanterior = estado ; //Actualización del valor del

estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("Cerrando puerta"); //Imprime texto.

cierrepuerta = true; //Asignación del procedimiento de

cierre de la puerta de acceso.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if((estado== '5')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “6”,y el número

es diferente al enviado con anterioridad.

luz1 = true; //Asignación de la marca para la invalidación

de los sensores de presencia.

luz2 = true; //Asignación de la marca para la invalidación

de los sensores de presencia.

digitalWrite(A1, LOW); //Cierre del circuito de potencia

del relé nº6 (Encendido de las luces).

estadoanterior = estado ; //Actualización del valor del

estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("Abriendo focos"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear(); //Se borra cualquier carácter en pantalla.

if((estado== '7')&&(estadoanterior != estado)) //Si el

usuario ha pulsado la tecla asociada al número “7”,y el número

es diferente al enviado con anterioridad.

luz1 = false; //Asignación de la marca para la validación

de los sensores de presencia.

luz2 = false ; //Asignación de la marca para la validación

de los sensores de presencia.

Page 127: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 127

digitalWrite(A1,HIGH); //Apertura del circuito de potencia

del relé nº6 (Apagado de las luces).

estadoanterior = estado; //Actualización del valor del

estado.

lcd.clear(); //Se borra cualquier carácter en pantalla.

lcd.setCursor(0,0); //Sitúa el cursor en posición.

lcd.print("Cerrando focos"); //Imprime texto.

delay(1000); //Espera 1 segundo.

lcd.clear();//Se borra cualquier carácter en pantalla.

delay (25); //Espera 25 microsegundos segundo para volver a

ejecutar el void loop.

//Fin void loop.

Page 128: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 128

7 ESQUEMAS

Page 129: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

UNIVERSIDAD ROVIRA I VIRGILI

HUERTO

ZONA ACCESO

ZONA EXPLOTACIÓN

AGRÍCOLA

1:100

Pozo

Depósito agua

Vivienda

Construcciones varias

136

83

84

84

Puerta acceso.

Cuadro eléctrico

Nº1

Francesc Miralles Benet

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

7.1.1 Registro catastro finca

AutoCAD SHX Text
Escala
AutoCAD SHX Text
Dibujado por:
Page 130: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Nº2

UNIVERSIDAD ROVIRA I VIRGILI

1:100

Pozo

Deposito agua

Vivienda

Construcciones varias

136

83

84

84

7.1.2.1 Sistema de riego en

la explotación agrícola

Canalización riego

Canalización riego

Puerta acceso

Cuadro eléctrico

M

Alim. motor

3 X 2.5 mm2

Francesc Miralles Benet

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

AutoCAD SHX Text
Escala
AutoCAD SHX Text
PVC ( Ø 18 cm.
AutoCAD SHX Text
PVC ( Ø 4 cm)
AutoCAD SHX Text
Dibujado por:
Page 131: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Nº3

UNIVERSIDAD ROVIRA I VIRGILI

1:25

Pozo

Deposito agua

Vivienda

Construcciones varias

7.1.2.2 Sistema llenado

Canalización

M

Alim. motor

3 X 2.5 mm2

M

Motor suministro agua

vivienda

Cuadro eléctrico

depósito

Francesc Miralles Benet

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

AutoCAD SHX Text
Escala
AutoCAD SHX Text
PVC ( Ø6cm).
AutoCAD SHX Text
Dibujado por:
Page 132: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Nº4

UNIVERSIDAD ROVIRA I VIRGILI

1:25

Pozo

Deposito agua

Vivienda

Construcciones varias

7.1.2.3 Instalaciones

M

Motor suministro agua

vivienda

Cuadro eléctrico

Punto de luz y zona

detección sensor PIR

Zona detección sensor

PIR puerta acceso.

alumbrado exterior

Francesc Miralles Benet

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

AutoCAD SHX Text
Escala
AutoCAD SHX Text
Dibujado por:
Page 133: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

LCD + I2C

I2C MODULO

PIC HC-SR501

RTC DS 1302

HC-06

HC-SR04

DHT11

4

1 2 3

56

7 89

* 0 #

KEYPAD

Nº5

UNIVERSIDAD ROVIRA I VIRGILI

GN

D

IN

1

IN

2

IN

3

IN

4

IN

5

IN

6

IN

7

IN

8

VC

C

K1K2K3K4K5K6K7K8

A5

A4

A3

A2

A1

A0

VIN

GND

GND

5V

3.3V

RES

5V

PO

WE

R

0-RX

1-TX

2

3'

4

5'

6'

7

8

9'

10'

11'

12

13

GND

AREF

SDA

SCL

AN

AL

OG

IN

DIG

IT

AL

P

MW

(`)

DAT

CLK

GND

VCC

RST

4

1 2 3

56

78

9

* 0 #

RT

X

TX

D

GN

D

VC

C

GND

IN1

VCC

GN

D

Trig

Ec

ho

VC

C

OU

T

GN

D

IN

1

VC

C

GN

D

IN

1

VC

C

Sensores distribuidos en la explotación

Parte frontal del encapsulado

Entradas líneas de variadores

Salidas líneasde variadores

Entrada líneade luz 220 V 50H

z

Salidas líneade luz 220 V 50Hz

Alimentación HUB USB 2.0 X3 500mA /5V HUB USB 2.0 x3

Alimentación Connectores

Alimentación Arduino

GN

D

IN

1

VC

C

COM

NO

COM

NO

Interruptor

final de carrera

Trabajo fin de grado

Sistema de control automático en una explotación agrícola. Francesc Miralles Benet

7.2.1 Esquema

encapsulado nº1

AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
Dibujado por:
Page 134: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Nº6

UNIVERSIDAD ROVIRA I VIRGILI

Trabajo fin de grado

Sistema de control automático en una explotación agrícola. Francesc Miralles Benet

7.2.2 Esquema

encapsulado nº2

CONECTOR

AutoCAD SHX Text
A
AutoCAD SHX Text
A'
AutoCAD SHX Text
A
AutoCAD SHX Text
A'
AutoCAD SHX Text
B
AutoCAD SHX Text
B'
AutoCAD SHX Text
B
AutoCAD SHX Text
B'
AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
Dibujado por:
Page 135: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

A5

A4

A3

A2

A1

A0

VIN

GND

GND

5V

3.3V

RES

5V

PO

WE

R

0-RX

1-TX

2

3'

4

5'

6'

7

8

9'

10'

11'

12

13

GND

AREF

SDA

SCL

GN

D

IN

1

VC

C

GN

D

IN

1

VC

C

GND

IN1

VCC

GN

D

Trig

Ec

ho

VC

C

RT

X

TX

D

GN

D

VC

C

DAT

CLK

GND

VCC

GN

D

IN

1

IN

2

IN

3

IN

4

IN

5

IN

6

IN

7

IN

8

VC

C

K1

K2

K3

K4

4

1 2 3

56

78

9

* 0 #

IN

1

IN

2

IN

3

IN

4

IN

5

IN

6

IN

7

GN

D

VC

C

SD

A

SC

L

IN 10

IN 9

IN 8

IN 7

IN 6

IN 5

IN 4

IN 3

IN 2

IN 1

IN 16

IN 15

IN 14

IN 13

IN 12

IN 11

AN

AL

OG

IN

DIG

IT

AL

P

MW

(`)

RST

OU

T

K5

K1K2K3K4K5K6K7K8

LCD + I2C

I2C MODULO

PIC HC-SR501

RTC DS 1302

HC-06

HC-SR04

DHT11

4

1 2 3

56

7 89

* 0 #

KEYPAD

7.3 Esquema distribución

Nº7

UNIVERSIDAD ROVIRA I VIRGILI

GN

D

VC

C

SD

A

SC

L

GN

D

IN

1

VC

C

K6

COM

NO

Interruptor final de

carrera

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

pines de Arduino para los

controladores

AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
Dibujado por:
Page 136: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

GND

IN1

VCC

GND

IN1

VCC

GN

D

IN

1

IN

2

IN

3

IN

4

IN

5

IN

6

IN

7

IN

8

VC

C

4

12

3

56

78

9

*0

#

IN 1

IN 2

IN 3

IN 4

IN 5

IN 6

IN 7

GND

VCC

SDA

SCL

IN

10

IN

9

IN

8

IN

7

IN

6

IN

5

IN

4

IN

3

IN

2

IN

1

IN

16

IN

15

IN

14

IN

13

IN

12

IN

11

+15 Vdc

K1K2K3K4K5K6K7K8

LCD + I2C

I2C MODULO

PIC HC-SR501

RTC DS 1302

HC-06

HC-SR04

DHT11

4

1 2 3

56

7 89

* 0 #

KEYPAD

Nº8

UNIVERSIDAD ROVIRA I VIRGILI

GND

VCC

SDA

SCL

SDA SCL +5V GND GND +5V

GND

IN1

VCC

GND

Trig

Echo

VCC

RTX

TXD

GND

VCC

DAT

CLK

GND

VCC

RST

OUT

220V 50Hz

CONECTOR

Comunicación I2C

Alimentación Alimentación

GND

IN1

VCC

COM

NO

Interruptor final de

carrera

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

7.4 Esquema distribución

alimentación para los

controladores

AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
B
AutoCAD SHX Text
B'
AutoCAD SHX Text
A
AutoCAD SHX Text
A'
AutoCAD SHX Text
Dibujado por:
Page 137: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

M

3

L1

N

51

2 4

L1L2

U1V1

W1

-G

K6

-Q1

Puerta acceso.

Luz 1

Luz 2

Nº9

UNIVERSIDAD ROVIRA I VIRGILI

M

3

51

2 4

L1L2

-H

-Q2

M

3

51

2 4

L1L2

-K

-Q3

Depósito agua.Riego.

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

7.5 Esquema de fuerza

U1V1

W1

U1V1

W1

AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
Dibujado por:
Page 138: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

0V

+10V

AIN+

AIN-

DIN 1

DIN 2

DIN 3

15V

0V

RL1B

RL1C

PE

N

K4

K5

Puerta acceso.

0V

+10V

AIN+

AIN-

DIN 1

DIN 2

DIN 3

15V

0V

RL1B

RL1C

PE

L/L1,N/L2

or

L/L1,N/L2,L3

K1

0V

+10V

AIN+

AIN-

DIN 1

DIN 2

DIN 3

15V

0V

RL1B

RL1C

PE

L/L1,N/L2

or

L/L1,N/L2,L3

K3

-G -H -K

Riego Depósito agua

Nº10

UNIVERSIDAD ROVIRA I VIRGILI

L1

K2

L/L1,N/L2

U1V1

W1 U1V1

W1

U1V1

W1

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

7.6 Esquema de control

AutoCAD SHX Text
Escala
AutoCAD SHX Text
-
AutoCAD SHX Text
Dibujado por:
Page 139: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

TemperaturaHumedad

Fecha

Notificaciones

Menú principal.

4 Seg. 4 Seg.

4 Seg. 4 Seg.

Menú nº1

Control de la bomba trifásica,riego.

UNIVERSIDAD ROVIRA I VIRGILI

Nº11

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benetnº1

7.7.1 Esquema interfaz local

AutoCAD SHX Text
18%
AutoCAD SHX Text
25c
AutoCAD SHX Text
24/05/2017
AutoCAD SHX Text
18%
AutoCAD SHX Text
25c
AutoCAD SHX Text
1:59
AutoCAD SHX Text
CONTROL BOMBA
AutoCAD SHX Text
RIEGO
AutoCAD SHX Text
1-Activar
AutoCAD SHX Text
2-Paro
AutoCAD SHX Text
*-Salir
AutoCAD SHX Text
Dibujado por:
Page 140: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

4 Seg. 4 Seg.

Menú nº2

Control de la bomba trifásica,depósito.

Menú nº3

REGRESO AL MENÚ PRINCIPAL

Configuración tem

porizador riego.

UNIVERSIDAD ROVIRA I VIRGILI

Nº12

Trabajo fin de grado

Sistema de control automático en una explotación agrícola. Francesc Miralles Benet

nº2

7.7.2 Esquema interfaz local

AutoCAD SHX Text
CONTROL BOMBA
AutoCAD SHX Text
DEPÓSITO
AutoCAD SHX Text
1-Activar
AutoCAD SHX Text
2-Paro
AutoCAD SHX Text
*-Salir
AutoCAD SHX Text
TEMP. BOMBA
AutoCAD SHX Text
RIEGO
AutoCAD SHX Text
HORA INCIO
AutoCAD SHX Text
MIN. INCIO
AutoCAD SHX Text
HORA FINAL
AutoCAD SHX Text
MIN. FINAL
AutoCAD SHX Text
Dibujado por:
Page 141: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

REGRESO AL MENÚ PRINCIPAL

Menú nº4 Configuración tem

porizador parael llenado del depósito.

Menú nº5

Distancia introducidapreviamente.

Nivel agua depósitoConfiguración depósito

REGRESOAL MENÚPRINCIPAL

UNIVERSIDAD ROVIRA I VIRGILI

Nº13

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

nº3

7.7.3 Esquema interfaz local

AutoCAD SHX Text
TEMP. BOMBA
AutoCAD SHX Text
HORA INCIO
AutoCAD SHX Text
MIN. INCIO
AutoCAD SHX Text
HORA FINAL
AutoCAD SHX Text
MIN. FINAL
AutoCAD SHX Text
DEPÓSITO
AutoCAD SHX Text
PARAMETROS
AutoCAD SHX Text
DEPÓSITO
AutoCAD SHX Text
150 Cm
AutoCAD SHX Text
1- Altura dep.
AutoCAD SHX Text
Altura dep.
AutoCAD SHX Text
*-Salir
AutoCAD SHX Text
Dibujado por:
Page 142: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

2 Seg.

Menú nº6

REGRESOAL MENÚPRINCIPAL

Configuración tem

porizador iluminación.

Control puntos de luz.

2 Seg.

4 Seg.4 Seg.

Menú nº7

Control motor trifásico,acceso explotación.

UNIVERSITAT ROVIRA I VIRGILI

Nº14

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

nº4

7.7.4 Esquema interfaz local

AutoCAD SHX Text
CONTROL ILUMINACIÓN
AutoCAD SHX Text
1- Activar luz
AutoCAD SHX Text
*-Salir
AutoCAD SHX Text
3-Temporizar luz.
AutoCAD SHX Text
HORA INCIO
AutoCAD SHX Text
MIN. INCIO
AutoCAD SHX Text
HORA FINAL
AutoCAD SHX Text
MIN. FINAL
AutoCAD SHX Text
2- Des. luz
AutoCAD SHX Text
CONTROL PUERTA
AutoCAD SHX Text
1-Abrir puerta
AutoCAD SHX Text
2-Cerrar puerta
AutoCAD SHX Text
*-Salir
AutoCAD SHX Text
Dibujado por:
Page 143: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Nº15

UNIVERSITAT ROVIRA I VIRGILI

1:25

Pozo

Deposito agua

Vivienda

Construcciones varias

7.7.5 Situación y alcance

M

Motor suministro agua

vivienda

Cuadro eléctrico

Punto de luz y zona

detección sensor PIR

de los sensores PIR

Zona detección sensor

PIR puerta acceso.

Francesc Miralles Benet

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

AutoCAD SHX Text
Escala
AutoCAD SHX Text
Dibujado por:
Page 144: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

UNIVERSIDAD ROVIRA I VIRGILI

Nº16

Trabajo fin de grado

Sistema de control automático en una explotación agrícola.

Francesc Miralles Benet

7.8 Diagrama de flujo del

sistema automático

NO

SI

NO

SI

NO

SI

NO

NO

Activación del relé nº1

El usuario ha activado el

llenado del depósito ?

SI

NO

Activación del relé nº3

y nº4

SIEl usuario ha activado la

apertura de la puerta ?

SI

NO

El usuario ha activado el cierre

de la puerta ?

SI

NO

Se ha temporizado la

apertura y cierre de la

iluminación exterior ?

SI

NO

La hora actual esta dentro

de la franja de tiempo

establecida para la

temporización de las luces ?

Activación del relé nº6

SI

NO

El usuario ha activado la

iluminacíon ?

Activación del relé nº2

Se ha temporizado el riego ?

SI

NO

Bucle principal

El usuario ha activado el

llenado del depósito ?

El nivel de agua en el

depositó esta al próximo

al máximo ? Activación del relé nº3

Desactivación del relé nº2

SI

NO

El nivel de agua en el

depósito esta al

máximo ?

Desactivación del relé nº2

Desactivación del relé nº3

Espera hasta

apertura de puerta

(fin del conteo)

NO

SI

NO

Se detecta presencia en

la puerta de acceso ?

Activación del relé nº6

Interruptor final de

carrera activado ?

SI

NO

El usuario ha activado el

riego ?

Desactivación del relé nº6

Desactivación del relé nº4

Desactivación del relé nº6

El usuario ha activado el

cierre de las luces o la hora

actual esta fuera del horario

temporizádo ?

La hora actual esta

dentro de la franja de

tiempo establecida ?

Desactivación del relé nº6

AutoCAD SHX Text
Dibujado por:
AutoCAD SHX Text
SI
AutoCAD SHX Text
SI
Page 145: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 147

8 R$%$1$-"( 2ɯ!(!+(.&1:%(" 2

Páginas web:

www.arduino.cc/en/Main/ArduinoBoardUnoSMD

Paradisetronic.com

www.panamahitek.com/sensor-ultrasonico-hc-sr04-arduino/

https://electronilab.co/tienda/sensor-de-movimiento-pir-hc-sr501/

https://geekytheory.com/sensor-de-ultrasonidos-hc-sr04-piezoelectrico-arduino

https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/

https://electronilab.co/tienda/sensor-de-temperatura-y-humedad-dht11/

http://domoticx.com/esp8266-wifi-dht-1122-module-arduinoide/

http://5hertz.com/tutoriales/?p=479 ,

https://arduino-info.wikispaces.com/LCD-Blue-I2C

http://www.instructables.com/id/LCD-Bluetooth-Arduino/

http://arduino.denivel.com/index.php/producto/modulo-i2c-pantalla-lcd/

http://librearduino.blogspot.com.es/2014/01/rtc-arduino-modulo-reloj-tiempo-

real-tutorial.html

https://electronilab.co/tienda/modulo-bluetooth-hc-06-serial-rs232ttl/

https://electronilab.co/tienda/modulo-bluetooth-hc-06-serial-rs232ttl/

http://www.electronicapty.com/teclados-para-arduino/teclado-de-12-teclas-

4x3-para-arduino-detail

https://www.edx.org/micromasters

www.satkit.com

https://www.prometec.net

https://www.arduino.cc/

https://www.luisllamas.es/tutoriales-de-arduino

http://tienda.bricogeek.com/

https://www.schneider-electric.es/es/.../2900-variadores-de-velocidad-y-

arrancadores/

www.leroymerlin.es

www.lasdosm.com

elcajondeardu.blogspot.com

https://playground.arduino.cc

Libros:

Arduino Práctico. Edición 2017 , Daniel Lozano Equisoain

Robotica y domotica básica con Aduino.Edición 2016 , Pedro Porcuna Lopez

Arduino Cookbook.Edición 2011 , Michael Margolis

Page 146: Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO …deeea.urv.cat/public/PROPOSTES/pub/pdf/2462pub.pdf · Francesc Miralles Benet SISTEMA DE CONTROL AUTOMÁTICO EN UNA EXPLOTACIÓN

Sistema de control automático en una explotación agrícola 148