Sei sulla pagina 1di 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

INSTTITUTO POLITECNICO NACIONAL Escuela Superior de Ingeniera Mecnica y Elctrica

INGENIERIA ELECTRICA LABORATORIO DE ELECTRONICA III. PRACTICA No. 13 (MAYO 2012) Comparacin Analgica (ACMP). Nmero de Equipo: _____ Grupo: ________
INTEGRANTES Nombre de los Alumnos: 1). ___________ ___________ ______________ 2). ___________ ___________ ______________ No. de Boleta: ____________ ____________

Nombre de los Profesores: Prof. Titular: ___________ ___________ _____________ Prof. Adjunto: ___________ ___________ _____________ Prof. Adjunto: ___________ ___________ _____________

Fecha de realizacin: ___________ Calificacin: ___________

JLDM

Pgina 1 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

PRCTICA No 13: Comparacin Analgica (ACMP). OBJETIVOS:


a) Manejo del software de programacin CodeWarrior, en su versin 6.1, para

configuracin del microcontrolador HC08 en la utilidad del ACMP. b) Conocer el funcionamiento del ACMP en la Comparacin Analgica. c) Configuracin de los registros del ACMP en el microcontrolador HC08. d) Manejo de la herramienta de desarrollo DEMOJM, en la configuracin de sus puertos ACMP. 13.1. Introduccin terica
DIAGRAMA EN BLOQUES, EXPLICACIN DEL FUNCIONAMIENTO Y REGISTROS ASOCIADOS

Breve repaso de la comparacin anloga Antes de comenzar el estudio del mdulo ACMP de la mquina MCF51JM128, se har un breve repaso del concepto de comparacin anloga. La Figura 13.1 ilustra un comparador anlogo. Para este circuito, si la seal Vi(+) es mayor o igual a la seal Vi(-), la salida Vo ser aproximadamente igual a Vdd. Pero si la seal Vi(+) es menor a Vi(-), la salida Vo ser aproximadamente igual a Vss.

Figura 13.1. Comparador anlogo.

Breve descripcin del mdulo ACMP y diagrama en bloques caractersticas ms importantes del mdulo ACMP son:

Algunas de las

o Hasta dos comparadores, ACMP1 y ACMP2. o Plena excursin sobre la fuente de alimentacin. o Generacin de evento de interrupcin ante un flanco de subida o bajada en la salida del comparador. o Comparacin contra una referencia interna (bandgap = 1 .2V tpico) o una seal externa. JLDM Pgina 2 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

o Posibilidad de presentar el estado de la salida del comparador en un pin del MCU. La Figura 13.2 muestra el diagrama en bloques del mdulo ACMP, en donde el circuito (A) corresponde al sistema de referencia de comparacin, que puede ser interna o una seal externa (ACMPx+). El circuito ( B) es el corazn del mdulo y corresponde al comparador con su seal de entrada (ACMPx -), la seal de habilitacin del mdulo (ACME) y la salida ACMPOx. El registro de estado y control del mdulo ACMP, corresponde la circuito (C). Finalmente, el circuito (D) configura la mquina de interrupcin del mdulo, con la bandera de interrupcin (ACF), el bit de habilitacin de interrupcin (ACIE) y la seleccin del flanco (ACOPE).

Figura 13.2. Diagrama en bloques el mdulo ACMP.

Registros asociados al mdulo ACMP . Registro de estado y control (ACMPSC): La Figura 13.3 muestra el nico registro asociado al mdulo ACMP y corresponde al registro de estado y control.

Figura 13.3. Registro ACMPSC.

ACME: Bit para habilitar el funcionamiento del mdulo ACMP.


JLDM Pgina 3 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III. 0: Mdulo ACMP inhibido. 1: Mdulo ACMP habilitado.

Practica No. 13

ACBGS: Bit para seleccionar la seal de comparacin, que puede ser una
referencia interna (Bandgap = 1 .2V tpico) o una seal externa (ACMPx+). 0: Selecciona el pin externo ACMPx+, como seal de comparacin . 1: Selecciona la referencia interna de 1.2V, como seal de comparacin .

ACF: Bandera para indicar que ha ocurrido un evento de comparacin. El evento es seleccionado dependiendo del bit ACMOD. Esta bandera se aclara, cuando se escribe un 1 sobre esta. 0: No ha ocurrido un evento de comparacin . 1: Ha ocurrido un evento de comparacin .

ACIE: Bit para habilitar un evento de interrupcin ante la puesta a 1 de la bandera


ACF. 0: Inhibe interrupcin en el ACMP 1: Habilita evento de interrupcin en le ACMP

