Anda di halaman 1dari 12

SENSOR E INDICADOR DE TEMPERATURA PARA UNA CAMARA DE CULTIVO CELULAR.

En este segundo informe se presenta la descripcin detallada del modulo LCD y la programacin del microcontrolador que gobierna su trajo. Adems se presenta la descripcin del modulo conversor anlogo digital del microcontrolador junto con su respectiva programacin. Para el desarrollo de esta aplicacin se escogi el microcontrolador PIC16F88 debido a que posee en un DIL de 18 pines todos los mdulos necesarios para el desarrollo de la aplicacin. La programacin del microcontrolador se realizo en lenguaje ensamblador ya que este nos permite un conocimiento ms detallado del modo de funcionamiento del micro y con esto un primer acercamiento al desarrollo de aplicaciones con estos dispositivos. Es cierto que la programacin en ensamblador es tediosa y poco practica comparada con la programacin en un lenguaje de alto nivel como el C, pero para fines pedaggicos se considera que debe ser el medio usado para un primer acercamiento a la programacin y el conocimiento de la maquina. El cdigo se escribi en el entorno de desarrollo MPLAB, el cual usa el ensamblador MPASM. Para el sistema de reloj del microcontrolador se emplea un modulo de reloj interno, el cual se configura para que trabaje a 4MHz. Cada ciclo de maquina se ejecuta en 4 ciclos de reloj, de esta manera el tiempo de duracin por ciclo de maquina ser de 1 S. la configuracin en este modo de trabajo se hace cargando el registro OSCCON con el valor de 60H y configurando el oscilador como INTRC y RA6 como pin del puerto A. En la figura 1 se muestra la configuracin de pines de este microcontrolador.

Figura 1 configuracin de pines del PIC16F88

En este trabajo no se presenta la implementacin directa del sensor de temperatura, en su lugar se usa un divisor de voltaje con una resistencia variable que permita el ingreso de distintos valores de voltaje para probar el buen funcionamiento del modulo conversor A/D del microcontrolador. En la siguiente figura se presenta el esquema de conexin.

Figura 2 esquema del circuito

1.

COMUNICACIN CON EL LCD.

La pantalla de cristal lquido provee una manera econmica y fcil de visualizar los datos alfanumricos de los equipos electrnicos. El control del LCD est gobernado por un microcontrolador incorporado en el mismo modulo, el Hitachi 44780, el cual provee una interface entre el procesador y el cristal. El modulo LCD tiene 16 pines (figura 3 ) las lneas de bus de datos son triestados y pasan a estado de alta impedancia cuando el LCD no est habilitado. La funcin de pines de este modulo se presenta en la tabla 1. El modulo se alimenta con 5 voltios en el pin VDD y la regulacin del contraste se realiza a travs de un divisor de voltaje al dividir los 5 voltios con una resistencia variable de 10k en el pin VLC. El pin R/S permite seleccionar el modo en que se lee el dato, es decir, si se toma como un comando de control o como un dato a almacenar y mostrar. El pin R/W selecciona si se va a escribir al LCD o si se va a leer datos del LCD. E habilita o deshabilita el modulo. Los pines D0-D8 conforman el bus de datos.

Figura 3. Modulo LCD

Pin 1 2 3 4 5 6 7-14 15-16

Descripcin Ground VDD VLC -Contrast voltage R/S-instruction/register select R/W-read/write LCD registers E-Enable D0-D7 Data pins

Tabla 1. Descripcin de pines del modulo LCD

Existe una zona de memoria RAM denominada DDRAM donde se almacenan los coditos ASCCII de los datos a visualizar. La DDRAM posee una capacidad de 80 bytes de datos distribuida en 40 bytes por cada lnea. De estos datos slo 32 se pueden observar simultneamente en la pantalla. El modulo posee tambin una zona interna no voltil llamada CGROM donde se almacenan los 192 caracteres que pueden ser visualizados y tiene adems 8 posiciones de memoria para caracteres definidos por el usuario. Se usa dos modos distintos de funcionamiento: Modo comando: se activa poniendo a 0 el pin R/S. los datos enviados por el bus se toman como instruccin (borrar, desplazar cursor, ocultar cursor, etc). En este modo el pin R/W de bebe ser 0. Este tipo de operacin tarda 1,64 S. en la tabla se presenta los comandos de control del modulo LCD. Modo carcter: se activa poniendo a 1 el pin R/S. los datos enviados por el bus se toman como datos a almacenar y mostrar en el modulo. En este modo el pin R/W debe ser 0. Esta operacin tarda un mximo de 40 S.

La tabla 2 presenta los comandos del modulo LCD.

Tabla 2. Comandos del modulo LCD La descripcin de cada uno de los comandos es la siguiente: Clear display: borra la pantalla y devuelve el cursor a la posicin inicial (direccin 0 de la DDRAM). Set cursro move direccin: S=0 informacin visualizada en pantalla no se desplaza al escribir un nuevo carcter S=1 informacin visualizada en pantalla se desplaza al escribir un nuevo carcter. I/D=0 decremento de la posicin del cursor I/D=1 incremento automtico de la posicin del cursor Enable display/cursor D=0 apagar display D=1 render display C=0 apagar cursor C=1 encender cursor B=0 cursor con parpadeo B=1 cursor sin parpadeo Move cursor/shift display SC=0 el efecto del desplazamiento se aplica solo sobre el cursor sin alterar el contenido de la DDRAM.

SC=1 RL=0 RL=1

el efecto del desplazamiento se aplica sobre todo el displey desplazamiento a la izquierda. desplazamiento a la derecha.

Reset/ set interface length DL=0 comunicacin con cuatro bits con los pines D4-D7, enviando primero el nibble mas alto y a continuacin el mas bajo. DL=1 comunicacin con 8 bits. N=0 pantalla de lnea 1. N=1 pantalla de lnea 2. F=0 caracteres de 5x7 puntos. F=1 caracteres de 5x10 puntos. Move cursor to CGRAM Mueve cursor a la direccin CGRAM sealada Move cursor to display Modifica el puntero de la DDRAM.

Inicializar LCD Configuro pines E y RS como salida E=0 RS=0

Escribir LCD LCD_Dato=W and F0H

enviar

LCD_GuardaDato=W SWAP LCD_Dato Call escribir LCD W = PORTB and F0H Swap LCD_GuardaDato LCD_Dato=LCD_Dato ior W Call escribir LCD PORTB = LCD_Dato si E=1 E=0 RS=1 no Reatardo 2 ms Reatardo 50 us

Retardo 20 ms W=30H Call escribir LCD Retardo 5 ms W=30H Call escribir LCD

return

return Retardo 200 us W=30H Call escribir LCD

W=30H Call escribir LCD W=28H Activo modo comando RS=0 Call escribir LCD
LCD de dos lineas y caracteres de 5x7

W=06H Activo modo comando RS=0 Call escribir LCD

Cursor en modo de incremento

return

Figura 4. Diagramas de flujo de la programacin del modulo LCD

El bloque inicializar LCD configura el LCD para trabajar la comunicacin con 4 lneas. La secuencia presentada en este bloque es recomendada por el fabricante para una buena configuracin. El bloque escribir recibe como entra el dato a enviar cargado en el registro de trabajo W y enva el nibble alto de ste al modulo LCD, El bloque enviar permite escribir un dato completo de 8 bits en el modulo, ya sea como comando o como dato. Escribe el nibble alto del dato a enviar, luego el nibble bajo. Los datos se envan sin modificar la informacin en los pies del puerto B que no estn siendo usados para la comunicacin. La imagen 1 muestra una foto del LCD gobernado por este programa. En el CD con el que se entrega el trabajo aparece el cdigo escrito en lenguaje ensamblador del los diagramas de flujo. La programacin del anterior diagrama de flujo se encuentra en la librara LCD_4BIT.INC. En el CD que se entrega con este trabajo, se presenta adems un programa que enva un mensaje a cada una de las lneas del LCD. El archivo ejecutable se llama LCD.ASM. adems de la librera LCD_4BIT.INC se presenta una librera que contiene el cdigo del los tiempos de retardo llamada RETARDO.INC.

