Diseño de un sistema de riego hidropónico automático asistido por un hardware arduino

10 Enero 2018

Trabajo realizado por Victor Núñez Rebollar, de la Universidad Politécnica de Catalunya. El cual fue revisado y extractado por www.portalfruticola.com. El documento fue facilitado por www.hidroponiacasera.net

Pre requisitos

Este proyecto se ha desarrollado bajo el encargo de la implantación de un sistema hidropónico en un invernadero y cuya unidad de control se ha presupuestado por USD 477.  Esto implica que los materiales usados para la construcción del prototipo donde simular el cultivo, así como los elementos utilizados en la construcción de la unidad de control han tenido que cumplir con dos premisas básicas:

1. Bajo coste.

2. Rápido Montaje.

Bajo estas dos premisas, se pretende desarrollar un sistema que automatice en la mayor medida de lo posible el proceso de desarrollo de cultivos hasta la cosecha.

Inputs

En nuestro sistema automatizado debemos establecer una estructura de funcionamiento de la unidad de control. Esta se basará en el tipo de cultivo para el cual ha sido diseñada y las condiciones del entorno. Una vez que se ha determinado el modo de funcionamiento del sistema, se debe reconocer aquellos inputs que hagan que nuestra unidad de control sea útil y especializada en la tarea a realizar. El modo de funcionamiento del sistema, por sus características de construcción, se basa en que la bomba de agua esté en funcionamiento, de modo de tomar las mediciones necesarias para el mantenimiento del cultivo.

Por lo tanto, se deben conocer los siguientes parámetros:

  • Orientación del cultivo.
  • Aportación lumínica (PAR).
  • Temperatura de la solución nutritiva.
  • Nivel de pH en la solución nutritiva.
  • Electroconductividad (EC) de la solución nutritiva.
  • Nivel de Salinidad de la solución nutritiva.
  • Nivel de Oxígeno Disuelto (DO) en la solución nutritiva.
  • Nivel de Potencial de Reducción (ORP – Oxidation Reduction Potential).
  • Reloj para la sincronización en la toma de medidas.

Todos estos inputs serán analizados posteriormente en sus respectivos puntos. Una vez que conocemos en lo que se basará nuestro control, debemos establecer cómo actuaremos sobre todos ellos, de qué manera, cuándo y cómo se procederá a corregir las deficiencias detectadas.

Outputs

Una vez que se conocen los inputs que debemos controlar con nuestra unidad, debemos establecer cómo podemos actuar sobre los parámetros. Estos podrán ser indicadores, los que nos obligarán a interactuar con el medio de manera manual, mientras que otros actuarán de manera automática. Como siempre se ha tenido en cuenta los prerrequisitos del presente proyecto, sobre todo el punto relacionado con el presupuesto por el que se ha licitado el diseño de la unidad de control.

Los factores sobre los que podemos actuar son:

  • Temperatura de la solución nutritiva.
  • Nivel de Oxígeno y ORP de la solución nutritiva.
  • Aportación al sistema de la solución nutritiva.
  • Regulación del pH de la solución nutritiva.
  • Aportación al sistema de los diferentes nutrientes necesarios.

La forma en que se produce la interacción con el sistema hidropónico es la siguiente:

  • La temperatura se controla de manera manual.
  • Nivel de Oxígeno y ORP se controla de manera automática.
  • La aportación de solución nutritiva se lleva a cabo de manera automática.
  • La regulación del pH se hará de manera manual, pero en implantaciones posteriores se podrá hacer de manera automática.
  • La aportación de soluciones nutritivas se realiza de manera manual.

La forma en cómo se produce la interacción con el sistema hidropónico es la siguiente:

  • Frente a una temperatura superior al umbral máximo de temperatura se procederá a aportar manualmente frío al sistema. En caso contrario mediante una resistencia sumergible.
  • Mediante una bomba de aire regularemos los niveles de ORP y de Oxígeno disuelto en la solución nutritiva.
  • La aportación automática de solución nutritiva se llevará a cabo mediante una bomba de impulsión de agua.
  • La regulación del pH se hará mediante avisadores LED, y en una primera fase manualmente, siendo sustituidos por electroválvulas.
  • La aportación de soluciones nutritivas se realizará manualmente en una primera fase, siendo sustituidas por electroválvulas en una etapa posterior.

Tablas de actuación

A partir de los inputs/outputs anteriormente descritos, podemos resumir el funcionamiento del sistema mediante tablas.

Valores límites para el cultivo hidropónico de lechugas.

