# Dimmer con pic16f84 que enciende aleatoriamente



## jbeta58 (Nov 19, 2008)

Hola a todos.

Estoy construyendo un dimmer con un pic16f84. Adjunto el diagrama esquemático del circuito.

Explico brevemente el circuito: En la parte superior se encuentra una fuente de 5 volts sin transformador. En la parte inferior se encuentran 3 (tres) botones, uno para encender y apagar el dimmer, otro para subir intensidad y otro para disminuirla; hay 5 (cinco) leds que indican el nivel de intensidad en que está el bombillo (los 5 leds encendidos indican máxima y uno encendido indica mínima). En la esquina inferior derecha se encuentra el circuito de encendido del bombillo de 100W a 120VAC 60Hz, que está hecho a base de un optotriac (en el diagrama aparece un moc3041 pero en realidad estoy usando un moc3011... lo que pasa es que en proteus 6.9 no existe la librería del 3011 y tuve que usar el único moc que existe allí) y un triac. Por último, en el pin RB0 del pic, está conectada una resistencia de 1M que a su vez se conecta a la fase de 120VAC 60Hz.

Explico brevemente el programa: Estoy haciendo un programa de prueba en el cual al presionar el botón ON/OFF enciendo el bombillo a intesidad media. Si vuelvo a presionar el botón ON/OFF, se apaga el bombillo y vuelvo a esperar a que se presione el botón ON/OFF y así continua el ciclo.

Con la interrupción del RB0 detecto el cruce por cero de la fase 120 VAC 60Hz. En el servicio de interrupciones de RB0, activo el contador TMR0 y lo pongo a correr por 4 ms. Pasados los 4ms, se genera la interrupción del TMR0, en el servicio de interrupciones del TMR0, enciendo el pin RB2 del pic por 20 us para que active el optotriac que a su vez encenderá al triac, al terminar esto, vuelve a esperar que se genere una interrupción del RB0 y así vuelve e inicia el ciclo.

Ahora les cuento lo que sucede cuando pongo en marcha el circuito. Sucede que cuando presiono el botón de ON/OFF para encender el bombillo a veces enciende bien y a veces no, a veces enciende de modo correcto 10 veces y luego deja de enceder bien, o a veces enciende bien 2 veces y luego no enciende por 3 veces, etc. Los leds se encienden SIEMPRE y me indican que se encuentra en intensidad media, pero el bombillo sólo se enciende a veces.

Me explico: Encender bien significa que el bombillo se encendió a intensidad media y que de los leds indicadores se encendieron 3 de los 5.
Encender mal significa que el bombillo no se encendió, pero que sin embargo los 3 led si se encendieron.

¿Qué puede estar sucediendo? ¿Puede ser porque tengo el montaje en protoboard, y esto haga que le entre ruido al circuito? ¿Hay algo malo en el hardware (una conexión o un componente)?

Gracias de antemano a quién pueda colaborarme.


----------



## alcor (Dic 11, 2008)

Estoy trabajando en un proyecto muy similar y me llego a pasar eso de que el pic no inicia correctamente o inicia cuando quiere, lo solucione con un capacitor de 0.1uF entre el pin 14 y 5 del 16F84 y un capacitor mas grande en el pin 4 de MCLR, tambien te recomendo que montes en protos separados los circuitos de control y de potencia.


----------



## pepechip (Dic 11, 2008)

a la entrada del RB0 ponle uos diodos para que la tension no supere +- 5v.

Sustituye el optoacoplador por otro modelo que no tenga incorporado el control de paso por cero, este optoacoplador solo le manda exitacion al triac cuando la señal pasa por cero, por lo que no te deja regular el angulo de disparo.

Estas usando 2 generadores de 110v. Utiliza solo uno y lleva el cableado a ese generador.

Tal y como detectas el paso por cero no es correcto, ya que  los semiperiodos negativos son interpretados como paso por cero, asi que coge previamente y pasa la señal alterna por un puente de diodos (no se te valla a ocurrir ponerle el tipico condensador).

Vuelve a subir o a editar el esquema que pusiste para ver como queda todo el conjunto.


----------



## pepechip (Dic 11, 2008)

Una tonteria, pero hay que tenerla en cuenta:  A 60Hz el periodo es de 16mseg, pero en realidad en ese tiempo tiene que pasar 2 veces por el cero, asi que el tiempo maximo de retardo que puedes emplear es de 8msg.


----------



## Gradmaster (Dic 11, 2008)

Aunque en realidad de esos 8 mS solo usas 4 por que usaras un 1/2 del semiciclo, solo controlas desde 0V hasta +/-127V y no el retorno de 127V a 0.


----------



## pepechip (Dic 11, 2008)

Gradmaster dijo:
			
		

> Aunque en realidad de esos 8 mS solo usas 4 por que usaras un 1/2 del semiciclo, solo controlas desde 0V hasta +/-127V y no el retorno de 127V a 0.



Si actua de esa manera solo podra regular desde el 50% hasta el 100% de la potencia, asi que  que tendra que  llegar casi a 8ms por si quiere controlar  la potencia  a valores cercanos al 0%.

