You are on page 1of 10

Controlador automático de acuarios

Con este montaje pretendemos automatizar todos los elementos instalados en el acuario a modo de acuario domótico. Conseguiremos ahorrarnos algo
de trabajo en el mantenimiento del tanque y además tendremos un "vecino virtual" que nos lo cuide en vacaciones.

El conjunto consta principalmente de una serie de módulos que monitorizan los diferentes parámetros del acuario (temperatura, Ph, etc...) y de
un módulo de control que es el encargado de tomar las decisiones oportunas para el mantenimiento de las condiciones óptimas. Además tenemos
un módulo de configuración e información que, como su nombre indica, permite tanto variar las condiciones del tanque como obtener información
actualizada de éste.

En la figura anterior podemos ver como se interconectan los diferentes módulos con el controlador principal y la conexión desde el exterior con un
navegador WEB o con una conexión serie RS232. Aunque en un primer momento se consideró diseñar los diferentes módulos de forma separada
(con su propio microcontrolador), la capacidad del PIC16F874A nos da la posibilidad de controlarlo todo con un solo microcontrolador. Los
módulos desarrollados son los siguientes:

Módulo de control: Es el módulo principal del sistema, recoge la información suministrada por los sensores y medidores y actúa en
consecuencia. También se encarga de realizar las tareas periódicas del acuario como encender y apagar las luces y dar de comer a los peces.
Módulo de configuración e información WEB (acuaweb) y RS232: Se trata de un módulo puramente software que permite la visualización
de datos a través de una interfaz web o a través de un puerto serie. Además podemos configurar los parámetros del acuario (temperatura,
iluminacion, comidas, etc...) y realizar actuaciones puntuales con alguno de ellos.
Módulo de temperatura: Consiste en una serie de sensores de temperatura encapsulados para poder sumergirlos y de unos actuadores para
controlar los diferentes calefactores.
Módulo medidor de Ph: Mide el Ph del agua con un sensor estandar y convierte la señal para que el módulo de control la pueda procesar.
También tiene actuadores para activar los controladores de Ph.
Módulo medidor de nivel: Informa al módulo de control del nivel de agua existente en el acuario.
Módulo actuador de luces: Se encarga de alimentar los tubos de iluminación.
Módulo actuador de alimentación: Será el que introduzca comida en el agua cuando el módulo de control lo considere necesario.
Módulo generador de oleaje: Este módulo se encargará de activar las bombas generadoras de olas en el orden correcto.

Módulo de control
El módulo de control es el encargado de obtener datos de todos los sensores del sistema y de manejar los actuadores que
mantienen el acuario en su estado óptimo.

El encargado de todo esto es un microcontrolador, en concreto el PIC16F874A de Microchip. Es un microcontrolador


RISC con 35 instrucciones diferentes que se ejecutan en cuatro ciclos de reloj, puede funcionar hasta a 20Mhz y tiene
4096 posiciones de memoria de 14 bits para el programa, 192 bytes de ram y 128 bytes de memoria EEPROM para
poder guardar datos permanentemente. Tiene treinta y tres pines programables como entradas o salidas independientes,
dos cronómetros/alarmas de 8 bits o uno de 16, puerto serie (USART) y ocho convertidores A/D de diez bits.
En la página de Microchip tenemos modelos más pequeños como el PIC12C509 de solo 8 pines y otros más grandes y con más
prestaciones como el PIC18F8722 con 128 Kbytes de memoria, 54 pines programables, convertidores A/D, USART. etc.
Prácticamente todos los microcontroladores PIC son compatibles entre sí y podríamos poner cualquiera de ellos con solo
"recablear" los pines del integrado.

Para comunicarnos con el PIC16F874A utilizaremos el puerto serie USART integrado en él. Como los niveles del
microcontrolador son TTL (0 y 5V para el "0" y el "1" respectivamente) utilizaremos un adaptador de señal para convertirlos a
niveles RS232 (12 para el "0" y -12V para el "1"). El adaptador elegido es el MAX233A de dallas/maxim. Este integrado es
capaz de manejar dos canales de comunicación y no necesita ningún componente externo.

Módulo controlador de temperatura


Éste módulo contiene tanto los sensores de temperatura como los actuadores que manejan los calefactores. Consiste en
una serie de sensores de temperatura DS18S20 de dallas/maxim y los relés que actuarán sobre los calefactores del
acuario.

