Microcontroladores y DSP´S

Benemérita Universidad Autónoma de Puebla

Facultad de Ciencias de la Electrónica

Dr. Fermi guerrero castellanos Práctica5: CONFIGURACIÓN DEL MODELO CCP COMO MÓDULO PWM Equipo:  Nava López Cristian Eduardo  Palma Asunción Adilene  Vega Alonzo Argel  Jair Ernesto Estanislao Sierra

Ingeniería Mecatrónica

Práctica 5

por ejemplo. INTRODUCCIÓN Los microcontroladores PIC tienen una serie de registros que funcionan como una RAM de propósito general. El ancho del pulso podrá ser modificado por el usuario por medio de dos teclas. Esto se utiliza generalmente para controlar la potencia media a una carga en un circuito de control de velocidad del motor. Posteriormente realice un circuito para modificar la velocidad de un motor DC. es decir. Los registros de propósito específico para los recursos de hardware disponibles dentro del propio chip también están direccionados en la RAM.5 V. Ciclo Otras producir cualquier tensión en el rango de 0 a 100% de la "alta" de tensión. para generar una señal de este tipo a una frecuencia de 40 KHz.que genera el máximo de 5 V cuando la salida es alta y la mínima de 0 V cuando la salida es baja. así que si se filtra una señal de que tiene un ciclo de 50% se obtiene un promedio tensión de 2. respectivamente. El ciclo de trabajo se define como el porcentaje de la tecnología digital Práctica 5 . Muchos los sistemas digitales son alimentados por una fuente de alimentación V-5. o un motor más lento o más rápido. PWM PIC salida digital y salida media Ejemplos de PWM de la Micro PIC Uso de pulsos digitales para crear un valor analógico que no sean sólo "alto" y "bajo" nivel de señal. el de baja aumente o disminuya dependiendo si queremos. Lo que se hace con PWM es variar dinámicamente el “duty cycle” de manera que el tiempo de alta disminuya o aumente y en proporción inversa.5V entonces usted necesita para hacer la señal en la mitad del tiempo y fuera por el resto y luego tomar la media. dependiendo de la resolución PWM. El valor inicial del ancho de pulso debe ser de 50%.Microcontroladores y DSP´S OBJETIVO DE LA PRÁCTICA Utilizando lenguaje ensamblador programar la configuración del modelo CCP como módulo PWM. Por un momento. normal . si se piensa en la señal digital cuando está en sus extremos. una led más atenuado o más brillante. PWM (Pulse Width Modulation) describe el uso de una señal digital para generar una señal de salida analógica. Si desea generar una señal de 2.

Es elegido para dar mejores resultados para su uso particular MARCO TEÓRICO Los microcontroladores 16F877A disponen de dos módulos CCP. El período de PWM es un período de tiempo de manera arbitraria en que se lleva a cabo PWM. según la fórmula: Pperíodo=((RP2) +1)(4)(Tosc)(valor predivisor TMR2) Cuando el valor del TMR2 coincide con el del PR2 suceden tres acontecimientos: 1° se borra el TMR2 2° la patita RC2/CCP1 se pone a 1 3°el valor de CCPR1L. llamados CCP1 y CCP2. se consiguen impulsos lógicos cuya anchura del nivel alto es de duración variable. en el modo PWM. que son de enorme aplicación en el contorno de dispositivos tan populares como los motores y los triacs. El módulo CCP2 tiene como registros de trabajo a CCPR2H-CCPR2L (direcciones 0x1C y 0x1B) y como registro de control a CCP2CON en la dirección 0x1D. 2° Modo comparación: se compara el valor de 16 bits del TMR1 con otro valor cargado en una pareja de registros de un módulo CCPx y cuando coinciden se produce un evento en la(s) patita(s) RC2/CCP1 y/o RC1/T1Ol/CCP2. El registro de control del módulo CCP1 es el CCP1CON. Estos módulos pueden realizar tres funciones principales: 1° Modo captura: una pareja de registros de un módulo CCPx captura el valor que tiene el TMR1 cuando ocurre un evento especial en la patita RC2/CCP1 (para módulo CCP1) o en la RC1/T1OSl/CCP2 (para el módulo CCP2). 3° Modo modulación de anchura de pulsos (PWM): dentro del intervalo del período de un impulso controla la anchura en que la señal vale nivel alto. Las parejas de registros son las encargadas de capturar el valor del TMR1. El módulo CCP1 utiliza un registro de trabajo de 16 bits que está formado por la concatenación de los registros CCPR1H-CCPR1L (direcciones 0x16 y 0x17). de modular la anchura del impulso. de comparar el valor que tienen con el del TMR1 o. que ocupa la dirección 0x17. que es el que determina la anchura de impulso. Modo de modulación de anchura de pulsos (PWM) Con este modo de trabajo. se carga en CCPR1H Práctica 5 .Microcontroladores y DSP´S "alto" a la digital "bajo" las señales presentes durante un periodo de PWM. El tiempo que dura el período de la onda depende del valor cargado en PR2. La resolución PWM se define como el número máximo de impulsos que se pueden meter en un periodo de PWM.

