15
SENSOR E INDICADOR DE TEMPERATURA PARA UNA CAMARA DE CULTIVO CELULAR. En este segundo informe se presenta la descripción detallada del modulo LCD y la programación del microcontrolador que gobierna su trajo. Además se presenta la descripción del modulo conversor análogo digital del microcontrolador junto con su respectiva programación. Para el desarrollo de esta aplicación se escogió el microcontrolador PIC16F88 debido a que posee en un DIL de 18 pines todos los módulos necesarios para el desarrollo de la aplicación. La programación del microcontrolador se realizo en lenguaje ensamblador ya que este nos permite un conocimiento más detallado del modo de funcionamiento del micro y con esto un primer acercamiento al desarrollo de aplicaciones con estos dispositivos. Es cierto que la programación en ensamblador es tediosa y poco practica comparada con la programación en un lenguaje de alto nivel como el C, pero para fines pedagógicos se considera que debe ser el medio usado para un primer acercamiento a la programación y el conocimiento de la maquina. El código 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 duración por ciclo de maquina será de 1 µS. la configuración 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 configuración de pines de este microcontrolador.

Trabajo II

Embed Size (px)

Citation preview

Page 1: Trabajo II

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

En este segundo informe se presenta la descripción detallada del modulo LCD y la programación del microcontrolador que gobierna su trajo. Además se presenta la descripción del modulo conversor análogo digital del microcontrolador junto con su respectiva programación.Para el desarrollo de esta aplicación se escogió el microcontrolador PIC16F88 debido a que posee en un DIL de 18 pines todos los módulos necesarios para el desarrollo de la aplicación. La programación del microcontrolador se realizo en lenguaje ensamblador ya que este nos permite un conocimiento más detallado del modo de funcionamiento del micro y con esto un primer acercamiento al desarrollo de aplicaciones con estos dispositivos. Es cierto que la programación en ensamblador es tediosa y poco practica comparada con la programación en un lenguaje de alto nivel como el C, pero para fines pedagógicos se considera que debe ser el medio usado para un primer acercamiento a la programación y el conocimiento de la maquina.

El código 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 duración por ciclo de maquina será de 1 µS. la configuración 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 configuración de pines de este microcontrolador.

Figura 1 configuración de pines del PIC16F88

Page 2: Trabajo II

En este trabajo no se presenta la implementación 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 conexión.

Figura 2 esquema del circuito

1. COMUNICACIÓN CON EL LCD.

La pantalla de cristal líquido provee una manera económica y fácil de visualizar los datos alfanuméricos de los equipos electrónicos. 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 líneas de bus de datos son triestados y pasan a estado de alta impedancia cuando el LCD no está habilitado. La función de pines de este modulo se presenta en la tabla 1. El modulo se alimenta con 5 voltios en el pin VDD y la regulación del contraste se realiza a través 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.

Page 3: Trabajo II

Figura 3. Modulo LCD

Pin Descripción1 Ground2 VDD

3 VLC -Contrast voltage4 R/S-instruction/register select5 R/W-read/write LCD registers6 E-Enable

7-14 D0-D7 –Data pins15-16

Tabla 1. Descripción 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 línea. De estos datos sólo 32 se pueden observar simultáneamente en la pantalla.El modulo posee también una zona interna no volátil llamada CGROM donde se almacenan los 192 caracteres que pueden ser visualizados y tiene además 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 instrucción (borrar, desplazar cursor, ocultar cursor, etc). En este modo el pin R/W de bebe ser “0”. Este tipo de operación tarda 1,64 µS. en la tabla se presenta los comandos de control del modulo LCD.Modo carácter: 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 operación tarda un máximo de 40 µS.

Page 4: Trabajo II

La tabla 2 presenta los comandos del modulo LCD.

Tabla 2. Comandos del modulo LCD

La descripción de cada uno de los comandos es la siguiente:

Clear display: borra la pantalla y devuelve el cursor a la posición inicial (dirección 0 de la DDRAM).

Set cursro move dirección: S=0 información visualizada en pantalla no se desplaza al escribir un nuevo carácterS=1 información visualizada en pantalla se desplaza al escribir un nuevo carácter.I/D=0 decremento de la posición del cursorI/D=1 incremento automático de la posición del cursor

Enable display/cursorD=0 apagar displayD=1 render displayC=0 apagar cursorC=1 encender cursorB=0 cursor con parpadeoB=1 cursor sin parpadeo

Move cursor/shift display

Page 5: Trabajo II

SC=0 el efecto del desplazamiento se aplica solo sobre el cursor sin alterar el contenido de la DDRAM.

SC=1 el efecto del desplazamiento se aplica sobre todo el displeyRL=0 desplazamiento a la izquierda. RL=1 desplazamiento a la derecha.

Reset/ set interface lengthDL=0 comunicación con cuatro bits con los pines D4-D7, enviando primero el nibble mas

alto y a continuación el mas bajo.DL=1 comunicación con 8 bits.N=0 pantalla de línea 1. N=1 pantalla de línea 2.F=0 caracteres de 5x7 puntos. F=1 caracteres de 5x10 puntos.

Move cursor to CGRAMMueve cursor a la dirección CGRAM señalada

Move cursor to displayModifica el puntero de la DDRAM.

Page 6: Trabajo II

Figura 4. Diagramas de flujo de la programación del modulo LCD

Page 7: Trabajo II

El bloque “inicializar LCD” configura el LCD para trabajar la comunicación con 4 líneas. La secuencia presentada en este bloque es recomendada por el fabricante para una buena configuración.