El DS18S20 es un termómetro digital de 9 bits que se conecta a través de un bus 1-wire. Tiene una precisión de ±0.5°C
en el rango de -10°C a +85°C y cada uno de ellos dispone de un identificador único de 64 bits, lo que permite que
puedan coexistir varios sensores en un único bus 1-wire. El bus 1-wire puede ser de hasta 100 metros de largo por lo
que la colocación de los sensores respecto del módulo no debería ser un problema.

El DS18S20 es un integrado con forma de transistor, tiene tres pines de los cuales dos sirven de alimentación
(GND y Vdd) y el otro (DQ) es el que se conecta al bus. Este sensor puede funcionar también sin alimentación, con lo
que se conoce como alimentación parásita. En este modo de funcionamiento la alimentación la saca directamente de la
linea DQ por lo que solo se necesitan dos cables (DQ y GND).

Para proteger el sensor del agua lo montaremos dentro de una ampolla de vidrio o plástico rellena de silicona. Es importate que no entre humedad en
el sensor para que no haya posibilidad de cortocircuito o de que se oxiden los pines.

El bus 1-wire es capaz de manejar varios dispositivos conectados a él por lo que con un bus es suficiente, este bus lo manejaremos por el pin RA4.
Por el conector 1-wire concectaremos los sensores de temperatura DS18S20 y podemos colocar tantos como queramos repartidos por el acuario, en
nuestro caso pondremos uno en el recipiente del sifón y otro en el filtro biológico.

Para controlar la temperatura utilizaremos dos calefactores típicos de acuario conectados a T1 que se activarán cuando la temperatura del acuario baje
del nivel preestablecido. Estos calefactores disponen de un termostato que los enciende y apaga cuando es necesario, pero como el control de
temperatura lo realizaremos nosotros, configuraremos los calefactores a una temperatura un poco mayor de la que necesitemos para que en caso de
mal funcionamiento del controlador no suba la temperatura excesivamente. El hecho de usar dos calefactores nos asegura que la temperatura del
tanque sea la óptima aún en el caso de que uno de ellos deje de funcionar.

Habitualmente nunca necesitamos enfriar el agua ya que la temperatura ambiente suele ser menor que la necesaria para el acuario, si necesitaramos
manejar un enfriador lo conectaríamos a la borna marcada como T2 que se acciona cuando la temperatura supera el nivel configurado. Debemos tener
en cuenta que cuantos mas calefactores/enfriadores conectemos al relé más potencia necesita soportar por lo que tendremos que instalar uno
adecuado a nuestras necesidades o conectar varios en paralelo.

Módulo controlador de pH
Este módulo se encargará de obtener el pH del agua y de manejar los actuadores de control. El montaje está basado (mas
bien copiado) en el medidor de pH para acuarios de José Manuel García, en su página podrás encontrar una explicación
detallada del circuito y otras muchas cosas interesantes.

A grandes rasgos diremos que la salida del circuito nos da una tension de 0 a 999mV que corresponden a un pH de entre 0 y
9.99. Esta salida la conectaremos directamente a uno de los conversores A/D del PIC16F874A. En un principio únicamente
usaremos un sensor y en caso de necesitar otro más tendremos que duplicar el circuito anterior.

Usaremos una sonda de pH estándar que suministra una tensión inversamente proporcional al pH del agua. Esta sonda proporciona 0V con pH neutro
(ph 7) y varía aproximadamente 60mV por grado de pH. En la siguiente imagen tenemos una gráfica con el comportamiento de una sonda de este
tipo.
Los sensores de pH se conectan al PIC16F874A por las entradas análogicas de los pines RA1, RA2 y RA3. Colocaremos uno en el recipiente del sifón
y ahorraremos espacio en el acuario. Con uno es suficiente porque el pH cambia muy lentamente y la circulación de agua es lo suficientemente rápida
para que sea uniforme en todo el sistema. Además son bastante caros (alrededor de 60 euros).

Al igual que en el caso de la temperatura, tenemos dos conectores para el control del pH: PH1 y PH2. PH1 se activa cuando el nivel de pH del
acuario baja del nivel configurado y PH2 cuando se eleva por encima del nivel máximo.

Módulo controlador del nivel del agua


La forma más sencilla de controlar el nivel de agua del acuario es por medio de una boya instalada en su interior. Esta boya accionará unos contactos
que nos indicarán que el agua está por encima o por debajo de un determinado nivel. Este método es completamente válido pero hemos previsto que
en un futuro podamos conectar un sensor de nivel que nos indique exactamente la cantidad de agua del acuario, las entradas del PIC16F874A a las
que conectaremos los sensores son conversores A/D por lo que simplemente con un sensor que nos proporcione una salida proporcional al nivel de
agua tendremos un control mucho más preciso.

