Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULTAD DE INGENIERA
DEPARTAMENTO DE ELECTRNICA
PROYECTO GRUPAL 1
DESCRIPCION:
Con un circuito detector de cruce por cero se enva pulsos a un pin IRQ del micro
controlador que mediante programacin (texto anexo), realiza clculos y entrega en
un pin de salida, la seal de activacin al circuito de potencia denominado Lmpara
en el diagrama de bloques; que consta de un MOC, un TRIAC, junto con la lmpara
unidos a la red AC.
En el texto de programacin se realizan trabajos tales como:
1- Cada cruce por cero, se cuentan retardos equivalentes al ngulo de disparo
escogido.
2- Cada cruce por cero incrementa un contador para los ciclos activos, reinicia y
luego cuenta los ciclos inactivos del circuito de potencia.
3- Cada cruce por cero es verificado para saber de qu ngulo a qu ngulo va a
moverse el disparo, o dado el caso, contar el tiempo que se va a demorar en hacer
dicha actividad.
Lmpar
a
Nivel
LOGICA:
Micro
controlador
/*******************************************************************
PRACTICA GRUPAL 1
DANIEL DAVID MORENO BANDA
PABLO SEBASTIAN ROBLES CARDONA
******************************************************************/
#include
#include
#include
#include
#define
#define
#define
#define
#define
#define
#define
ADCH0 0
ADCH2 2
ADCH4 4
MODE8BITS 0
MODE10BITS 2
MODE12BITS 1
WAIT asm WAIT
void tDelay(word);
void tDelayLarge(word);
word StartADC(byte MODE,byte Chanel);
void main(void) {
SOPT1 = 0x02;
// disable COP, PTA5/IRQ/TCLK/RESET pin functions as IRQ.
PTA4/ACMPO/BKGD/MS pin functions as BKGD/MS.
PTADD_PTADD3=1; //Salida
PTADD_PTADD4=0; //Entrada
PTADD_PTADD2=1; //Salida
PTADD_PTADD1=1; //Salida
Oscillator_Init();
SciInit();
RTC_Init();
IRQ_Init();
EnableInterrupts; /* enable interrupts */
PTAD_PTAD2=1;
tDelayLarge(1000);
PTAD_PTAD2=0;
for(;;){
if(INT_EVENTS==0)
WAIT;
if(flag_sci){
flag_sci=0;
if(inic==255){
if(modo==1){
PTAD_PTAD1=~PTAD_PTAD1;
if(Ang>=180){
Ang=180;
}
Num2=(180-Ang);
Numon=(92*Ang);
Numoff=(92*Num2);
flag_2=1;
while(flag_2){
if((flag_irq)&&(PTAD_PTAD4==1)){
flag_irq=0;
PTAD_PTAD3=0;
tDelay(Numon);
PTAD_PTAD3=1;
tDelay(Numoff);
PTAD_PTAD3=0;
}else if((PTAD_PTAD4==0)){
flag_2=0;
}
}
}else if(modo==2){
flag_2=1;
while(flag_2){
if((flag_3==0)){
if((flag_irq)&&(i<msi)&&(PTAD_PTAD4==1)){
flag_irq=0;
i++;
PTAD_PTAD3=1;
}else if((flag_irq)&&(i>=msi)&&(PTAD_PTAD4==1)){
flag_irq=0;
flag_3=1;
i=1;
}else if((flag_irq)&&(PTAD_PTAD4==0)){
flag_irq=0;
flag_3=2;
}
}else if((flag_3==1)){
if((flag_irq)&&(i<nno)&&(PTAD_PTAD4==1)){
flag_irq=0;
i++;
PTAD_PTAD3=0;
}else if((flag_irq)&&(i==nno)&&(PTAD_PTAD4==1)){
flag_irq=0;
flag_3=0;
i=1;
}else if((PTAD_PTAD4==0)){
flag_3=2;
}
}else if(flag_3==2){
flag_2=0;
flag_3=0;
}
}
}else if(modo==3){
flag_2=1;
if(time>=11){
time=10;
}
//
//
}else{
Numont=Numon;
Numofft=Numoff;
j=1;
flag_1=0;
}
}else if((PTAD_PTAD4==0)){
flag_2=0;
}
}
}
}
}
}
}
// Funcin para generar retrasos claculada para Fbus=3MHz
void tDelay(word us)
{
TPM2SC_PS = 0;
//Fbus = CGMOUT/2 = 6/2 = 3Mhz
TPM2CNT = 0;
// Reiniciar TIMER
TPM2MOD = (word)((3*(word)us));
// Preparar el nmero del mdulo para generar pausa de
us
TPM2SC_CLKSx = 1;
// Iniciar el TIMER
while (!(TPM2SC_TOF)); // Esperar el tiempo necesario
TPM2SC_TOF = 0;
// Reiniciar bandera
TPM2SC_CLKSx = 0;
// Detener el TIMER
}
// Funcin para generar retrasos largos (ms entre 1 y 2730)
void tDelayLarge(word ms)
{
TPM2SC_PS = 7; //preescaler x 128
TPM2CNT = 0;
// Reiniciar TIMER
TPM2MOD = (word)(24*(dword)ms);
// 1/[(3MHz/128)]*24= 1024ms
TPM2SC_CLKSx = 1;
// Iniciar el TIMER
while (!(TPM2SC_TOF)); // Esperar el tiempo necesario
TPM2SC_TOF = 0;
// Reiniciar bandera
TPM2SC_CLKSx = 0;
// Detener el TIMER
}
word StartADC(byte MODE,byte Chanel) { //FUNCION PARA ADC0 PIN PTB0
ADCCFG_ADICLK =0; //Selected Clock Source => 00 = Bus clock
ADCCFG_MODE
=MODE; //12-bit conversion
ADCCFG_ADIV
=1; //Input clock 2
ADCSC1_ADCH = Chanel;
while (!ADCSC1_COCO) {}
return ADCR;
}
void SciInit(void){
SCI2C2_RIE = 1;
SCI2C2_TE=1;
// Habilita Tx
SCI2C2_RE=1;
// Habilita Rx
//
SCI2BDH_SBR = 0;
SCI2BDL = REG_BAUDIOS;
}
interrupt VectorNumber_Vsci2rx void SCI_Isr(void){
unsigned int temp;
temp = SCI2S1;
a = SCI2D;
//Toma int del registro de datos
In[k]=a;
//Almacenamiento en vector de la informacin
k++;
ELEMENTOS USADOS:
-
Micro-Controlador JM60.
1 Puente de diodos 1 A.
1 Transistor 2n2222 NPN.
1 Amplificador Operacional lm339.
1 Optoacoplador MOC3011.
1 Triac BTA12 600B.
1 Resistencia de 5K.
1 Resistencia de 10K.
1 Resistencias de 470.
1 Resistencias de 4.7K.
1 Resistencia de 2.2K.
1 Resistencia de 91 a 5 Vatios.
Transformador 509.
Fuente BK (2 salidas 5V).
Plafn y lmpara.
Caimanes para interconexiones.
Cables de 110v 1fase.
Osciloscopio FLUKE.