El bloque “escribir” recibe como entra el dato a enviar cargado en el registro de trabajo W y envía 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 envían sin modificar la información en los pies del puerto B que no están siendo usados para la comunicación.

La imagen 1 muestra una foto del LCD gobernado por este programa. En el CD con el que se entrega el trabajo aparece el código escrito en lenguaje ensamblador del los diagramas de flujo.

La programación del anterior diagrama de flujo se encuentra en la libraría “LCD_4BIT.INC”.En el CD que se entrega con este trabajo, se presenta además un programa que envía un mensaje a cada una de las líneas del LCD. El archivo ejecutable se llama LCD.ASM. además de la librería “LCD_4BIT.INC” se presenta una librería que contiene el código del los tiempos de retardo llamada “RETARDO.INC”.

2. MODULO TIMER1

En este aparte del proyecto se presenta solo la disposición de los registros de control ya que al presente no se ha implementado el modulo TMR1 para el control de la conversión A/D.

El módulo 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 interrupción de TMR1 puede ser habilitada/deshabilitada según este a uno/cero el bit TMR1IE (PIE1 <0>).EL TIMER1 tiene varios modos de trabajo, de los cuales, para nuestra aplicación solo nos interesa el modo Temporizador.

Page 8: Trabajo II

Registro T1CON

bit 7-6: No implementados: Se lee como “0”bit 5-4: TlCKPS1:T1CKPS0: bit de selección del preescaler de la señal de reloj del TIME111 = valor del preescaler 1:810 = valor del preescaler 1:401 = valor del preescaler 1:200 = valor del preescaler 1: 1bit 3 : T1OSCEN: bit de habilitación 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 sincronización de la señal de entrada.Con TMR1CS = 11= No sincroniza la entrada de reloj externa0 = Sincroniza la entrada de reloj externaCon TMR1CS = 0En esta condición se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0bit 1 TMR1CS: bit de selección de la fuente de reloj del TIMER11 = 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 TIMER10 = Deshabilita el TIMER1.

3. CONVERSOR ANÁLOGO DIGITAL

El conversor A/D posee una resolución de 10 bits. La resolución de cada bit procedente de la conversión tiene un valor que es función de la tensión de referencia Vref de acuerdo con la siguiente fórmula:

resolucion :¿

Así el valor del voltaje de referencia determina los límites máximos y mínimos de la señal a transformar.

El funcionamiento requiere la manipulación de 4 registros1. DRESH parte alta del resultado de la conversión

Page 9: Trabajo II

2. ADRESL parte baja del resultado de la conversión3. ADCON0 registro de control 04. ADCON1 registro de control 15. ANSEL registro de selección análoga

En la pareja de registro ADRESH:ADRESL se deposita el resultado de la conversión, 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 análoga.

Descripción de registro ADCON0

bit 7-6: ADCS1:ADCS0: bit de selección de reloj para el Convertidor A/D00 Fosc/2 01 Fosc /810 Fosc/3211 FRC (Procede del oscilador RC interno)

bit 5-3: CH2:CH0: bit de selección del canal analógico000 = 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 canal110 = Canal 6, (RA6/AN6); los PIC16F87X de 28 pines no tienen este canal111 = Canal 7, (RA7/AN7),, los PIC 1 6F87X de 28 pines no tienen este canalbit 2: GO/#DONE. bit de estado de la conversión A/DSi ADON=1 1= La conversión A/D está en marcha (mientras está a 1 se está realizando la conversión)0 = La conversión ha finalizado. (el bit se pone a cero automáticamente por hardware cuando la conversión A/D finaliza) el resultado de la conversión aparece en ADRDES:ADRESLbit 1: No implementado: Se lee como “0”bit 0: ADON: bit de puesta en marcha1 = El convertidor A/D está operativo0 = El convertidor A/D está apagado y no consume corriente.

Descripción de registro ADCON1

Page 10: Trabajo II

bit 7: ADFM: Selecciona el formato del resultado de la conversión A/D1 = Pone en el registro ARDESH los seis bit de mayor peso a “0” (alineación a la derecha).0 = pone los 6 bit de menor peso del registro ADRESL a “0” (alineación 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 están a cerobit 6: ADCS2: permite divide por 2 el reloj del conversor A/D1 = la fuente de reloj del A/D se divide por dos.0 = deshabilitada.bit 5-4: VCFG1<1:0>: Configuración del voltaje de referencia del conversor A/D.

Estado lógico VREF+ VREF-

00 AVDD AVSS

01 AVDD VREF-

10 VREF+ AVSS

11 VREF+ VREF-

bit 3-0: no implementados

descripción del registro ANSEL

Bit7: no implementadobit 6-0: bits de selección de entradas análogas1 = análogo0 = digital

Page 11: Trabajo II

Figura 5. Diagramas de flujo de la programación 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 conversión se ejecuta cada vez que el temporizador TIMER1 se desborda, por lo que no se hizo necesario realizar los retardos para la conversión a través de software. El bloque “interrupción” se ejecuta cíclicamente cuando termina cada conversión, los datos a convertir y enviar al LCD se almacenan en los registro ADLOW y ADHIGH que son registros de propósito general previamente definidos.Cuando empieza el servicio de interrupción 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 conversión.

Page 12: Trabajo II

BIBLIOGRAFIA

Microcontroladores <<PIC>>. Diseño practico de aplicaciones. Segunda parte. Pag 87-90. José M. Angulo Usategui

Microcontrolador PIC16F84. Desarrollo de proyectos. Segunda edición. 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