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

}
Laboratorio 6
Implementacion del  PWM

Nombres de los integrantes:

Edwin Alexander 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 por medio de dos trimer.



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

}

Laboratorio 7 Comunicación 


Nombres de los integrantes 

David Hernandez 2013170046
Edwin Patiño 2011270008
Edison Diaz 2011270043


Descripción del laboratorio:


Implantación de la aplicación  con USART, diseñado y ejecutado por el grupo E utilizando
1 canal ADC del micro controlador y haciendo la comunicación mediante interfaz RS 232, la cual visualiza la transmision en el software X-CTU y los datos recibidos desde la PC por el puerto B del micro controlador mediante leds,  y las especificaciones de código necesarias  para su funcionamiento



LABORATORIO 5 ADC


LABORATORIO 5


Nombres de los  integrantes

Edwin patiño Herrera  2011270008
Edison Diaz  2011270043
David Hernandez 2013170046









Imagen de la implementación del laboratorio doble potenciometro con led's


Descripcion del laboratorio

Implementacion de la rutina del doble potenciometro con led's por el grupo E utilizando materiales y codigo con las especificaciones necesarias para su funcionamiento.



En este laboratorio se muestra la conversión analoga digital mediante el modulo ADC, se implementa con 2 canales se toma como salida los puertos B y D y se visualiza por medio de led's.

se muestra a continuación el código.


#include <p18f4550.h> //libreria del pic18f4550
#include <adc.h>            //libreria conversor analogo digital
#pragma config FOSC=INTOSC_EC
#pragma config WDT=OFF
#pragma config MCLRE=OFF
#pragma config LVP=OFF
#pragma config PBADEN=OFF
unsigned int conv_1=0,conv_2=0;         
void main(void)
{

TRISB = 0x00;                                    //Define todos los puertos B como pines de salida.
TRISD = 0x00;                                    //Define todos los puertos D como pines de salida.
TRISC = 0x00;                                    //Define todos los puertos C como pines de salida.

OpenADC(ADC_FOSC_64 & ADC_2_TAD& ADC_RIGHT_JUST, ADC_INT_OFF& ADC_REF_VDD_VSS, ADC_2ANA); //configuracion del conversor


 while(1)  {

  SetChanADC(ADC_CH0);          //eleijo el canal 0 para recibir datos para conversion
ConvertADC();                  //inicio la conversion
while(BusyADC()==1){}           //la conversion ya termino?

conv_1 = ReadADC();    //le asigno a la variable conv_1 el valor de la conversion
LATB =( conv_1/4);                            // como la conversion es de 10 bits equivalentes a 1024 

posibilidades diferentes y solo tengo 8 bits para la salida equivalentes a 256 posibilidades diferentes entonces divido el resultado en 4 y obtengo una convinacion de 256 posiblidadesequivalentes a 8 bits aunque con esto pierdo resolucion en el resultado de la conversion                                                             

SetChanADC(ADC_CH1);             //eleijo el canal 1 para recibir datos para conversion     
ConvertADC();                 //inicio la conversion

while(BusyADC()==1){}                //la conversion ya termino?      
LATD = ADRESL;                               //como la justificacion del conversor esta a derecha muestro 
los 8 bits menos significativos por el puerto D
LATC= ADRESH;                                               //como la justificacion del conversor esta a derecha muestro los 2 bits mas significativos por el puerto C


}
 
}