Necesitaremos controlar el nivel de agua en varios puntos del sistema: en el acuario, en el filtro, en el depósito de agua osmotizada y en el depósito
de cambio de agua. En el caso del acuario es necesario saber si el agua baja de determinado nivel para añadirle más, en el filtro biológico es
necesario para asegurarnos de que la bomba no trabaja en vacío. Los otros dos sensores se encargan de controlar que no se acabe el agua del depósito
de llenado y de que no se llene el depósito de desagüe.

Disponemos de dos actuadores para controlar el nivel de agua, uno para introducir agua en el acuario y otro para sacarla. Con esto podemos mantener
constante el nivel de agua del acuario simplemente añadiendo un poco cuando baje el nivel. Además podremos hacer los cambios periódicos de agua
automáticamente siempre que dispongamos de un desagüe y de un depósito de agua osmotizada.

Módulo controlador de la iluminación


El control de la iluminación consiste básicamente en encender y apagar las luces a unas horas determinadas. Con este montaje podemos hacer algo
mas complicado y manejar varias luces, por ejemplo unos tubos haciendo de luz solar y una pequeña bombilla a modo de luna. Además, con la
posibilidad de conectar un ordenador por el puerto serie al controlador, podemos hacer ciclos de varias luces, por ejemplo podriamos emular las horas
de luz y la fase de la luna con la fecha actual, simular dias nublados encendiendo menos luces, etc.

Para poder controlar varias luces tenemos cuatro conectores diferentes: L1, L2, L3 y L4.

Módulo de alimentación
Para automatizar la alimentación de los peces hemos previsto varios actuadores con el fin de poder accionar diferentes alimentadores automáticos.
Este módulo consiste en uno o varios depósitos de comida colocados encima del acuario con un dispensador que proporciona la dosis adecuada. Los
conectores C1 y C2accionan los dispensadores.

Módulo de oleaje
Este módulo es el encargado de simular oleaje en el acuario. El oleaje se consigue activando unas bombas distribuidas por el acuario de forma
ordenada.

Montaje del sistema

Montaremos cinco placas diferentes: dos de alimentación (una para el controlador y otra para la sonda de pH), otra con el circuito acondicionador de
señal para la sonda de pH, la placa con el PIC16F874A y por último la placa de relés. La placa con el LCD y las seis teclas es opcional si tenemos
conectado un ordenador al controlador.

Lo primero que haremos será el circuito que proporcionará la alimentación necesaria para el resto de placas.
Suministra +5V por el conector cuatro para alimentar elPIC16F874A, los dos ULN2801A, el MAX233A, los
relés y el LCD. Además podremos conectar por el conector correspondiente una batería recargable (1.5V x 4 =
6V) que nos proporcionará la tensión de alimentación en caso de fallo de suministro eléctrico. Esta placa la
tendremos que alimentar con 18V AC. A continuación tenemos el listado de componentes de esta placa:

Fuente de alimentación
Componente Descripción Valor
U1 Puente rectificador
U2 Estabilizador de tensión +12V LM7812
R1 Resistencia limitadora para la batería recargable 33Ω
R2 Resistencia de carga para el led indicador de alimentación 560Ω
C1 Condensador estabilizador del regulador 0.33µF
C2 Condensador estabilizador del regulador 0.1µF
D1 Diodo rectificador 1N4007
D2 Diodo led indicador de alimentación Rojo de 5mm
D3 Diodo zener 5.1V 1W
Para alimentar el acondicionador de señal de la sonda de pH necesitamos tres voltajes: dos de +5V y uno de -5V Es
importante que la alimentación del circuito acondicionador esté separada de la de alimentación de componentes
para evitar interferencias. José Manuel García explica todo esto en su página del medidor de pH para acuarios. El
potenciómetro P1 nos servirá para ajustar la tensión de salida a +5V exactos (la placa es exactamente igual a la de
José Manuel y podríamos eliminar la placa de alimentación anterior ya que ésta también proporciona los +5V
necesarios para elimentar los elementos). Los componentes necesarios los tenemos en la tabla siguiente:

Fuente de alimentación del módulo sensor de pH