P.D: Por Favor las consultas realizarlas en el foro, asi podemos participar todos.


----------



## alcor (Dic 12, 2008)

Les comento que el proyecto que estoy realizando ya funciono con la ayuda de los comentarios de los foros en especial de pepechip y unas cuantas hojas de datos de microchip.

Para regular mediante el pic es necesario detectar el cruce por cero y despues dar un retardo de 0 a 8ms seguido de eso es necesario dar un pulso al GATE del TRIAC de 100us (microsegundos) y esperar el proximo ciclo detectado del cruce por cero, les comento q el retardo de 8ms es 0% y el de 0ms es el 100% de la intensidad del foco, asi que hagan sus calculos del retardo para obtener el porcentaje de intensidad deseada, estoy pasando los esquematicos y el programa del pic a la computadora para postearlos

Saludos


----------



## Manonline (Dic 12, 2008)

es posible conectar una linea del pic directamente al gate del triac? o traeria inconvenientes? en caso de poder, como seria la forma de conectarlo?

gracias,
mano.


----------



## alcor (Dic 12, 2008)

Lo mas recomendado es que se haga mediante un optoacoplador, pero yo tengo conectado el pic al gate unicamente con una resistencia de 470ohms a 1w.

Saludos


----------



## Manonline (Dic 12, 2008)

gracias, es bueno saberlo


----------



## ericklarva (Dic 12, 2008)

Hola Mano, tal vez yo pueda comentar algo. De normal si se puede conectar un Pic directamente a la compuerta de un TRIAC, solo hay que tener en consideración la corriente de disparo en el tercer cuadrante que es la más elevada en promedio de unos 40mA. Ahora bien por experiencia propia no lo recomiendo ya que los picos de alto voltaje pueden llegar por medio de la compuerta al PIC, ocasionando que se queme. Al tener un opto se puede "aislar" de la línea el PIC y tener la certeza de trabajar más seguro. Me han llegado un sin número de equipos para escenarios con control digital y o sorpresa todos ellos tenían explotado los ICs de control.
Si hay alguien interesado en como conectarlo les dejo una imagen sacada de un proyecto de la Microchip para implementar un protocolo X10 con el PIC16F877.
Saludos


----------



## pepechip (Dic 12, 2008)

ericklarva tiene razon lo suyo es utilizar un optoacoplador, aunque tambien puede que por alguna razon tengamos que prescindir de este ( bien porque no haya espacio, o por ahorrar costes, o porque si se jode el micro solo lo podemos reparar nosotros   ) pero en el caso de atacar al triac directamente con el micro hay que  tener en cuenta que  este solo entrega una corriente maxima de 25 mA, corriente que para algunos triac es insuficiente para poder excitarlos. Yo estube realizando unas pruebas con el  BT136 y BT137 y estos modelos los podeis utilizar directamente con el micro, uno de ellos es mas sensible que el otro, pero aqui no tengo los datos de las pruebas realizadas. Aparte de este incombeniente tambien se encuentra el problema de la fuente de alimentacion, ya que muchas veces se emplea en estos casos la tipica fuente sin transformador, en la cual se reduce la tension de 110 o 220v mediante un condensador y nos interesa disminuir al minimo el consumo para asegurar el suministro de tension.


----------



## pepechip (Dic 22, 2008)

alcor dijo:
			
		

> Lo mas recomendado es que se haga mediante un optoacoplador, pero yo tengo conectado el pic al gate unicamente con una resistencia de 470ohms a 1w.
> 
> Saludos


con 1/8W te hubiese sobrado


----------



## cristian_elect (Dic 30, 2008)

Las resistencias de 10K que estan entre rb4-rb6 no te fija bien como entrada 0V puede ser que el pic lo tome como 1 , para eso mejor reemplasar los 10k por 1k. Pruebalo. Y R11 tiene un valor muy alto, al menos que el triac sea supersensible mejor ponle valores de 510 a 330ohms.


----------



## terrapigui (Ene 23, 2010)

Hola a todos
Alcor, te importaria postear el esquematico que comentas?
he hecho pruebas con mi circuito y no me funciona, es el mismo que se postea mas arriba pero sin detectar paso por 0 .
supongo que el problema es de el programa de mi 16f877.


----------



## elosciloscopio (Ene 23, 2010)

mejor que utilices un DAC e ir aumentando o disminuyendo bit a bit


----------



## terrapigui (Ene 24, 2010)

lo hago utilizando el dac que lleva incorporado el mismo pic pero nada, creo que me estoy liando yo solito. teneis que tener un poco de paciencia conmigo porque enseguida me agobio.
si alguien es tan amable de decirle por privado a ALCOR que pstte su esquematico y su codigo para echarle un vistazo se lo agradeceria ya que yo no puedo al no tener privilegios suficientes.
gracias


----------



## elosciloscopio (Ene 24, 2010)

estas seguro de que es un DAC y no un ADC?


----------



## terrapigui (Ene 25, 2010)

ops
tienes razon


----------