Valores umbral de actuación de los sensores

Tiempo de respuesta de los sensores.

Realización de control electrónico

Para diseñar la unidad de control encargada del funcionamiento del cultivo hidropónico, necesitamos una serie de inputs/outputs que ya han sido identificados en capítulos anteriores.

En función a estos parámetros se ha buscado unos sensores, actuadores y microprocesador que se adapte bajo un coste mínimo a estos requerimientos básicos.

Aparte del motivo expuesto anteriormente, se ha considerado también en la toma de la decisión final el tiempo de ejecución del proyecto, en el que se dispone solamente de 3 meses, por lo que se obliga a que el Hardware y Software utilizado esté fácilmente disponible, y que sea fiable; es decir se busca la filosofía del Plug-and-Play (PnP), por lo que debe ser rápido, eficaz y sencillo.

A partir de estas premisas se ha tenido que diseñar una estructura de control, es decir, se debe desarrollar un esquema de funcionamiento que se basa en los siguientes puntos:

Microcontrolador arduino

Arduino es una placa de hardware libre que incorpora un microcontrolador reprogramable y una serie de pines-hembra (estos están unidos internamente y también a las patillas de entrada/salida del microcontrolador) que permiten conectar de forma sencilla y cómoda diferentes sensores y actuadores.

Se ha escogido para llevar a cabo el control de la instalación una placa Arduino debido a que es un hardware libre, cuenta con sistema “plug and play” (conectar y funcionar) y bajo costo. El modelo escogido es el Arduino Mega2560.

La placa del Arduino Mega 2560 está basada en el Microcontrolador ATmega2560 (como todos los modelos de Arduino, todos los microcontroladores son del tipo AVR, una arquitectura de microcontroladores desarrollada y fabricada por la marca Atmel ®). Como característica más destacable podemos decir que tiene 54 pines de entrada/salida digitales (de los cuales 14 pueden ser usados como salidas analógicas PWM), 16 entradas analógicas y 4 receptores/transmisores serie TTL-UART. Consta de una memoria flash de 256 Kilobytes (de los cuales 8 están reservados para el bootloader), una memoria de SRAM de 8KB y una EEPROM de 4KB. Su voltaje de trabajo es 5V.

El motivo por el que se ha escogido el modelo Mega2560 respecto al resto de modelos oficiales de Arduino es porque tiene mejores características técnicas que algunos modelos (por ejemplo, el modelo Arduino UNO, tiene 14 pines de entrada o salida digitales, 6 entradas analógicas y menor memoria EEPROM) y en el caso de los modelos que disponen de mayores características técnicas, el modelo Mega2560 es más sencillo y económico respecto a, por ejemplo, el Arduino Mega ADK siendo ya suficiente este modelo (el 2560) para el control de la instalación que se quiere llevar a cabo.

Características Arduino MEGA 2560 Rev. 3

Por otra parte, el software de Arduino consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.

Reloj

La placa Arduino posee un reloj propio para controlar la frecuencia de trabajo del Microcontrolador, que funciona a una frecuencia de 16MHz.

El reloj que lleva la placa Arduino es un resonador cerámico (que es un material cerámico piezoeléctrico que genera la señal oscilatoria de la frecuencia deseada cuando se le aplica un determinado voltaje). Este tipo de relojes son ligeramente menos precisos que los osciladores de cristal, pero son más baratos. En concreto la precisión en la frecuencia aportada por un cristal de cuarzo con compensación de temperatura es de 0,001% mientras que con un resonador cerámico típico fabricado con PZT (zirconato titanato de plomo) es del 0,5%.

Ethernet Shiel

Aparte de la propia placa Arduino, existen los Shields. El shield es una placa de circuito impreso que se coloca en la parte superior de una placa Arduino y se conecta a ella mediante el acoplamiento de sus pines sin necesidad de ningún cable. Su función es actuar como placas supletorias, ampliando las capacidades y complementado la funcionalidad de la placa Arduino base de la forma más compacta y estable.

En general, los shields comparten las líneas GND, 5V (o 3,3V), RESET y AREF con la placa Arduino, además suelen monopolizar algunos pines de entrada/salida para la comunicación con la placa Arduino base.

El Arduino Ethernet Shield se utiliza para añadir a la placa Arduino base la capacidad de conectarse a una red cableada TCP/IP. Este shield incorpora, también, un zócalo para colocar una tarjeta microSD, que se podrá utilizar mediante la librearía de programación “SD”, que viene por defecto en el lenguaje Arduino. Para poder interactuar con la SD, la placa base Arduino utiliza una comunicación SPI con protocolo RS232. Esta comunicación permite que haya varios esclavos y un maestro que los activa con el pin SS. En el caso de la SD, utiliza como pin SS el número 4, en lugar del 10 (éste está reservado para el chip W5100, incorporado en la Arduino Ethernet Shield).

