Está en la página 1de 4

Apuntes de Microprocesadores.

Clase 14

MODULACIÓN DE ANCHO DE PULSO (PWM)

Una forma muy conocida de controlar la velocidad de un motor DC es regular su tensión de armadura mediante una técnica
denominada Modulación de Ancho de Pulso o PWM (Pulse Width Modulation). Como se observa en la figura 1, ella consiste en
regular la tensión media de una señal periódica con dos niveles, aplicada a la armadura del motor.
V
Vdc

ton toff
T D: Cíclo Útil

V
Vdc

Fig. 1. Principio básico del control por PWM


ton toff

El valor medio de esa tensión depende de la relación entre el tiempo en que la señal de entrada permanece en el nivel alto y su
período. Implementar esa relación es el objetivo del programa a utilizar en el PIC que sirva como elemento de control.

Ahora bien, es sencillo generar está salida de manera periódica codificando un ciclo en el cual se active y desactive un bit durante los
lapsos requeridos, haciendo uso de una rutina de retardo. Sin embargo, el fabricante ofrece otros recursos para lograr lo mismo.

Se trata de dos módulos identificados como CCP1 y CCP2 (Capture/Compare/PWM). Ambos módulos son similares, con la única
diferencia de que el módulo 2 puede iniciar una conversión Analógica/Digital. Su funcionamiento requiere el uso de los Timers 1 y 2;
el TMR1 para los modos de captura y comparación y el TMR2 para el modo PWM.

A continuación se describirá el módulo CCP1 en su modo PWM. Todo cuanto se diga puede plantearse análogamente para el
módulo CCP2, reemplazando el número 1 en la identificación de registros, por el número 2.

El módulo CCP1 posee un registro de 16 bits (CCPR1) que puede manejarse como dos registros de 8 bits, CCPR1L y CCPR1H. Tiene
además un registro de control, CCP1CON, cuyos bits se muestran en la figura 2.

CCP1CON/CCP2CON (17H/1DH)
P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0

bit7 bit0
Fig. 2. Bits para habilitación de interrupciones
Fuente: Data Sheet del PIC16F887
P1M1, P1M0: Configuración de bits P1A (RC2), P1B, P1C y P1D para manipulación de puentes H (medio o completo).

DC1B1, DC1B0: Estos bits sólo se usan en el modo PWM, no en captura o comparación. Ellos se leen como los bits menos
significativos (b1 y b0) de un total de 10 bits, donde los 8 bits más significativos (b9, … , b2) se leen en los registros CCPR1L o
CCPR1H (cualquiera de los dos pues en el modo PWM el CCPR1H es un eco o réplica del CCPR1L).

CCP1M3:CCPM0
0000 Módulo inhabilitado
0100 Modo Captura por cada transición beta (RC2 es la entrada)
0101 Modo Captura por cada transición alfa (RC2 es la entrada)
0110 Modo Captura por cada 4 transiciones alfa (RC2 es la entrada)
0111 Modo Captura por cada 16 transiciones alfa (RC2 es la entrada)
1000 Modo Comparación. La salida (RC2) se activa cuando se alcanza la condición de igualdad. CCP1IF (PIR1) se activa

Wilmer Sanz F. 1
Apuntes de Microprocesadores. Clase 14

1001 Modo Comparación. La salida (RC2) se resetea cuando se alcanza la condición de igualdad. CCP1IF (PIR1) se
activa
1010 Modo Comparación. La salida (RC2) no se afecta pero se genera una interrupción a través del CCP1IF
1011 Modo Comparación. Se genera un Trigger (disparo) interno que puede iniciar una conversión A/D
11xx Modo PWM
La figura 3 permite describir el funcionamiento del hardware para PWM:

 El RC2 debe ser configurado como salida. La onda modulada se generará en este pin.
 El Período de la señal depende del registro PR2 (92H), según la siguiente expresión:

( PR 2  1)
T * Pr eescalerTMR 2
Fosc / 4

 Cuando el valor del TMR2 iguala al del PR2 ocurren tres cosas:
- La salida se activa (RC2=1), si D es diferente de 0
- El TMR2 se resetea
- El Valor de CPR1L se carga en CPR1H

 La duración del ciclo útil depende de CPR1L. El valor de este registro, concatenado con los dos bits DC1B1, D1B0 forman
una cantidad de 10 bits que se compara con la cuenta del TMR2 (también de 10 bits según se aclara en la nota de la figura 3).
Cuando estas cantidades se igualan, se resetea la salida RC2.
 La duración del ciclo útil se calcula según la siguiente ecuación:

D (CCPR1L : CCP1CON  5 : 4 )

T 4*(PR 2  1)

Figura 3. Módulo CCP en Modo PWM


Fuente: (Universidad de Oviedo, 2008)
Wilmer Sanz F. 2
Apuntes de Microprocesadores. Clase 14

En resumen, 5 son los pasos para poner en funcionamiento la PWM del PIC16F887:

1. Determinar el Período y escribir el valor correspondiente en el PR2


2. Determinar el ciclo útil (D) y escribir el valor correspondiente (10 bits) en el CCPR1L (8 MSb) y los bits DC1B1 y DC1B0
del CCP1CON (2 LSb)
3. Configurar el bit 2 del Puerto C como salida (BCF TRISC,2).
4. Ajustar el preescaler del TMR2 en el T2CON (12H). Ver figura 4.
5. Configurar al CCP1 para operar en modo PWM (bits 3 y 2 del CCP1CON igual a 11).

T2CON (12H)
- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
0
bit7 bit0
TMR2ON= 1 para habilitar al TMR2
T2CKPS1:T2CKPS0= 00: Preescaler del TMR2 = 1 Fig. 4. Bits del registro T2CON
01: Preescaler del TMR2 = 4 Fuente: Data Sheet del PIC16F887
1X: Preescaler del TMR2 = 16

#include p16f877.inc

; Definiciones particulares

D EQU 0X80 ; D del 50%


PERIODO EQU 0xFF ;(2OMHz/4)/(PRESCALER=16)/255>fPWM=1.22KHz

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC& _BODEN_ON

ORG 0x00
GOTO Inicio
ORG 0x05
Inicio BSF STATUS,RP0 ;Se escoge el banco 1 para configurar

;******* Parámetros del PWM ********


MOVLW b'11111011' ;RC2/CCP1 ES SALIDA PARA GERNERAR PWM
MOVWF TRISC
MOVLW PERIODO
MOVWF PR2
BCF STATUS,RP0
MOVLW b'00001100'
MOVWF CCP1CON ;Config. del CCP1: Modo PWM
MOVLW D
MOVWF CCPR1L
MOVLW b'00000111' ;TMR2 ON y preescalado por 16. Este es el 16 del cálculo del PERIODO
MOVWF T2CON
;***********************************
BCF INTCON,GIE ;Inhabilitación de las Interrupciones
Ciclo NOP
GOTO Ciclo
END

Wilmer Sanz F. 3
Apuntes de Microprocesadores. Clase 14

Actividades sugeridas:
- Simule el programa ejemplificado en el MPLAB IDE.

Bibliografía

- Microchip Technology Inc. (2013). PIC16F8X Data Sheet. www.microhip.com [En línea] Último acceso: 01-11-2013
- ATE Universidad de Oviedo (2008). Módulos CCP en modo PWM
www2.ate.uniovi.es/fernando/Doc2005/Sed_05/Ejemplos/CCPenPWM_ring.pdf [En línea] Último acceso: 18-06-08

Wilmer Sanz F. 4

También podría gustarte