Autor Tema: dimmer 12f675  (Leído 2962 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pplu1963

  • PIC10
  • *
  • Mensajes: 5
dimmer 12f675
« en: 05 de Abril de 2005, 13:13:00 »
¿Puede alguien revisar éste código?Rebotado
Simulado en proteus va perfecto, pero en "real" no corre bien.
¿Sujerencias?. Muchas gracias.Sonrisa

//    PROYECTO DIMMER DIGITAL para DESPERTADOR  ////////////////////////////////

#include <12F675.h>
#device ADC=10
#fuses INTRC_IO,WDT,PUT,NOPROTECT,NOCPD,NOMCLR,BROWNOUT
#use delay(clock=4000000,restart_wdt)
#ROM 0x3ff = {0x3478}


#define GP0 PIN_A0
#define GP1 PIN_A1      // Triac
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5

#ZERO_RAM

set_tris_a( 0b000010001 );

int j=1; int valor=110; long i=0; long k=0;

void init()
{
    disable_interrupts(GLOBAL);
   disable_interrupts(INT_EXT);
   disable_interrupts(INT_TIMER0);
   disable_interrupts(INT_TIMER1);
   output_low(GP1);
   setup_comparator(NC_NC_NC_NC);
   setup_adc_ports( NO_ANALOGS );      // disable analog inputs
   delay_ms(750);
}

/// Interrupción del TIMER0, provoca el retardo deseado antes de la excitación
#INT_TIMER0
void tempo()
   {
   output_high(GP1); // Ha transcurrido el tiempo, activo la salida
   }

// Interrupción Externa, provocada por el paso por 0V de la señal de entrada
#INT_EXT
void externa()
   {
    set_timer0(valor);
    enable_interrupts(INT_TIMER0);
   output_low(GP1);

   if (j==0)
   {
    output_high(GP4);
     j=1;
      ext_int_edge(H_TO_L);       // Cambio la detección del flanco, para que la
   }                               // proxima sea de bajada
   else if(j==1)
   {
    output_low(GP4);
     j=0;
      ext_int_edge(L_TO_H);       // La próxima interrupción será de subida
   }

   }
void main()
{

   init();
   enable_interrupts(INT_EXT);
   ext_int_edge(L_TO_H);
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_64);
   enable_interrupts(GLOBAL);

  do{
   if (input (GP3))
    {
      for(i=0;i<1999;i++)
      {
       delay_ms(1);
        k=k+1;
         If(k>=1999)
         {
          k=0;
           valor=valor+1;
         }
          if (valor >= 252) valor=252;
           if(!input(GP3)) break;
      }

    }
   else
    {
      disable_interrupts(INT_TIMER0);
       valor=110;
        output_low(GP1);
         output_low(GP4);
          i=0;
           k=0;
    }

  }while(true);

}

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: dimmer 12f675
« Respuesta #1 en: 07 de Abril de 2005, 05:52:00 »
¿A qué te refieres con que no funciona bien "en real"?, ¿cuál es el fallo?
¿Y el esquema de tu circuito?

Sería necesario ver todo eso para investigar en tu problema.

Desconectado pplu1963

  • PIC10
  • *
  • Mensajes: 5
RE: dimmer 12f675
« Respuesta #2 en: 07 de Abril de 2005, 12:22:00 »


Hola nocturno, gracias por tu respuesta.Rebotado
Cuando digo que en "real" no funciona quiero decir que una vez montada la placa,
comprobando que el detector de cruce hace su trabajo, que el triac funciona corectamenta y la lámpara no está fundida pues no funciona como se supone.

El encendido debiera ser de forma progresiva, de menos a más brillo, sin funcionamientos abruptos y sin destellos espureos. No puedo adjuntar el archivo de Proteus porque dice que no hay espacio???.Enfurruñado

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: dimmer 12f675
« Respuesta #3 en: 08 de Abril de 2005, 03:10:00 »
Si quieres envíamelo por mail y así le puedo echar un vistazo. Tienes mi dirección en mi perfil.

Desconectado modelo75

  • PIC10
  • *
  • Mensajes: 28
RE: dimmer 12f675
« Respuesta #4 en: 08 de Abril de 2005, 09:54:00 »
una pregunta pplu1963,
que version te proteus tienes??, porque la que yo tengo(6.1) no tengo el 12f675, o que pic usas para simularlo.
Saludos

Desconectado pplu1963

  • PIC10
  • *
  • Mensajes: 5
RE: dimmer 12f675
« Respuesta #5 en: 09 de Abril de 2005, 01:20:00 »

Hola usuario_registrado.
Utilizo la v6.5-SP5 y en ellla aparece el 12f675.

Un saludoRebotado


 

anything