Componente Descripción Valor
U1 Regulador de tensión ajustable l200
U2 Estabilizador de tensión +5V LM7805
U3 Estabilizador de tensión -5V LM7905
R1 Resistencia de ajuste de tensión 0.33Ω
R2 Resistencia de ajuste de tensión 820Ω
R3 Resistencia de ajuste de tensión 330Ω
R4-R6 Resistencias de carga para los leds indicadores de alimentación 560Ω
C1 Condensador de filtrado 4700µF
C2 Condensador de filtrado 220nF
C3 Condensador de filtrado 1µF
C4-C6 Condensadores de filtrado 1000µF
C7,C8 Condensadores de filtrado 220nF
C9,C10 Condensadores de filtrado 1µF
C11,C12 Condensadores de filtrado 10µF
D1-D3 Diodos rectificadores 1N4007
D4-D6 Diodos led indicadores de funcionamiento Rojos de 5mm
P1 Potenciómetro multivuelta 470Ω

Una vez montadas la placas de alimentación montaremos el módulo de


control donde tenemos el PIC16F874A que es el encargado de la adquisición
de datos de todos sensores de temperatura y de activar y desactivar los
actuadores. El pulsador S1 provoca el reset hardware
delPIC16F874A. RC7 es el pin de recepción de datos por el puerto serie
y RC6 es el de transmisión, además tenemos la posibilidad de conectar
un LCD de cuatro lineas y veinte caracteres por linea por los
pines RA0, RB2, RB3, RB4, RB5, RB6y RB7. Este LCD mostrará información
del sistema en todo momento, aunque no es necesario para el funcionamiento
del controlador. Además de controlar el LCD, en los
pines RA0, RB2, RB3, RB4, RB5 y RB7 conectaremos seis teclas para poder
navegar por el menú. De esta forma implementaremos un terminal que nos
permitirá programar el controlador sin necesidad de conectarlo a un ordenador.

Con el LM336 podremos ajustar la tensión de referencia del conversor A/D. Deberemos ajustar el potenciómetro P3 para que la tensión entre el
pin RA3 y masa (sin tener conectado el PIC16F874A) sea de 2.56V. Con esto y el conversor A/D configurado en 8 bits nos dará un cambio cada
10mV.

Para poder accionar los actuadores usaremos dos integrados ULN2801A. Constan de ocho drivers de 0.5A cada uno y los usaremos para suministrar
la corriente necesaria a los relés ya que el PIC16F874A no es capaz de suministrar tanta corriente por los pines de salida. En cada uno de los drivers
conectaremos un relé que será el que realmente active y desactive los actuadores. Los relés los tendremos en una placa diferente ya que necesitamos
tener 220V en el circuito para activar los elementos de control.

En las siguiente tabla tenemos los componentes necesarios para la construcción tanto de la placa de control como de la placa del terminal:

Módulo de control
Componente Descripción Valor
U1 Microcontrolador PIC16F874A
U2 Acondicionador de señal MAX233A
U3 Generador de tensión de referencia ajustable LM336
U4,U5 Drivers para los actuadores ULN2801A
R1 Resistencia de carga para el reset hardware. 10kΩ
R2 Resistencia de carga para el regulador. 2K5
R3 Resistencia de pull-up para el bus 1-Wire. 4K7
R4-R21 Resistencias de carga para los leds indicadores de actividad 560Ω
C1,C2 Condensadores estabilizadores del reloj 15-33pF
D1,D2 Diodos de señal 1N4148
D3-D6 Diodos led indicadores de actuación en iluminación Rojos de 3mm
D7,D8 Diodos led indicadores de actuación en temperatura Rojos de 3mm
D9,D10 Diodos led indicadores de actuación en pH Rojos de 3mm
D11,D12 Diodos led indicadores de actuación en Nivel Rojos de 3mm
D13-D16 Diodos led indicadores de actividad de las bombas de oleaje. Rojos de 3mm
D17,D18 Diodos led indicadores de actuación en alimentación Rojos de 3mm
D19,D20 Diodos led indicadores de comunicación serie (Tx,Rx) Rojos de 3mm
D21-D26 Diodos de señal 1N4007
XT1 Cristal 4Mhz
P1 Potenciómetro multivuelta para ajustar la tension de referencia 10KΩ
P2 Control de contraste del LCD 10KΩ
P3 Control de iluminación del LCD 10Ω
LCD LCD de 2x16 HD44780U
SW1 Pulsador de reset hardware
SW2-SW7 Teclado del terminal

El circuito acondicionador de señal lo tendremos montado en una placa diferente para poder aislarlo de
cualquier interferencia tal y como explica José Manuel García en su página. Los componentes necesarios
para esta placa los tenemos a continuación:

