Autor Tema: AYUDA CON DIMMER  (Leído 2016 veces)

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

Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
AYUDA CON DIMMER
« en: 14 de Enero de 2008, 15:01:28 »
Hola estoy diseñando un dimmer con pic, basandome en el minidimmer de nocturno, el problema es que no se como activar el tiristor, y voy a sustituirlo por un triac, os adjunto mi codigo para que me digas en que falla la regulación de la intensidad, gracias.

#include <16F84a.h>
#use delay(clock=20000000)
#use fast_io(A)
#use fast_io(B)

#fuses HS,NOWDT

#byte PORTA                = 0x05
#byte   PORTB                = 0x06
#bit  TRIAC                = PORTB.1
#bit  SALIDAFREC           = PORTB.4
#define LimiteInf            50
#define LimiteSup            160
#define Periodo              85
int PasosDimmer,intensidad,j;

#INT_TIMER0
void tempo()
   {
   set_timer0(Periodo);

   PasosDimmer++;
   SALIDAFREC=1;
   if (PasosDimmer==Intensidad) // cuando se ha llegado a la altura del semiciclo deseada
      TRIAC=0;                   // se enciende el triac
      delay_us(300);
      TRIAC=1; // cortamos la señal que se envía al TRIAC
            // ya que permanecerá encendido hasta el próximo cruce por 0
      SALIDAFREC=0;
   }

/****************************************************************************/
/* El ciclo del TRIAC comienza de nuevo con cada cruce por 0                */
/* por ello en la interrupción externa se pone a 0 la cuenta de PasosDimmer */
/* y se cambia la detección de flanco de la entrada                         */
/****************************************************************************/

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

void subir()
            {
               INTENSIDAD++;                 //Decrementamos minuto2
               if(intensidad > 160)            //Si minuto2 es mayor de 5
               {
               intensidad = 50;               //Minuto2 es igual a cero
               if(intensidad < 50)            //Si minuto2 es menor de 1
               intensidad = 160;
               }}

/****************************************************************************/
/* En el main lo único que hay es la inicialización                         */
/****************************************************************************/

 main()
{
   set_tris_B(0b11001101);
   set_tris_A(0b00011100);
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_EXT);
   ext_int_edge(L_TO_H);
   enable_interrupts(GLOBAL);
   set_timer0(Periodo);
   while(1)
   {
   if (input(pin_a1))
   {
   subir();
   }
   }}

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: AYUDA CON DIMMER
« Respuesta #1 en: 14 de Enero de 2008, 15:13:32 »
¿Cuál es el fallo que tienes?

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: AYUDA CON DIMMER
« Respuesta #2 en: 14 de Enero de 2008, 15:14:05 »
por favor warriorfenix@hotmail.com, lee las reglas del foro y ya que estas haciendo un dimmer basado en el nocturno te recomiendo que pusieras tus dudas en ese tema y eliminaras este.