Este incrementa su cuenta desde 0×00 con cada ciclo de instrucción hasta que el valor del registro TMR2 coincide con el del registro PR2 y después. TMR2. TMR1. que ocupa la dirección 0x12 del mapa de los registros específicos. se detiene el oscilador interno y al no existir la señal Fosc/4 deja de funcionar el TMR2. El Timer 2 es un temporizador de 8 bits. 1:4.Microcontroladores y DSP´S Como se observa. Los pic disponen de un potente conjunto de temporizadores para manejar eficientemente todas las operaciones que involucran al tiempo y al contaje. Dichos temporizadores son tres y se denominan técnicamente TMR0. METODOLOGÍA DE DISEÑO 1. La señal de reloj del TMR2 es interna Fosc/4. y antes de ser aplicada pasa por un predivisor de frecuencia con rangos de 1:1. La salida del TMR2 atraviesa un postdivisor de frecuencia con rangos de división desde 1:1. pasando por los 16 valores posibles. como lo son la precisión y un mejor control de las variables involucradas además de espacio y ahorro de energía. El uso de un micro controlador con modulo de PWM tiene varias ventajas sobre un circuito analógico. Al entrar el microcontrolador en modo reposo o SLEEP. 1:16. que se puede leer y escribir. Análisis del diseño Utilizando el lenguaje ensamblador se configuró el módulo CCP como modo modulación por ancho de pulso ó PWM el cual va a estar variando por medio de push button para incrementar o disminuir el ancho del pulso Práctica 5 . Para controlar el funcionamiento del TMR2 se usa el registro T2CON. se tiene la misma frecuencia con un diferente ancho de pulso (o ciclo de trabajo) de esta manera podemos regular la cantidad de energía que es aplicada a una planta como un motor DC o una lámpara. en el siguiente ciclo reinicia la cuenta desde 0×00. y que también puede realizar funciones especiales para la Puerta Serie Síncrona (SSP) y con módulos de captura y comparación. Ocupa la dirección 0x11 del mapa de los registros específicos. controlando de esta manera su velocidad o intensidad de luz. a 1:16. El TMR2 tiene las siguientes características fundamentales: o o o o o o TMR2 es un temporizador de 6 bits Dispone de un Registro de Período de 8 bits(PR2) Leíble y escribible Postdivisor de frecuencia programable Interrupción opcional al coincidir TMR2 Y PR2 Posibilidad de generar impulsos al módulo SSP Se trata de un temporizador ascendente de 8 bits. Además este módulo cuenta con un registro de periodo PR2 que marca el valor máximo que puede alcanzar la cuenta del registro TMR2.

Cálculos: % Ancho 0 10 20 30 40 50 60 70 80 90 100 CCPRIL 000000 000010 000101 000111 001010 001100 001111 010001 010100 010110 011001 CCP1CON <5:4> 00 10 00 10 00 10 00 10 00 10 00 µs 0 2.5 5 7.5 25 Práctica 5 . Según la especificación del problema el circuito tiene: Entradas: 2 Salidas:1 5V + 5V PWM La salida PWM sale a una etapa de potencia que conecta con el motor. el cual trabaja a 12V.5 20 22.5 10 12.Microcontroladores y DSP´S iniciando 50% en ciclo para así al variar la velocidad del motor implementado al circuito por medio de una etapa de potencia ya que nuestro motor utilizado trabaja a 12 V mientras que nuestro Pic trabaja a 5V.5 15 17. 12V R Motor Para la implementación del circuito hicimos uso de un Tip 41.

Con la ayuda de MPLAB se realizo lo siguiente: .6 BCF Práctica 5 . ESTE PROGRAMA MUESTRA EN LA LCD UN MENSAJE Y SE HACE LA CONFIGURACIÓN EN MODO MODULACIÓN DE ANCHURA DE PULSOS DEL CCP #include<P16F877A.RPO .5 GOTO ORG 0X05 BCF BSF BSF TRISD.6 STATUS.Microcontroladores y DSP´S [( ( )( )( )( ) ) ] ( )( )( ) ( )( )( ) 2.4 .2 5 6 BSF TRISD.INC> INICIAR __CONFIG _WDT_OFF & _PWRTE_OFF & _CP_OFF & _XT_OSC & _BODEN_OFF & _LVP_OFF LIST P=16F877A PDel0 PDel1 FLINEA RDELAY EQU EQU EQU EQU 0X20 0X21 0X23 0X25 INICIAR STATUS.RP1 0X00 EQU EQU ORG TRISC.

2 T2CON.LLAMA A LA TABLA SUMA 0+1 Y ENCUENTRA A 0 X10 Microcontroladores y DSP´S BCF CCP1CON.20% MOVWF BCF BSF BCF CCP1CON.2 BSF CCP1CON.CCP1X BCF CCP1CON.5 MOVLW B'00011000' .4 .DISMINUYE GOTO X10 GOTO CERO MOVLW .AUMENTA GOTO X11 GOTO UNO X11 CALL RETARDO BTFSS PORTD.CCP1X BCF CCP1CON.CCP1X B'00000010' CCPR1L T2CON.DISMINUYE GOTO X12 GOTO CINCO UNO MOVLW .4 .CCP1Y BSF T2CON.4 .3 CCP1CON.2 X12 CALL RETARDO BTFSS PORTD.2 T2CON.CCP1X BCF CCP1CON.6 .30% MOVWF CCPR1L BCF T2CON.6 .2 BCF CCP1CON.CCP1Y BSF CCP1CON.3 BSF CCP1CON.DISMINUYE GOTO X8 GOTO UNO TRES MOVLW B'00000111' .BCF STATUS.AUMENTA GOTO X7 GOTO TRES CALL RETARDO BTFSS PORTD.2 BSF T2CON.5 CLRW BSF STATUS.6 .2 X9 DOS CERO MOVLW B'00000000' .2 CALL RETARDO BTFSS PORTD.2 CCP1CON.SE CARGA PR2 00011000 MOVWF PR2 BCF STATUS.2 X8 X7 CALL RETARDO BTFSS PORTD.5 GOTO CINCO .CCP1Y BSF BSF B'00000101' CCPR1L T2CON.2 BSF T2CON.AUMENTA GOTO X9 GOTO DOS CALL RETARDO BTFSS PORTD.CCP1Y Práctica 5 .0% MOVWF CCPR1L BCF T2CON.10% MOVWF BCF BSF BSF CCP1CON.

6 .AUMENTA GOTO X3 GOTO CINCO CALL RETARDO BTFSS PORTD.Microcontroladores y DSP´S BSF BSF X6 CCP1CON.2 BSF T2CON.DISMINUYE GOTO X14 GOTO CINCO CINCO MOVLW B'00001100' .CALL RETARDO MOVLW .2 SIETE .4 .4 .CALL RETARDO MOVLW .2 Práctica 5 .2 CUATRO CCP1CON.CCP1X BCF CCP1CON.3 CCP1CON.CCP1Y BSF CCP1CON.2 X2 SEIS B'00001111' CCPR1L T2CON.4 .CCP1X BCF CCP1CON.AUMENTA GOTO X2 GOTO SEIS CALL RETARDO BTFSS PORTD.3 CCP1CON.6 .2 T2CON.CCP1X BCF CCP1CON.2 X4 X3 CALL RETARDO BTFSS PORTD.50% MOVWF CCPR1L BCF T2CON.CCP1Y BSF BSF B'00001010' CCPR1L T2CON.AUMENTA GOTO X13 GOTO SIETE CALL RETARDO BTFSS PORTD.3 CCP1CON.6 .3 CCP1CON.3 BSF CCP1CON.CCP1Y BSF BSF X5 CALL RETARDO BTFSS PORTD.4 .70% MOVWF BCF BSF BSF CCP1CON.CCP1X BCF CCP1CON.2 X14 CCP1CON.2 CCP1CON.2 T2CON.6 .2 T2CON.DISMINUYE GOTO X6 GOTO DOS MOVLW .2 BSF CCP1CON.60% MOVWF BCF BSF BCF CCP1CON.40% MOVWF BCF BSF BCF CCP1CON.CCP1Y BSF BSF B'00010001' CCPR1L T2CON.DISMINUYE GOTO X4 GOTO TRES X13 CALL RETARDO BTFSS PORTD.AUMENTA GOTO X5 GOTO CUATRO CALL RETARDO BTFSS PORTD.2 X1 CALL RETARDO BTFSS PORTD.DISMINUYE GOTO X1 GOTO CUATRO .