El motivo por el que se ha escogido esta placa de Arduino, es que, como se ha dicho, tiene integrada una tarjeta de memoria SD. Se ha escogido utilizar este componente en el diseño del prototipo, para que sea más sencillo almacenar datos de la instalación, sin necesidad de utilizar un ordenador conectado continuamente a la instalación.

De esta forma, en cualquier momento la persona usuaria del prototipo puede retirar la tarjeta de memoria SD y volcar los datos guardados en cualquier ordenador que disponga de ranura SD o bien adaptador con ranura SD. Indicar también que el formato de archivo de datos de la instalación es .csv, este formato puede ser leído por cualquier programa de hoja de cálculo, como Excel u Opencalc.

Habiéndose de conectar para ello los siguientes pines del Arduino MEGA:

• Pin 50: MISO – pin 11

• Pin 51: MOSI – pin 12

• Pin 52: SCK – pin 13

• Pin 53: CS – Pin 4

Sensores

Los sensores que debemos utilizar deben tener las siguientes características comunes:

• Compatibles con Arduino o Protocolo de comunicación o Alimentación.

• Rangos de medición y precisión aceptables.

• Sumergibles.

• Durabilidad y Fiabilidad.

Después de una búsqueda de sensores por diferentes fabricantes y tiendas especializadas, se ha optado por el Fabricante Atlas Scientific LLD, ya que cumple con cada requisito anteriormente descrito, como se comprobará en el apartado “sensores”.

Los rangos de los sensores son:

Características Sensores Atlas Scientific

Por todo lo anterior y porque además se comercializa con un kit con todos los instrumentos necesarios para su mantenimiento y calibración, así como un multiplexor para poder conectarlo a Arduino, hacen de esta casa la más recomendada para el prototipo de la unidad de control mediante Arduino.

Actuadores

Los actuadores necesarios, al igual que los sensores deben tener como requisito:

• Compatibilidad con el tipo de comunicación que ofrece el Arduino Mega 2560 Rev.3

• En caso de actuadores no maniobrables directamente a través de Arduino, o Deben poder alimentarse con una fuente externa. o Deben poder controlarse su apagada y encendido mediante relé.

• Durabilidad y fiabilidad o Vida útil elevada o Capacidad de funcionamiento de 24h al día.

• Compatibles con ambientes húmedos o mojados.

Reloj RTC

Debido a que por programación no podemos usar el reloj interno de Arduino, ya que se lo hiciésemos, el programa no podría hacer nada hasta que acabase la cuenta del reloj. Por ello es necesario implementar un reloj externo capaz de mantener la hora sin alimentación por parte de Arduino y con una precisión lo suficientemente buena como para evitar que tengamos que reprogramar el ordenador.

Por ello hemos seleccionado el RTC DS1307.

El reloj de tiempo real DS1307 (RTC), es un bajo consumo de energía, Codificado con un sistema decimal en binario completo (BCD). Es un reloj/calendario con más de 56 bytes de NV SRAM.

La dirección y datos se transfieren mediante un protocolo de comunicación serie I2C a un bus bidireccional. El reloj/calendario devuelve información de segundos, minutos, horas, días, fecha, mes y año. Al final de mes se ajusta automáticamente durante los meses con menos de 31 días, incluyendo las correcciones para los años bisiestos.

El reloj funciona tanto en el formato de 24 horas o de 12 horas con indicador AM/PM. El reloj RTC DS1307 tiene un circuito integrado con el que detecta fallas de energía y cambia automáticamente a la alimentación de reserva (pila de 3V). El cronómetro interno continúa contando durante y después de que se haya cambiado a la alimentación de la pila.

 

Comunicaciones

Analizaremos los diferentes tipos de comunicación existentes entre los sensores escogidos.

Bus Serie I2C

I2C (Inter-Integrated Circuit) es un bus de comunicación muy usado para comunicar circuitos integrados entre si, uno de los usos más típicos es para comunicar un Microcontrolador con sus sensores periféricos. El I2C es un bus multi-maestro, es decir, que permite que haya múltiples maestros y múltiples esclavos en el mismo bus.

