sábado, 19 de octubre de 2013

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();

}

No hay comentarios:

Publicar un comentario