AUMENTA GOTO X15 GOTO OCHO CALL RETARDO BTFSS PORTD.100% MOVWF BCF BSF BCF CCP1CON.80% MOVWF BCF BSF BCF CCP1CON. 1 + (1) es el tiempo 0 ? (A) Práctica 5 .CCP1X BCF CCP1CON.3 BSF CCP1CON.2 T2CON.4 .2 DIEZ . 1 clear watchdog clrwdt .CALL RETARDO MOVLW .AUMENTA GOTO X21 GOTO CINCO CALL RETARDO BTFSS PORTD.4 .CCP1X BCF CCP1CON.2 X21 CALL RETARDO BTFSS PORTD.3 CCP1CON.AUMENTA GOTO X19 GOTO DIEZ CALL RETARDO BTFSS PORTD.2 X17 CALL RETARDO BTFSS PORTD.2 BSF T2CON.3 CCP1CON.AUMENTA GOTO X17 GOTO NUEVE CALL RETARDO BTFSS PORTD.CCP1X BCF CCP1CON. 1 | PLoop1 movlw .4 . 1 ciclo delay decfsz PDel1.Microcontroladores y DSP´S X16 CALL RETARDO BTFSS PORTD. 1 set numero de repeticion (A) movwf PDel1 .DISMINUYE GOTO X20 GOTO OCHO X15 X19 OCHO .6 .90% MOVWF CCPR1L BCF T2CON.2 CCP1CON. 1 | PLoop2 clrwdt .DISMINUYE GOTO X16 GOTO SEIS X20 CALL RETARDO BTFSS PORTD.==========================RETARDO ================ RETARDO movlw .CALL RETARDO MOVLW B'00010110' .DISMINUYE GOTO X18 GOTO SIETE .CALL RETARDO MOVLW .2 CCP1CON.DISMINUYE GOTO X22 GOTO NUEVE NUEVE .CCP1Y BSF BSF X22 B'00011001' CCPR1L T2CON.6 .2 BSF CCP1CON.2 T2CON.6 .110 .4 .CCP1Y BSF CCP1CON.6 .181 .CCP1Y BSF BSF X18 B'00010100' CCPR1L T2CON. 1 . 1 set numero de repeticion (B) movwf PDel0 .

2 no. loop PDelL1 goto PDelL2 . 1 ciclo delay end return Microcontroladores y DSP´S . 1 . loop decfsz PDel0. 3. 2 ciclos delay PDelL3 clrwdt .goto PLoop2 . 2 ciclos delay PDelL2 goto PDelL3 . 2+2 Fin. Simulación Práctica 5 . 1 + (1) es el tiempo 0 ? (B) goto PLoop1 . 2 no.

Microcontroladores y DSP´S 5. Realización física del circuito Práctica 5 .

se tomo como especificaciones el data sheet correspondiente al Pic 16F877A. Implementación Para realizar el cableado e implementar la configuración correcta. 6. Práctica 5 .Microcontroladores y DSP´S Para la implementación del circuito se utilizaron los siguientes materiales: 1 PIC 16F877A 3 push button 2 capacitores 33pF 1 cristal de 4MH 1 fuente de 12 V 1 motor a 12 V 1 Tip 41c 1 fuente a 5V La implementación se realizó para la conexión del Pic y para la configuración de la etapa de potencia de nuestro circuito para poder incorporar el motor.

José Ma.blogspot.Microcontroladores y DSP´S CONCLUSIONES Como sabemos el Pic 16F877A tiene muchas formas para configurar sus entradas y salidas así como cada uno de sus módulos los cuales pueden ser utilizados para fines específicos como en este caso al trabajar con los módulos CCP1/CCP2.best-microcontroller-projects. modo comparación y modo modulación de ancho de pulso(PWM). Mc Graw Hill http://picmicrocontroller877. edit. Aguilar Usategui. que pueden ser utilizado para modo captura.com/pwm-pic.com/ http://www. en este caso trabajamos con el modo modulación de ancho de pulso y se puede observar las aplicaciones que este conlleva como por ejemplo y visto anteriormente el control de velocidad de un motor.html Práctica 5 . BIBLIOGRAFÍA Microcontroladores PIC diseño práctico y aplicaciones PI16F87X.