Dimmer controlado por PIC

Hola queria saber si este circuito podria funcionar? es un dimmer controlado por pic, lo que intento hacer es "clavar" el dimer en un punto a mano con un potenciometro y activarlo o desactivarlo con un pic, es posible con este circuito?
 

Adjuntos

  • DIMMER CON CONTROL.jpg
    DIMMER CON CONTROL.jpg
    33.5 KB · Visitas: 83
Supongo que te refires a acoplar el optodiac al circuito, podrias quitar el diac d30 y solo dejar el opto diac.
 
si quito el diac y dejo el optoacoplador funcionaria normal el Dimmer? teniendo en cuenta si el diodo infra rojo del optoacoplador estuviera conduciendo de forma continua(sin oscilar)?
 
Quieres que tu opto haga la función de switch ,ON/OFF, puedes colocar los contactos de un releé y activarlo con tu pic.
Deberías colocar el switch en serie con la resistencia de 10K .
Papirrin es un opto- triac , no un opto-diac.
Tu triac de potencia tiene invertidas A1 con A2.
Si colocas el opto donde indicas, y estando tu opto en OFF, el C que dispara al diac se cargaría a mucho más de 30V y cuando actives tu opto puedes quemar el diac, el opto y/o el gate del triac de potencia.
 
Buen dia! estoy por irme a trabajar, cuando vuelva estudio tú consejo y vemos el circuito original donde el opto esta "puenteado" por la pista osea en el original no existe el opto saludos!
 
La gracia de usar un pic es sustituir componentes por programa, si dejas los componentes y añades uno, personalmente no lo entiendo.
Yo haría el dimer con el pic y me quitaba unos cuantos componentes de encima y ganaba prestaciones posibles.
 
Hola si tienes un pic que pueda controlar minimo 8 dimmer uno por salida te lo voy a agradecer! el tema es que yo quiero controlar minimo 8 dimmer o más y para hacer eso con un pic creo que va a trabajar muy forzado no se como ara con los tiempos ya que necesita controlar 8 tiempos totalmente independientes y se me ocurrio hacer 32 dimer analogicos en grupos de 4 que controlaria un pic esa es la base de mi proyecto! pero si alguien me dice que un pic 16f877 puede controlar digitalmente 8 dimmer entonces esa es mi solución en ccs!
 
En el foro hay un SÚPER DIMMER creo que de16 Canales; me gusta tu sistema híbrido, ajuste manual de la intensidad y control de los tiempos con el pic, es mucho más seguro, si falla el pic , el usuario puede pasar a modo totalmente manual el ON/OFF, moviendo un pequeño switch.
 
Última edición:
Gracias! creo que esa es una ventaja y ademas se puede setear manualmente pero el pic no controla el tiempo si no que funcionaria a modo de switch, una desventaja seria la cantidad de componentes y el precio obviamente... ese super dimmer es un pic con 4 dimmer y cada dimmer controla 4 lamparas? ese me parece que lo vi...
 
Última edición:
No tiene mucho misterio, hay que controlar 8 tiempos de hasta 10ms si es a 50Hz y de hasta 8,3ms si son 60Hz.
Para cualquier microporcesador 10ms es como un eon de tiempo así que problema no hay, hay que escribir el código.

Si son 8, 16 o mas, mas a favor del microprocesador, cuantas mas veces repitas el circuito mas veces pagas componentes y mas veces se pueden romper, con un microcontrolador duplicas código (o no, según se programe) que es gratis mientras quepa.

Solo necesitas una entrada para detectar el cruce por cero, 8 entradas analógicas y hacer 8 temporizaciones.
 
Hola a todos , no debemos olvidar de agregar a ese proyecto un "detector de pasagen por zero" para que lo PIC tenga toda su tenporización interna sincronizada con la RED de modo puder funcionar ao contento .
!Fuerte abrazo a todos !
Att.
Daniel Lopes.
 
Buenas con todos, soy nuevo en esto, trato de programar pic 12f629 para dimmer, cruce por cero, el programa no compila por x razones que no se detectar, si alguien detecta el error me lo diga para corregir, se lo voy a agradecer,
Código:
#include "pic12f629.h"

#include <stdio.h>

#include <stdlib.h>

#include "CONFIG.h"

#include "ADC.h"


#define _XTAL_FREQ 4000000


uint8_t tiempo;

uint8_t datos[10];


void __interrupt() Interrupcion(void){

    

    if(INTCONbits.TMR0IF == 1){

      

        PORTAbits.a1 = 1;      //alto

        __delay_us(100);

        PORTAbits.a1 = 0;      //bajo

        INTCONbits.TMR0IF = 0;

        INTCONbits.TMR0IE = 0;

          

    }else if(PIR1bits.RCIF == 1){

      

        char dataRX = RCREG;

        PIR1bits.RCIF = 0;

  

    }

    else if(INTCONbits.INTF == 1)

    {

        PORTAbits.RA1 = 0;      //triac apagdo

        TMR0 = tiempo;

        INTCONbits.TMR0IF = 0;  //Limpia bandera de tmr0

        INTCONbits.TMR0IE = 1;

        INTCONbits.INTF = 0;       

    }

  

}


void TIMER0_init(void)

{

    OPTION_REGbits.T0CS = 0;    //0 TEMP, 1 CONT

    OPTION_REGbits.PSA = 0;     //0= PRE-TMR0, 1=PRE-WDT

    OPTION_REGbits.PS = 0B100;   //256

    TMR0 = 255;     

}


void RB0_init(void)

{

    OPTION_REGbits.INTEDG = 1;  //1 subida, 0= bajda

    INTCONbits.INTF = 0;

}



void main(void) {

    

    TRISAbits.TRISA1 = 0;   //triac

    TRISAbits.TRISA0 = 1;   //in

 

    ADC_init();

    //UART_init();

    TIMER0_init();

    RB0_init();

 

   INTCONbits.GIE = 1;     //Habilita interrupcion global     

   INTCONbits.INTE = 1;    //Habilita interrupcion por RB0

    __delay_ms(500);

    

    while(1)

    { 

         tiempo = ADC_read(0);

        

         if(tiempo >= 210){

             PORTAbits.RA1 = 1;

             INTCONbits.INTE = 0;

        }else if(tiempo <= 10){

             PORTAbits.RA1 = 0;

             INTCONbits.INTE = 0;

        }else{

            INTCONbits.INTE = 1;

        }

        

    sprintf(datos, "%d\n\r", tiempo);

    //UART_write_text(datos);

     __delay_ms(10);

    }

    return;

}
gracias!
 
No es por nada y sin tratar de ofender, pero yo ni en mis primeros pasos de programación me hubiera atrevido a publicar en un Foro un código incompleto si tuviera una duda.
Y esto por el simple motivo que nadie puede tener acceso a mis archivos y que MPLAB es un IDE que soporta varios lenguajes de programación.
Viendo la sintaxis supuse que podría ser XC8 o Hi-Tech, pero cada versión de los mismos cambia y los proyectos dejan de ser compatibles.
Ese es uno de los principales motivos por los que me olvidé de MPLAB-X y me fue mejor con PIC C Compiler de CCS.
Así que por eso se debe subir un proyecto completo dentro de un archivo comprimido indicando versiones (Caso MPLAB-X)
Y también es importante mencionar qué errores muestra el compilador, no solo decir que el programa no compila por X razón.
 
Atrás
Arriba