Humidor

Hardware:

Software:

Downloads:

Enlaces:

Google

Humidor

Humidor preliminar El problema principal de los humidores comerciales es que únicamente proporcionan información de la temperatura y la humedad en el interior del humidor sin la posibilidad de control. Algunos de ellos disponen de un método sencillo de aumentar la humedad del humidor por medio de una esponja mojada alojada en su interior.

El propósito de este proyecto es la monitorización de estos dos parámetros automáticamente por medio de un sensor de humedad/temperatura (el SHT11 de Sensirion) y el control por medio de un microcontrolador (PIC16F84A de Microchip). En la imagen de la derecha tenemos una foto con el prototipo.

Los parámetros óptimos para la conservación del tabaco son una temperatura de 16-18°C y una humedad relativa del 65-70%. Estos valores serán los que intentaremos mantener constantes en todo momento en el interior del humidor.

El sistema lo dividiremos en dos partes diferenciadas: módulo controlador y terminal de control. El módulo controlador se encarga de registrar la temperatura y la humedad suministradas por el sensor y reallizar el control adecuado para mantenerlas dentro de un rango preestablecido, además dispone de un puerto serie con el que podemos cambiar la temperatura y la humedad deseada en el humidor. El terminal de control consiste simplemente una pantalla LCD y un pequeño teclado para programar el controlador sin necesidad del ordenador. También saca información del estado del humidor en la pantalla LCD.

Módulo controlador

El módulo controlador es el que se encarga de recoger los datos de humedad y temperatura del sensor y actuar en consecuencia para conseguir los valores óptimos de éstos. Para ello nos valdremos de un microcontrolador, en concreto el PIC16F84A de Microchip.

Microchip es uno de los fabricantes de microcontroladores más populares. Uno de sus microcontroladores estrella es el PIC16F84A. El PIC16F84A es un microcontrolador RISC que puede funcionar con frecuencias de reloj de hasta 20Mhz y es capaz de ejecutar una instrucción por ciclo.

El PIC16F84A tiene 1024 posiciones de memoria para el programa, 68 bytes de memoria para datos, 64 bytes en EEPROM además de trece pines que pueden actuar como entrada o salida indistintamente. Además de esto tenemos un timer programable de ocho bits.

Como sensor de temperatura y humedad hemos elegido el SHT11 de Sensirion. Se trata de un sensor de temperatura de 12 o 14 bits con una precisión de ±0.5°C y un sensor de humedad de 8 o 12 bits de precisión ±3.5%. Este sensor se comunica con el microcontrolador o master a través de una linea de datos y otra de reloj. Como limitación tiene el que no se le pueden pedir datos más de tres veces por segundo para evitar que se caliente y falsee las mediciones.

El MAX232 es un adaptador de señal de ttl (0V y 5V) o CMOS a RS232 (+12V y -12V), es de la casa MAXIM y su uso es muy sencillo. Este modelo tiene el inconveniente de que tenemos que añadir en el circuito cinco condensadores de 1.0µF para que funcione, otros modelos como el MAX232A necesitan condensadores de 0.1µF e incluso tienen un modelo, el MAX233, que no necesita ningún tipo de condensador. Este último no tiene los pines compatibles con el MAX232, así que para poder usarlo debemos modificar un poco el circuito. Todos estos integrados disponen de dos adaptadores de señal aunque en nuestro caso únicamente usaremos uno de ellos.

Para obtener la temeratura adecuada dentro del humidor usaremos una célula peltier ya que normalmente lo que necesitamos es enfriar el interior. Este el caso más corriente porque habitualmente la temperatura donde tengamos el humidor sobrepasará los 16°C o 18°C. En caso de que lo que necesitemos sea calentar, podemos cambiar la célula peltier por un calentador teniendo en cuenta que cuando el módulo controlador active la salida es para "apagar" el calentador. Si necesitamos enfriar en determinadas épocas del año y calentar en otras tendremos que rediseñar el circuito con un PIC con más salidas disponibles y modificar el software.

La humedad la introduciremos en el humidor por medio de un transductor de ultrasonidos similar a los que se usan en los humidificadores domésticos. Esta opción sirve siempre que la humedad ambiente sea menor que la necesaria dentro del humidor (entre el 65% y el 70%) de lo contrario tendremos que "secar" el aire de alguna forma volviendo a tener en cuenta que la señal de activación estará negada así que cuando se active tendremos que aumentar la humedad, es decir, desactivar el "secado" del aire.

Terminal de control

El terminal de control es una parte opcional del humidor. Consta de un LCD de tipo HD44780U y de cuatro botones que sirven para configurar la humedad y la temperatura deseadas dentro del humidor.

Hitachi fabrica el controlador para LCDs HD44780U que es uno de los más utilizados en electrónica. Es capaz de controlar LCDs de hasta 80 caracteres y tiene la posibilidad de programarle caracteres nuevos. Normalmente los fabricantes de LCDs integran un controlador de este tipo en sus productos así que nos evitamos la complejidad de realizar un circuito para el control del LCD.

