LAB 10 - PWM con PIC (Modulación por ancho de pulso)

CURSO DE PROGRAMACIÓN DE MICROCONTROLADORES PIC

PARTE A: Programación de Microcontroladores PIC de MICROCHIP.

PWM con PIC (Modulación por ancho de pulso)

 

CAPACIDAD TERMINAL

  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC
  • Programar y configurar interfaces básicas del microcontrolador.

COMPETENCIA ESPECIFICA DE LA SESION

  • Conocer el funcionamiento y la configuración del módulo PWM
  • Aplicar estos conocimientos para el control de velocidad de un moto

MARCO TEÓRICO:

Para poder generar esta señal con nuestro PIC, se hace uso de los módulos CCP (Comparador, Captura y PWM). Dicho módulo permite realizar tres funciones básicas.

Comparar: Compara el valor del temporizador con el valor de un registro y provoca una acción en el PIC.

Captura: Obtiene el valor del temporizador en un momento dado, fijado por la acción de un terminal del PIC.

PWM: Genera una señal modulada por ancho de pulso.

En esta entrada, nos vamos a centrar en esta ultima, en el PWM. Para nuestro caso en especifico, como estamos usando el PIC16F887, dicho microcontrolador tiene 2 modulos CCP como se puede apreciar en la siguiente figura, los cuales corresponden a los PINES 16 y 17 (Correspondientes al puerto C, RC1 y RC2).

pickit3 + pic16f887

El módulo PWM (Pulse Width Modulation), permite obtener de los pines CCP1 (Pin 17) y CCP2 (Pin 16) una señal periódica (Es decir que se repite en el tiempo) la cual podemos modificar su ciclo de trabajo (Duty Cycle en ingles). Dicho PWM o Modulación por Ancho de Pulso, puede tener una resolución máxima de 10 BITS. En otras palabras. Como sabemos que el PIC trabaja con voltajes binarios (0V o +5V), podemos configurar el PWM para que trabaje un determinado tiempo en +5V (Ton) frente al tiempo que está en nivel bajo 0V (Toff), tal y como lo podemos apreciar en la siguiente figura.

Modulación por Ancho de Pulso
Modulación por Ancho de Pulso

De esta manera, la tensión media aplicada a la carga, es proporcional al tiempo en que la señal estuvo en +5V (Ton) y asi podemos por  ejemplo controlar la luminosidad de lamparas, o la velocidad de un motor.

PWM con PIC
PWM – Modulación por Ancho de Pulso

La resolución de salida del modulo CCP es de 10 bits, y para que funcione correctamente, no debemos olvidar configurarlo como salida en el TRIS C.

Esta señal PWM funcina igual en cualquier microcontrolador, lo único que cambia es la forma como se configura en cada plataforma. 

ESQUEMA:

    

PROGRAMACIÓN:




#include <16F877A.h>
#device ADC=10
#FUSES PUT //Power Up Timer
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(crystal=4MHz,restart_wdt)

#include <lcd.c>

int16 lectura=0;
float voltios=0;
int16 temperatura=0;
int setpoint=25;

void main()
{

setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_2(T2_DIV_BY_4,96,1); //388 us overflow, 388 us interrupt

setup_ccp1(CCP_PWM);

lcd_init();

lcd_putc("\fReady...\n");

while(TRUE)
{
set_adc_channel (0); //lectura del canal analogico 3
delay_us (20);
temperatura = read_adc ();
delay_ms (20) ;

lcd_gotoxy(1,2); // ubicamos cursos en LCD
printf (lcd_putc, "Valor: %3lu grados", temperatura);

set_pwm1_duty(temperatura);
}

}

LINK DEL VIDEO


https://youtu.be/t1CSJExjiSQ

Comentarios