Está en la página 1de 7

Microcontroladores.

Guía 5 1

Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Microcontroladores
Lugar de ejecución: Laboratorio de
microprocesadores, Edif. 3 Electrónica.

Tema: Utilización del módulo CCP (PWM) en los


microcontroladores PIC.
Objetivo general
• Utilizar el módulo CCP de los microcontroladores PIC en modo PWM
para diseñar sistemas que manejen cargas de potencia.

Objetivos específicos
• Conocer la forma de inicialización del módulo CCP en modo PWM.
• Conocer la forma de inicialización del módulo Timer2.
• Realizar el control de potencia en un motor DC a partir de un
voltaje analógico.
• Verificar la forma correcta en que se cargan los registros del
Timer2 de tal forma de poder generar ciclos de trabajo de 0 a
100%.

Materiales y equipo
• Computadora personal con puerto paralelo, sistema operativo
Windows XP, software MPLAB y WinPic800.
• Tarjeta de entrenamiento CP-PIC877 V1.0 R1.
• Programador ET-CAB10PIN V2.
• Fuente de poder de 12V con borne redondo de 5mm.
• Cable de cinta plana de 28 pines con conector para breadboard.
• Breadboard.
• 1 transistor MOSFET IRF540 (canal N).
• 1 Diodo rectificador 1N4001.
• 1 Motor DC pequeño de 12V, con consumo máximo (sin carga) de 1A.
• 1 Potenciómetro de 1KΩ.
• 1 Botón pulsador simple.
• 1 Resistencia de 10KΩ.
• Multímetro digital.
• Cable UTP categoría 5.
Microcontroladores. Guía 5 2

Procedimiento
1. Construya el circuito que se le presenta en la figura 1. Dicho
circuito se conectará a la tarjeta de entrenamiento con el
diagrama de pines que aparece en la figura 2.

Figura 1 - Diagrama de conexión para el circuito en la breadboard.

Figura 2 – Organización de los pines de I/O de la tarjeta entrenadora.

2. Una vez ensamblado el circuito, conecte el cable plano a la


tarjeta entrenadora. Solicite a su docente de laboratorio que
verifique su circuito (el circuito se encenderá más adelante).
Microcontroladores. Guía 5 3

3. A continuación ejecute el programa MPLAB. Cree un nuevo proyecto


con el PIC16F877.
4. Agregue un nuevo archivo de código fuente llamado “Principal.asm”
(no olvide agregar la extensión .asm cuando lo guarde). Y copie el
siguiente programa en el archivo:
;Programa de ejemplo para utilización de PWM controlado por ADC
list p=16f877 ;Definición del microcontrolador a usar
#include <p16f877.inc> ;Cabecera que define los registros del MCU

;Bits de configuración del MCU


cfg1 equ _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_ON
cfg2 equ _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__config cfg1 & cfg2

;Declaracion de datos en memoria


Mis_Variables udata
ConteoRetardo res 1 ;Variable que guarda el conteo de retardo

PROG1 code
;========================================================================
;Rutina principal
;----------------
clrf PORTA ;Se coloca el valor de los puertos a 0 antes de
clrf PORTC ;establecerlos como salida

bsf STATUS, RP0 ;Se selecciona el banco 1

;Se inicializa el registro ADCON1 del ADC


movlw 0x0E ;Configura los canales para usar solo RA0/AN0 y
movwf ADCON1 ;selecciona la justificacion a la izquierda

;Configuracion de los puertos de I/O


movlw 0x01 ;Se coloca RA0 como entrada (analoga), el resto son
movwf TRISA ;salidas
clrf TRISC ;Todo el puerto C se establece como salidas

;Configuracion de Timer2
movlw d'254' ;Se carga el valor 254 a Timer2 de manera que se den
movwf PR2 ;255 pasos de conteo y permita generar PWM a 100%

bcf STATUS, RP0 ;Selecciona el banco 0 nuevamente

;Se termina de configurar el ADC


movlw 0xC1 ;Selecciona el reloj interno, canal cero (AN0) y
movwf ADCON0 ;activa el ADC

;Se termina de configurar el modulo Timer2


movlw 0x04; ;Selecciona post escala 1:1, pre escala 1:1 y
movwf T2CON ;enciende el timer
Microcontroladores. Guía 5 4

;Frecuencia de conteo del Timer2:


;Fconteo = Fosc / (4 * PRESCALER) = 4MHz / (4 * 1) = 1MHz

;Se configura el modulo CCP


movlw 0x0C ;Se selecciona el modo PWM y se limpian los LSB del
movwf CCP1CON ;ciclo de trabajo
;Frecuencia del PWM:
;Fpwm = Fconteo / (PR2 + 1) = 1MHz / (254 + 1) = 3.92KHz

Rutina:
bsf ADCON0, GO_DONE ;Inicia la conversion del ADC
btfsc ADCON0, GO_DONE ;Espera a que la conversion termine por
goto $-1 ;medio de verificar el mismo bit

movf ADRESH, w ;Toma el resultado del ADC y lo transfiere al


movwf CCPR1L ;registro de ciclo de trabajo del PWM

movlw d'1' ;Espera durante 1ms a que el ADC muestree el


call Retardo ;nuevo dato

goto Rutina ;Repite el proceso

;========================================================================
;Rutina de retardo variable
;--------------------------
;Esta rutina genera un retardo segun la cantidad de milisegundos indicada
;en el acumulador. Si el acumulador vale 0, el retardo es de 256ms.
Retardo:
movwf ConteoRetardo ;Guarda la cuenta de milisegundos en memoria