2. MODULO TIMER1
En este aparte del proyecto se presenta solo la disposicin de los registros de control ya que al presente no se ha implementado el modulo TMR1 para el control de la conversin A/D. El mdulo de TIMER1 es un temporizador/contador de 16 bits, formado por dos registros de 8 bits cada uno TMR1H y TMR1L, que son de lectura y escritura y que son los que guardan el valor de la cuenta en cada momento. El valor de los registros TMR1H y TMR1L se incrementan desde 0000H hasta FFFFH, en cuyo instante se vuelve a poner a 0000h y se activa el flag TMRIF (PIR1<0>) La interrupcin de TMR1 puede ser habilitada/deshabilitada segn este a uno/cero el bit TMR1IE (PIE1 <0>). EL TIMER1 tiene varios modos de trabajo, de los cuales, para nuestra aplicacin solo nos interesa el modo Temporizador.

Registro T1CON

bit 7-6: No implementados: Se lee como 0 bit 5-4: TlCKPS1:T1CKPS0: bit de seleccin del preescaler de la seal de reloj del TIME1 11 = valor del preescaler 1:8 10 = valor del preescaler 1:4 01 = valor del preescaler 1:2 00 = valor del preescaler 1: 1 bit 3 : T1OSCEN: bit de habilitacin del oscilador del TIMER1. Cuando se emplea un oscilador externo, hay que poner este bit a 1. El TMR1 puede trabajar a una frecuencia totalmente independiente de la del sistema. 1 = Habilita el oscilador 0 = Deshabilita el oscilador bit 2: TlSYNC: bit de control de sincronizacin de la seal de entrada. Con TMR1CS = 1 1= No sincroniza la entrada de reloj externa 0 = Sincroniza la entrada de reloj externa Con TMR1CS = 0 En esta condicin se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0 bit 1 TMR1CS: bit de seleccin de la fuente de reloj del TIMER1 1 = Reloj externo por el pin RC0/T1OSO/T1CK1 (flanco ascendente) 0 = Reloj interno (FOSC/4) bit 0: TMR1ON: TIMER1. activo. Hace entrar o no en funcionamiento el TIMER1. 1 = Habilita el TIMER1 0 = Deshabilita el TIMER1.

3. CONVERSOR ANLOGO DIGITAL


El conversor A/D posee una resolucin de 10 bits. La resolucin de cada bit procedente de la conversin tiene un valor que es funcin de la tensin de referencia Vref de acuerdo con la siguiente frmula:

As el valor del voltaje de referencia determina los lmites mximos y mnimos de la seal a transformar. El funcionamiento requiere la manipulacin de 4 registros 1. DRESH parte alta del resultado de la conversin

2. 3. 4. 5.

ADRESL ADCON0 ADCON1 ANSEL

parte baja del resultado de la conversin registro de control 0 registro de control 1 registro de seleccin anloga

En la pareja de registro ADRESH:ADRESL se deposita el resultado de la conversin, de los cuales solo son significativos 10 de los bits de dicha pareja. El ADCON0 y ADCON1 controlan el conversor A/D mientras que el ANSEL permite configurar los pines como entradas anloga.

Descripcin de registro ADCON0