Acondiciondor de señal del sensor de pH


Componente Descripción Valor
U1 Amplificador operacional de entrada JFET LF356M
U2 Amplificador operacional de entrada JFET TL084
R1 150KΩ
R2 10KΩ
R3 4K7
R4-R7 22KΩ
R8,R9 100KΩ
R10 15KΩ
R11 1K5
C1 150pF
C2 3.3pF
C3 5.6pF
C4,C5 220nF
P1 Potenciómetro de ajuste pH=7.0 10KΩ
P2 Potenciómetro de ajuste pH=4.0 2KΩ

Configuración y funcionamiento del controlador


Para poner en marcha el controlador únicamente tendremos que conectarlo a un transformador que nos proporcione
entre 18 y 24 voltios de corriente alterna. Una vez puesto en marcha tendremos una pantalla con la hora actual en la
primera linea y con las medidas correspondientes a la temperatura y al pH en la segunda. Estas medidas son la media
de todas las lecturas proporcionadas por los sensores que tengamos conectados al sistema. La hora estará inicializada a
las 00:00:00 por lo que deberemos ajustarla a la hora actual. Las dos lineas inferiores sirven para mostrar las diferentes
acciones que va realizando el controlador: encender y apagar luces, activar cebadores, mostrar las alarmas de
temperatura y pH, etc.

Pulsando la tecla MENU en el teclado del terminal aparecerá la pantalla de la izquierda.


En el menú nos podremos mover entre las diferentes opciones con las teclas
de ARRIBA y ABAJO. Para seleccionar una opción pulsaremos la tecla DERECHA y
para salir del menú la tecla IZQUIERDA. El menú de ajustes sirve para configurar todos
los parámetros del controlador. Podremos poner la hora actual, introducir la temperatura
y el pH deseados, etc. El menú de acciones nos sirve para activar o desactivar alguno de
los elementos puntualmente.
Para ajustar la hora del reloj pulsaremos la tecla menú, seleccionaremos la
entrada Horaposicionando el cursor sobre ella y pulsando la tecla DERECHA. Nos
aparecerá entonces una pantalla como la que tenemos a la derecha. En ella nos
podremos mover entre la hora, minutos y segundos con las teclas
de DERECHA e IZQUIERDA, para aumentar o disminuir el valor usaremos las teclas
de ARRIBAy ABAJO. Una vez tengamos la hora ajustada pulsaremos la
tecla IZQUIERDAhasta salir al menú principal.

El menú de ajuste de temperatura nos permite introducir en el controlador la


temperatura deseada en nuestro acuario. Seleccionaremos la opción temperatura del
menú principal y pulsaremos la tecla DERECHA. Tendremos una pantalla en la que
podremos variar la temperatura mínima y máxima del acuario en pasos de 0.5°C. Con
las teclas DERECHA e IZQUIERDA seleccionaremos la temperatura máxima o mínima
y con ARRIBA y ABAJO iremos variándola hasta el valor óptimo deseado. Para salir
pulsaremos la tecla IZQUIERDA.

Con este menú podemos variar el nivel de pH necesario para el acuario. El


procedimiento para cambiar los valores de pH es idéntico al del menú de ajuste de
temperaturas. Seleccionaremos la opción pH del menú principal y pulsaremos la
tecla DERECHA. Tendremos una pantalla en la que podremos variar el pH mínimo y
máximo del acuario en pasos de 0.1. Con las
teclas DERECHA e IZQUIERDAseleccionaremos el pH máximo o mínimo y
con ARRIBA y ABAJO iremos variándola hasta el valor óptimo deseado. Para salir pulsaremos la tecla IZQUIERDA.

Para controlar la iluminación del acuario disponemos de cuatro controles para luces,
éstos los configuraremos con el menú iluminacion. Una vez tengamos seleccionado el
submenú de control de luces podremos variar las horas de encendido y apagado de las
cuatro luces moviéndonos arriba y abajo para seleccionar L1, L2, L3 o L4. Una vez
seleccionada la luz que queremos configurar pulsaremos la tecla DERECHA hasta
posicionarnos en el valor a modificar. Con las teclas ARRIBA y ABAJO modificaremos
este valor y saldremos pulsando IZQUIERDA hasta salir a la seleccion de luz.

