Control de Iluminación Mediante Potenciometro y Pwm

Embed Size (px)

Citation preview

REGULACION DE LUZ

CONTROL DE ILUMINACIN MEDIANTE POTENCIOMETRO Y PWMMARIA ISABEL MORA GUTIERREZ1801819CONVERSIN A/D

El ADC de 10 bits se puede dividir en dos secciones:Adquisicin: es cuando un condensador se llena para que coincida con la tensin de entrada analgica.Conversin: es cuando el voltaje en elmuestreo y retencinel condensador se convierte en una representacin binaria utilizable en software.

PWM (Compensacin de la salida del Modulo) )Este compara los contenidos del registro OCxR con el valor en un timer.

A medida que el timer cambia de un valor de 0 a un valor igual a el del registro y hasta tener una comparacin con el timer del registro de comparacin, es decir se produce una coincidencia entre los dos el mdulo de comparacin de salida realiza la funcin.

En PWM una onda cuadrada se considera que tiene un 50%del ciclo de trabajoy como el voltaje de salida digital del PIC32 es de 3,3 V, entonces el voltaje en esta onda ser de 1.65V.

Y un ciclo de trabajo del 70% tendr un voltaje de 2.31V, es decir, que para cambiar el voltaje analgico se debe cambiar solamente el ciclo de trabajo.Inicializo la frecuencia del PWM como 16000, la inicializacin por defecto del SYSCLK es de 40000000.

Con RPB4Rbits. RPB4R = 0x0005, se le esta asignando un OC1 a este pin con el fin de declararlo como una salida de comparacin (Tomado de la pagina 148 del Datasheet)

El OC1CON = 0x0006 (110 en binario), configura el modo estndar para la salida PWM.

PROGRAMA# include // incluir las funciones perifricas de la biblioteca

# define SYSCLK 40000000L// Para obtener la ms baja, utilizar un pre-scaler del temporizador o utilice el modo de temporizador de 32-bit # define PWM_FREQ 16000

void delay_us( unsigned t){ //delay T1CON = 0x8000; while( t >= 100){ t-=100; TMR1 = 0; while( TMR1 < SYSCLK/10000); } while( t >= 10){ t-=10; TMR1 = 0; while( TMR1 < SYSCLK/100000); }while( t > 0) { t--; TMR1 = 0; while( TMR1 < SYSCLK/1000000); } T1CONCLR = 0x8000;}int analogRead(char analogPIN){ //leer la entrada del potencimetro AD1CHS = analogPIN