bit 7-6: ADCS1:ADCS0: bit de seleccin de reloj para el Convertidor A/D 00 Fosc/2 01 Fosc /8 10 Fosc/32 11 FRC (Procede del oscilador RC interno) bit 5-3: CH2:CH0: bit de seleccin del canal analgico 000 = Canal 0, (RA0/AN0) 001 = Canal 1, (RA1/AN1) 010 = Canal 2, (RA2/AN2) 011 = Canal 3, (RA3/AN3) 100 = Canal 4, (RA4/AN4) 101 = Canal 5, (RA5/AN5); los PIC16F87X de 28 pines no tienen este canal 110 = Canal 6, (RA6/AN6); los PIC16F87X de 28 pines no tienen este canal 111 = Canal 7, (RA7/AN7),, los PIC 1 6F87X de 28 pines no tienen este canal bit 2: GO/#DONE. bit de estado de la conversin A/D Si ADON=1 1= La conversin A/D est en marcha (mientras est a 1 se est realizando la conversin) 0 = La conversin ha finalizado. (el bit se pone a cero automticamente por hardware cuando la conversin A/D finaliza) el resultado de la conversin aparece en ADRDES:ADRESL bit 1: No implementado: Se lee como 0 bit 0: ADON: bit de puesta en marcha 1 = El convertidor A/D est operativo 0 = El convertidor A/D est apagado y no consume corriente. Descripcin de registro ADCON1

bit 7: ADFM: Selecciona el formato del resultado de la conversin A/D 1 = Pone en el registro ARDESH los seis bit de mayor peso a 0 (alineacin a la derecha). 0 = pone los 6 bit de menor peso del registro ADRESL a 0 (alineacin a la izquierda). Por lo tanto los 16 bits que forman el registro ARDESH-ARDESL con ADFM=1 tiene los 6 bit de mayor peso a cero y con ADFM=0 los 6 bit de menor peso estn a cero bit 6: ADCS2: permite divide por 2 el reloj del conversor A/D 1 = la fuente de reloj del A/D se divide por dos. 0 = deshabilitada. bit 5-4: VCFG1<1:0>: Configuracin del voltaje de referencia del conversor A/D.

Estado lgico 00 01 10 11 bit 3-0: no implementados

VREF+ AVDD AVDD VREF+ VREF+

VREFAVSS VREFAVSS VREF-

descripcin del registro ANSEL

Bit7: no implementado bit 6-0: bits de seleccin de entradas anlogas 1 = anlogo 0 = digital

Configurar conversor A/D

INTERRUPCION

ANSEL=B00000001 ADCON1=B11001110

RA0 como entrada analoga

SAVEW=W SAVESTATUS=STATUS

Justificado a la derecha, fuente de reloj dividida por 2, voltje de referencia entre Vdd y Vss.

PIE1,ADIE=1 INTCON=B11000000

Activo interrupcion por conversor A/D Activo interrupciones generales y perifricas

PIR1,ADIF=1
si

ADLOW=ADRESL ADCON0=B10000001 CONFIGURACION DE TMR1


Fosc/64, RA0 entreada analoga, modulo encendido

ADHIGH=ADRESH
No

PIR1,ADIF=0 W=SAVEW STAUTS=SAVESTATUS

RETURN

RETFIE

Figura 5. Diagramas de flujo de la programacin del conversor A/D

El bloque configurar conversor A/D carga los registros de control de acuerdo a las especificaciones que aparecen en el diagrama de flujo. La conversin se ejecuta cada vez que el temporizador TIMER1 se desborda, por lo que no se hizo necesario realizar los retardos para la conversin a travs de software. El bloque interrupcin se ejecuta cclicamente cuando termina cada conversin, los datos a convertir y enviar al LCD se almacenan en los registro ADLOW y ADHIGH que son registros de propsito general previamente definidos. Cuando empieza el servicio de interrupcin se hace necesario almacenar el registro de trabajo w y el registro de estado STATUS para luego ser nuevamente cargados con estos valores cuando termine la conversin.

BIBLIOGRAFIA
Microcontroladores <<PIC>>. Diseo practico de aplicaciones. Segunda parte. Pag 87-90. Jos M. Angulo Usategui Microcontrolador PIC16F84. Desarrollo de proyectos. Segunda edicin. Pag 57-59, 77-99, 187-209. Enrique palacios Data Sheet PIC16F87/88. MICROCHIP.

Advanced PIC Microcontroller Projects in C. pag 193-189. Dogan Ibrahim Programming and customizing the pic microcontroller. Third edition. Pag 672-690. Myke Predko