PWM y modulo CCP
El modulo CCP (Capture / Compare / PWM) tiene tres modos; el mas usado en el curso es PWM — control de velocidad de motores, dimmer de LEDs y servo. La base de tiempo es Timer2 + PR2, no Timer0.
Esta pagina cierra Tema 9 CCP (PWM): formulas del PDF, registros y ejemplo 5 kHz al 50 % con cristal 20 MHz. Aplicacion en Practica 4 y Practica 6 — Motor paso a paso.
Que es PWM
Sección titulada «Que es PWM»PWM (Pulse Width Modulation) repite una onda digital: el pin pasa de alto a bajo con periodo fijo T_PWM. Cambias el duty cycle — porcentaje del periodo en alto — para simular potencia analogica en motor o LED.
Paso 1 — Periodo y duty
Sección titulada «Paso 1 — Periodo y duty»| Parametro | Simbolo | Que controla |
|---|---|---|
| Periodo | T_PWM | Frecuencia F_PWM = 1/T_PWM |
| Duty cycle | X % | Tiempo en alto / T_PWM |
| Resolucion | bits efectivos | Cuántos pasos de duty puedes programar |
Paso 2 — Tres modos del CCP
Sección titulada «Paso 2 — Tres modos del CCP»| Modo | Timer base | Uso |
|---|---|---|
| Captura | Timer1 | Medir ancho de pulso / frecuencia |
| Comparacion | Timer1 | Generar flanco a instante preciso |
| PWM | Timer2 + PR2 | Motor, LED, servo — foco del curso |
Captura/comparacion se ven en Timer 1; PWM es independiente con Timer2.
Paso 3 — Registros clave en PWM
Sección titulada «Paso 3 — Registros clave en PWM»| Registro | Funcion |
|---|---|
PR2 | Periodo — TMR2 cuenta 0 → PR2 → reset |
T2CON | Prescaler Timer2, TMR2ON |
CCPR1L + CCP1CON<5:4> | Duty cycle (10 bits en PIC18) |
CCP1CON | Modo CCP — PWM = CCP1M3:0 = 1100 → 0x0C |
Paso 4 — Salida en hardware
Sección titulada «Paso 4 — Salida en hardware»Con CCP1CON = 0x0C y Timer2 activo, RC2 conmuta solo — no hace falta BSF LATC, 2 en bucle. Configura BCF TRISC, 2 (salida) una vez al inicio.
Formulas del Tema 9
Sección titulada «Formulas del Tema 9»Periodo PWM:
T_PWM = 4 × (PR2 + 1) × Tosc × Prescaler_Timer2Duty cycle (valor a cargar):
CCPR1L : CCP1CON<5:4> = (T_PWM × X%) / (Tosc × Prescaler)Resolucion (bits efectivos):
log2( Fosc / (F_PWM × Prescaler) )Con Fosc = 20 MHz, prescaler Timer2 = 1:4, F_PWM = 5 kHz:
PR2 = 1 / (5 kHz × 4 × Tosc × 4) − 1 = 249 Duty 50 % → CCPR1L = 124Configuracion PWM — 5 pasos
Sección titulada «Configuracion PWM — 5 pasos»BCF TRISC, 2— RC2/CCP1 como salida- Cargar
PR2segun frecuencia deseada - Configurar
T2CON(prescaler, TMR2ON = 1) - Cargar
CCPR1Ly bits DC1B1:DC1B0 enCCP1CONsi aplica CCP1CON = 0x0C— modo PWM
Ejemplo completo — 5 kHz, 50 % duty @ 20 MHz
Sección titulada «Ejemplo completo — 5 kHz, 50 % duty @ 20 MHz»config_pwm_5khz_50: BCF TRISC, 2 ; RC2 salida (CCP1) MOVLW D'249' MOVWF PR2 ; periodo ~5 kHz, PS=1:4 MOVLW D'124' MOVWF CCPR1L ; duty ~50 % MOVLW B'00001101' ; TMR2ON, prescaler 1:4 MOVWF T2CON MOVLW 0x0C ; CCP1 modo PWM MOVWF CCP1CON RETURNPara cambiar velocidad de motor: modifica CCPR1L (duty) sin recalcular PR2 si mantienes la misma frecuencia PWM.
CCP1 vs CCP2
Sección titulada «CCP1 vs CCP2»| Modulo | Pin | Practica |
|---|---|---|
| CCP1 | RC2 | Practica 4 PWM, Practica 6 motor |
| CCP2 | RC1 | Segunda salida PWM si el diseno lo requiere |
Ambos en modo PWM comparten Timer2 y PR2 — misma frecuencia, distinto duty en CCPR1L / CCPR2L.
Errores comunes
Sección titulada «Errores comunes»| Error | Consecuencia |
|---|---|
| PWM sin Timer2ON | RC2 quieto |
| Olvidar TRISC | Pin no conduce |
CCP1CON en captura | No hay onda PWM |
| PR2 mal calculado | Frecuencia distinta a la esperada |
| Mezclar Timer1 y PWM | Captura usa T1; PWM usa T2 |
Practicas UNEXPO
Sección titulada «Practicas UNEXPO»Practica · Laboratorio
Practica 4 — PWM
Calcula PR2 y CCPR1L, configura Timer2 y CCP1, conecta carga en RC2. Tutorial: Practica 4.
Practica · Laboratorio
Practica 6 — Motor paso a paso
Usa PWM o secuencia de bobinas para controlar el motor. Requiere CCP/Timer2 bien configurado. Tutorial: Practica 6.
Siguiente paso
Sección titulada «Siguiente paso»- ADC — leer potenciometro para ajustar duty en vivo (opcional en Practica 4)
- Parcial III — repaso timers + PWM
- Guia rapida — PWM/CCP
Preguntas estilo parcial
Sección titulada «Preguntas estilo parcial»¿Que timer usa el PWM del CCP?
Timer2 con registro de periodo PR2.
¿Que valor tipico pone CCP1 en modo PWM?
CCP1CON = 0x0C (bits modo 1100).
¿En que pin sale CCP1?
RC2.
Para 50 % duty con PR2 = 249, CCPR1L ≈ ?
124 (mitad del periodo en cuentas de duty).
Ejercicio · Parcial
Calcula PR2 para F_PWM=5kHz, Fosc=20MHz, pre-escalador 1:4
PR2 = 1/(5kHz) / (4 × 1/20MHz × 4) − 1 = 249 segun el ejemplo del curso de Microcontroladores (UNEXPO).
PWM y modulo CCP
Basado en: Clase Tema 9. Modulo CCP (PWM).pdf
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS