jueves, 4 de julio de 2013

IMPLEMENTACION DE LA RUTINA DEL MODULO PWM, ADC Y LCD; POTENCIOMETRO Y ACTUADOR (LAB - 5)



MATERIALES:

-  MICROCONTROLADOR 18F2550
-         MOTOR
-         LCD 16X2
-         RESISTENCIAS
-         PROTOBOARD
-         POTENCIOMETRO




CODIGO (1) :


#include <18F2550.h>     //DEFINIR  PROCESADOR
#device adc=8            //NUMERO DE BIT’S A UTILIZAR


#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN //FUSIBLES
#use delay (clock=12000000) //CISTAL A UTILIZAR

#include <flex_lcd.c>   //LIBRERIA LCD
#byte portb=0x06        //DIRECCION DE ALMACENAMIENTO

int VALOR;              //VARIABLE 1
INT VALOR2;             //VARIABLE 2

void main ()
{
lcd_init();

SETUP_ADC_PORTS(AN0_TO_AN1|VSS_VDD);  // PUERTO A
setup_adc(ADC_CLOCK_INTERNAL);        // RELOJ INTERNO


while(TRUE)
{
set_adc_channel(0);      //ACTIVAR CANAL CONVERSION
delay_us(100000);        //RETARDO
VALOR=read_adc();        //ALAMACENAR EN VARIABLE 1 VALOR
lcd_gotoxy(1,2);         // IR A  POCISION LCD 1,2

set_adc_channel(1);      //ACTIVAR CANAL CONVERSION
delay_us(100000);        //RETARDO
VALOR2=read_adc();       //ALAMACENAR EN VARIABLE 2 VALOR
lcd_gotoxy(2,2);         // IR A  POCISION LCD 2,2


printf(lcd_putc,"\f ADC0=%u\n ADC1=%u", VALOR, VALOR2); //MOSTRAR EN PANTALLA
delay_us(100);    // RETARDO
}
}



FUNCIONAMIENTO:

TENEMOS DOS ENTRADAS A NUESTRO CONVERSOR ANALOGO DIGITAL,EL CUAL ATRAVEZ DE LA CONVERSION NOS MUESTRO UN VALOR MKIN IMO DE 0 Y MAXIMO DE 255 Y CADA UNO DE ELLOS SE VISUALIZA EN LA PANTALLA LCD.

HARDWARE:

CODIGO (2) :
include <18F2550.h> //DEFINIR  PROCESADOR
#device adc=8 //NUMERO DE BIT’S A UTILIZAR

#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN //FUSIBLES
#use delay (clock=12000000) //CISTAL A UTILIZAR

#include <math.h>      //LIBRERIA PARA OPERACIONES MATEMATICAS
#include <flex_lcd2.c> //LIBRERIA LCD
#byte portb=0x06       //DIRECCION DE ALMACENAMIENTO


void main() {

      setup_timer_2(t2_div_by_16,1023,16);   // CONFIGURACION TMR2
      setup_ccp1(ccp_pwm);   // CCP1 EN MODO PWM
     
      lcd_init();
      SETUP_ADC_PORTS(AN0|VSS_VDD);      //PUERTO A
      setup_adc(ADC_CLOCK_INTERNAL);     // RELOJ INTERNO
     
          
      while(true) {
     
      float VALOR;       // VARIABLE 1
      float VALOR2;      // VARIABLE 2
     
     
      set_adc_channel(0);   //ACTIVAR CANAL CONVERSION
      delay_us(20);         //RETARDO
      VALOR= read_adc();    //ALAMACENAR EN VARIABLE 1 VALOR
      lcd_gotoxy(2,2);      // IR A  POCISION LCD 2,2
     
     
      VALOR2=((VALOR*0.392));  //VARIABLE 2 SE CARGA CON EL VALOR DEL DUTY SEGUN OPERACION
      set_pwm1_duty(VALOR);    //ACTIVAR PWM
      lcd_gotoxy(1,2);         // IR A  POCISION LCD 2,2
     
      printf(lcd_putc,"\f ADC=%f \n ",VALOR); // MOSTRAR EN PANTALLA EL VALOR ADC
      printf(lcd_putc,"\DUTY=%f\n",VALOR2);   // MOSTRAR EN PANTALLA EL VALOR DUTY
      delay_ms(100);                          // RETARDO
              
      }


FUNCIONAMIENTO : 

ESTA VEZ TENEMOS DOS SALIDAS UNA ES EL RESULTADOANOLOGO DIGITAL Y LA OTRA ES NUESTRO DUTY. PODEMOS VARIAR ESTOS VALORES CON LAS ENTRADAS Y VERLOS EHN LA PANTALLA

HARDAWARE :

 

No hay comentarios:

Publicar un comentario