Autor Tema: intentos de dimmer  (Leído 3821 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
intentos de dimmer
« en: 25 de Enero de 2007, 01:14:18 »
hola saludos, pues con un nuevo intento de expansion, jajjaa
os comento que intento hacer un dimmer, para ello uso el 648a a 4 mhz, y solamente puklsadores de prueba

hice la programacion de tal amnera de que aumente el retardo de disparo cada vez ques e presione un pulsador, jno he controlado los limites todavia porque solo loe staba probando, esto es lo que he escrito, resulta que sin pulsar nada se enciende completamente, pero a medida que se incrementa angulo de dsiparo pues parpadea, nose porque, creo que la logica es wena, alguan sugerencia?? gracias:

Código: [Seleccionar]
#include <16F648A.h>
#fuses XT,NOWDT,NOPUT,NOPROTECT,MCLR,NOLVP,NOCPD,NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(a)

int count=1;
boolean a=0;

void main()
{
   set_tris_a(255);
   set_tris_b(0);
   output_a(0);
   output_b(0);
   while(true)
   {
         if(input(PIN_A1))      // dimmer ++ mayor angulo de disparo
         {
            delay_ms(50);      // antirrebotes
            count++;
         }
         if(input(PIN_A2))       // dimmer--  menor angulo de disparo
         {
            delay_ms(50);
            count--;
         }
         if(input(PIN_A4))      // entrada detector cero
         {
            delay_ms(count);
            output_high(PIN_B1);
            delay_ms(1);
            output_low(PIN_B1);
         }
         if(!input(PIN_A4))
         {
            delay_ms(count);
            output_high(PIN_B1);
            delay_us(10);
            output_low(PIN_B1);
         }
   }
}

weno es solo una prueba y parece que voy por buen camino, la frecuencia que recibo es 50Hz de mi AC, tons supuce que tengo 10ms para un semiciclo = 180º; por eso incremento count de uno en uno, uqe daran un total de 10 estados, weno pensaba que daria bien, pero parpadea al cambiar de estados, como le arreglo, ayuda porfavor; gracias

adios.

ahh se me olvidaba use un detector de cruce por cero qeu cambia de estado cuando detecta un cero, un transistor en corte y saturacion, aca el adjunto:
« Última modificación: 25 de Enero de 2007, 01:26:52 por Cryn »
.

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: intentos de dimmer
« Respuesta #1 en: 25 de Enero de 2007, 01:20:43 »
Busca por el foro, hay un dimmer que hizo nocturno que pone la luz de acuerdo a tu estado de animo  :D

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #2 en: 25 de Enero de 2007, 01:30:40 »
umm si, he visto el dimmer de nocturno, ta weno, pero no me funciona, y pues decidi hacer el mio, ya que no tengo dinero para comprarle su minidimmer, ais que una ayudita para comenzar me viene bien, talvez voy por el camino correcto, y solo tenga que aumentar cosiilas al codigo, pues sera sencillo ocn pulsadores, verdad?? weno muchas gracias adios
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: intentos de dimmer
« Respuesta #3 en: 25 de Enero de 2007, 02:20:54 »
Te recomiendo que metas la señal alterna por el pin que activa la interrupción Externa. Si lo haces así, el dimmer saldría relativamente fácil haciendo lo siguiente:
- cada vez que se activa la interrupción la configuras para que la siguiente vez salte en el flanco contrario. Así te garantizas que saltará cada 180º
- a continuación cargas el Timer con el retardo deseado. Este retardo dependerá de la intensidad lumínica que pretendas conseguir. A mayor retardo, menor intensidad lumínica. Dicho retardo nunca debe superar los famosos 10ms que dura el semiciclo de alterna
- en la interrupción del Timer te limitas a enviar un pulso positivo al Triac para encender la lámpara. El propio triac se ocupará de abrirse de nuevo en el siguiente paso por 0.
- como ves, toda la carga está en dos interrupciones: la externa y la del timer. Te queda libre tu main para hacer la gestión de los pulsadores y del cambio de intensidad.

Suerte, el que la sigue, la consigue.

Desconectado bagmel

  • PIC12
  • **
  • Mensajes: 56
    • Semaforos los Llanos C.A.
Re: intentos de dimmer
« Respuesta #4 en: 25 de Enero de 2007, 02:29:41 »
amigo yo hice un drimer pq el del foro no me funcionaba bien, no tengo el codigo a la mano pero te digo varios tips.
- la rutina que da el pulso de disparo debe estar junto con la de paso por cero en una interupcion, o sea me explico, utiliza un pin de interrupcion externa y lo conectas al paso por cero, de alli cada vez que pase la onda por cero se dispararia la interupcion y asi el pulso de disparo del triac y paso le que pase o en cualquier parte del programa en el pic siempre el disparo estara correcto por la interupcion nunse se retardara.
-el detector de paso por cero lo hice con un optoacoplador con salida de transistor, mientra mas aislado este el pic de la red mejor.
-pon tu esquema para ayudarte mejor, la salida del pic debe ir a un opto con salida diac y asi manejas el triac aislado opticamente del pic

bueno espero ayudarte cualquier cosa grita
La necesidad es la madre de todos los inventos!!!!!!!!!!!!!!

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #5 en: 25 de Enero de 2007, 08:40:32 »
hola, bueno tuve éxitos con el dimmer y las interrupciones desde pulsadores, pero ahora quisiera implementar un mando sony, ya probé de la forma más sencilla pero no da, creo q le afectan las interrupciones, no se como hacer.
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: intentos de dimmer
« Respuesta #6 en: 25 de Enero de 2007, 08:46:02 »
¿Cómo es esa forma "más sencilla" que has probado?
Pégalo por aquí y vemos si podemos ayudarte.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #7 en: 25 de Enero de 2007, 09:01:57 »
Código: [Seleccionar]
#define REC_IR PIN_A4                  // selecciona la entrada a usar para el sensor IR
int count=1,j,error=0;
boolean a=0;
int direccion=0,comando=0;
int1 recibir_bit()
{
// OJO los bits son diferentes en tiempo si son 1 o 0
// el 1 dura 600(0)+600(0)+600(1)
// el 0 es   600(0)+600(1)

      // empieza a leer bits
   delay_us(580);
if(input(REC_IR) == 0)              // si lee un 0 es correcto de momento
   {
      delay_us(580);
      if(input(REC_IR) == 0)           // si lee un 0 es 1 y es correcto de momento
      {
         delay_us(580);
         if(input(REC_IR) == 1)      // si lee un 1 es 1 y es correcto el bit completo
            error =0;
            return 1;
      }
      else                             // si es 1 es cero y es correcto y ya acabo el bit completo
      {
         error =0;
         return 0;
      }
   }
   else
   {
      error = 3;
      return 0;
   }
}

void obtener_dato()
{                // se posiciona para leer en mitad del periodo de 600 msg a partir de que el flanco bajo
   delay_us(280); // la mitad seria 300us pero por consumo de reloj por las instrucciones se usará 280 para el retardo
   if(input(REC_IR)==0)          // si llega un 0 es que va bien y continua
   {
      delay_us(580);              // se posiciona en mitad
      if(input(REC_IR) == 0)      // si llega un 0 es que sigue bien
      {
         delay_us(1160);          // se posiciona en mitad
         if(input(REC_IR) == 0)  // si llega un 0 es que sigue bien
         {
            delay_us(580);            // se posiciona en mitad
            if(input(REC_IR) == 1)    // ojo ahora llega el CERO
               error=0;
         }
            else
               error = 1;
      }
      else
         error=2;    // si no se cumple todo asi, hay un error
   }
   else
      error = 4;
   if(error==0) // lee los bits de direccion y comando (5 direccion + 7 comando)
   {
      if(recibir_bit())
         bit_set(comando,0);
      if(recibir_bit())
         bit_set(comando,1);
      if(recibir_bit())
         bit_set(comando,2);
      if(recibir_bit())
         bit_set(comando,3);
      if(recibir_bit())
         bit_set(comando,4);
      if(recibir_bit())
         bit_set(comando,5);
      if(recibir_bit())
bit_set(comando,6);
      if(recibir_bit())
         bit_set(direccion,0);
      if(recibir_bit())
         bit_set(direccion,1);
      if(recibir_bit())
         bit_set(direccion,2);
      if(recibir_bit())
         bit_set(direccion,3);
      if(recibir_bit())
         bit_set(direccion,4);
   }
}

Código: [Seleccionar]
      while(input(REC_IR)==0)
      {
         disable_interrupts(INT_EXT);
      // cuando llega el flanco de bajada
      // LEER el BIT DE START que dura 2400 usg en 0 + 600 usg en 1

         obtener_dato();

        // aqui vendria la rutina a ejecutar para chequeo de que la direccion sea la
        // adjudicada al receptor
        // y la rutina a ejecutar para cada comando

         switch(comando)
      {
         case 1:
            {
               delay_ms(50);     // antirrebotes, sera necesario?¿??
               count--;
               break;
      }
         case 0:
            {
               delay_ms(50);
               count++;
               break;
         }

            comando=0;
            direccion =0;
         }
         enable_interrupts(INT_EXT);   
      }

lo hice detectando el bit de start y leyendo bit por bit y almacenando el dato y direccion en una variable, despues solamente pregunto por el dato (comando) y haria lo indicado, despues deshabilite INT_EXT al detectar el flanco de start, y al acabar todo (la atencion al start) habilite de nuevo INT_EXT.

los delays segun la pagina: http://www.sbprojects.com/knowledge/ir/sirc.htm
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: intentos de dimmer
« Respuesta #8 en: 25 de Enero de 2007, 12:43:00 »
Efectivamente tu rutina será distorsionada por las interrupciones, ya que está basada en delays.

Lo ideal a  mi modo de ver es hacer las esperas con el timer, en vez de utilizar delays. En la misma rutina del timer puedes hacer la comprobación del bit recibido y del encendido de la lámpara cuando convenga.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #9 en: 25 de Enero de 2007, 13:00:56 »
La unica forma que se de manejar el control es de la que ya envié, no se como manejar el timer, me das idea?
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: intentos de dimmer
« Respuesta #10 en: 25 de Enero de 2007, 13:03:12 »
Fíjate cómo lo tengo en mi Dimmer con Mando.

Es más o menos lo que intentaba explicarte.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #11 en: 25 de Enero de 2007, 13:20:04 »
mmmm, bueno ya intenté entender tu código antes pero nada, no se si podrías mejor enviarme los pasos o tu algoritmo de como lo haces esa parte.
.

Desconectado johnnybravo

  • PIC12
  • **
  • Mensajes: 76
Re: intentos de dimmer
« Respuesta #12 en: 28 de Septiembre de 2007, 20:01:23 »
saludos amigo..la perseverancia es la clave..yo estoy haciendo algo parecido a un dimer.. y porfin logre que funcione a la perfeccion,, despues de muchos intentos , despues de revisar varios otros ejempls... no es por nada pero aquellos ejemplos solo me dieron ideas  el codigo tuve que levantarlo desde cero.. fue mejor que tratar de entender al logica de otaras personas.. sigue adelante  si aun no te ha salido ya te saldra.. recuerda que el cruce por cero es algo muy fundamental en este tipo de proyectos..... :-/ revisa si tu cruce por cero es bueno y no falla..despues lo demas es pura programacion.. a mi solo me falta linealizar un poco la iluminacion osea hacer que suba la intencidad de la luz mas parejo.....
sigue intentando
Atte.
Johnny Bravo

Desconectado pirate_x

  • PIC10
  • *
  • Mensajes: 24
    • Pirata, Inc Electronics
Re: intentos de dimmer
« Respuesta #13 en: 29 de Septiembre de 2007, 14:16:45 »
Disculpa, pero ese detector de paso por cero que mencionas ahi (con transistor), no creo que sea muy seguro...
estas usando una señal alterna sin rectificar y estas usando tierras comunes entre la alterna y el cto de alimentacion del pic..

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: intentos de dimmer
« Respuesta #14 en: 29 de Septiembre de 2007, 15:59:14 »
ese detector de cero lo encontre por no de los post si no es de aqui seguramente que en otro lado, y usando un transformador a 9V mas o menos en el sec. no he tenido ningun problema, no ha calentado nada, todo me salio muy bien, pues nose que opina el resto si es que alguien mas lo ha probado o lo podrian probar.

y como mencione, el dimer me ha salido muy bien con delays y ese detector de cruce por cero. pero no he podido hacerlo con el timer y con control remoto, y ya con el tiempo no tuve para seguir intentando
.


 

anything