La primera hora del menú es la hora de encendido y la segunda la de apagado. En la pantalla de la derecha tenemos que la luz número uno se
enciende a las 8:30 y se apaga a las 22:00, la luz dos se enciende a las 8:40 (un poco más tarde que la primera) y se apaga a las 21:50 (un poco antes
que la anterior) y la luz tres se enciende por la noche de 21:00 a 9:00 simulando la luna. La luz cuatro aparece debajo de la luz tres en el menú y para
que no haga nada debe estar configurada como hora de encendido las 00:00 y hora de apagado las 00:00.

El control de la alimentación es muy similar al de la iluminación solo que en este caso


tenemos únicamente dos controles. En cada uno de éstos podemos programar dos horas
de cebado. La hora 00:00 es especial y la usaremos para indicar que no hay cebado. En
el ejemplo de la derecha podemos ver que el cebador uno se activa dos veces al dia, una
a las 9:00 y otra a las 21:00, el cebador dos se activa una vez al dia a las 13:00. Para
configurar las horas usaremos las teclas ARRIBA y ABAJO para seleccionar el cebador y
una vez seleccionado con DERECHA e IZQUIERDA nos movemos por las horas y con ARRIBA y ABAJO las modificamos. Para salir de la selección
usaremos la tecla IZQUIERDA.

Con este menú configuraremos todo lo relacionado a la generación de olas en el acuario.


Podemos configurar tres periodos de oleaje (O1, O2 y O3) con hora de comienzo y hora
de finalización y además podemos configurar la frecuencia de las olas para cada uno de
ellos. En la pantalla de ejemplo tenemos configurados los tres periodos, el primero de
8:00 a 13:00 con una frecuencia de un segundo, es decir, las bombas se activan
alternativamente cada segundo, el segundo perioido es de 13:00 a 22:00 con un periodo
de tres segundos, lo que quiere decir que las olas son más suaves. El último periodo comprende toda la noche de 22:00 a 8:00 con un periodo de diez
segundos. Al igual que en el resto de configuraciones, la configuracion de inicio 00:00 y de finalización 00:00 indica que no hay acción.

Una vez lo tengamos todo configurado tendremos que volver a la pantalla inicial en la que tenemos la hora, la
temperatura y el pH. Como hemos visto anteriormente, las dos lineas de abajo están libres y las usaremos para mostrar
información de todas las acciones que va tomando el controlador. A la izquierda vemos que el controlador encendió la
luz dos a las 08:40 (la linea de activacion del oleaje a las 08:00 y de la luz uno a las 08:30 desaparecen) y que activó el
cebador uno a las 09:00. Conforme pase el tiempo el controlador irá poniendo en la linea de abajo la última acción que
se ha realizado.

Protocolo de comunicaciones RS232


El módulo de control estará continuamente obteniendo lecturas de temperatura, de pH y de nivel de agua de los sensores, esperando órdenes del
módulo principal y accionando los actuadores necesarios en cada momento.

El puerto RS232 deberá estar configurado a 9600 8N1.

Todas las ordenes comienzan con STX (0x02) y acaban con ETX (0x03). Las órdenes aceptadas son las de la tabla siguiente:
Comando Respuesta Descripción
Reboot STX 0x00 ETX STX 0x00 Reinicia el módulo.
ETX
Status STX 0x01 ETX STX estado Indica el estado del controlador (ver tabla de estados).
ETX
SetTime STX 0x02 STX estado Programa el módulo con la hora indicada.
HHMMSS ETX ETX
GetTime STX 0x03 ETX STX Pregunta al módulo la hora actual.
HHMMSS
ETX
GetTemperatureAll STX 0x10 ETX STX S1 S2 Pregunta al módulo las lecturas de temperatura de todos los
S3 ... ETX sensores que tiene conectados.
GetTemperature STX 0x11 n STX Sn ETX Pregunta al módulo la lectura de temperatura del sensor n.
ETX
ResetTemperatureAll STX 0x12 ETX STX OK Inicializa todos los sensores de temperatura.
ETX
ResetTemperature STX 0x13 n STX OK Inicializa el sensor n.
ETX ETX
SetTemperatureAllPeriod STX 0x14 STX estado Programa el módulo para tomar las temperaturas de todos
periodo ETX ETX lo sensores con el periodo especificado.
SetTemperaturePeriod STX 0x15 n STX estado Programa el módulo para tomar las temperaturas del
periodo ETX ETX sensor ncon el periodo especificado.
SetMaxTemperature STX 0x16 max STX estado Programa el límite superior de temperatura para el acuario
ETX ETX (en °C).
SetMinTemperature STX 0x17 min STX estado Programa el límite inferior de temperatura para el acuario
ETX ETX (en °C).
GetPhAll STX 0x20 ETX STX S1 S2 Pregunta al módulo las lecturas de pH de todos los sensores
S3 ... ETX que tiene conectados.
GetPh STX 0x21 n STX Sn ETX Pregunta al módulo la lectura de pH del sensor n.
ETX
ResetPhAll STX 0x22 ETX STX OK Inicializa todos los sensores de pH.
ETX
ResetPh STX 0x23 n STX OK Inicializa el sensor n.
ETX ETX
SetPhAllPeriod STX 0x24 STX estado Programa el módulo para tomar el pH de todos lo sensores
periodo ETX ETX con el periodo especificado.
SetPhPeriod STX 0x25 n STX estado Programa el módulo para tomar el pH del sensor ncon el
periodo ETX ETX periodo especificado.
SetMaxPh STX 0x26 max STX estado Programa el límite superior de pH para el acuario.
ETX ETX
SetMinPh STX 0x27 min STX estado Programa el límite inferior de pH para el acuario.
ETX ETX
GetWaterLevelAll STX 0x30 ETX STX S1 S2 Pregunta al módulo las lecturas de nivel de agua de todos
S3 ... ETX los sensores que tiene conectados.
GetWaterLevel STX 0x31 n STX Sn ETX Pregunta al módulo la lectura de nivel de agua del sensor n.
ETX
ResetWaterLevelAll STX 0x32 ETX STX OK Inicializa todos los sensores de nivel.
ETX
ResetWaterLevel STX 0x33 n STX OK Inicializa el sensor n.
ETX ETX
SetWaterLevelAllPeriod STX 0x34 STX estado Programa el módulo para tomar el nivel de agua de todos lo
periodo ETX ETX sensores con el periodo especificado.
SetWaterLevelPeriod STX 0x35 n STX estado Programa el módulo para tomar el nivel de agua del
periodo ETX ETX sensor n con el periodo especificado.
GetLightAll STX 0x40 ETX STX S1 S2 Pregunta al módulo el estado de todas las luces que tiene
S3 ... ETX conectadas.
GetLight STX 0x41 n STX Sn ETX Pregunta al módulo el estado de la luz n.
ETX
SetLightAllOn STX 0x42 brillo STX estado Enciende todas las luces con el nivel de brillo especificado.
ETX ETX
SetLightAllOff STX 0x43 ETX STX estado Apaga todas la luces.
ETX
SetLightOn STX 0x44 brillo STX estado Enciende la luz n con el nivel de brillo especificado.
n ETX ETX
SetLightOff STX 0x45 n STX estado Apaga la luz n.
ETX ETX
SetLightTimeAllOn STX 0x42 hora STX estado Programa el módulo para encender todas las luces a la hora
ETX ETX indicada.
SetLightTimeAllOff STX 0x43 hora STX estado Programa el módulo para apagar todas las luces a la hora
ETX ETX indicada.
SetLightTimeOn STX 0x44 n STX estado Programa el módulo para encender la luz n a la hora
hora ETX ETX indicada.
SetLightTimeOff STX 0x45 n STX estado Programa el módulo para apagar la luz n a la hora indicada.
hora ETX ETX
SetFeedingAll STX 0x50 m STX estado Programa la hora de cebado m de los peces de todos los
hora ETX ETX módulos.
SetFeeding STX 0x51 m n STX estado Programa la hora de cebado m de los peces en el módulo n.
hora ETX ETX
GetWavesAll STX 0x40 ETX STX S1 S2 Pregunta al módulo el estado de las bombas generadoras de
S3 ... ETX olas.
GetWaves STX 0x41 n STX Sn ETX Pregunta al módulo el estado de la bomba n.
ETX
SetWavesAllOn STX 0x42 ETX STX estado Conecta todas las bombas.
ETX
SetWavesAllOff STX 0x43 ETX STX estado Desconecta todas las bombas.
ETX
SetWavesOn STX 0x44 n STX estado Conecta la bomba n.
ETX ETX
SetWavesOff STX 0x45 n STX estado Desconecta la bomba n.
ETX ETX
SetWavesPeriodAll STX 0x42 STX estado Programa el módulo para conectar todas las bombas con el
periodo ETX ETX periodo indicado (en segundos).
SetWavesPeriod STX 0x44 n STX estado Programa el periodo de conexión de la bomba n.
periodo ETX ETX