ACO: Bit para indicar el estado de la salida del comparador. ACOPE: Bit para habilitar el estado de la salida del comparador, hacia un pin de la MCU. 0: Inhibe la salida del comparador al pin ACMPOx 1: Habilita la salida del comparador al pin ACMPOx ACMOD: Bits para elegir el tipo de seal de salida del comparador, reflejada en la bandera ACF. X0: Salida a flanco de bajada ante evento de comparacin 01: Salida a flanco de subida ante evento de comparacin 11: La salida cambia de estado ante evento de comparacin

13.2. Material y equipo utilizado


1 Computadora 1 Software Code Warrior. 1 Tarjeta DEMOJM 1 LM317 2 Transistor 2N2222A 1 Transistor 2N3906 Resistencias:1 de 6.2 a 2W; 2 de 3.3K; 3 de 470 K; 1 de 2.2K; 1 de 2K; 1 de 1K; 1 de 1.5 K. Capacitores: 2 de 0.1F. 1 Relevador 1 Polo dos tiros. Diodos: 1N4148 y 1N4007. 1 Dispaly LCD

13.3. Desarrrollo de la Prctica.


JLDM Pgina 4 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III. 13.3.1. EJEMPLO CON EL MDULO ACMP

Practica No. 13

El ejemplo para ilustrar el funcionamiento del mdulo ACMP, trata sobre el control de la carga de una celda de batera tipo NIMH ( Niquel Metal Hydride). La Figura 13.4 muestra la curva caracterstica de carga de una celda NIMH a 25C.

Figura 13.4. Curva de carga de celda NIMH.

NOTA: Se recomienda al usuario revisar cuidadosamente el estado de los puentes del DEMOJM,
con el objetivo de hacer compatible el ejercicio actual y de esta manera liberar los pines comprometidos en el circuito.

El punto P de la grfica corresponde al codo mximo de carga de la celda, ubicado en un 98% de la curva. En trminos del voltaje almacenado en la celda, correspondera aproximadamente a 1 .55V. Asumiendo que la celda a cargar es de 200mAh, que utilizando una fuente de corriente de 200mA (Tasa de carga = 1C) se tomara una hora en llegar a su carga mxima (100%), cuando el voltaje llega a 1.1V. Este punto se podra alcanzar temporizando la carga de la celda y correspondera a un ligero descenso en el codo mximo de la grfica (punto del 100% de la carga). La Figura 13.5 ilustra sobre el circuito sugerido para el control de la carga de la celda.

JLDM

Pgina 5 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

Figura 13.5. Circuito carga de batera.

El circuito de carga est conformado por una fuente de corriente, implementada con un LM317 y ajustada a 200mA (1.25V / 6.2). La fuente de corriente es controlada por el pin PTB0, que prende y apaga el transistor 2N3906. La batera es conectada al circuito de carga mediante el pin PTB 1, que opera el rel K. Cuando el voltaje en la batera est por debajo de 1.1V, el rel conecta la fuente de corriente y la carga ZL es abandonada de la alimentacin que le proporciona la batera. El umbral de comparacin para el lmite de la descarga (Vbat < 1.1V) es suministrado por la referencia externa del mdulo ACMP.

La batera ser cargada hasta que el tiempo sea de una hora y su voltaje ser monitoreado en la entrada PTD1 (ACMPx-). Para esta comparacin se utiliza el divisor de tensin conectado a PTD0 (ACMPx+). A continuacin se lista un programa en C, que resuelve el ejercicio propuesto.
/******************************************************************************************/ /* ACMP_CARGA: Ejemplo sobre la utilizacion del modulo ACMP */ /* main.c */ /* Fecha: Noviembre 11, 2010 */ /* V1.0 Rev 0 Por Jose Luis DM */ /* Implementar un Codigo en C para controlar una carga en una celda de NIMH de 150mAh */ /******************************************************************************************/ /******************************************************************************************/ /* */ /* DISTRIBUCION DE PUERTOS */ /* */ /******************************************************************************************/ /******************************************************************************************/ /* PUERTO *PIN* I/O * TIPO * INICIA* COMENTARIO */ /******************************************************************************************/

JLDM

Pgina 6 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