Nuevo_Retardo:
movlw d'250'
Retardo_1ms:
addlw -d'1' ;Resta uno a la cuenta en el acumulador - 1 clock
btfss STATUS, Z ;Verifica si la cuenta llego a cero - 1 clock
goto Retardo_1ms ;Continua iterando mientras no termina - 2 clock
;Calculo para el retardo interno:
;T = 4 x Numero de iteraciones x Intrucciones por iteracion
; ------------------------------------------------------
; frecuencia de oscilador
;T = 4 x 250 x 4
; -----------
; 4MHz
;T = 1ms

decfsz ConteoRetardo, f ;Decrementa la cuenta de milisegundos


goto Nuevo_Retardo ;Mientras no sea cero, repite
return ;Cuando llega a cero, retorna

end ;Fin del programa


Listado 1 – Código fuente del programa a implementar.
Microcontroladores. Guía 5 5

5. Agregue al proyecto el archivo de de guión de enlace (linker


script) con el nombre “16f877.lkr”.
6. Compile el programa y verifique que no se generen errores.
7. Prepare el programador conectando primero la cincha plana al
último conector del extremo del tablero, a continuación conecte el
programador al puerto paralelo de su PC. Prepare la tarjeta
conectando el cable de poder a la misma y luego conectando la
cincha que viene del programador al conector amarillo. Finalmente
encienda la fuente de 5V. NOTA: No encienda todavía la fuente de
12V.
8. Ejecute a continuación el programa WinPic800. Asegúrese de que
está elegido el programador “ETT-LOW VPP ICSP” en el puerto
paralelo correcto. Ejecute la rutina de detección automática de
dispositivo para que el software quede configurado.
9. Cargue el archivo .hex generado al compilar el programa y
descárguelo en el PIC. Una vez terminado, corrobore que el
programa fue programado correctamente con la rutina de
comprobación del Winpic800.
10. Ajuste la perilla del potenciómetro al valor mínimo de 0V. Ahora
encienda la fuente de 12V.
11. Mueva suavemente la perilla del potenciómetro para ir elevando el
voltaje aplicado al PIC. En este momento el motor debería de
encenderse y elevar su velocidad a medida incrementa el voltaje.
12. Corrobore el funcionamiento del circuito variando el voltaje
entre 0 y 5V, el motor cambiará su velocidad en proporción directa
al voltaje aplicado.
13. Apague el circuito y agregue el botón con la resistencia como
pull-up al en cualquier pin de I/O disponible.
14. Modifique el programa para que el microcontrolador acepte el
nuevo botón como una entrada. El programa deberá apagar el motor
siempre que se mantenga apretado dicho botón.
15. Encienda nuevamente la fuente de 5V, luego ajuste la perilla a 0V
y encienda la fuente de 12V. Corrobore que el motor pueda ser
controlado con la perilla siempre que no se presione el botón, y
que se detenga mientras se presiona.
Microcontroladores. Guía 5 6

16. Apague la tarjeta de entrenamiento, desconecte el programador de


la tarjeta y la PC, y apague su computadora. Deje todo en orden en
su puesto de trabajo y entregue los materiales a su instructor.

Análisis de resultados
• Suponga que se tiene un medidor de velocidad conectado al motor,
el cual devuelve un voltaje analógico que representa dicha
velocidad. ¿Qué cambios deberían hacerse al programa para que el
sistema controle y se ajuste a un valor preestablecido de
velocidad?
• ¿Porque se carga el valor d’254’ al registro PR2 y no d’255’?
¿Que ocurre si se carga dicho registro con el valor d’100’?

Investigación complementaria
• Investigue cuáles dispositivos puede operar correctamente si se
les aplica PWM y cuáles no.

Referencias bibliográficas
• Hoja técnica del microcontrolador PIC16F877A:
http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
• Palacios, Enrique - Remiro, Fernando y López, Lucas.
Microcontrolador PIC16F84: Desarrollo de proyectos. Segunda
edición. Coedición Alfaomega RA-MA.
Microcontroladores. Guía 5 7

Hoja de cotejo: 5

Guía 5:Utilización del módulo CCP (PWM) en los microcontroladores PIC.

Alumno: Puesto No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota


CONOCIMIENTO 25 Explica Explica cómo Explica
deficientemente opera un módulo claramente cómo
cómo opera el pero no el otro. operan ambos
módulo Timer2 y módulos.
el CCP.
APLICACIÓN 25 No creó el Creó el programa y El programa
DEL programa se compila, pero creado se compila
CONOCIMIENTO correctamente y no funciona ya en y funciona
posee muchos el dispositivo. correctamente en
errores. el dispositivo.
25 El circuito armado El circuito El circuito
presenta ensamblado ensamblado
problemas y no presenta algunos funciona
opera. problemas. correctamente.
20 No hizo las Hizo las Hizo las
modificaciones de modificaciones modificaciones y
los pasos 13 y 14 pero los resultados producen los
o las mismas no difieren de lo resultados
son correctas. esperado. correctos.
ACTITUD 2.5 Es un observador Participa Participa
pasivo. ocasionalmente o propositiva e
lo hace integralmente en
constantemente toda la práctica.
pero sin
coordinarse con su
compañero.
2.5 Es ordenado pero Hace un uso Hace un manejo
no hace un uso adecuado de lo responsable y
adecuado de los recursos, respeta adecuado de los
recursos. las pautas de recursos conforme
seguridad, pero es a pautas de
desordenado. seguridad e
higiene.
TOTAL 100

También podría gustarte