Estado Descripción
0x00 Correcto
0x01 Error
0x11 Temperatura por encima del nivel establecido
0x12 Temperatura por debajo del nivel establecido
0x21 pH por encima del nivel establecido
0x22 pH por debajo del nivel establecido

Costes del controlador


En la siguiente tabla tenemos el coste aproximado de los componentes, este coste depende mucho del sitio donde los compremos así que no está de
más comparar varios sitios. La mayoría de los precios de la tabla son de la tienda donde habitualmente compro los componentes, los demás están
sacados de tiendas online que son bastante más caras.

Componente Cantidad Precio unitario (¤) Total (¤)


Puente rectificador 1 0.24 0.24
Regulador +12V LM7812 1 0.29 0.29
Regulador +5V LM7805 1 0.29 0.29
Regulador -5V LM7905 1 0.32 0.32
Regulador ajustable L200 1 1.56 1.56
Generador de tensión LM336 1 0.42 0.42
Microcontrolador P16F874 1 8.80 8.80
Acondicionador MAX233 1 6.80 6.80
Drivers ULN2803 2 0.56 1.12
Amplificador operacional LF356M 1 0.48 0.48
Amplificador operacional TL084 1 0.4 0.4
Resistencias 0.25W 5% 36 0.009 0.324
Resistencias 0.25W 1% 4 0.016 0.064
Condensador electrolítico 4700µF 1 0.95 0.95
Condensadores poliester 220nF 5 0.168 0.84
Condensadores electrolíticos 1µF 3 0.048 0.144
Condensadores electrolíticos 1000µF 3 0.164 0.492
Condensadores electrolíticos 10µF 2 0.016 0.032
Condensadores 22pF 2 0.03 0.06
Condensador cerámico 0.33µF 1 0.144 0.144
Condensador cerámico 0.1µF 1 0.034 0.034
Condensador cerámico 150pF 1 0.03 0.03
Condensador cerámico 3.3pF 1 0.03 0.03
Condensador cerámico 5.6pF 1 0.03 0.03
Diodo zener 5.1V 1 0.084 0.084
Diodos rectificadores 1N4007 10 0.021 0.21
Diodos de señal 1N4148 2 0.024 0.048
Leds rojos 5mm 4 0.05 0.05
Leds rojos 3mm 18 0.063 1.134
Potenciómetros multivuelta 4 0.722 2.89
Potenciómetros horizontales 2 0.23 0.46
Cristal 20Mhz 1 0.84 0.84
LCD 20x4 1 21.0 21.0
Switchs 7 0.144 1.008
Placa fotosensible positiva 200x300mm 1 12.74 12.74
Relés 6V 16 2.0 32.0
Zócalo 8 pines 1 0.1443 0.1443
Zócalo 14 pines 1 0.1682 0.1682
Zócalos 18 pines 2 0.2380 0.4760
Zócalo 20 pines 1 0.28 0.28
Zócalo 40 pines 1 0.7212 0.7212
Disipadores 4 0.2280 0.9120
Tornillos para los disipadores 4 0.01 0.04
Tuercas para los disipadores 4 0.0088 0.0352
Tira de pines macho 1 0.1836 0.1836
Tira de pines hembra 1 0.5580 0.5580
Sonda de pH 1 60.0 60.0
Sensor de temperatura DS1820 1 2.0 2.0
Total: 162.02¤

Podemos ver en la tabla que los relés, el LCD y el sensor de pH se llevan aproximadamente el 70% del presupuesto total por lo que podemos limitar
el número de relés a los que realmente necesitemos. El LCD lo pondremos únicamente si no vamos a usar un ordenador para configurar el
controlador.

Modificaciones y mejoras
Estas son algunas de las posibles mejoras a efectuar en el controlador:

Luces: Control de las luces con PWM para simular el amanecer y el ocaso. Esto se puede hacer con el microcontrolador o con circuitería
externa. En este último caso no sería posible configurar los tiempos de encendido y apagado progresivo desde el terminal o desde el ordenador.
Terminal de control: Posibilidad de conectar un LCD de 2x16 en lugar de uno de 4x20 ya que normalmente sólo necesitamos la hora y los
datos de temperatura y pH.
Comunicaciones: Conexión con el exterior por red. Desarrollar un mini servidor de páginas web que permita todo el manejo del controlador a
través de él.
Sensores: Añadir sensores de carbonatos (KH), dureza (GH), amoniaco, nitratos y nitritos (¿conductividad?).

You might also like