/*******************************************************************************************************************/ /* PTA * * * * -*LCD */ /* *PTA0 * O * D * 1 *D4 del LCD */ /* *PTA1 * O * D * 1 *D5 del LCD */ /* *PTA2 * O * D * 1 *D6 del LCD */ /* *PTA3 * O * D * 1 *D7 del LCD */ /* *PTA4 * O * D * 1 *Seal ENABLE del LCD */ /* *PTA5 * O * D * 1 *Seal RS del LCD */ /******************************************************************************************************************/ /******************************************************************************************************************/ /* PTB * - * - * -* *Control carga */ /* *PTB0 * O * D **ON/OFF de la fuente de corriente */ /* *PTB1 * O * D * - *ON/OFF del rele para conexion de bateria */ /******************************************************************************************************************/ /*PTC * - * - * - * - *No usado */ /******************************************************************************************************************/ /*PTD * - * - * - * - *Comparacion analoga */ /* *PTD0 * I *A **Referencia alta de la carga (1.55V) */ /* *PTD1 * I *A **Voltaje en la bateria */ /******************************************************************************************************************/ /*PTE * - * - * - * - *No usado */ /******************************************************************************************************************/ /*PTF * - * - * - * - *No usado */ /******************************************************************************************************************/ /*PTG * - * - * - * - *No usado */ /****************************************************************************************************************/ /*PTH * - * - * - * - *No usado */ /****************************************************************************************************************/ /****************************************************************************************************************/ /*PTJ * - * - * - * - *No usado */ /****************************************************************************************************************/ /* Archivos de cabecera */ #include <hidef.h> #include "derivative.h"

//macro para interrupciones //macro de declaraciones del MCU

/* Declaracion de variables y constantes */ byte bandera=0; //bandera de proposito general word seg=0; //variable para conteo de segundos unsigned long retardo=0; //parametro para hacer retardo char i=0; //variable de iteracion char PTAD_Config=0; //byte de inicializacion del registro PTAD char PTADD_Config=0; //byte de inicializacion del registro PTADD char PTAPE_Config=0; //byte de inicializacion del registro PTAPE char PTASE_Config=0; //byte de inicializacion del registro PTASE char PTADS_Config=0; //byte de inicializacion del registro PTADS char PTAIFE_Config=0; //byte de inicializacion del registro PTAIFE char PTBD_Config=0; //byte de inicializacion del registro PTBD char PTBDD_Config=0; //byte de inicializacion del registro PTBDD char PTBPE_Config=0; //byte de inicializacion del registro PTBPE char PTBSE_Config=0; //byte de inicializacion del registro PTBSE char PTBDS_Config=0; //byte de inicializacion del registro PTBDS char PTBIFE_Config=0; //byte de inicializacion del registro PTBIFE char comando8=0; //parametro inicializacion LCD modo 8 bits char dato4; //dato a enviar al LCD char rs=0; //seal de dato o comando al LCD char a=0; //variable temporal const unsigned char mensaje1[]="BATERIA NORMAL"; //Arreglo del mensaje 1 para llevar al LCD const unsigned char mensaje2[] = "CARGANDO BATERIA"; //Arreglo del mensaje 2 para llevar al LCD char *pM; //puntero a mensaje para el LCD /* Macros y definiciones */ #define Disable_COP() SOPT1 &= 0x3F

//deshabilita el COP

JLDM

Pgina 7 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

#define Carga_On() PTBD_PTBD0 = 1; PTBDD_PTBDD0 = 1 //macro para encendido del rele #define Carga_Off() PTBD_PTBD0 = 0; PTBDD_PTBDD0 = 1 //macro para apagado del rele #define Rele_On() PTBD_PTBD1 = 1; PTBDD_PTBDD1 = 1 //macro para encendido del rele #define Rele_Off() PTBD_PTBD1 = 0; PTBDD_PTBDD1 = 1 //macro para apagado del rele /* Declaracion de funciones */ void Delay(unsigned long retardo); //funcion para hacer reatrdos varios void LCD_Init(void); //funcion para inicilaizar LCD void Lcd_4bit_Wr(char dato4,char rs); //funcion para escribir dato al LCD void Comando_8bit(char comando8); //funcion para inicio del LCD a 8 bits void PTA_Init(char PTAD_Config,char PTADD_Config,char PTAPE_Config,char PTASE_Config,char PTADS_Config,char PTAIFE_Config); //declare funcion que inicializa PTA void PTB_Init(char PTBD_Config,char PTBDD_Config,char PTBPE_Config,char PTBSE_Config,char PTBDS_Config,char PTBIFE_Config); //declare funcion que inicializa PTB void ACMP_Init(char ACMPSC_Config); //declare funcion para inicializar modulo ACMP void RTC_Init(char RTCMOD_Config,char RTCSC_Config); //funcion para inicializacion del modulo RTC /* main(): Funcion principal */ void main(void) { MCGC1=0x04; MCGC2=0x00; MCGC4=0x22; Disable_COP(); EnableInterrupts; PTA_Init(0x00,0xFF,0x00,0xFF,0x00,0xFF); PTB_Init(0x00,0xFF,0x00,0xFF,0x00,0xFF); LCD_Init(); pM = (char *)mensaje1; for (i=0;i<=15;i++){ Lcd_4bit_Wr(*pM,1); pM++; } ACMP_Init(0x81); ACMPSC_ACF=1; for(;;) { de 1.1V: if (ACMPSC_ACF==1){ ACMPSC_ACF=1; Rele_On(); Carga_On(); Lcd_4bit_Wr(0x80,0); pM = (char *)mensaje2; for (i=0;i<=15;i++){ Lcd_4bit_Wr(*pM,1); pM++; } RTC_Init(0x00,0x1F); } if(bandera==1){ bandera=0; Rele_Off(); Carga_Off(); Lcd_4bit_Wr(0x80,0); pM = (char *)mensaje1; for (i=0;i<=15;i++){ Lcd_4bit_Wr(*pM,1);

