Está en la página 1de 6

Universidad Distrital Francisco Jos de Caldas Digitales III

INFORME DE LABORATORIO: PRCTICA 6 Dimmer


Andrs Nicols Ballesteros / 20101005053 Diego Felipe Meja Ruiz / 20092005072 Jose Guillermo Barrero Navas / 20101005032

PLANTEAMIENTO DEL PROBLEMA:


Disear e implementar un dimmer digital para una carga (bombillo) de 12VDC de por lo menos 10W. La modificacin de la intensidad de la luz generada por el bombillo ser manejada por el PWM del microcontrolador. Para esto se tendr un control remoto de un TV (infrarrojo) que enviar la seal correspondiente para aumentar o disminuir la intensidad de la luz generada por el bombillo (se tendrn por lo menos 10 valores de cambio en la intensidad de la luz), la distancia entre el trasmisor y el receptor infrarrojo ser de por lo menos 1 metro, adems debe utilizarse el botn de encendido y apagado del control remoto para encender y apagar el bombillo en cualquier momento. El programa diseado para solucionar el ejercicio deber ser desarrollado en lenguaje C.

2. ANLISIS Y MODELAMIENTO:
Uno de las primeros aspectos que se deba analizar era la interpretacin de la seal del control, ya que esta sera la que manejara el comportamiento del dimmer, para darle solucin a este problema se recurri a documentacin acerca de los protocolos que estos manejan, siendo seleccionado el SIRC (controles Sony).

Ilustracin 1. Seal control Sony

El protocolo SIRC enva una seal similar a la de la Ilustracin 1, es decir, manda un pulso que indica su inicio, de duracin aproximada 2,4ms y de ah en adelante un tren de pulsos binario, donde un 1 lgico se ve representado por un pulso de duracin 1,2ms, seguido por una espera de 0,6ms, mientras que el 0 lgico ser 1 pulso de tan solo 0,6ms y una espera de igual duracin; esta misma seal se repite cierto nmero de veces, dependiendo del tiempo durante el cual el botn sea espichado y variando el tren de pulsos binario dependiendo del botn pulsado. Teniendo claro el protocolo del control usado, se prosigui al planteamiento de la etapa de decodificacin de la seal de este, una vez obtenida mediante algn fototransistor, nos afrontamos a los siguientes problemas: Ajustar la seal con el reloj del circuito. Identificar el inicio de la seal. Separar cada una de las seales (ya que se repiten en mltiples ocasiones). Identificar el botn oprimido. Resetear el circuito para recibir la siguiente instruccin.
1

Universidad Distrital Francisco Jos de Caldas Digitales III

Una vez superada la etapa de decodificacin de la seal, se gener un PWM ajustado para funcionar con esta, se variaban los niveles de intensidad del bombillo, dependiendo lo indicado por la parte de decodificacin (ver Diseo).

3. DISEO:
Circuito externo: Como se mencion en el apartado de anlisis y modelamiento se us un control Sony con protocolo SIRC, recibido por el circuito con un fototransistor, un TSOP1740 para este caso cuyo rango merodea los 3m de alcance con total fidelidad.

Ilustracin 2. TSOP1740

Y para la etapa de potencia, ya que el Microcontrolador no posee la corriente ni voltaje necesario para encender un bombillo de 12V a 10W se implement un BJT de potencia, como el TIP31 en configuracin de corte y saturacin, donde la R de colector es reemplazada por el bombillo.

Ilustracin 3. BJT en corte y saturacin.

Decodificacin seal control: Como se puede observar en el protocolo SIRC el inicio est marcado por un pulso de 2,4ms y las respuestas lgicas, 1 y 0 equivalen a pulsos de 1,6ms y 0,8 ms respectivamente, por lo cual a cada botn del control le corresponde un nmero en binario decodificado por este protocolo: Power es 00101011=43decimal. - es 00100111=39decimal. + es 00100101=37decimal. Sabiendo esto, solo es necesario cambiar el ciclo til del PWM dependiendo del botn presionado.

Universidad Distrital Francisco Jos de Caldas Digitales III

Ilustracin 4. Diagrama Programa principal.

Universidad Distrital Francisco Jos de Caldas Digitales III

Ilustracin 5. Diagrama de flujo interrupcin TIM1

Universidad Distrital Francisco Jos de Caldas Digitales III

ANEXOS
#include <hidef.h> #include "derivative.h" unsigned unsigned unsigned unsigned unsigned int cont; char a=0; char b=0; char c,boton; int i=0,j=0,temp;

poner1(int bit){ if (bit!=0){ temp=2; for (j=0;j<bit;j++){ temp=temp*2; } } else { temp=1; } boton+=temp; return boton; } poner0(int bit1){ if (bit1!=0){ temp=2; for (j=0;j<bit1;j++){ temp=temp*2; } } else { temp=1; } boton-=temp; return boton; } void main(void) { CONFIG1_COPD=1; T2SC_TRST=1; T2SC_TSTOP=1; T2MOD=255; T2SC0_MS0B=0; T2SC0_MS0A=1; T2SC0_ELS0B=1; T2SC0_ELS0A=0; T2SC0_TOV0=1; T2CH0=128; T2SC_TSTOP=0; T1SC=0x20; //config tim1 T1SC0=0x4C; T1MODH=0xFF; T1MODL=0xFF; T1SC_TRST=1; T1SC_TSTOP=0; EnableInterrupts; for(;;){ while(T2SC0_CH0F==0); T2SC0_CH0F=0; T2CH0=boton; } } interrupt 7 TIM_INT cont=T1CH0; if(cont>1600){ i=0; a=0; (void) {

//Config tim2

Universidad Distrital Francisco Jos de Caldas Digitales III

.
b=0; } if(cont>800){ if(i<8){ poner1(i); i++; } if(7<i<11){ poner1(i); } } else{ if(i<8){ poner0(i); i++; } if(7<i<11){ poner0(i); } }

// 1.

// 0

if(i>=7) { c=a; if(c==37) //+ { boton=boton+1; if(boton>=225) { boton=225; } } if(c==39) { //-

if(boton>=5) { boton=boton-1; } else { boton=1; } } if(c==43) { boton=1; } } T1SC0_CH0F=0; } //Encendido