El control del display se realiza por medio de once pines, tres son de control y ocho de datos aunque el HD44780U es capaz de funcionar con tres de control y cuatro de datos, ahorrándonos pines del microcontrolador. En la tabla siguiente tenemos los once pines para el manejo del LCD:

Pin Descripción
RS Registro de instrucciones/datos
R/W Lectura/escritura
E Enable
DB0-DB7 Datos

Montaje del sistema

En primer lugar montaremos el módulo controlador. Éste módulo se encarga, como hemos dicho antes, de obtener las lecturas de humedad y temperatura del SHT11 y realizar el control sobre los actuadores para que se mantengan en los niveles establecidos. Además dispone de un puerto serie por donde podemos programar estos valores óptimos por medio de un ordenador y de una conexíon a un terminal de control con el que podemos manipular los datos sin necesidad del ordenador.

En la figura de la izquierda tenemos el esquema del circuito, consta básicamente de un PIC16F84A y un MAX232. En el esquema podemos observar que casi todo el circuito está sacado de las especificaciones de los fabricantes, el reloj del PIC16F84A, la resistencia para el reset, los condensadores del MAX232, la resistencia de pull-up de la linea de datos del SHT11 y los diodos y resistencias de los indicadores de funcionamiento. En la siguiente tabla tenemos la lista de componentes del circuito y una pequeña descripción:

Listado de componentes del módulo controlador
Componente DescripciónValor
R1,R4,R5,R6,R7 Resistencias de carga para los leds. 560Ω
R2 Resistencia para el reset. 10kΩ
R3 Resistencia de Pull Up del SHT11 10kΩ
C1,C2 Condensadores para el reloj del PIC16F84A 15-33pF
C3,C4,C5,C6,C7 Condensadores para el MAX232. 1.0µF
D1 Diodo led, indicador de alimentación. Rojo
D2 Diodo led, indicador de TX. Verde
D3 Diodo led, indicador de RX. Amarillo
D4 Diodo led, indicador del actuador de temperatura. Verde
D5 Diodo led, indicador del actuador de humedad. Amarillo
XT1 Cristal 4Mhz
U1 Microcontrolador PIC16F84A
U2 Acondicionador de señal MAX232

Los leds los utilizaremos como indicadores de actividad del circuito: D1 indica hay alimentación en el módulo controlador, D2 indica trasmisión de datos hacia el ordenador y D3 recepción de datos, D4 y D5 muestran la actividad de los actuadores de temperatura y humedad respectivamente.

En la imagen de la izquierda tenemos el diseño de la placa realizado con PCB. Este programa genera también la cara de pistas para imprimir en una transparencia e insolar la placa (en la figura de la derecha). Para la construcción del PCB utilizaremos una placa de baquelita normal de una sola cara, es importante usar los ficheros que hay en la sección de descargas para la insolación y no las imágenes jpeg de la página. Podemos descargarnos todos los esquemas del módulo controlador en la sección de descargas.

La placa tiene, además de los componentes que aparecen en el esquema, un conector por donde alimentar el circuito con +5V y las conexiones necesarias para alimentar el PIC16F84A, el MAX232 y el LCD.

Una vez montado el controlador montaremos el terminal de control. El terminal de control es el encargado de mostrar información y datos en el LCD y hacer de soporte de las cuatro teclas de navegación. Es un terminal "tonto" porque en realidad el control del LCD y los botones lo realiza el módulo de control.

En el esquema de la izquierda podemos ver el conexionado de las dos partes fundamentales que lo componen: LCD y teclado. El LCD con el controlador HD44780U se conecta directamente al conector LCD pin a pin por lo que podremos pinchar cualquier LCD con el HD44780U la placa.

Normalmente estos LCDs tienen iluminación que podemos encender y apagar por medio de los pines 15 y 16 (A y K del diodo led), el potenciómetro P2 lo utilizaremos para variar el brillo de la pantalla. En algunos casos el LCD tiene el led de iluminación pero los pines 15 y 16 están deshabilitados, si este es nuestro caso podemos soldar un par de cables de los pines que hay en el LCD marcados como A y K al conector CN7.

El potenciómetro P1 se usa para controlar el contraste del LCD. No debemos dejar el pin VD del LCD sin el potenciómetro porque no se verá nada.

Las teclas están conectadas a los pines del LCD a través de diodos ya que utilizaremos los mismos pines del PIC16F84A para controlar ambas cosas. Programaremos los pines en modo salida cuando tengamos que enviar datos al LCD y como entrada cuando necesitemos obtener el estado de las teclas.

En el conector CN8 colocaremos un zumbador para producir alarmas sonoras en caso de que nos salgamos de los valores óptimos de temperatura y humedad.

