Bueno, hace dos fines de semana atrás, invité a una señorita a mi departamento y no tenia un sistema para poner el ambiente mas romántico (luces bajas) y se me ocurrió un dimmer, pero ya todos conocerán el dimmer con perilla (potenciómetro) pero ese es muy simple, así que se me ocurrió utilizar un PIC y hacerlo digital y que sea controlado vía control remoto, también con pulsadores, así que me puse a buscar en internet a ver si alguien lo tenia desarrollado y encontré uno muy interesante pero sólo mostraba la teoría diciendo que no pondrá el código fuente porque hay muchas personas que lo venden y no quiere perjudicarlos, pero yo digo que la educación no debe ser guardada para algunos si no mostrada a todos que quieran avanzar en su desarrollo, bueno dejándonos de mucho floro les dejo el código fuente de un DIMMER digital con el PIC 12F675, claro es algo muy básico y creo que funciona porque realmente no lo e probado en físico pero si lo e simulado en PROTEUS 7.2 y esta de locos, en esta primera versión lo e hecho con pulsadores para variar la intensidad de la luz, bueno no es necesario explicar el código ya que en él esta bien detallada.
Ahora solo copiar el código y compilarlo en el CCS, ya dejan sus comentarios para ver como les fue o tal vez también para aportar mejoras, como punto final si alguien quiere armarlo le sugiero que lo alimente con una fuente capacitiva (sin transformador) lo pueden encontrar en muchas páginas y para el detector cruce por cero le de la misma red de 220vac colocar dos resistencias en serie de 5M y por lo menos de 5Wa la entrada de INT del PIC ya que esta patilla tiene una protección contra sobre voltaje y pas resistencias están para reducir la corriente y no hay problema en conectarlo de frente, bueno lo demas ya les dejo a criterio propio.
Les dejo enlaces:
Sobre el cruce por cero --> http://www.domoticachile.org/index....&id=52:zerocrossing&catid=44:teoria&Itemid=61
sobre el circuito (recomendable en archivos adj.) --> http://tech-freaks.net/?p=170
Bueno colegas mano a la obra, espero comentarios, próximamente voy a hacer que funcione con control remoto con el protocolo de PHILIPS RC5, bueno ya tengo el decodificador de estas señales pero aun me falta la fusión, la intención es hacer varios de estos dimmers y colocarlos en cada habitación y con el control remoto de philips activar cada dimmer con los números del control y subir o bajar la intensidad de luz con el volumen, pero eso lo tendré listo para la próxima semana y que publicare por este mismo canal
suerte a todos.
Código:
#include <12F675.h>
#fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOCPD,NOMCLR,BROWNOUT
#use delay(clock=4000000)
#define GP0 PIN_A0 // TRIAC
#define GP1 PIN_A1 // CONTROL REMOTO IR
#define GP2 PIN_A2 // DETECTOR CRUCE POR CERO
#define GP3 PIN_A3 // RESET
#define GP4 PIN_A4 // UP
#define GP5 PIN_A5 // DOWN
unsigned int16 fase=57536;
int1 cambio=1;
#int_TIMER1 //Interrupción del TIMER1
void time()
{
output_high(GP0); //Se desbordó el TIMER1 y pongo en "0" el gate del triac
}
#INT_EXT //Interrupción externa.
void cero() //Función de la interrupción externa
{
output_low(GP0); //Pongo en "1" el gate del triac
set_timer1(fase); //Cargo el TIMER1 con el valor determinado por las teclas y espera que desborde
enable_interrupts(INT_TIMER1); //Habilito la interrupción del TIMER1 y salta a su respectiva interrupción
if(cambio==0) //Para ver con que flanco de interrumpirá ahora
{
ext_int_edge(H_TO_L); //Interrupción con flanco de bajada
cambio=1; //Cambia para que la proxima la interrupción sea en flanco de subida
}
else
{
ext_int_edge(L_TO_H); //Interrupción con flanco de subida
cambio=0; //Cambia para que la proxima la interrupción sea en flanco de bajada
}
}
void main() //Función principal
{
ext_int_edge(L_TO_H); //Primera interrupción se dará en flanco de subida
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //Configuración de TIMER1
enable_interrupts(INT_EXT); //Habilito interrupciones externas
enable_interrupts(GLOBAL); //Habilito las interrupciones generales
while(1){
restart_wdt(); //Apago el watch dog timer
if(input(GP4)==0) //Si el pulsador se a apretado
{if(fase<=64536&&fase>57536){delay_ms(10); fase=fase-5;}} //Aumenta la luminicidad
if(input(GP5)==0) //Si el pulsador se a apretado
{if(fase>=57536&&fase<64536){delay_ms(10); fase=fase+5;}} //Disminiye la luminicidad
}
}
Ahora solo copiar el código y compilarlo en el CCS, ya dejan sus comentarios para ver como les fue o tal vez también para aportar mejoras, como punto final si alguien quiere armarlo le sugiero que lo alimente con una fuente capacitiva (sin transformador) lo pueden encontrar en muchas páginas y para el detector cruce por cero le de la misma red de 220vac colocar dos resistencias en serie de 5M y por lo menos de 5Wa la entrada de INT del PIC ya que esta patilla tiene una protección contra sobre voltaje y pas resistencias están para reducir la corriente y no hay problema en conectarlo de frente, bueno lo demas ya les dejo a criterio propio.
Les dejo enlaces:
Sobre el cruce por cero --> http://www.domoticachile.org/index....&id=52:zerocrossing&catid=44:teoria&Itemid=61
sobre el circuito (recomendable en archivos adj.) --> http://tech-freaks.net/?p=170
Bueno colegas mano a la obra, espero comentarios, próximamente voy a hacer que funcione con control remoto con el protocolo de PHILIPS RC5, bueno ya tengo el decodificador de estas señales pero aun me falta la fusión, la intención es hacer varios de estos dimmers y colocarlos en cada habitación y con el control remoto de philips activar cada dimmer con los números del control y subir o bajar la intensidad de luz con el volumen, pero eso lo tendré listo para la próxima semana y que publicare por este mismo canal
Última edición por un moderador: