Autor Tema: ¿regulador de luminosidad (dimmer)PIC12F675?  (Leído 5823 veces)

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

Desconectado car127

  • PIC10
  • *
  • Mensajes: 9
¿regulador de luminosidad (dimmer)PIC12F675?
« en: 13 de Agosto de 2007, 19:01:46 »
Hola les comento este circuito lo quiero usar en un acuario para simular el amanecer y el ocaso (modo3 o 4 en la explicacion);mi experiencia solo es armado de circuitos basicos nada con pic y programacion, yo erme y echufe y no ocurrio nada ni humo, lellendo un poco mas creo que el integrado es una memoria y lellendo otro poco en el foro supe que abia que programar el integrado. ¿Alguien podri alludarme? no tengo idea de programacion  o de que hacer de ante mano gracias
en esta pagina esta el circuito http://usuarios.lycos.es/jomasi/dimmer.htm

lo que e pillado en el foro es esto pero no tengo idea si realizasa el efecto que nesecito : que al tocar el pulsador  comience a encender y luego al tocar el pulsador otra vez comience a apagarce


//    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);

}
« Última modificación: 14 de Agosto de 2007, 09:40:15 por car127 »

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: regulador de luminosidad (dimmer)PIC12F675
« Respuesta #1 en: 13 de Agosto de 2007, 19:16:22 »


  Fijate hasta abajo de la pagina dice "Se puede enviar el microcontrolador programado a quien esté interesado en la construcción de este dispositivo."
 
          supongo que lo venden, aun que lo podrias hacer tu mismo, aqui en el foro te pueden ayudar si no sabes de programacion.

     suerte.

Desconectado car127

  • PIC10
  • *
  • Mensajes: 9
Re: regulador de luminosidad (dimmer)PIC12F675
« Respuesta #2 en: 13 de Agosto de 2007, 21:47:08 »
le mande mail pero no responde ,el comprarel chip programado dificil pag española yo chile, alguien me puede alludar ,no tengo idea de programacion o de como hacerlo el programa

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: regulador de luminosidad (dimmer)PIC12F675
« Respuesta #3 en: 13 de Agosto de 2007, 22:29:31 »
   Por que no buscas algun tipo de dimmer de esos que funcionan con unas cuantas resistencias, potenciometro, capacitor y triac, hay bastantes por todos lados (Google).

  prueba poniendo en el buscador del foro "Dimmer", seguro encontraras algo que te sea de utilidad, o en base a lo que encuentres puedes poner por aca tus dudas.

       Saludos. 8)
« Última modificación: 13 de Agosto de 2007, 22:39:17 por Rulo »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #4 en: 14 de Agosto de 2007, 10:21:47 »
Aquí una página que también te puede servir como referencia. Es para construir un dimmer con un pic10. Directamente del fabricante Microchip.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en025234

Puede que sea más sencillo que el que vas a usar.

Desconectado car127

  • PIC10
  • *
  • Mensajes: 9
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #5 en: 15 de Agosto de 2007, 11:31:00 »
hola estuve revisando la pag. que me indicaste y el problema es que el chip no lo tienen solo lo importan y se demora un poco minimo 12diaspor ser solo uno.

Lo otro es que pille un esquema trae dos archivos  uno con el circuito y un archivo que es  .bas este archivo sera el que se carga en el chip aca les dejo el archivo

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #6 en: 16 de Agosto de 2007, 15:18:52 »
Ese archivo tiene extensión .BAS , es decir, que es el código que hay que compilar con su respectivo compilador para generar un archivo Hexadecimal. Estos archivos hexadecimales tienen extension .HEX y  son los que hay que cargar en el PIC.

La extensión .BAS te indica que el compilador utilizado es un compilador de lenguaje BASIC pero no tengo ni idea de cual es.

Por otro lado también he notado en el código que el programa está hecho para un frecuencia de corriente alterna de 60Hz.No se en tu país, pero en España la frecuencia en alterna es de 50Hz,así que suerte y espero que te funcione.

Saludos

Desconectado car127

  • PIC10
  • *
  • Mensajes: 9
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #7 en: 17 de Agosto de 2007, 00:17:59 »
gracias por alludarme, baje un programa compilador el FIRSTBAS facil por las instrucciones lo ice correr y arrojo el Error 418: Statement expected en la linea 37 que tiene esto  @ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _PWRTE_ON & _BODEN_ON                                       ¿otra alluda??????

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #8 en: 17 de Agosto de 2007, 16:56:12 »
Probablemente el compilador con el que has compilado el codigo no sea el mismo con el que se generó dicho código,no se si me explico...
El error de compilación es de seguro un error de configuración de fuses ya que cada compilador trata ha éstos de manera diferente.
Te recomiendo que te des una vuelta por el subforo de lenguaje BASIC y que postees allí quizas te puedan echar una mano e incluso compilarte el código que tienes.
Saludos

Desconectado kimkalel

  • PIC10
  • *
  • Mensajes: 1
Re: ¿regulador de luminosidad (dimmer)PIC12F675?
« Respuesta #9 en: 01 de Diciembre de 2010, 20:31:36 »
De esta manera se compila bien el proyecto no lo he checado si realmente hace lo que tiene que hacer.

//    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


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

void init()
{
   set_tris_a( 0b00010001 );
   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);

}