Laboratorio 6
Implementacion del PWM
Nombres de los integrantes:
Edwin Aleksander
Patiño 2011270008
David Hernández
2013170046
Edison Díaz 2011270043

Imagen avala por el
docente
Descripción del laboratorio
Implementación de la aplicación con PWM, diseñado y
ejecutado por el grupo E utilizando los materiales y las especificaciones de código
necesarias para su funcionamiento.
La implementación del PWM se hizo con dos conversores de
canal ADC y 2 motores el cual uno Varia la velocidad y el otro inversor de
giro.
Esquemático
#include <p18f4550.h>
#include <pwm.h> // libreria PWM
#include <timers.h> // libreria del timers
#include <adc.h>
#pragma config FOSC=INTOSC_EC //Configuracion de oscilador interno
#pragma config WDT=OFF //Configuracion
del Watchdog "Deshabilitado"
#pragma config MCLRE=OFF //Configuración
del MCLEAR "Deshabilitado"
#pragma config LVP=OFF //Configuración
del Single-Supply ICSP "habilitado"
#pragma config PBADEN=OFF //Configuración
pines digitales I/O PORTB <4:0>
unsigned
int ADCResultA=0,ADCResultA2=0;
void
main(void)
{
TRISB=0x00;
TRISC=0b11111001; // Selecciona el canal C1 y C2 como salida PWM
//LATC= 0x00; // inicializa el puerto C.
LATD= 0x00;
OpenTimer2(T2_PS_1_16 & TIMER_INT_OFF); // Timer2 es
usado para el PWM
//
Set timer2 prescaler to 1:16,y la interrupcion
OFF
OpenPWM1(159); //
PWM periodo =[(period ) + 1] x 4 x TOSC x TMR2 prescaler. el valor del periodo
es desde 0x00 hasta 0xff.
OpenPWM2(159); //
Canal 1:PWM periodo = (159+1)*4*(1/48e6)*16 = 0.21ms
OpenADC(ADC_FOSC_64
& ADC_2_TAD & ADC_RIGHT_JUST, ADC_INT_OFF & ADC_REF_VDD_VSS,
ADC_3ANA);
while(1)
{
SetChanADC(ADC_CH0);
//seleccion de cnal del ADC
ConvertADC
(); //inicio de conversion
ADC
while(BusyADC()==1){}//consulta
si el ADC esta oupado
ADCResultA=ReadADC()/1.6;//
lee el resultado del ADC
LATB=
ADCResultA/4; // el resultado del ADC lo dividen en 4 y lo muestra por el
puerto B
SetDCPWM1(ADCResultA);
//selecciona ccp1 para PWM
SetChanADC(ADC_CH1);
ConvertADC ();
while(BusyADC()==1){}
ADCResultA2
= ReadADC()/1.6;
LATD=
ADCResultA2/4;
SetDCPWM2(ADCResultA2);
}
ClosePWM1();
// desactiva el canal 1PWM
ClosePWM2();
}


.jpg)