La principal característica del bus I2C es que utiliza dos líneas para transmitir la información: una (SDA) sirve para transmitir datos (0y1) y otra (SCL) sirve para enviar la señal de reloj, además necesita necesitará dos líneas más (existentes en el circuito de Arduino MEGA) una para masa y la otra de alimentación.

Como señal de reloj, clock, se entiende a una señal binaria de frecuencia periódica muy precisa, que sirve para coordinar y sincronizar los emisores y receptores, de forma que todos saben cuándo empieza, cuánto dura y cuándo acaba la transferencia de información.

Cada dispositivo conectado al bus I2C tiene una dirección única que lo identifica respecto el resto de dispositivos, y puede estar configurado como “maestro” o como “esclavo”. Un dispositivo maestro es aquel que inicia la transmisión de datos y además genera la señal de reloj. Se debe remarcar también que no es necesario que el maestro sea siempre el mismo dispositivo: esta característica se la pueden ir intercambiando ordenadamente los dispositivos que tengan esta capacidad.

Como se puede apreciar en la figura 5.2, para funcionar correctamente tanto la línea “SDA” como la “SCL”, tienen que estar conectadas mediante resistencia “pull-up” a la fuente de alimentación común, que puede tener un voltaje de 5V o 3,3V, generalmente.

La velocidad de transferencia de datos es de 100Kbits por segundo en el modo estándar (aunque se permiten velocidades de hasta 3,4Mbit/s). No obstante, como hay una única línea de datos la transmisión de información solo se puede establecer en un sentido al mismo tiempo (“half-duplex”), por lo que en el momento que un dispositivo empiece a recibir un mensaje, tendrá que esperar a que el emisor deje de transmitir para poder responderle.

Para el prototipo diseñado, la comunicación a través el protocolo I2C se utiliza para el uso del medidor de tiempo real. Como se ha dicho antes, la comunicación por el protocolo I2C, consiste en que el Arduino consulte (a través de este protocolo) al medidor de tiempo qué día y qué hora es. El medidor de tiempo le responde, con una precisión de segundos, la fecha y la hora.

Para conectar este reloj al Arduino mediante protocolo I2C, es necesario conectarlo a los terminales SDA y SCL correspondientes a los pines hembra 20 y 21 respectivamente.

Comunicación Universal Serial Bus (USB)

El bus USB es un bus de transmisión serie de datos y está diseñado sobre todo para conectar periféricos a un ordenador y dispositivos electrónicos. Una de las características que hace más popular al USB es la capacidad “plug and play”, es decir, que se pueden conectar y desconectar periféricos al ordenador, sin necesidad de reiniciarlo. Este tipo de conexión, también proporciona alimentación, de manera que si, el consumo de energía del periférico no es demasiado elevado, el periférico no necesita fuente de alimentación externa.

Una cosa que hace que el bus USB sea robusto en el momento de conectar y desconectar es que tan solo está formado por cuatro contactos. Un contacto está destinado a masa, otro para alimenta de 5V y dos más llamados D+ y D- por los que se envía datos, en una sola dirección cada vez, ya que D+ es el positivo y D- es el negativo de esa transmisión. Este tipo de transmisión se denomina balanceada o diferencial, ya que no usa el terminal de masa sino el D-, por lo que se reducen ruidos, mejorando así la calidad en la comunicación. En la Figura 5.2 se puede observar la distribución de los pines en un conector USB macho del tipo A y del tipo B.

Distribución de pines de un conector USB macho del tipo A y tipo B

Indicar que, comparado con otros tipos de buses serie, el bus USB es de los que ofrecen una velocidad de transmisión más elevada. Eso implica, también, que su implementación es más complicada.

En el caso de la solución escogida, con el Arduino Mega2560, la comunicación del Arduino con el ordenador por USB se hace de forma directa, es decir, no es necesario poner ningún chip en medio para hacer la conversión, como en los casos anteriormente explicados. Pero se debe agregar que la placa Arduino Mega 2560, físicamente, tiene el programador ISP en medio. Remarcar también que para poder comunicar el ordenador con el Arduino es necesario un programa para la comunicación serie, por ejemplo, se puede utilizar el que viene por defecto en Windows (Hyperterminal).

En la solución que se ha implementado, para comunicar el Arduino Mega2560 con el ordenador, se ha utilizado el programa Arduino IDE, el programa que, por defecto, se debe descargar con la placa Arduino. Indicar también, que si otra persona usuaria de la instalación quisiera comunicarse con el prototipo podría utilizar cualquier programa de comunicación serie, que viniera por defecto en su ordenador.

Protocolo RS232