//reloj en modo FEI y divisor por 1 //rango alto del DCO //deshabilita el COP //habilita interrupciones //pines inician en "0",pines como salida, no pullups, //si slew, no strength y si filtro //pines inician en "0",pines como salida, no pullups, //inicialice LCD //puntero toma direccion del mensaje con definicin de tipo //ciclo para imprimir 15 caracteres del mensaje //enva caracter al LCD //incrementa puntero al arreglo del mensaje //modulo ON, ref externa (1.1V), polling y flanco subida //aclare bandera de deteccion espurea //iteracion para presentacion de la temperatura (for infinito) //Procedimiento para detectar voltaje de bateria por debajo //si se detecta evento de comparacion a flanco de subida //aclare bandera de deteccion //conmuta bateria a carga //enciende fuente de corriente //primer caracter fila 1 columna 1 //puntero toma direccion del mensaje 2 //ciclo para imprimir 15 caracteres del mensaje //envia caracter al LCD //incrementa puntero al arreglo del mensaje //Inicia temporizacion para carga de bateria por 1 hora //modulo al maximo, reloj LPO (1KHz) y divor por 1000 para //conteo de un segundo, habilita interrupcion

//desconecta bateria de la carga //apaga fuente de corriente //primer caracter fila 1 columna 1 //puntero toma direccion del mensaje 1 //ciclo para imprimir 15 caracteres del mensaje //envia caracter al LCD

JLDM

Pgina 8 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.


pM++; } RTCSC_RTIE=0; } } }

Practica No. 13
//incrementa puntero al arreglo del mensaje //inhiba interrupcion por RTC

/* es necesario asegurarse de nunca abandonar el main */ /* Funcion para inicializar el puerto A */ void PTA_Init(char PTAD_Config,char PTADD_Config,char PTAPE_Config,char PTASE_Config,char PTADS_Config,char PTAIFE_Config){ PTAD=PTAD_Config; //inicialice estado pines PTA PTADD=PTADD_Config; //inicialice direccin de pines PTA PTAPE=PTAPE_Config; //inicialice estado de pullups PTA PTASE=PTASE_Config; //inicialice estado del slew rate PTA PTADS=PTADS_Config; //inicialice estado de drive strength PTA PTAIFE=PTAIFE_Config; //inicialice estado del filtro PTA } /* Funcion para inicializar el puerto B */ void PTB_Init(char PTBD_Config,char PTBDD_Config,char PTBPE_Config,char PTBSE_Config,char PTBDS_Config,char PTBIFE_Config){ PTBD=PTBD_Config; //inicialice estado pines PTB PTBDD=PTBDD_Config; //inicialice direccin de pines PTB PTBPE=PTBPE_Config; //inicialice estado de pullups PTB PTBSE=PTBSE_Config; //inicialice estado del slew rate PTB PTBDS=PTBDS_Config; //inicialice estado de drive strength PTB PTBIFE=PTBIFE_Config; //inicialice estado del filtro PTB } /* Funcion para inicializar el RTC */ void RTC_Init(char RTCMOD_Config,char RTCSC_Config){ RTCMOD=RTCMOD_Config; RTCSC=RTCSC_Config; } /*Funcion para inicializacion del ACMP */ void ACMP_Init(char ACMPSC_Config){ ACMPSC=ACMPSC_Config; } /* Funcion para inicializacion del LCD a 4 bits */ void LCD_Init(void){ Delay(200000); Comando_8bit(0x30); Delay(200000); Comando_8bit(0x30); Delay(200000); Comando_8bit(0x20); Lcd_4bit_Wr(0x28,0); Lcd_4bit_Wr(0x0C,0); Lcd_4bit_Wr(0x01,0); Lcd_4bit_Wr(0x06,0); Lcd_4bit_Wr(0x80,0); } /* Funcion para escribir a 4 bits en el LCD */ void Lcd_4bit_Wr(char dato4,char rs){ if (rs==0){ PTAD_PTAD5=0; } else{ PTAD_PTAD5=1;

//inicialice modulo del RTC //inicialice registro de estado y control del RTC

//inicializa registro ACMPSC del ACMP

//hace retardo //llama funcin enviar comando en 8 bits con comando //hace retardo //llama funcin enviar comando en 8 bits con comando //hace retardo //LCD 2x16 y manejo a 4 bits //LCD 2x16 y manejo a 4 bits //ON LCD, OFF cursor //borrar pantalla LCD //desplaza cursor a la derecha con cada caracter //primer caracter fila 1 columna 1

//pregunte si se va a enviar un comando o un dato //prepara envo de comando RS = 0 //prepara envio de dato RS = 1

JLDM

Pgina 9 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.


} a=dato4; a=a>>4; PTAD&=0xF0; a&=0x0F; PTAD_PTAD4=1; Delay(20000); PTAD|=a; Delay(20000); PTAD_PTAD4=0; Delay(20000); PTAD&=0xF0; dato4&=0x0F; PTAD_PTAD4=1; Delay(20000); PTAD|=dato4; Delay(20000); PTAD_PTAD4=0; Delay(20000); }

