Download Regador Automático - Universidad de Las Palmas de Gran Canaria

Document related concepts
no text concepts found
Transcript
ULPGC, Universidad de Las Palmas de Gran Canarias.
Facultad de Informática.
Asignatura: Diseño de Sistemas Basados en Microprocesadores
Profesor:
Ricardo Pérez García.
Regador Automático
ACOSTA PADRÓN, OMAR
ÁLVAREZ ROMERO, YERAY
A día 6 de Junio del año 2009
1. ÍNDICE
Índice de contenido
INTRODUCCIÓN................................................................................................................................2
CONTENIDO.......................................................................................................................................2
OBJETIVOS DEL PROYECTO.....................................................................................................2
IDEA PROPUESTA........................................................................................................................3
DESARROLLO....................................................................................................................................3
La temperatura.................................................................................................................................3
La humedad......................................................................................................................................6
El agua.............................................................................................................................................8
Circuito general del proyecto...........................................................................................................8
El microprocesador...................................................................................................................10
Las conexiones..........................................................................................................................10
La señal analógica.....................................................................................................................11
Umbrales...................................................................................................................................11
El código...................................................................................................................................11
PRUEBAS..........................................................................................................................................13
CONCLUSIONES..............................................................................................................................13
ANEXO I............................................................................................................................................14
BIBLIOGRAFÍA................................................................................................................................18
2. INTRODUCCIÓN
Este documento es el informe de prácticas de la asignatura: Diseño de Sistemas
Basados en Microprocesadores. Cumpliendo con el proyecto docente, hemos
desarrollado un proyecto al que nombramos Regador Automático. Este proyecto tiene
como objetivo principal, satisfacer la demanda de un dispositivo electrónico capaz de
proporcionar agua a plantas de manera automática y autónoma.
3. CONTENIDO
1. OBJETIVOS DEL PROYECTO
El objetivo del proyecto, es idear y desarrollar un dispositivo capaz de
Página 2
proporcionar agua a una cantidad limitada de plantas, de forma automática y
cumpliendo dos requisitos:
• La planta puede ser regada si la cantidad de humedad de la tierra está por
debajo de cierto nivel, y debe ser regada si la temperatura no sobrepasa un
umbral establecido.
2. IDEA PROPUESTA
Para satisfacer las condiciones establecidas, debemos medir la temperatura
ambiente y la humedad de la tierra. Para medirlas, se requiere de un sensor de
temperatura y un sensor de humedad.
Para controlar los sensores y decidir convenientemente, es preciso, usar un
microprocesador.
Para trasladar el agua desde el contenedor hasta la superficie a humedecer,
necesitamos un circuito hidráulico.
Proponemos como idea, desarrollar un sistema dotado de un microprocesador,
un sensor de temperatura, un sensor de humedad y un circuito hidráulico. Las
entradas a este sistema son, la información que proporcionan los sensores y la salida
es la orden de regar. El computo de la información en el sistema y la toma de
decisiones del mismo, se realiza mediante un programa que es interpretado por el
microprocesador.
Los objetivos secundarios son:
Desarrollar un circuito que informe sobre la temperatura.
Desarrollar un circuito que informe sobre la humedad.
Desarrollar un circuito que relacione todos los circuitos anteriormente
mencionados.
Desarrollar un programa que ejerza el control sobre el circuito.
Página 3
3. DESARROLLO
1. La temperatura
La medición de la temperatura se realiza de manera eficiente con el
siguiente circuito electrónico.
El elemento electrónico principal en el circuito, es el sensor de temperatura
LM335. Este circuito nos permite hacer mediciones de la temperatura, obteniendo T.
Output es la tensión de salida, la cual, permite obtener T si resolvemos la siguiente
ecuación:
T = 273 – Output(mV) / 10 en grados centi-grados.
Si quisiéramos variar el umbral de temperatura, tenemos que modificar las
constantes internas al código. Para evitarlo, incluimos al circuito un potenciómetro.
Con este elemento, podemos variar Output consiguiendo modificar el umbral de
temperatura sin necesidad de reprogramar el microprocesador.
Página 4
2. La humedad
En el mercado, a fecha actual podemos comprar sensores de humedad a
un alto coste económico. Nosotros hemos desarrollado nuestro propio sensor de
humedad para este proyecto. El objetivo secundario de nuestro sensor de humedad
consiste en medir la resistencia eléctrica que ejerce la tierra al paso de la corriente
eléctrica. Cuanto más húmeda está la tierra, menor resistencia se ejerce al paso de la
corriente. Cuanto más seca está la tierra, mayor resistencia se ejerce al paso de la
corriente. Esta información nos permite medir la cantidad de humedad de la tierra de
manera eficaz.
El circuito desarrollado es:
Página 5
Para medir la humedad de la tierra, necesitamos introducir en la tierra dos
barras conductoras separadas entre sí.
Si alimentamos el circuito, con las barras conductoras introducidas en la tierra
de la planta y separadas entre sí. Output va a tener una tensión determinada que
identifica la cantidad de humedad presente en la tierra en ese momento.
Este circuito amplifica la cantidad de corriente que circula por la tierra
mediante un transistor. Si circula corriente por la tierra, el transistor deja pasar toda o
parte de la tensión de entrada V1. La cantidad de tensión que deja circular el
transistor es directamente proporcional a la cantidad de corriente que conduce la
tierra, y con suficiente magnitud para que pueda ser computada. Para obtener la
tensión de salida del circuito añadimos la resistencia R1. Por lo cual podemos obtener
Output(V), información que indica la cantidad de humedad presente.
Página 6
3. El agua
El sistema de riego es alimentado por una corriente de potencial 5V que
proporciona el circuito. Existen diferentes medios para conseguir regar la planta. Por
ejemplo, usando un motor de riego o una grifo eléctrico.
4. Circuito general del proyecto
Página 7
Los elementos principales del circuito son: el microprocesador, el sensor de
riego y el sensor de humedad. Al conectar los diferente elementos obtenemos el
siguiente sistema:
Página 8
1. El microprocesador
El microprocesador que escogimos para resolver la parte de computación del
proyecto es el PIC16F876A.
Este microprocesador consta de un conversor analógico digital incorporado y
tres puertos. Además, incorpora una funcionalidad que permite al microprocesador
mantenerse en un estado de consumo mínimo denominado sleep. El tiempo de
duración es variable y se controla mediante una herramienta denominada Watchdog
Timer.
2. Las conexiones
El puerto A está configurado para permitir la entrada de determinadas señales
en determinados pines. La configuración del número de pines de entrada analógica o
digital, puede ser modificada. El puerto C está configurado como un puerto de salida,
el cual permite accionar el sistema hidráulico.
3. La señal analógica
La información de entrada al sistema, es decir, la información que
proporcionan los sensores en una señal. Esta señal de entrada es una señal analógica,
la cual, para poder ser computada ha de ser transformada en otra señal digital. Para
digitalizar la señal de entrada, el microprocesador proporciona un conversor
analógico digital. Para ello proporciona al programador una serie de instrucciones.
La relación entre la señal analógica y la digital es recogida en la siguiente
tabla.
Página 9
TENSIÓN SALIDA
BINARIO
HEXADECIMAL
DECIMAL
0.5 V
1110 0000
1C
28
1V
1100 1000
32
50
1.5 V
0100 1100
4C
76
2V
0110 0111
67
105
2.5 V
1000 0000
80
128
3V
1001 1010
9A
154
3.5 V
1011 0100
BA
180
4V
1100 1101
CA
205
4.5 V
1110 0111
E7
231
5V
1111 1111
FF
255
5. Umbrales
Para establecer los umbrales hay que tener en consideración un criterio. Ya que
poseemos dos potenciómetros, uno para cada sensor, proporcionamos al usuario la
posibilidad de variar los umbrales del sistema sin necesidad de modificar el código
fuente. Para establecer los umbrales, el criterio a seguir es escoger un umbral optimo
para ambos sensores y ajustar los potenciometros de forma que la variación del
umbral sea la máxima. Para conseguirlo, hemos realizado diversas pruebas, de las
cuales hemos concluido que ambos potenciómetros deben estar ajustados a la mitad,
que el umbral de temperatura es óptimo a 26ºC y la humedad optima proporciona una
tensión de salida de 1.2V.
6. El código
Lo pasos a seguir para computar la información la podemos representar en un
diagrama de bloque como este:
Página 10
4. PRUEBAS
Hemos realizado diferentes pruebas con el objetivo de observar el buen
funcionamiento del dispositivo y, además, obtener los umbrales optimos.
Página 11
3 voltios indican 27ºC.
5. CONCLUSIONES
El proyecto desarrollado cumple las condiciones iniciales establecidas, además
de otras que hemos añadido. Hemos posibilitado el cambio de los umbrales de
temperatura y humedad de forma manual.
El desarrollo e implementación del sistema puede ser ampliado, pero el tiempo
dedicado debe ser mayor. La interfaz del usuario con el dispositivo podría ser
mejorada incorporando varios lcd-7segmentos, que informen de la temperatura y
humedad. Permitiendo también la modificación de los umbrales, mediante botones
que posibiliten una mayor precisión que el potenciómetro. Proporcionar una
alimentación renovable mediante paneles solares o pequeños molinos de viento,
aumentaría la autonomía del dispositivo.
Página 12
6. ANEXO I
;**************************************************************************************
;
REGADOR AUTOMÁTICO
;**************************************************************************************
;INDICAR CUANTAS INSTRUCCIONES SON NECESARIAS PARA TENER 1 MICROSEGUNDO
#DEFINE MICROSEG 1
LIST P=16F876A
INCLUDE
<P16F876A.INC>
;-------------------CONTADOR
UMBRAL
EQU
UMBRAL_TEMPERATURA
UMBRAL_HUMEDAD
HUMEDAD_USUARIO
TEMP_USUARIO
EQU 0x26
0X27
EQU 0X28
EQU 0X29
EQU 0X30
EQU 0X31
; MACROS *****************************************************************************
;-------------------BANCO0
MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
;-------------------BANCO1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
;-------------------BANCO2 MACRO
BCF STATUS,RP0
BSF STATUS,RP1
ENDM
;-------------------BANCO3 MACRO
BSF STATUS,RP0
BSF STATUS,RP1
ENDM
;-------------------PORTA_IN MACRO
BANCO1
MOVLW 0FFh
MOVWF TRISA
;TRISA=1 => PUERTO ENTRADA
BANCO0
ENDM
;-------------------PORTB_OUT MACRO
BANCO1
CLRF TRISB
;TRISB=0 => PUERTO SALIDA
BANCO0
ENDM
Página 13
;-------------------PORTC_OUT MACRO
BANCO1
CLRF TRISC
BANCO0
ENDM
;TRISC=0 => PUERTO SALIDA
;-------------------SSELECC_CANAL_ANALOG_ENTRADA MACRO CANAL ;[0..7]
CLRF ADCON0
;LIMPIAMOS EL ADCON0 PARA ELIMINAR LOS BITS
QUE QUEDEN ALMACENADOS EN EL REGISTRO
BANCO0
;EN LA ÚLTIMA SELECCIÓN
MOVLW CANAL
MOVWF B0TMP_REG
BCF STATUS,C
RLF B0TMP_REG,F
;ROTAMOS 3 VECES, PARA DISPONER DEL NUMERO
CORRESPONDIENTE EN LOS BITS(5-3) DEL ADCON0
RLF B0TMP_REG,F
RLF B0TMP_REG,F
MOVFW B0TMP_REG
IORWF ADCON0,F
ENDM
;-------------------SELEC_RELOJ_CONVERSION MACRO RELOJ ;[0-3]
BANCO0
MOVLW RELOJ
MOVWF B0TMP_REG
BCF STATUS,C
RLF B0TMP_REG,F
;LOS BITS DEL ADCON0 PARA SELECCIONAR EL RELOJ,
SON EL 7 Y EL 6
RLF B0TMP_REG,F
RLF B0TMP_REG,F
RLF B0TMP_REG,F
RLF B0TMP_REG,F
RLF B0TMP_REG,F
MOVFW B0TMP_REG
IORWF ADCON0,F
;EN ESTE PUNTO, TENEMOS EL ADCON0 CON UN CANAL
DE ENTRADA SELECCIONADO, Y UN RELOJ DE CONVERSIÓN
ENDM
;-------------------INICIAR_CONVERSION MACRO
LOCAL ESPERAR_20MS,E20MS
ESPERAR_20MS
MOVLW MICROSEG
MOVWF B0CONTA20
BCF STATUS,C
RLF B0CONTA20,F; X2
RLF B0CONTA20,F; X4
RLF B0CONTA20,F; X8
RLF B0CONTA20,F; X16
E20MS
DECFSZ B0CONTA20,F
GOTO E20MS
BANCO0
BSF ADCON0,2
ENDM
;--------------------
Página 14
ESPERAR_CONVERSION MACRO
LOCAL EC
BANCO0
EC
BTFSC ADCON0,2
CONVERSIÓN NO HABRÁ FINALIZADO
GOTO EC
ENDM
CONVERSOR_ON MACRO
BANCO0
BSF ADCON0,0
ENDM
CONVERSOR_OFF MACRO
BANCO0
BCF ADCON0,0
NADA
ENDM
;MIENTRAS EL BIT 2 DEL ADCON0 SEA 1, LA
;ACTIVA EL FUNCIONAMIENTO DEL CONVERSOR
;DESACTIVA EL CONVERSOR A/D, Y NO CONSUME
; DECLARACION DE CONSTANTES
**********************************************************
#DEFINE CONTROL PORTA,1
#DEFINE ENTRADA_ANALOGICA PORTA,0
; DECLARACION DE VARIABLES ***********************************************************
#DEFINE BASE_MEM_USUARIO_BANCO0 20H
B0TMP_REG EQU BASE_MEM_USUARIO_BANCO0
B0CONTA20 EQU BASE_MEM_USUARIO_BANCO0+1
; ZONA DE CÓDIGOS ********************************************************************
ORG 0x00
GOTO INICIO
ORG
0x05
;------------------------------------------------------------------------------------------;
CONFIGURACIONES
;------------------------------------------------------------------------------------------INICIO
;ASIGNAMOS EL PRESCALER AL WDT, Y LE ASIGNAMOS EL VALOR MAXIMO 111 PARA
CONSEGUIR 2,3 SEG
MOVLW 0FH
MOVWF OPTION_REG
;ASIGNAMOS LOS VALORES A NUESTRAS VARIABLES DE CONTROL DE HUMEDAD Y
TEMPERATURA, DE LAS MACROS DEFINIDAS
MOVLW 08DH
MOVWF UMBRAL_TEMPERATURA
MOVLW 03FH
MOVWF UMBRAL_HUMEDAD
;CONFIGURAR PUERTOS DE SALIDA
PORTB_OUT
PORTC_OUT
;CONFIGURAR PUERTOS DE ENTRADA
PORTA_IN
BANCO1
MOVLW 02h
;0,1,2,3,4 -> ANALOGICOS, RESTO DIGITALES
MOVWF ADCON1
Página 15
BANCO0
;------------------------------------------------------------------------------------------;
BUCLE PRINCIPAL
;------------------------------------------------------------------------------------------BUCLE
MOVLW 0FFH
;RESETEAMOS EL CONTADOR QUE NOS PERMITIRÁ DORMIR LA
PLACA DURANTE 9,77 MINUTOS
MOVWF CONTADOR
CALL LEER_TEMPERATURA
;CUANDO TERMINAMOS DE LEER LAS MEDIDAS,
DORMIMOS
GOTO DORMIR
;------------------------------------------------------------------------------------------;
LEER TEMPERATURA
;------------------------------------------------------------------------------------------LEER_TEMPERATURA
SELECC_CANAL_ANALOG_ENTRADA 0
; SELECCIONAR CANAL DE ENTRADA
0 => TEMPERATURA
SELEC_RELOJ_CONVERSION 1
; SELECCIONAR EL RELOJ DE
CONVERSIÓN
CONVERSOR_ON
; ACTIVAR CONVERSOR
INICIAR_CONVERSION
ESPERAR_CONVERSION
MOVFW ADRESH
;OBTENEMOS LOS VALORES
CONVERTIDOS DE LA DIRECCION ADRESH
SUBWF UMBRAL_TEMPERATURA,W
;RESTAMOS AL VALOR DE LA
TEMPERATURA LEIDA, EL UMBRAL DE TEMPERATURA
BTFSC STATUS,C
;SI EL VALOR LEIDO ES MAYOR QUE
EL UMBRAL, SE PRODUCE UN BIT DE ACARREO QUE EL REGISTRO C DEL STATUS NOS
INDICA
CALL LEER_HUMEDAD
;SI SE CUMPLEN LAS CONDICIONES,
COMPROBAMOS TAMBIÉN LA HUMEDAD
RETURN
;VOLVEMOS AL BUCLE
PRINCIPAL
;------------------------------------------------------------------------------------------;
LEER HUMEDAD
;------------------------------------------------------------------------------------------LEER_HUMEDAD
SELECC_CANAL_ANALOG_ENTRADA 1 ;SELECCIONAR CANAL DE ENTRADA 0 =>
TEMPERATURA
SELEC_RELOJ_CONVERSION 1
;SELECCIONAR EL RELOJ DE CONVERSIÓN
CONVERSOR_ON
;ACTIVAR CONVERSOR
INICIAR_CONVERSION
ESPERAR_CONVERSION
MOVFW ADRESH
SUBWF UMBRAL_HUMEDAD,W
;RESTAMOS AL VALOR DE LA
HUMEDAD LEIDA, EL UMBRAL DE HUMEDAD
BTFSC STATUS,C
;SI EL VALOR LEIDO ES
MAYOR QUE EL UMBRAL, SALTAMOS A REGAR
CALL REGAR
RETURN
;VOLVEMOS AL BUCLE
PRINCIPAL, POR SI HAY QUE LEER OTROS SENSORES
;------------------------------------------------------------------------------------------;
REGAR
;------------------------------------------------------------------------------------------REGAR
Página 16
BSF PORTC,1
;ACTIVAMOS EL MOTOR
SLEEP
;DORMIMOS DURANTE 10
MINUTOS APROVECHANDO LA CONFIGURACIÓN PREVIAMENTE HECHA
DECFSZ CONTADOR,1
;YA QUE LOS BITS ACTIVOS
DEL PUERTOC, PERMANECEN ASÍ DURANTE EL SLEEP
GOTO REGAR
MOVLW 0FFH
;RESETEAMOS EL
CONTADOR, PARA DORMIR LA PLACA
MOVWF CONTADOR
CLRF PORTC
;LIMPIAMOS EL PUERTOC, YA
QUE SE TERMINÓ DE REGAR
RETURN
;------------------------------------------------------------------------------------------;
DORMIR
;------------------------------------------------------------------------------------------DORMIR
SLEEP
DECFSZ CONTADOR,1
;ESPERAMOS A QUE EL WDT
SALTE 255 VECES PARA CONSEGUIR APROX 10 MINUTOS DE SLEEP
GOTO DORMIR
GOTO BUCLE
;------------------------------------------------------------------------------------------END
-----------------------------------------------------------------------------------------------;CÁLCULOS DEL TIEMPO PARA EL SLEEP Y REGAR
-----------------------------------------------------------------------------------------------;En las características eléctricas del 16f876A, se especifica que el WDT salta cada 18 ms de media sin
prescaler.
;Esto qiere decir que con un ratio de prescaler máximo, 128, obtenemos 2,3 segundos por cada despertar del
wdt.
;Si a ello, le añadimos un contador de valor máximo 255, obtenemos los 9,792 minutos que usamos en
nuestro algoritmo.
;Con otros contador podríamos obtener 19,5 minutos. Si añadiésemos un contador dentro del contador ya
establecido, podríamos
;irnos hasta más de 4 horas.
7. BIBLIOGRAFÍA.
Los documentos visitados son los datasheet de los componentes electrónicos
utilizados.
Y la información no documentada nos la ha proporcionado el profesor de la
asignatura, Ricardo Perez García.
Página 17