El protocolo RS232 es uno de los más populares que se utilizan en la comunicación serie, y es la que se utiliza en los ordenadores. Aunque, hoy en día ha sido ampliamente superados por la comunicación USB.
L

A comunicación RS232 resuelve tres aspectos en la comunicación que se establece entre el DTE, Equipo Terminal de Datos , por ejemplo un PC y el DCE, Equipo para la comunicación de datos, como puede ser un periférico:

1. Características eléctricas de la señal: Se estable que la longitud máxima del cable no debe ser superior a los 15 metros y la velocidad máxima de transmisión es, en principio, 128.000 bps.

2. Características mecánicas de los conectores: Se utiliza un conector de 25 patillas, DB 25 o de 9 patillas DB 9, donde el conector macho identifica al DTE y el conector hembra al DCE. 3. Descripción funcional de las señales usadas: Las señales están básicamente divididas en dos grupos:

Señales primarias, que son las normalmente utilizadas para la transferencia de datos. Señales secundarias, que son las utilizadas para el control de la información que será transferida.

En el prototipo diseñado, se ha utilizado la comunicación RS232 para interactuar con los sensores y con la tarjeta de memoria SD (como se ha explicado anteriormente, esta tarjeta de memoria SD está integrada en la placa Arduino Ethernet Shield).

Comentar que la placa Arduino Mega2560 tiene tres canales serie preconfigurados, por lo que al necesitar la instalación de sensores, se ha decidido utilizar un doble-demultiplexor (se explicará este componente posteriormente) para un canal serie.

Es el protocolo utilizado por los sensores de Atlas Scientific descritos anteriormente.

Protocolo SPI

SPI o Seria Peripherical Interface, al igual que el sistema I2C, el sistema de comunicación SPI es un estándar que permite controlar (a cortas distancias) casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie sincronizado (es decir, sincronizado por un reloj).

Igualmente un dispositivo conectado al bus SPI, puede ser maestro (master) o esclavo (Slave), dónde el primero es el que inicia la transmisión de datos y además genera la señal de reloj (aunque, como con I2C, con SPI tampoco es necesario que el maestro sea siempre el mismo dispositivo) y el segundo se limita a responder.

La mayor diferencia entre el protocolo SPI y el I2C es que el primero requiere de cuatro líneas en lugar de dos del segundo. Una línea, llamada SCK o Serial Clock, envía a todos los dispositivos la señal de reloj generada por el maestro actual para sincronizar la comunicación.

Otra, llamada SS o SC o Select, se usa para elegir en cada momento con qué dispositivo esclavo se requiere comunicar de entre los varios que puedan estar conectados al master (ya que sólo puede transferir datos a un solo esclavo a la vez) es decir, se usa para habilitar o deshabilitar un determinado periférico.

La tercera, es llamada MOSI o SI de Master Out Slave In, es la línea utilizada para enviar los datos -0’s y 1’s- desde el maestro hacia el esclavo elegido. Y por último la cuarta línea, llamada MISO o Master In Slave Out, es la utilizada para enviar datos en sentido contrario, es decir, desde el esclavo al maestro.

Se puede hablar por lo tanto que es una comunicación “full duplex”, ya que la información puede ser transportada en ambos sentidos a la vez.

Esta comunicación es la usada entre el Arduino MEGA y el Shield de Ethernet.

Esquema de Bloques

SENSORES

Para llevar a cabo el control de un cultivo hidropónico son necesarios tantos sensores como variables se deseen controlar, a nuestro entender como mínimo se debe disponer de sensores para el control de: pH, oxígeno disuelto en agua (DO), electroconductividad (EC) y temperatura. Otro sensor que debería figurar en el control del cultivo hidropónico es el sensor de Redox (ORP) o Sensor de Potencial de Reducción, un sensor de oxígeno disuelto en un fluido (DO) y por último, un sensor de temperatura.

En el mercado, se pueden encontrar distintas marcas, con diferentes características para los sensores indicados. La elección de ellos debe venir determinada básicamente por las necesidades de la instalación, las características del sensor y la inversión que se pueda hacer en esta instalación.

Por ello se ha escogido los sensores de Atlas Scientific, tal y como hemos justificado en puntos anteriores.

Kit SDS de Atlas Scientific (incluye todos los sensores necesarios para la unidad de control).

Para la información completa y descargar la memoria completa entre al enlace:

DESCARGA LA MEMORIA COMPLETA AQUÍ

www.portalfruticola.com

También podría interesarte
Comentarios
0 Commentarios

Deja un comentario