Practica No. 13
//almacena temporalmente el dato //desplaza parte alta dato para la baja //enmascara parte alta del puerto A //enmascara parte baja del dato a enviar al LCD //sube pin de enable //hace retardo //enva nibble alto del dato //hace retardo //baja pin de enable //hace retardo //enmascara parte alta del puerto A //enmascara parte baja del dato a enviar al LCD //sube pin de enable //hace retardo //enva nibble bajo del dato //hace retardo //baja pin de enable //hace retardo

/* Funcon para envio de comando en 8 bits al LCD (solo para inicio) */ void Comando_8bit(char comando8){ PTAD_PTAD5=0; //prepara envio de comando PTAD&=0xF0; //enmascara parte baja del puerto A comando8&=0xF0; //enmascara parte alta de comando a enviar al LCD comando8=comando8>>4; //desplaza para tomar nibble alto PTAD_PTAD4=1; //sube pin de enable Delay(20000); //hace retardo PTAD|=comando8; //enva comando Delay(20000); //hace retardo PTAD_PTAD4=0; //sube pin de enable Delay(20000); //hace retardo } /* Funcion Delay(): Retarda basado en una variable tipo entero */ void Delay(unsigned long retardo){ while(retardo>0){ //llego a cero? retardo--; //no --> decrementa } } /* Funcion de atencion a la interrupcion por RTC */ interrupt VectorNumber_Vrtc void ISR_RTC_OVF (void){ RTCSC_RTIF = 1; seg++; if (seg == 3600){ seg = 0; bandera=1; } }

//aclara bandera de sobreflujo del RTC //incremente segundos //si pasaron 3600 segundos (1 hora) //aclare segundos //ponga bandera en 1

Compilacin y Depuracin Estudiar el cdigo, Verificar con el osciloscopio en las terminales de la seal de comparacin analgica los niveles correspondientes para la carga y descarga de una batera.

CALCULOS.
JLDM Pgina 10 de 11

CARRERA DE INGENIERIA ELECTRICA. Prcticas de Laboratorio de Electrnica III.

Practica No. 13

Desarrollar los clculos correspondientes para la obtencin de las diferentes frecuencias en funcin de los dispositivos electrnicos. SIMULACIONES. Realizar las simulaciones de los circuitos propuestos en los puntos 13.3, empleando el software CodeWarrior. COMENTARIOS Y APORTACIONES NUEVAS. Para este punto describa sus comentarios obtenidos durante el desarrollo de esta prctica, y que aportaciones usted hara de esta prctica. CONCLUSIONES Y HALLAZGOS. Conclusiones de cada uno de los integrantes, y que nuevos hallazgos logro descubrir de acuerdo a su experiencia con el acercamiento de esta asignatura. BIBLIOGRAFIAS. REFERENCIAS. Para este punto usted debe incluir en el reporte cuando menos dos artculos, o temas de alguna revista, libro o publicacin actual, referente al tema tratado en esta prctica.

-----------------------------------

FIN DE LA PRCTICA

-----------------------------------

JLDM

Pgina 11 de 11

Potrebbero piacerti anche