Listado de componentes del terminal de control
Componente Descripción Valor
R8,R9,R10,R11,R12 Resistencias para el teclado. 100kΩ
R13 Resistencia de carga para el zumbador. 100Ω
D6,D7,D8,D9,D10 Diodos.
P1 Control del contraste. 10kΩ
P2 Control de iluminación. 10Ω
LCD LCD de 2x16. HD44780U

En las imágenes siguientes tenemos el diseño de la placa realizado con PCB. Este programa genera también la cara de pistas para imprimir en una transparencia e insolar la placa. Para la construcción del PCB utilizaremos una placa de baquelita normal de una sola cara, es importante usar los ficheros que hay en la sección de descargas para la insolación y no las imágenes jpeg de la página. Podemos descargarnos todos los esquemas del terminal de control en la sección de descargas.

La alimentación del circuito la sacaremos del módulo controlador a traves de los pines uno y dos del conector LCD. Cuidado al conectarlos porque los pines del conector LCD del módulo controlador y los pines del LCD del terminal de control no están alineados, así que no podemos usar un cable paralelo normal, debemos hacernos un cable para conectarlos tal y como indica la tabla siguiente:

Conexión entre el controlador y el terminal
Pin controlador Pin terminal
1 2
2 1
3 4
4 5
5 6
6 11
7 12
8 13
9 14

A continuación tenemos unas imágenes de las placas con todos sus componentes instalados. Podemos observar en las imégenes de la izquierda que las pistas y el texto no están bien definidos, esto se debe a una insolación insuficiente de la placa fotosensible o a que la transparencia no estaba en perfecto contacto con ella. Como los circuitos en sí son bastantes sencillos y no tienen pistas demasiado finas no tendremos ningún problema de pistas cortadas o en cortocircuito con otras.

Montaje en el humidor

Configuración del humidor

Una vez tengamos todo montado tendremos que configurar la temperatura y la humedad deseadas en el interior del humidor. Por defecto la temperatura óptima está configurada a 18°C la humedad relativa al 70%.

Con los cuatro botones del terminal podremos aumentar y disminuir estos valores a los que necesitemos. Tenemos dos botones para aumentar y disminuir la temperatura en pasos de 0.5°C y otros dos para aumentar y disminuir la humedad relativa en pasos de 0.1%.

Firmware

Flujo del firmware

El firmware del humidor tiene cuatro partes diferenciadas: el control del teclado y LCD, la adquisicion de datos del sensor, la activación/desactivación de los actuadores y el manejo del puerto RS232.

Inicialización: Lo primero que hace el microcontrolador al volver del reset es configurar sus entradas/salidas, inicializar el LCD, inicializar el bus 2-Wire del sensor e inicializar el puerto RS232.

Una vez inicializado el microcontrolador se entra en un bucle infinito que continuamente comprueba las teclas, adquiere los datos de humedad y temperatura del humidor y actua en consecuencia.

Control del teclado: Periódicamente se comprueba si se ha pulsado alguna tecla y se actualizan los valores de humedad y temperatura que deseamos en el humidor.

Adquisición: El SHT11 no nos permite pedirle datos más de dos veces por segundo para que no se caliente y nos falsee las lecturas. Por este motivo no obtendremos datos de humedad y temperatura en cada vuelta del bucle.

Actuación: Una vez tenemos la lectura de temperatura y humedad debemos actuar sobre el enfriador y/o el humidificador para intentar acercarnos lo máximo posible a los valores óptimos configurados. De este modo, si la temperatura en el interior del humidor es más alta que la configurada activaremos el enfriador, si la humedad es inferior a la óptima activaremos el humidificador.

Puerto serie: El manejo del puerto serie se hace por interrupción. Cuando llega un comando por el puerto se activa la rutina de tratamiento y se envia la respuesta necesaria.

Comando Respuesta Descripción
Version STX 0x00 ETX STX version ETX Pide el número de versión del controlador.
Status STX 0x01 ETX STX status ETX Pide el estado general del controlador.
GetTemperature STX 0x10 ETX STX temperatura ETX Pide la temperatura del interior del humidor.
GetHumidity STX 0x11 ETX STX humedad ETX Pide la humedad relativa del interior del humidor.
GetOptimalTemperature STX 0x20 ETX STX temperatura ETX Pide la temperatura óptima del humidor.
GetOptimalHumidity STX 0x21 ETX STX humedad ETX Pide la humedad relativa óptima del humidor.
SetOptimalTemperature STX 0x22 ETX STX status ETX Configura la temperatura óptima del humidor.
SetOptimalHumidity STX 0x23 ETX STX status ETX Configura la humedad relativa óptima del humidor.


Críticas constructivas a carlitos (las demás a /dev/null) Powered by apache Powered by php Powered by postgresql Powered by linux


Licencia de Creative Commons
Estas páginas están bajo una licencia de Creative Commons.