Anda di halaman 1dari 57

1/8/2014

Dimmer-Arduino | Arduino

Arduino
Arduino y cosas relacionadas

Dimmer-Arduino
Publicado el 19 de octubre 2012
Cambio de una carga de corriente alterna con un Arduino es bastante simpel: o bien un rel
mecnico o un rel de estado slido con un triac pticamente aislado.
Se convierte en un poco ms complejo si se quiere regular una lmpara de CA de la red con un
arduino: simplemente limitando la corriente a travs un triac no es realmente posible debido a la
gran potencia del triac entonces tendr que disipar, resultando en mucho calor y tambin no es
eficiente desde el punto de vista de uso de la energa.
La forma correcta de hacerlo es a travs de control de fase:. El Triac entonces est
completamente abierto, pero slo durante una parte de la onda AC sinoid
Uno podra un Arduino dejar abierta la Triac para un nmero de microsegundos, pero que tiene el
problema de que es impredecible durante qu parte del sinuswave el triac se abre y por lo tanto el
nivel de regulacin es impredecible. Se necesita un punto de referencia en la onda de seno.
Para que un detector de cruce por cero es necesario. Este es un circuito que cuenta la Arduino (u
otro microcontrolador) cuando la onda de seno pasa a travs de cero y por lo tanto da un punto
definido en el que la onda de seno.
Apertura de la Triac para un nmero de microsegundos despus de por lo tanto, el cruce por cero
da un nivel predecible de atenuacin .

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

1/57

1/8/2014

Dimmer-Arduino | Arduino

Este circuito, que es un ejemplo.

Dicho circuito es fcil de construir: El paso por cero se deriva directamente de la red de corriente
alterna rectificada lneas - a travs de un acoplador ptico, por supuesto-y le da una seal cada
vez que la onda pasa por cero. Debido a que la onda senoidal pasa primero por la rectificacin
doble por etapas (vase la figura a continuacin), la seal de cruce por cero se da sin tener en
cuenta si la onda de seno sube por cero o hacia abajo por cero. Esta seal se puede utilizar para
dirigir una interrupcin en el Arduino.

Seguir

Siga "Arduino"
Obtenga cada nuevo post
entregado a su bandeja de
entrada.
nete a otros 42 seguidores

Enter your email address


Registrarme
Desarrollado por WordPress.com

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

2/57

1/8/2014

Dimmer-Arduino | Arduino

Apertura de
la triac se realiza a travs de un circuito de triac opto acoplada probado y comprobado. Para el
Triac un TIC206 se puede utilizar, pero un BT136 (un poco ms barato) probablemente funcionara
tambin. Con respecto a la MOC3021: que tiene una tensin directa de aproximadamente 1.2 a
1.4 voltios y una corriente de disparo de 8-15 mA. Un LED tiene una tensin directa de unos
2Volts. Suponiendo una seal de direccin digital de 5 V que da un valor de resistencia entre (53.2) / 0.015 = 120 Ohm y (5-3.2) / 0.008 = 225 Ohm, por lo que 220
una opcin decente. En
realidad, un LED puede tener una tensin directa ligeramente inferior y una resistencia de 330
Ohm fue encontrado para trabajar tambin. Es importante no elegir un opto-triac aqu con un filtro
de cruce por cero incorporado. El MOC3041 MOC3061 o para el caso, por lo tanto no es utilizable
en este circuito. El MOC 3021 es. NOTA: algunas personas han experimentado el parpadeo como
consecuencia de una seal de entrada dbil. Como la cada de tensin sobre un LED puede variar
dependiendo del color. que es ms seguro para reemplazar el LED por un puente de alambre y
aumentar la resistencia de 220
Ohm a 330 o 470 Ohm En cuanto a las resistencias de 30k: El
1/2 Watt debe hacerlo como las resistencias disipan algunos 400mW. Si usted piensa que es
demasiado, reemplazar el 4N25 4N33 con una y las dos resistencias de 30k con dos resistencias
100 k. Tenga cuidado sin embargo al usar optoacopladores sensibles como el 4N32, ya que ser
fcilmente plenamente en la saturacin.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

3/57

1/8/2014

Dimmer-Arduino | Arduino

Este es el circuito completo del dimmer

Todos los que uno necesita entonces es el software. Afortunadamente alguien ya ha hecho el
trabajo bsico. Simplemente adapt el cdigo ligeramente:

/*
AC Voltaje dimmer con Zero deteccin cruzada
Autor: Charith Fernanado http://www.inmojo.com
Licencia: Creative Commons Attribution Share-Alike 3.0 License.

Coloque el pasador transversal cero del mdulo de Arduino pin de interrupcin exter
Seleccione la correcta Interrupcin # de la siguiente tabla:
(Los nmeros de pin son los pines digitales, NO pins fsicas:
pin digital 2 [INT0] = pin fsico 4
y pin digital 3 [INT1] = pin fsica 5)
Pin | de interrupcin de # | Plataforma Arduino
--------------------------------------2 | 0 | Todo
3 | 1 | Todos
18 | 5 | Arduino Mega Slo
19 | 4 | Arduino Mega Slo
20 | 3 | Arduino Mega Slo
21 | 2 | Arduino Mega Slo
En el pin programa se elige 2
*/

int AC_LOAD = 3; / / Salida de pin Opto Triac


int oscurecimiento = 128; / / Nivel de atenuacin (0-128) 0 = ON, 128 = OFF
/ * Debido a problemas de tiempo, el uso de '0 'a veces puede hacer que el circuito
parpadeo. Es ms seguro utilizar un valor ligeramente superior a '0 '
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

4/57

1/8/2014

Dimmer-Arduino | Arduino

*/
void setup ()
{
pinMode (AC_LOAD, OUTPUT) ;/ / pin de carga Set AC como salida
attachInterrupt (0, zero_crosss_int, RISING);
/ / Escoge '0 'como interrupcin para el cruce por cero
}
/ / La funcin de interrupcin debe tener parmetros y devolver nada
void zero_crosss_int ()
/ / Funcin para ser disparado en el cruce por cero para atenuar la luz
{
Clculo del ngulo / / coccin: 1 onda 50Hz completo = 1/50 = 20 ms
/ / Cada zerocrossing as: (50 Hz) -> 10 ms (1/2 Ciclo) Para 60Hz => 8,33 ms
/ / 10 ms = 10000US
/ / (10000US - 10us) / 128 = 75 (aprox) Para 60Hz => 65
int DimTime = (75 * oscurecimiento); / / Para 60Hz => 65
delayMicroseconds (DimTime); Ciclo / / Off
digitalWrite (AC_LOAD, HIGH); / / Triac despido
delayMicroseconds (10); / / Triac El retardo de propagacin
/ / (Para uso 60Hz 8,33)
digitalWrite (AC_LOAD, LOW); / / Triac Off
}
void loop () {
for (int i = 5; i <= 128; i + +)
{
atenuacin = i;
de retardo (10);
}
}

Diseo de impresin . Mirrorred .

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

5/57

1/8/2014

Dimmer-Arduino | Arduino

El aspecto a considerar es que si usted est construyendo un sistema en el que no est


utilizando una fuente de alimentacin ya hecho, sino ms bien proporcionar su propia fuente de
alimentacin, construido a partir de un transformador y un rectificador, usted podra considerar
recogiendo el 0-travesa desde el lado secundario del transformador.
Un posible circuito podra tener este aspecto:

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

6/57

1/8/2014

Dimmer-Arduino | Arduino

E. diez Wink el

COM PARTE ESTA:

Gorjeo

Facebook

11

Like
One blogger likes this.

CONEXO

Conmutacin de baja
tensin de CA con un
microcontrolador

Interruptor de un solo
canal Triac AC

Rel de estado slido


para el microcontrolador
Con 8 comentarios

Esta entrada fue publicada en dimmer por Arduino . Guarda el enlace permanente
[http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/] .
101 PENSAMIENTOS EN " DIMMER-ARDUINO "

C
en15 de diciembre 2012 a las 17:03 dijo:

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

7/57

1/8/2014

Dimmer-Arduino | Arduino

Swell. Voy a intentar esto. Estoy en 115V/60Hz


Ha proporcionado los valores de 60 Hz, pero lo que haga con los 30K resistencias? Debo
duplicarlas o medio de ellos y lo que acerca de su Potencia? Lo siento, no soy tan hbil

Arduino
en16 de diciembre 2012 a las 10:50 am dijo:

Gracias mitad de ellos. Potencia puede seguir siendo la misma. Ms que


suficiente

Jos
en22 de diciembre 2012 a las 11:57 am dijo:

Saludos, tengo un par de preguntas tontas (?); Soy un tipo de matemticas y (hasta) Yo
no s nada sobre el hardware; mi hermano construy la cosa y parece que funciona, pero
no entiendo por qu; es probablemente porque no s cmo funciona un triac ...
A partir del cdigo Puedo ver que la mitad de un ciclo de toma 10000US y el pin
AC_LOAD se establece en alto para 10us en algn momento durante ese ciclo. Mi
calculadora muestra que (10000US-10us) / 128 == 78.046875us as no 78us ser una
mejor aproximacin en lugar de 75us? Por qu se divide el (medio) ciclo en 128 partes?
Sera ms 'natural' no 256 partes?
Mi otra pregunta trata sobre el propio procesador: durante ese retraso puede el procesador
an se interrumpa o se trata efectivamente muerto durante ese perodo de retardo? (Lo
siento por esto, no pude encontrar una respuesta de Google en cualquier lugar).
Gracias por la lectura y
Saludos cordiales,
Jos

Arduino
en28 de febrero 2013 a las 1:41 am dijo:

Josh, disculpas por mi ltima contestacin. 78 nosotros puede de hecho ser una
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

8/57

1/8/2014

Dimmer-Arduino | Arduino

mejor aproximacin, slo haber elegido un nmero agradable cerca


wether 256 sera un proceso ms natural es de hasta al gusto, incluso a 256 la
velocidad del cambio es ms importante que el tamao del paso. Para mi
propsito pasos 0f 128a pareca satisfactoria, pero no hay problema en tomar
pasos ms pequeos
Gracias por su inters

Jos
en28 de febrero 2013 a las 9:58 am dijo:

No hay problema; en la media hora que tom un enfoque diferent: su solucin hace que la
espera hasta que el procesador tiene que enviar un pulso a la triac; en mi solicitud de que
es una prdida de tiempo, as que utiliza un temporizador que interrumpe el procesador de
nuevo cuando ha llegado el momento de enviar un pulso. Divido los 0,01 s en 256 partes y
preescala el temporizador / 8; eso hace 20.000 ticks por 0,01 segundos y funciona muy
bien, mientras que mi procesador puede hacer otras cosas; cerca de la "ventaja" de la
alarma de cruce por cero simplemente me dejo el triac o desactivar porque la corriente es
demasiado baja para cambiar correctamente a un estado encendido (este valor difiere
segn el tipo de triac).

Arduino
en20 de marzo 2014 a las 12:55 pm dijo:

Esa es, de hecho, una buena solucin Josh. El ejemplo que di era slo eso, un
ejemplo. He dado una solucin con una interrupcin del temporizador, as

Nativepr
en03 de marzo 2013 a las 2:54 am dijo:

Puedo usar un arduino a dimm 220v para un todava?


http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

9/57

1/8/2014

Dimmer-Arduino | Arduino

Gracias por su respuesta

Arduino
en07 de abril 2013 a las 22:31 dijo:

No estoy seguro de lo que quieres decir con un alambique

nativerpr
en28 de abril 2013 a las 2:02 am dijo:

Me refiero a un aparato de destilacin. Para controlar la temperatura de la


caldera

Arduino
en20 de junio 2013 a las 20:41 dijo:

En principio esto es posible, pero puede haber soluciones ms fciles para


que

Andy
en21 de marzo 2013 a las 16:40 dijo:

Alguien ms ha tenido problemas con el parpadeo / brillantes destellos de la lmpara?


Me parece que no puede conseguir una transicin sin problemas, incluso con la 'DimTime'
set variable a un valor fijo tengo los mismos problemas donde me esperaba un brillo
constante.
Voy a ser la partida a un Hackspace local del domingo (donde tienen un osciloscopio) y
publicar lo que me entero.

Andy
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

10/57

1/8/2014

Dimmer-Arduino | Arduino

en26 de marzo 2013 a las 10:52 am dijo:

He echado un vistazo a mi alimentacin de 5V en un mbito. La forma de onda es


terrible. No es de extraar el arduino consigue flancos ascendentes adicionales.
Hizo que mi propio suministro de 5V y funciona muy bien ahora.

Arduino
en07 de abril 2013 a las 22:32 dijo:

Estoy feliz de que ya se enter de lo que pr eproblem es, fuente de alimentacin


5volt ao. Gracias por publicarlo

Arduinodiy
en28 de marzo 2013 a las 22:08 dijo:

Ese es un enfoque interesante. Mi programa era slo una manera rpida de mostrar el
funcionamiento pero si yoy establece una interrupcin de temporizador que sera ms
eficiente.
Le importara compartir su cdigo?

Jeff
en30 de abril 2013 a las 1:51 am dijo:

He encontrado una gran cantidad de problemas con "parpadeo / destellos brillantes" en el


poder en torno a un 40-50%. La manera de solucionar este problema es abandonar el
puente de diodos como un detector de cruce por cero. En su lugar colocar la red elctrica
a travs de 150K de resistencia (yo us 3 * 47K en serie) para controlar directamente la
entrada ptica, pero (lo ms importante) poner un diodo en paralelo con la entrada ptica,
direccin inversa. As que ahora en el columpio positivo de la vivo, la entrada ptica se
"ilumina", y en la oscilacin negativa del diodo en paralelo atrapa el voltaje en la entrada
ptica de ir ms de ~ 0,7 voltios polaridad inversa, y la entrada ptica es "oscuro ". Ahora
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

11/57

1/8/2014

Dimmer-Arduino | Arduino

usted tiene una buena onda cuadrada en el colector opto o "el cruce por cero out", el
cambio de 0-5v y 5v a 0V etc exactamente con la red de cruce cero.
En el cdigo, cambie:
attachInterrupt (0, zero_crosss_int, RISING);
a:
attachInterrupt (0, zero_crosss_int, CHANGE);
Ahora "vaco zero_crosss_int ()" se denomina a cada paso por cero como antes.
He utilizado un 4N33 en lugar de un 4N25. Es posible que necesite ms bajo que 150K si
est utilizando un 4N25. Tambin me pareci que necesitaba un 2.2K tire hacia arriba de
la resistencia en el colector opto (10k es mucho a mayor), a conseguir lindas fuertes
subidas y cadas. Tener buenos fuertes subidas y cadas en los cruces por cero es clave
para evitar "parpadeo" o miss-disparo.
He adaptado el cdigo se ejecute en interrupcin utilizando el temporizador 1, en lugar de
poner en un retraso en el cdigo de servicio zero_crosss_int. Aqu est mi cdigo de
prueba arduino leonado:
Char inByte ;/ / personaje de recepcin serie
int voltiles variar = 19980; / / .. Esto es OFF valor .. 200 = 100 uS con un preescala 8,
100 * 200 = 10 ms ... pero int respuesta tarda 10us a fin de utilizar 19.980
int AC_LOAD = 3; / / Salida Opto Triac pin
int atenuacin = 10; / / Nivel de atenuacin (0-100) 0 = apagado, 100 = en
void setup ()
{
pinMode (AC_LOAD, OUTPUT) ;/ / pin de carga Set AC como salida
attachInterrupt (1, zero_crosss_int, CHANGE);
/ / cambio elige como interrumpir el paso por cero
Serial.begin (115.200);
}
/ / la funcin de interrupcin debe tener parmetros y devolver nada
vaco zero_crosss_int ()
/ / Funcin para ser disparado en el cruce por cero para atenuar la luz
{
ajuste del ngulo / / Firing
/ / inicializa Timer1
TCCR1A = 0; / / Establecer toda registro TCCR1A a 0
TCCR1B = 0; / / Igual para TCCR1B
/ / set comparar registro de coincidencia a cuenta del temporizador deseada:
OCR1A = varan;
/ / activar el modo de CTC:
TCCR1B | = (1 << WGM12);
/ / bit Set CS11 para 8 prescaler:
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

12/57

1/8/2014

Dimmer-Arduino | Arduino

TCCR1B | = ( ; 1 << CS11)


: / / temporizador comparar habilitacin de interrupcin
| = (1 <0) {TIMSK1
: / / obtener byte entrante
; inByte = Serial.read ()
interruptor (inByte) {
case 'h':
atenuacin = oscurecimiento + 5;
if (atenuacin> 95) {
desvaneciendo = 95;
}
Serial.print ("nivel es");
Serial.println (oscurecimiento);
break;
case 'l':
atenuacin = atenuacin-5;
if (oscurecimiento <10) {
atenuacin = 10;
}
Serial.print ("nivel es");
Serial.println (oscurecimiento);
romper;
caso 'p':
Serial.print ("Vary es");
Serial.println (vara);
romper;
caso '3 ':
regulacin = 30;
romper;
caso '6 ':
regulacin de luz = 60;
}
}
variar = 200 * (100-oscurecimiento) -20;
}

Arduino
en20 de junio 2013 a las 20:33 dijo:

Gracias por la sugerencia ao. No he tenido el problema que usted describe, sin
embargo, voy a tenerlo en cuenta y tal vez voy a ser de utilidad en el futuro. Si
usted no utiliza un puente, obviamente, la frecuencia de la seal se reduce a la
mitad

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

13/57

1/8/2014

Dimmer-Arduino | Arduino

Jeff
en30 de abril 2013 a las 2:01 am dijo:

una parte del cdigo no fue fijado derecha. un trozo faltaba en el medio. Aqu est el
cdigo de nuevo:
Char inByte ;/ / personaje de recepcin serie
int voltiles variar = 19980; / / 200 = 100 nosotros con una preescala 8, 100 * 200 = 10 ms
de interrupcin = off ... pero int respuesta = 10us as 19980
int AC_LOAD = 3; / / Salida Opto Triac pin
int atenuacin = 10; / / Nivel de atenuacin (0-100) 0 = apagado, 100 = en
void setup ()
{
pinMode (AC_LOAD, OUTPUT) ;/ / pin de carga Set AC como salida
attachInterrupt (1, zero_crosss_int, CHANGE);
/ / Permite seleccionar '1 "como interrupcin para el cruce por cero
Serial.begin (115.200);
}
/ / la funcin de interrupcin debe tener parmetros y devolver nada
vaco zero_crosss_int ()
para ser disparado en el cruce por cero para atenuar la luz / / Funcin
{
/ / Firing ajuste del ngulo
/ / inicializa Timer1
TCCR1A = 0; / / Establecer toda registro TCCR1A a 0
TCCR1B = 0; / / Igual para TCCR1B
/ / set comparar registro de coincidencia a cuenta del temporizador deseada:
OCR1A = varan;
/ / activar el modo de CTC:
TCCR1B | = (1 << WGM12);
/ / bit Set CS11 para 8 prescaler:
TCCR1B | = ( ; 1 << CS11)
: / / temporizador comparar habilitacin de interrupcin
| = (1 <0) {TIMSK1
: / / obtener byte entrante
; inByte = Serial.read ()
interruptor (inByte) {
case 'h':
atenuacin = oscurecimiento + 5;
if (atenuacin> 95) {
desvaneciendo = 95;
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

14/57

1/8/2014

Dimmer-Arduino | Arduino

}
Serial.print ("nivel es");
Serial.println (oscurecimiento);
break;
case 'l':
atenuacin = atenuacin-5;
if (oscurecimiento <10) {
atenuacin = 10;
}
Serial.print ("nivel es");
Serial.println (oscurecimiento);
romper;
caso 'p':
Serial.print ("Vary es");
Serial.println (vara);
romper;
caso '3 ':
regulacin = 30;
romper;
caso '6 ':
regulacin de luz = 60;
}
}
variar = 200 * (100-oscurecimiento) -20;
}

Jeff
en30 de abril 2013 a las 2:11 am dijo:

segundo intento de pegar cdigo tambin parece haber fracasado. este bit no est
presente:
"
}
ISR (TIMER1_COMPA_vect)
{
digitalWrite (AC_LOAD, HIGH); De disparo / / triac
delayMicroseconds (10); / / Triac El retardo de propagacin
digitalWrite (AC_LOAD, LOW); / / Triac Off
TCCR1A = 0; / / Establecer toda registro TCCR1A a 0
TCCR1B = 0; / / Igual para TCCR1B
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

15/57

1/8/2014

Dimmer-Arduino | Arduino

}
void loop () {
if (Serial.available ()> 0)
"
insertar arriba exacto despus TIMSK1 texto | = (1 <0)

Jeff
en30 de abril 2013 a las 2:37 am dijo:

mensaje al moderador ...


Veo otros fragmentos de cdigo removido de la pasta, por lo que incluso mi correccin de
cdigo que falta tambin tiene algo de cdigo que falta. No creo que esta entrada de blog
es bueno para el cdigo. Hay texto en la carga de ser filtrado y eliminado por la aplicacin
web por alguna razn. Envame un correo electrnico si usted piensa que otros estaran
interesados
en el cdigo del temporizador.
Jeff

Arduino
en20 de junio 2013 a las 8:30 pm dijo:

Puede que tengas razn. Ha tenido problemas con l antes.

Arduino
en20 de junio 2013 a las 20:37 dijo:

Estoy en el mvil ahora lo que no puede ponerse en contacto con u por correo
electrnico, pero seguramente lo har

Arduino
en20 de junio 2013 a las 22:36 dijo:

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

16/57

1/8/2014

Dimmer-Arduino | Arduino

Lamentablemente no puedo enviar u correo electrnico, ya que no tengo direccin


yr

Nikoas
en06 de mayo 2013 a las 22:29 dijo:

Tratar de utilizar un temporizador en lugar de los delayMicroseconds pero sigue


parpadeando .. Cdigo es como esto:
int AC_LOAD = 3;
voltil int atenuacin = 128;
void setup ()
{
pinMode (AC_LOAD, OUTPUT) ;/ / pin de carga Set AC como salida
attachInterrupt (0, zero_cross_int, RISING);
}
void loop ()
{
}
void zero_cross_int ()
{
SetTimer (65 * oscurecimiento);
}
ISR (TIMER1_COMPA_vect)
{
digitalWrite (AC_LOAD, HIGH);
delayMicroseconds (8,33);
digitalWrite (AC_LOAD, LOW);
}
void SetTimer (microsegundos int)
{
TCCR1A = 0; / / Establecer toda registro TCCR1A a 0
TCCR1B = 0; / / Igual para TCCR1B

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

17/57

1/8/2014

Dimmer-Arduino | Arduino

TCCR1B | = (1 << WGM12);


TCCR1B | = (1 << CS11);
TCCR1B & = ~ (1 << CS10);
TCCR1B & = ~ (1 << CS12);
OCR1A = microsegundos * 2 -1;
TIMSK1 | = (1 << OCIE1A);
}
Alguien tiene alguna ideia?
Gracias!

Arduino
en20 de junio 2013 a las 20:28 dijo:

No puedo ver de inmediato un problema con el cdigo. Tal vez alguien ms lo har

Arduino
en07 de septiembre 2013 a las 22:38 dijo:

parpadeo tambin puede ser causef si el LED de la entrada le quita demasiado de


una cada de tensin. Reemplace el LED por un puente de alambre y aumentar el
valor de la resistencia de 220 oghm a 330 o 470 ohmios

Chethan
en19 de julio 2013 a las 9:25 am dijo:

Hola, quiero comprar este mdulo, est disponible en la India?

Arduino
en19 de julio 2013 a las 10:07 am dijo:
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

18/57

1/8/2014

Dimmer-Arduino | Arduino

No estoy vendiendo cualquier mdulo de che. El que he vinculado es mailorder

Chethan
en19 de julio 2013 a las 19:44 dijo:

Hola, si no est disponible, entonces voy a tratar de construir mi propio.


Podra usted los pls compartir el circuito completo esquemtica ...? ..
Tengo que construir en la India por lo que mi alimentacin de CA ser
50Hz 230v ...

Arduino
en19 de julio 2013 a las 23:13 dijo:

Che que, el circuito completo es en este artculo. En caso de que no


estaba claro, se necesita el circuito que u ver inmediatamente por encima
de la lista de programas que tiene el 4N25, el MOC3021, el puente
rectificador y el triac. Anuncio se puede ver un circuito simple rally.
Encontrar el diseo de impresin por debajo de la lista de programas y
una foto de los componentes en el PCB justo debajo. Los valores
indicados se refieren a 230 voltios. No dude en preguntar si lo que necesita
saber ms

Arduino
en27 de agosto 2013 a las 19:43 dijo:

no estoy seguro de lo que quieres decir Chethan. lo que forma parte del
circuito le falta?

Indra
en29 de septiembre 2013 a las 6:10 pm dijo:

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

19/57

1/8/2014

Dimmer-Arduino | Arduino

Hola, he construido este circuite mi cuenta, y ahora quiero programar mi controlador atmel
8051 para recibir la seal de accionamiento paso a cero, la seal de atenuacin en.
Lo que entend desde el programa anterior es, Conecte estos puntos a los pines de
microcontrolador, y utilizar el programa anterior. Zero Crossing seal o / p trabajo como de
interrupcin en el controlador y en base a esto se acciona la seal del atenuador hacia
fuera puesto ..
Puedo utilizar encima programa directamente con slo dando detalles pin correcto en el
programa ..

Arduino
en29 de septiembre 2013 a las 19:29 dijo:

Indra, s que se entiende wel. Tendr que conectar el cruce por cero a una
interrupcin del microcontrolador annd continuacin tiene un pin de salida del
microcontrolador encienda el optoaislador / triac
Sin embargo, el programa en s mismo probablemente no funciona
inmediatamente, ya que no es puro C, pero si usted tiene un compilador de C para
el ao 8051 un uso dyou este programa, obtendr bastante lejos, mediante la
adaptacin de los pasadores y haciendo que la lengua un poco ms pura C.
Si consigues que funcione, yo estara muy interesado para que usted pueda
compartirlo
Gracias por yr comentario

Arduino
en29 de septiembre 2013 a las 22:18 dijo:

es posible que desee comprobar aqu:


http://www.linuxforturkey.com/lamp_dimmer/lamp_dimmer.php . durante algn
cdigo
que s que hace muchos aos que escrib algo de cdigo para hacer esto por un
8051, incluso en ensamblador, pero despus de 20 aos he perdido ese cdigo y
no estoy trabajando con ms de 8.051

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

20/57

1/8/2014

Dimmer-Arduino | Arduino

indra
en30 de septiembre 2013 a las 6:18 am dijo:

Gracias por la informacin, a continuacin es el cdigo que he escrito, me dejaron test y


post los resultados
# include
/*=============================================================================
=============================================================================*/
int oscurecimiento = 0;
delayMicroseconds void (unsigned int i)
{
unsigned int j, k;
for (j = 0; j <= i; j + +)
{
for (k = 0; k <256; k + +);
}
}
void delay (unsigned int i)
{
unsigned int j, k;
for (j = 0; j <= i; j + +)
{
for (k = 0; K65
delayMicroseconds (DimTime); / / Off ciclo
P1 = 0x01; / / disparo triac
delayMicroseconds (10) / / triac Retardo de propagacin
/ / (para uso 60Hz 8.33)
P1 = 0x00; / / triac Off
}
void ex0_isr (void) interrumpa 0
{
Drive_Trac (); / / Incrementa el conteo
}
/*=============================================================================
=============================================================================*/
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

21/57

1/8/2014

Dimmer-Arduino | Arduino

void main (void)


{
/ * ---------------Zero Crossing interrupcin
---------------- * /
IT0 = 1; / / Configurar Zero Configurar interrumpa 0 para el borde que cae sobre / INT0
(P3.2)
EX0 = 1; / / Habilitar la interrupcin EX0
EA = 1; / / Habilitar Global Interrupt Flag
/ * ---------------para Triac unidad P1.0
---------------- * /
P1 = 0x00;
/ * ---------------esperar para
siempre. ---------------- * /
int i;
for (i = 5; i <= 128; i + +)
{
atenuacin = i;
delay (10);
}
while (1)
{
}
}
/*=============================================================================
=============================================================================*/

Arduino
en30 de septiembre 2013 a las 6:19 am dijo:

Thanx

Indra
en08 de octubre 2013 a las 7:10 pm dijo:
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

22/57

1/8/2014

Dimmer-Arduino | Arduino

Hola, he intentado mi tabla con el cdigo que he escrito para 89V51RD2.


recibo la interrupcin de Zerocrossing pin de salida ...
Pero la carga (bombilla) que estoy conectado no est variando, su siempre ON .. si me
quito la seal de entrada triac tambin mi carga es ON ".. Es TRIAC est bien?
Dado que no he tenido 30k (1,2 vatio), conect 33k (1/2watt) todos los dems o normal
resistencia ..
aqu est mi retraso y el cdigo de ISR
delayMicroseconds void (unsigned int i)
{
for (j = 0; j <= i; j + +)
{
for (k = 0; k <256; k + +);
}
}
void ex0_isr (void) interrumpa 0
{
P0 = 0x01; De disparo / / triac
delayMicroseconds (10); / / Triac El retardo de propagacin
P0 = 0X00 ;/ / triac Off
}

Arduino
en08 de octubre 2013 a las 22:17 dijo:

Indra, si desconecta la entrada al optoacoplador y triac aos todava est en


entonces, evidentemente, ya sea triac aos ha tenido o optoaislador ao tiene un
corto. Si ha utilizado un pie ic para optoaislador ao le sugiero que tome el chip y
vuelve a intentarlo con slo aplicar la tensin de red de nuevo. Si triac ao est
apagado, el optoaislador tiene un corto. Si todava est en espero un triac
defectuoso

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

23/57

1/8/2014

Dimmer-Arduino | Arduino

indra
en09 de octubre 2013 a las 5:51 am dijo:

Hola, Ya que yo no he puesto ningn pie ic,, voy a tratar de reemplazar el IC y comprobar
...
Tengo una pequea pregunta:
Tengo que apoyar a cuatro niveles de regulacin para mi carga (bombilla).
se cambia el retardo entre ON y OFF triac funciona bien?
Al igual que a continuacin.
/ / Nivel: 0
P0 = 0 01; De disparo / / triac
delayMicroseconds (8); / / Triac El retardo de propagacin de Nivel: 0
P0 = 0X00 ;/ / triac Off
/ / Nivel: 1
P0 = 0 01; De disparo / / triac
delayMicroseconds (10); / / Triac El retardo de propagacin de Nivel: 1
P0 = 0X00 ;/ / triac Off
/ / Nivel: 3
P0 = 0 01; De disparo / / triac
delayMicroseconds (12); / / Triac El retardo de propagacin de Nivel: 2
P0 = 0X00 ;/ / triac Off

Arduino
en10 de octubre 2013 a las 1:42 am dijo:

Es mejor primero desoldar un pin de la resistencia.


Con respecto a los 4levels usted tiene que establecer los ajustando el retardo
desde el zerocrossing

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

24/57

1/8/2014

Dimmer-Arduino | Arduino

indra
en10 de octubre 2013 a las 11:23 am dijo:

Hola, el problema era con optoaislador, me desoldar resistencia de 1k .. ahora no es ON


.. As como usted sugiri que intentar sustituir con el nuevo ...
Con 4levls sentido, yo no entenda "retardo desde el zerocrossing" .. Est agregando un
cierto retraso en la rutina de interrupcin que me pasa por la salida de cruce por cero ..
segn mi cdigo de abajo, cada vez que tengo la interrupcin, en la rutina de interrupcin
que hago el disparo traic y OFF ..
Entonces, dnde agregar el dealy con el fin de tener niveles tenues diffrent
vaco ex0_isr (void) interrumpen 0
{
P0 = 0 01; De disparo / / triac
delayMicroseconds (10); / / Triac El retardo de propagacin
P0 = 0X00 ;/ / triac Off
}

Arduino
en11 de octubre 2013 a las 9:24 am dijo:

Hola Indra, bueno que identificaron el problema. Sin embargo, asegrese de que no
interrumpa cualquier cortocircuito accidental entre las pistas de la optoaislador.
Con el retardo de la zeorcrossing quiero decir que el lightlevel de la lmpara depende de
en qu parte del 50Hz (o 60Hz) Ciclo de enviar un pulso a la TRIAC.
En un ciclo de 50 Hz el tiempo transcurrido entre dos cruces por cero es de 10 ms (8,33
en una 60Hz) .
As que si usted quiere tener la lmpara de yr a media potencia, es necesario encender el
TRIAC mitad de ese ciclo, que es de 5 ms despus de la zerocrossing.
Si quieres lmpara ao en el 25% hay que esperar para 7,5 ms despus de la
zerocrossing antes de que se activa el TRIAC y si quieres lmpara ao a la fuerza el 75%
que necesita para activar el TRIAC despus de 2,5 ms.
(tcnicamente para el 25% y el 75% se trata de una aproximacin como el rea bajo la
curva no es liniair, pero est lo suficientemente cerca para la ilustracin de los proces).
Hay que aadir que la demora en su programa antes de disparar el TRIAC. Dnde est
exactamente depende de ti, pero lo que he hecho en mi cdigo de Arduino es que en mi
rutina de interrupcin, multiplico un stepvariable con un steptime. Posteriormente me puse
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

25/57

1/8/2014

Dimmer-Arduino | Arduino

esa variable en mi bucle principal.


Desde solo deseas 4 niveles, podra establecer una ms grande steptime ejemplo 2.4ms
y que se multiplican con una variable.
Posteriormente, en el bucle principal se establece esa variable que decir 1, 2, 3 o 4
Tambin puede establecer el total de DimTime directamente en su mainloop de la
siguiente manera:
interrumpir {
delayMicroseconds (DimTime);
P0 = 0x01;
delayMicroseconds (10); / / Propogationdelay
P0 = 0x00;
}
loop {
IF condicin DimTime = 9,000;
ELSE IF condicin DimTime = 7,000;
ELSE IF condicin DimTime = 5,000;
ELSE DimTime = 2000;
}
He elegido 9000 en lugar de (10000-10) porque el 4N25 que da la zerocrossing no es ideal
en un sentido de que no da un pulso muy estrecho. A los efectos normales de regulacin
que no es un problema, pero podra dar algunos problemas de tiempo cuando se regula
cerca de los bordes de su ciclo
Espero que ayude, buena suerte. no vacilamos en preguntar si necesita ms ayuda

Indra
en12 de octubre 2013 a las 10:14 am dijo:

Hola,
Gracias por la informacin detallada. Trat como usted ha dicho anteriormente.
en lugar de la regulacin a nivel constante .. Mi carga (bombilla) parpadea al ritmo que he
aadido como DimTime ...
este es mi cdigo de demora.
delayMicroseconds void (unsigned int i)
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

26/57

1/8/2014

Dimmer-Arduino | Arduino

{
for (j = 0; j <= i; j + +)
{
for (k = 0; k <256; k + +);
}
}
Isr () {
delayMicroseconds (2000);
P0 = 0 01;
delayMicroseconds (10); / / Propogationdelay
P0 = 0 00;
}
Por favor ayuda si he cometido algn error en el retardo adecuado establecer ..

Arduino
en12 de octubre 2013 a las 11:58 am dijo:

Indra Actualmente estoy viajando. Yo todo contacto con usted

Arduino
en12 de octubre 2013 a las 19:09 dijo:

Como estoy en el mvil slo puedo dar una respuesta corta pero, francamente, no
entiendo su cdigo. Si 'i' es tenue yr tiempo, entonces cul es la funcin de la de
2000, y cul es la funcin de la 'k'?
Yo no estoy seguro de cmo retraso ao es llamado por lo que la funcin de ao
parece hacer es simplemente repita el retraso 2000microsecond un nmero de
veces. Si se trata del paso por cero que llama a esto, entonces tal vez la primera
vez que nosotros bien, pero despus de eso no hay una relacin adecuada con el
cruce por cero ms y usted incluso pasar a la siguiente fase del ciclo. A m me
parece que J y K no tienen ninguna funcin en absoluto, sino que es necesario por
ejemplo, i * 2000 en el que i es entre 0 y 4.
Basta con mirar el ejemplo que di en mi respuesta de 11 de octubre 2013 @
09:24:11 Eso muestra la estructura que tiene que seguir. Su cdigo-lamento
decirlo-es completamente errneo, har TRIAC ao se descomponga
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

27/57

1/8/2014

Dimmer-Arduino | Arduino

Indra
en14 de octubre 2013 a las 19:48 dijo:

Hola, gracias por su ayuda .. yo soy capaz de obtener cuatro niveles DIM ..
Pero de repente la carga parpadea .. como se haba sugerido reemplac con 220ohm
440ohm y 1kohm, pero an as me sale el parpadeo durante el funcionamiento normal ..
pls sugieren cmo para superar este parpadeo ..
Desde mi 8051 pin hacia fuera puesto no era capaz de conducir el MOC3021, he usado
un TIP122 para conducir .. como below https://lh3.googleusercontent.com/OHBImWUiKVM/UlwtYFIGwgI/AAAAAAAAABo/_o4aIjLk8ts/w776-h458-no/test.png
Y a continuacin es mi cdigo completo
/ * Dimmer.C - Keil Evaluation Board MCBx51 con 80C51 dispositivo * /
# Include
# include
int regulacin = 0;
unsigned int j, k;
anular delayMicro (unsigned int nosotros)
{
for (; nosotros> 0; nosotros-)
{
_nop_ (); / / Si el cristal es cristal de 11 MHz a continuacin retraso es de ~ 1
microsegundo
}
}
void delay (unsigned int i)
{
for (j = 0; j <= i; j + +)
{
for (j = 0; j <= 256; j + +)
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

28/57

1/8/2014

Dimmer-Arduino | Arduino

{
for (j = 0; j <= 256; j + +)
{
}
}
}
}
void Drive_Trac (void )
{
delayMicro (oscurecimiento);
/ / delayMicro (550);
P0 = 0xFF; / / Triac disparar
delayMicro (10);
/ / (para uso 60Hz 8.33)
P0 = 0x00 ;/ / triac Off
}
void ex0_isr (void) interrumpa 0
{
/ / P1 = ~ P1;
Drive_Trac (); / / Incrementa el conteo
}
/ ******************************************* ****************?
void main (void)
{
/ / P1 = 0x00; Coccin / / triac
P0 = 0x00;
/ * ---------------Zero Crossing interrupcin
---------------- * /
IT0 = 1; / / Configurar Zero Configurar interrumpa 0 para el borde que cae sobre / INT0
(P3.2)
EX0 = 1; / / Habilitar la interrupcin EX0
EA = 1; / / Habilitar Global Interrupt Flag
/ * ---------------para Triac unidad P1.0
---------------- * /
/ * ---------------Esperar
siempre. ---------------- * /
while (1)
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

29/57

1/8/2014

Dimmer-Arduino | Arduino

{
atenuacin = 380; / / Nivel 1
delay (9999);
atenuacin = 450; / / Nivel 2
delay (9999);
atenuacin = 500; / / Nivel 3
delay (9999);
atenuacin = 550; / / Nivel 4
delay (9999);
}
}

Arduino
en14 de octubre 2013 a las 23:24 dijo:

Hola Indra, gracias por su cdigo. Pero para ser sincero, es difcil de decir. Sigo dando un
ejemplo de que en la medida de lo que puedo ver es slo simple y debera trabajar
su Drive_Trac rutina parece totalmente innecesario, ya que se puede establecer que en su
routne interrupcin. Ahora slo tienes aos de interrupcin llamada de rutina otra rutina.
Su funcin de retardo parece un poco demasiado complicado y se puede simplificar. P0 =
0 FF supuesto enciende la totalidad del puerto, pero como yo no s en que TRIAC pin
ao est, lo dej como tal, pero creo que podra escribir por ejemplo P0_1 = 1.
No soy un programador de C, pero por qu no intenta algo como esto y ver lo que
sucede:
/ * ================================================ === * /
void ex0_isr (void) interrumpa 0
{
int DimTime = (75 * oscurecimiento);
delayMicroseconds (DimTime);
P0 = 0 FF;
delayMicroseconds (10); / / Propogationdelay
P0 = 0 00;
}
void msdelay (valor unsigned int) {
unsigned int x, y;
for (x = 0; x <valor, x + +)
para (y = 0; y <1,275; y + +);
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

30/57

1/8/2014

Dimmer-Arduino | Arduino

}
/ * ================================================ === * /
void main (void)
{
/ * ---------------Configurar INT0 (interrupcin externa 0) para generar
una interrupcin en el flanco de bajada de / INT0 (P3.2).
Habilitar la interrupcin EX0 y luego habilitar el
indicador de interrupcin
mundial. ---------------- * /
IT0 = 1; / / Configurar interrumpa 0 para el borde que cae sobre / INT0 (P3.2)
EX0 = 1; / / Habilitar la interrupcin EX0
EA = 1; / / Habilitar Global Interrupt Flag
P0 = 0 00; / / Todos los pines de PORT0 declarada como salida
/ * ---------------Esperar
siempre. ---------------- * /
while ( 1)
{
for (i = 5; i <128; i + +) {
atenuacin = i;
msdelay (10);
}
}
/ * ================================================ === * /
En los programas en C que usted no puede estar seguro de retraso, porque depende de
compilador cmo optimizar los bucles, tan pronto como se realizan cambios en las
opciones de los cambios de retardo.
usted tendr que utilizar temporizadores para hacer retrasos exactas ..... que no temas si
necesidad de u retrasos de ms, nosotros o incluso segundos ...
a continuacin es una funcin de 1 segundo utilizando temporizadores .....
/ / La idea es hacer un retardo de 50 ms y ejecutarlo 20 veces ms 20x50ms = 1000 ms =
1 seg
delay_1s () / / temporizador de 1 seg
{
int d;
for (d = 0, d <= 20, d + +)
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

31/57

1/8/2014

Dimmer-Arduino | Arduino

{
TMOD = 0 01;
TL0 = 0xFD;
TH0 = 0x04B;
TR0 = 1; / / Iniciar el temporizador.
while (TF0 == 0); / / Run hasta TF se convierte en 1
TR0 = 0; Temporizador / / detener
TF0 = 0; / / Restablecer la bandera
}
}

indra
en15 de octubre 2013 a las 19:18 dijo:

Hola, gracias a su paciencia y buena respuesta ... yo tratamos con osciloscopio para
cotejarla con el retardo adecuado .. parece que he puesto los retrasos propios
Ahora he hecho un programa, en el que usuario enviar su nivel deseado (como un
comando de UART, como SET L1, L2 SET etc) .. Su trabajo tambin.
Pero todava tengo un poco de problema, es decir, cuando la carga est en un cierto nivel,
se enciende correctamente hasta que se recibe el comando siguiente UART del usuario.
Durante en algn nivel de la carga de repente parpadea (parpadeo repentino) a nivel alto y
reaparece al mismo nivel .. Esto no est relacionado con mi retraso o periodo, que ocurre
de forma irregular, y muy a menudo. Es a causa de algn problema en mi circuito? Trat
de cambiar todos los valores de la resistencia, pero todava esto sigue ..

Arduino
en16 de octubre 2013 a las 3:13 am dijo:

No creo que se trata de un fallo en el circuito de ao, podra ser picos en PSU
ao. Si comparte cdigo yr conmigo voy a comprobar.
Trate de ejecutar el cdigo que te di y ver cmo se comporta

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

32/57

1/8/2014

Dimmer-Arduino | Arduino

Maha
en08 de noviembre 2013 a las 20:18 dijo:

hola,
He conectado el circuito de dimmer, pero yo sola MOC3020. lo hace adecuado o tengo
que usar 3021?

Arduino
en14 de noviembre 2013 a las 7:14 am dijo:

S u can. Lo ms importante es que el acoplador ptico es la deteccin de uno sin


paso por cero

Mal
en22 de noviembre 2013 a las 20:32 dijo:

Saludos y gracias por compartir. No me queda claro cmo se limita la corriente que va
hacia la puerta del Triac. Es una resistencia de 1K (CA a que MOC3021), lo que permitira
aprox I_G = 215 mA pasar, es decir, -220 + V_R + V_ {TM} + T_ {GT} = 0, donde R = V_R
/ I_G. Tanto los triacs que mencionas tienen una sensibilidad puerta mucho ms bajo que
esto. Es probablemente 10k? Gracias

Arduino
en22 de noviembre 2013 a las 21:03 dijo:

Es cierto que a veces se utilizan los valores ms altos de la resistencia, y creo que
tambin yo veo 68 o 100k. Sin embargo, no hay 220 voltios sobre el triac, ya que est en
serie con la carga. Esto probablemente no es una resistencia muy alta, dependiendo de la
potencia de la carga de modo de clculo ao se acerca para esos momentos el triac est
apagado. El 220 voltios es sin embargo un promedio. Si desea activar el triac cerca del
cruce por cero, los nmeros son diferentes.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

33/57

1/8/2014

Dimmer-Arduino | Arduino

Ms que para iniciar el clculo de que he elegido un diseo existente que conozco
funcion bien. Estoy seguro de que a pesar de una mayor resistencia tambin funcionara.
Puedo intentar una vez lo que podra ser la resistencia mx. Si usted descubre que wld
encantara or.

De Tony
en25 de noviembre 2013 a las 22:44 dijo:

Cul es la carga de corriente mxima de esto? Estoy diseando un control para un


elemento de calefaccin 5500W a 240 VCA (~ 23Amp max) que quiero ser capaz de
ajustarse de 0 V (apagado) a plena potencia (a) a 240VAC. El 240VAC PSU tiene dos
lneas telefnicas a 120VCA 180 grados fuera de fase. Es este el tipo de circuito que
debe utilizarse para esta aplicacin? Tengo que usar diferentes componentes de
corriente con una capacidad superior?

Arduino
en26 de noviembre 2013 a las 7:35 am dijo:

Tony, no soy lo suficientemente competente en 2 o 3 fases de corriente alterna


para responder con seguridad a esta pregunta. En principio este circuito es
adecuado para cualquier carga, siempre y cuando se elige el triac derecha. Usted
dice que tiene 2 lneas de alta tensin de 180 grados fuera de fase, pero si puedo
entender tambin tiene un feed neutro, 3 hilos ir al dispositivo de ao? Si se trata
de slo dos lneas, entonces la nica cosa que cuenta es el hecho de que hay un
cruce por cero. Si usted tiene 3 lneas de lo que es un poco ms complicado, pero
s, en principio, 2 circuitos podra ser la respuesta, sin embargo no tengo
experiencia con eso. Tal vez alguien aqu puede ayudar

Mal
en25 de noviembre 2013 a las 23:18 dijo:

Gracias por su respuesta. Despus de algunas lecturas por fin he entendido los criterios
para elegir el valor de la resistencia de R_G. Cuando se coloca en este circuito, tendr
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

34/57

1/8/2014

Dimmer-Arduino | Arduino

dos efectos principales:


a) Se limitar / Proporcionar la corriente que pasa por la puerta del triac (I_ {GT})
b) Se har que la tensin disminuya cuando el triac est encendido ( V_R)
El valor ms bajo de esta resistencia puede tener (para 220 V AC) es de R = 220 * sqrt (2)
/ I_ {TMS}, donde I_ {} TMS es la mxima corriente permitida en fototriac del
fotoacoplador. Estos son valores de la oleada, por lo que son transitorios y representan un
lmite antes de desmontarlo. Por lo tanto, en su circuito R sera de R = 220 * sqrt (2) / 1 =
311,12 o 330 ohmios, ya I_ del MOC3021 {TMS} = 1A. Esto es consistente con I_ {GM}
que es la corriente de pico puerta de la TIC206. En el esquema se utiliza 1K lo que
limitara la corriente a 311mA.
Este caso "aumento" puede tener lugar slo cuando se recibe un impulso por la fototriac y
es capaz de realizar I_ {GT}, y por supuesto, para un valor de la lnea de 220 * sqrt (2).
Carga entonces se acumulan en la puerta del triac hasta V_ {GT} se acumulan y el triac
se activa.
En el cuadrante I, (V_ {GT} y A1 son ms positivas que A2) para que la carga suficiente
para edificar y V_ {GT} en el triac principal a la abeja alcanzado, el voltaje a travs del
triac debe ser igual V_R + V_ {TM } + V_ {GT}
Por supuesto V_R = I_ {GT} * R. Comnmente, V_ {TM} + V_ {GT} ser tanto representan
aproximadamente 3V (hoja de datos). Al mismo tiempo, la resistencia debe ofrecer
suficiente corriente a la puerta del Triac, digamos que un mnimo de 25 mA (sensibilidad
del Triac), as
V_ {triac} = 330ohms * 1.3 V 25 mA 1.1 V = 10.65V y
V_ {triac} = 1k ohmios * 1.3 V 25 mA 1.1 V = 27.4V (el valor de su circuito)
Cul es la tensin necesaria para activar el triac. Por lo tanto, el ms pequeo de la
resistencia se requiere menos voltaje para encender el triac principal. Lo que sucede
despus es principalmente que hay una cada de tensin en A1 y A2, por lo que la
tensin y la corriente fototriac caer causando estado de apagado (del fototriac). La trada
principal se mantendr interruptor si se respeta la I_H corriente de mantenimiento. Cuando
la corriente de carga est por debajo de I_H, el triac principal se apaga hasta que un
impulso del fotodiodo se emite de nuevo con el fin de polarizar V_ {GT} y construir la carga
requerida en el siguiente ciclo. Q1 y Q3 son los cuadrantes para esta configuracin.
Saludos.

Arduino
en26 de noviembre 2013 a las 7:16 am dijo:

Gracias Mal para clasificar hacia fuera y escribirla claramente. Parece hasta
cierto punto es posible que haya ledo los mismos artculos en que hice y que me
hizo decidirme a usar slo un tratado y repos en el diseo
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

35/57

1/8/2014

Dimmer-Arduino | Arduino

franssenrogier
en26 de noviembre 2013 a las 1:15 am dijo:

Hola,
Soy un programador / usuario arduino novato y estoy tratando de configurar este dimmer
para que la luz se descolora in / out. Me dimmer s configurado correctamente y funciona
perfectamente con el cdigo de seguridad.
Ahora que he estado intentando algunas cosas a m mismo en el cdigo, pero me siguen
dando la "bsqueda de nombre de '" mensaje de error cuando i verifico ella.
Yo slo ajust el bucle del cdigo original de este modo:
void loop () {
int x = 1;
for (int i = 5; i> -1, i = i + x) {
if (i == 128) x = -1;
}
{
atenuacin = i; / / Lnea de mensaje de error de
delay (10);
}
}
Mir el cdigo de error en la web y me enter de que tiene algo que ver con una "i" algo
demasiado o, pero pens que la "i" para la regulacin sigue siendo la misma que la 'i' en
de bucle.

Arduino
en27 de noviembre 2013 a las 2:44 am dijo:

Este error significa que u hacer mltiples declaraciones de i. Donde u hacer esto
no es inmediatamente claro para m, pero su cdigo es un poco extrao. . Dado
que no es inmediatamente claro para m lo que est tratando de achive es difcil
decir lo que hay que cambiar
El problema sin embargo es en el ';' despus de que su 'x = -1' en su sentencia if
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

36/57

1/8/2014

Dimmer-Arduino | Arduino

No debe haber un punto y coma despus de una sentencia if. Debe haber un
punto y coma despus de la accin que se define por corchetes alrededor
Si x = -1 es la accin tras su condicin, no debe haber corchetes alrededor.
Cuando su soporte final debe ir depende de lo que usted est tratando de lograr.
Sin embargo, parece que acaba de agregar al azar una sentencia if sin tener la
estructura de la actual bucle "for" en consideracin.
No estoy seguro de lo que est tratando de lograr, pero eliminando el punto y
coma hace ao error desaparece, pero luego por supuesto pide un punto y coma.
retirar 'x = -1;' en total hace que el error de cdigo de funcionamiento libre.
As, ergo usted ha estructurado su caso, condicin equivocada. Un caso de
condiciones debera tener este aspecto:
Si (condicin) {action;}
Mientras que usted tiene:
Si algo (condicin);
accin existente del bucle FOR

Jos
en27 de noviembre 2013 a las 8:43 am dijo:

Su variable 'i' se declara en un for-loop, por lo que es local para ese bucle, es
decir, no se puede utilizar fuera de ese circuito; el remedio es simple: declare
fuera del bucle, por ejemplo, cuando usted declar 'x' es un buen lugar.
Saludos cordiales,
Jos

Mal
en26 de noviembre 2013 a las 2:55 pm dijo:

Por el contrario, gracias a ti por compartir. Esta fue mi primera vez la publicacin y era
muy servicial. Diseos felices.

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

37/57

1/8/2014

Dimmer-Arduino | Arduino

bigWcharly
en04 de diciembre 2013 a las 9:33 am dijo:

Muchas gracias por compartir esto! Tambin los comentarios y el apoyo que dan son
realmente tiles!
@ Mali, tambin gracias a usted por su detallada explicacin sobre el valor de la
resistencia entre el moc y triac

Si he entendido bien, el valor ms pequeo es mejor,

ya que entonces el voltaje al otro lado del triac es menor y menos energa se disipa?
Existe la posibilidad de que las corrientes transitorias se romper la R de menor valor?
He visto circuitos similares donde tambin aaden una resistencia entre la puerta y la T1
del triac. Le suena familiar a cualquiera? Por qu esto se necesitara? He estado
rompiendo la cabeza de l, pero la nica razn que se me ocurre es que slo es
necesario si la corriente de puerta max es menor que la corriente del terminal mx del
moc? As que por lo general no necesita entonces ... Alguien puede confirmar?
Ahora, que he construido el circuito con R 330 y tambin una resistencia similar entre G y
T1. He notado que cuando conecto el circuito a la red elctrica, la lmpara parpadea y
hasta mi arduino recoge falsas alarmas (yo uso una interrupcin adicional para controlar la
luz con un interruptor). Alguien se dio cuenta de esto tambin? Cmo puedo solucionar
esto? La carga es puramente resistiva (bombilla tradicional).
En espera de su respuesta, muchas gracias de nuevo

Arduino
en04 de diciembre 2013 a las 21:35 dijo:

Gracias bigWcharley
comentario de Mal era til por cierto. Yo, bsicamente, eleg un valor que es
seguro para el MOC y la puerta.
Conozco el circuito te refieres, yo siempre supuse que era conseguir una
definicin ms estricta de la tensin en la puerta coz que tiene un divisor de
tensin, pero no estoy seguro . Youe explicacin podra ser verdad, as
lo que se refiere a la oscilacin, esto slo sucede cuando se agrega que la
resistencia extra?
El parpadeo de la lmpara puede ser causado por el arduino recogiendo falsas
alarmas, pero por qu se recoge stos (es decir, cul es la razn) que no s.
Tal vez alguien ms kmnows

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

38/57

1/8/2014

Dimmer-Arduino | Arduino

aficionado
en06 de enero 2014 a las 22:49 dijo:

Hola,
no entiendo lo que he hecho, pero que funcione.
/ / ------------int AC_LOAD = 3;
int atenuacin = 8;
void setup ()
{
pinMode (AC_LOAD, OUTPUT) ;/ / pin de carga Set AC como salida
attachInterrupt (0, zero_crosss_int, RISING);
pinMode (4, INPUT);
digitalWrite (4, HIGH);
pinMode (5, INPUT);
digitalWrite (5, HIGH);
}
void zero_crosss_int ()
{
int DimTime = (75 * oscurecimiento); / / Para 60Hz => 65
delayMicroseconds (DimTime); Ciclo / / Off
digitalWrite (AC_LOAD, HIGH); De disparo / / triac
delayMicroseconds (10); / / Triac El retardo de propagacin / / (para uso 60Hz 8.33)
digitalWrite (AC_LOAD, LOW); / / Triac Off
}
void loop () {
if (digitalRead (4) == LOW) oscurecimiento + +;
delay (10);
if (digitalRead (5) == LOW) oscurecimiento;
delay (10);
if (atenuacin> 120) oscurecimiento;
if (oscurecimiento <5) oscurecimiento + +;
}
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

39/57

1/8/2014

Dimmer-Arduino | Arduino

/ / ---------------------Gracias por este proyecto, un cordial saludo

Arduino
en07 de enero 2014 a las 5:07 am dijo:

Eso es bueno. Gracias por reaccin ao

scott2512
en17 de enero 2014 a las 20:27 dijo:

Habr alguien capaz de darme una lista de todas las piezas que necesito para construir
esto, por favor?

Arduino
en17 de enero 2014 a las 22:03 dijo:

Scott, estoy un poco sorprendido ya que pareca evidente desde el circuito, pero
tal vez yo no estaba claro:
10k resistor, 1 k, 220R, 30k, 30k
4N25
MOC3021
Puente rectificador
TRIAC como TIC206
LED rojo
Usted podra saltar el LED y hacer la resistencia de 220R una 470 R

Tom
en20 de marzo 2014 a las 1:28 am dijo:
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

40/57

1/8/2014

Dimmer-Arduino | Arduino

Hola,
Gran mensaje. No puedo hacer que funcione, aunque. Creo que mi problema es con la
deteccin de cruce por cero (cuando intento configurar +5 V a Triac manualmente las
luces luz correctamente, as que para este circuito funciona muy bien).
Para el puente rectificador utilizo DF08, es BR adecuado para esto? Como usted ha
mencionado ms arriba, me supuesto utilizo 4N25 junto con dos resistencias de 30k
(230V 60 Hz).
Trat de controlar el puerto serie (debe mostrar '1 'cada interrupcin), y me dieron
resultado slo al enchufar el cable de 230 V y desenchufarlo.
Lo siento por mi pregunta de novato, pero estoy realmente nuevo a la electrnica.
Gracias de antemano por su respuesta,
Tom

Arduino
en20 de marzo 2014 a las 4:22 am dijo:

El dfo8 debera estar bien, pero slo le dou comprobar la disposicin de pines para
ver si es compatible. U puede medir cualquier salida en el pin crissing cero?

Tom
en20 de marzo 2014 a las 4:29 am dijo:

Como mencion antes, cuando trato de medir la produccin de cero pin


cruce consigo 5 V slo cuando estoy enchufando y desenchufando 230V,
de lo contrario no pasa nada. Revis todos los pins montn de veces y
todo parece estar conectado bien. Como puedo ver que est utilizando
doble rectificacin gradual, DF08 es monofsico, importa?
Tal vez debera publicar foto de Circut en placa si no es demasiado para
usted?

Arduino
en20 de marzo 2014 a las 4:46 am dijo:

S, seguir adelante y publicar eso. El shld rectificador ser un puente. Tuve


http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

41/57

1/8/2014

Dimmer-Arduino | Arduino

la impresin de que el DF08 es un puente. Se inserta el camino


correcto? El 4N25 insertado de la manera correcta?

Tom
en20 de marzo 2014 a las 5:00 am dijo:

S, tanto 4N25 y DF08 se colocan en la posicin correcta. Podra decirme qu BR que


utiliz en su caso?
Por favor enveme un correo electrnico, ya que no puedo poner fotos aqu, voy a enviar de
vuelta en respuesta a su correo electrnico.

Arduino
en20 de marzo 2014 a las 5:02 am dijo:

Voy a tener que comprobar. Enviar u email cuando estoy detrs de mi escritorio

Tom
en20 de marzo 2014 a las 24:18 dijo:

Ok, a la espera, gracias!

Arduino
en20 de marzo 2014 a las 24:38 dijo:

He hecho utilizado un DF02

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

42/57

1/8/2014

Dimmer-Arduino | Arduino

Tom
en20 de marzo 2014 a las 24:58 dijo:

DF02 es tambin nica por etapas que he podido ver en la ficha tcnica. Yo acabo de
enviar un correo electrnico

Arduino
en20 de marzo 2014 a las 13:03 dijo:

Tiene que uno y verlo. Es realmente un 4N25? Realmente no puedo distinguir el


nmero

Tom
en20 de marzo 2014 a las 13:08 dijo:

S, esto es 100% 4N25. Tiene LTV 4N25 escrito en l, que creo que es
LTV cdigo de productor (Lite-On)

Arduino
en20 de marzo 2014 a las 13:12 dijo:

Tengo una hoja de datos. No est seguro de lo que la monofsica se referira a ya


que es un rectificador normal de puente. De todos modos, la configuracin parece
bien.
Ha utilizado el programa exactamente como yo siempre que (con INT 0)?
Lo que quiero que hagas es medir el voltaje en el lado primario del optoacoplador.
Si la configuracin es correcta, el software est bien, los cables estn bien,
entonces empiezo a pensar que quizs su 4N25 no est bien.
Despus de hacer la medicin puede cambiarla por otra?

Tom
en20 de marzo 2014 a las 13:29 dijo:

Ok, acabo med lo que est pasando justo despus de BR, y no da


ninguna Votage. Ah es donde sucede la magia - como he mencionado
antes slo cuando enchufo y enchufo el cable 230V consigo algunos
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

43/57

1/8/2014

Dimmer-Arduino | Arduino

resultados - cuando lo intent con el multmetro veo que incluso cuando


mostrando 0 cuando conecto o alejar el multmetro cable muestra - 0.00V
por un rato.
De hecho, yo no s cmo es posible porque yo ya cambi DF08 dos
veces. He cambiado de nuevo y ... funciona. El primero que yo slo s que
roto, segundo pareca estar bien!
Voy a terminar el circuito de regulacin y le dejar saber si todo funciona
bien.

Arduino
en20 de marzo 2014 a las 13:31 dijo:

ok parece que tienes el problema existe. Componentes impares, pero he


tenido vienen directamente desde la tienda y ser defectuoso tambin. dao
no puede comprobar

Tom
en20 de marzo 2014 a las 3:05 pm dijo:

S, funciona bien ahora. Tengo otro problema ahora, y tal vez algo en el
cdigo. Estoy tratando de valores diferentes para la regulacin:
Cuando me puse int atenuacin de 25 que parece tener la potencia
mxima, cuando me puse a 23 empieza a parpadear mal. Cuando me
puse de atenuacin a 128 que tiene aproximadamente 1/2 de potencia,
149 es el valor que se ilumina slo un poco.
Parece que los valores propios son entre 25 y 149. Por qu?

Arduino
en20 de marzo 2014 a las 16:41 dijo:

Se refiere a los valores de "i"?


Si es as que me sorprendera. Los valores lmite son tericamente 0 y
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

44/57

1/8/2014

Dimmer-Arduino | Arduino

128 debido a que el software toma 128 pasos de 75 microsegundos (para


50Hz). Esa es una aproximacin, ya que en teora podra ir a 133 (como
133.3 * 75 es 10000US = 100 Hz).
Polonia-donde est-ha 50 Hz de frecuencia por lo que el 75 de nosotros en
el software debe estar en lo cierto. Est seguro que no por casualidad
selecciona 60Hz? En ese caso, en 128 su tiempo sera 8320 nosotros y
por lo tanto la lmpara no sera totalmente apagado.
Si, efectivamente, usted tendra que a 60 Hz y luego a 149 su tiempo sera
9685, que es de hecho casi apagado.
Si, efectivamente, ha seleccionado correctamente 50Hz luego una fuente
de alimentacin "sucia" puede causar estragos ya que puede couse picos
adicionales que provocan la interrupcin.
As que primero me gustara comprobar el software de ao para ver lo que
el tiempo que ha seleccionado.

Assaf Laufer
en09 de abril 2014 a las 14:09 dijo:

Hola Arduino, usted escribi:


El aspecto a considerar es que si usted est construyendo un sistema en el que no est
utilizando una fuente de alimentacin ya hecho, sino ms bien proporcionar su propia
fuente de alimentacin, construido a partir de un transformador y un rectificador, usted
podra considerar recogiendo el 0-travesa desde el lado secundario del transformador.
Es posible conectarse a 4N25 y 1k directamente a BR1 y BR2 as a eliminar?

Arduino
en10 de abril 2014 a las 9:06 am dijo:

Querido Assaf, mi respuesta es "depende"


Usted no puede captar la seal directamente desde BR1 porque hay un
condensador de filtrado sobre el + y -. lneas y, por tanto, simplemente no hay
ninguna seal de zerocrossing izquierda ya
Lo que podra hacer es tomarlo off BR1 y luego usar un diodo antes de alimentar
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

45/57

1/8/2014

Dimmer-Arduino | Arduino

la tensin de los capacitores.


Sin embargo, ya que el puente es un componente barato, decid simplemente
mantenerlo limpio y separar las dos seales por completo.
Confo en que responde a su pregunta

Christoph
en24 de mayo 2014 a las 23:10 dijo:

Estoy interesado en hacer este proyecto. Acabo de recibir una chispa Core y funciona
muy bien. As que ese es mi plan - para adaptar este proyecto para el Ncleo. Mi
pregunta no es sobre eso, aunque (an no). Ms bien, es en lo que respecta a los cables
al dimmer. Mi dimmer actual tiene dos cables. Uno de la red y uno para la carga (y una
tierra). Cmo voy a ser capaz de hacer este proyecto (que parece que necesita dos
cables de la red elctrica y dos fuera)?

Arduino
en30 de mayo 2014 a las 7:12 am dijo:

Christoph no estoy del todo seguro de lo que u estn pidiendo, pero voy a tratar de
responder. No estoy seguro de si te estn diciendo yr dimmer actual tiene dos
cables + un tercero o que realmente tiene 3 cables, pero no es tan importante. De
hecho, un dimmer puede ser visto como un dispositivo que est en serie con la
carga. Por lo tanto slo dos cables son lo suficientemente: uno procedente de la
red elctrica y uno que va a la carga. La carga, por supuesto, tiene otro cable que
va de nuevo a la red elctrica.
El dimmer para el arduino es de hecho el mismo, pero tiene un circuito agregado a
l a ella para detectar el cruce por cero. Eso tiene dos cables de la red elctrica.
La carga como u puede ver tiene un cable que va directamente a la red, pero
simplemente se conecta a travs de la Junta de Coordinacin de este circuito.
Eso aclarar o hace necesidad de u un poco ms de explicacin. No dude en
preguntar

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

46/57

1/8/2014

Dimmer-Arduino | Arduino

Steven obstculo
en25 de mayo 2014 a las 7:07 am dijo:

Me parece que la mitad superior del circuito sera redundante si operaba PWM del triac
a> 480Hz, porque usted estara promediando 8 o ms muestras de la carga en la onda
sinusoidal - el patrn de ritmo estara por encima del nivel de discernimiento de la
persistencia de la visin humana.

Steven obstculo
en26 de mayo 2014 a las 2:32 am dijo:

Rasque eso. Me olvid de que un triac se enciende hasta que la onda pasa por cero de
nuevo, por lo que no puede cambiar de lnea de CA ms rpido que 120 Hz (100 en el
Reino Unido.)

Daniel
en22 de junio 2014 a las 4:39 am dijo:

Hola me gustaria sabre si Tienes el Programa en el Caso si coloco Potencimetro un, prr
Realizar la Regulacin de la ampolleta. Gracias

Arduino
en22 de junio 2014 a las 5:00 pm dijo:

/*
Control de Luz AC
Puesto al da por Robert Twomey
Cambiado de deteccin de cruce por cero para buscar flanco
ascendente en lugar
de caer. (En principio, slo estaba cortando la mitad negativa
de la forma de onda de CA).
Tambin cambi la dim_check () para encender el Triac, dejndola a
hasta de fuera de la zero_cross_detect () a su vez.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

47/57

1/8/2014

Dimmer-Arduino | Arduino

Ryan McLaughlin
El hardware consiste en un Triac para actuar como un interruptor de
A/Cy
un opto-aislador para darnos una referencia de cruce por cero.
El software utiliza dos interrupciones para controlar la atenuacin
de la luz.
La primera es una alarma de proceso para detectar el cero
transversal de
la onda sinusoidal de CA, la segunda est basada en software y
siempre corriendo
a 1/128 de la velocidad de la onda de corriente alterna. Despus de
detectar el cruce por cero
de la prueba de funcionamiento para asegurarse de que ha sido el
nivel de regulacin adecuado
alcanzado y la luz se enciende de onda media, slo proporcionar
corriente parcial y atenuacin nuestra carga de CA, por lo tanto.
Gracias a http://www.andrewkilpatrick.org/blog/?page_id=445
y http://www.hoelscher-hi.de/hendrik/english/dimmer.htm
*/
# Include / / Disponible desde
http://www.arduino.cc/playground/Code/Timer1
volatile int i = 0; / / Variable para utilizar como un contador de
zero_cross booleano voltil = 0; / / Boolean para almacenar un
"interruptor" que nos diga si hemos cruzado cero
int AC_pin = 11; / / Salida Opto Triac
int POT_pin = A0; / / Pot para probar la atenuacin
LED int = 3; / / LED para la prueba
int dim = 0; / / Nivel de atenuacin (0-128) 0 = en, 128 = 0ff
int freqStep = 65; / / Este es el paso de retraso-por-el brillo en
microsegundos.
Se calcula / / basada en la frecuencia de la tensin de alimentacin
(50Hz o 60Hz)
/ / y el nmero de pasos de brillo que desee.
//
/ / El nico complicado parte es que el circuito de chopper chuletas
de la onda de CA dos veces por
/ / ciclo, una vez en el medio positivo y una vez en el medio
negativo. Este meeans
/ / el picado sucede en 120 Hz para un suministro de 60 Hz o 100 Hz
para un suministro de 50Hz.
/ / Para calcular freqStep se divide la longitud de una onda medio
lleno del poder
/ / ciclo (en microsegundos) por el nmero de pasos de brillo.
//
/ / (1,000,000 uS / 120 Hz) / 128 pasos de brillo = 65 uS / brillo
paso
//
/ / 1000000 us / 120 Hz = 8333 uS, longitud de una onda media.
void setup () {/ / Comienza configuracin
pinMode (AC_pin, OUTPUT); / / Establecer el pin como salida Triac
pinMode (LED, OUTPUT); / / Establecer el pin LED como salida
attachInterrupt (0, zero_cross_detect, RISING); / / Conecte un
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

48/57

1/8/2014

Dimmer-Arduino | Arduino

Interupt al Pin 2 (interupt 0) para cruce por cero de deteccin


Timer1.initialize (freqStep); Biblioteca / / Inicializar TimerOne
para la frecuencia que necesitamos
Timer1.attachInterrupt (dim_check, freqStep);
/ / Usar la Biblioteca TimerOne adjuntar una interrupcin
/ / a la funcin que utilizamos para comprobar para ver si es
/ / el momento adecuado para disparar el triac. Esta funcin
/ / Ahora se ejecute cada freqStep en microsegundos.
}
void zero_cross_detect () {
zero_cross = true; / / Establecer el valor booleano true para contar
nuestra funcin de regulacin de que un cruce por cero se ha
producido
i = 0;
digitalWrite (AC_pin, LOW);
}
/ / Activar el TRIAC en el momento oportuno
sin efecto dim_check () {
if (zero_cross == true) {
if (i> = dim) {
digitalWrite (AC_pin, HIGH); / / Enciende la luz
i = 0; / / Paso de tiempo de restauracin del contador
zero_cross = false; / / Restablecer la deteccin de cruce por cero
}
else {
i + +; / / Incrementa contador de paso de tiempo
}
}
}
void loop () {
dim = analogRead (POT_pin) / 8; / / Leer el valor del dimmer desde
potencimetro
analogWrite (LED, dim); / / Escribir el valor dimmer al LED, para la
depuracin
}

Daniel
en23 de junio 2014 en 12:57a.m. dijo:

Muchas muchas gracias, me salvaste la vida

Pratik. R. Bhagat
en30 de junio 2014 a las 9:36 am dijo:

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

49/57

1/8/2014

Dimmer-Arduino | Arduino

Mi circuito est trabajando muy bien.


Estoy usando triac-BTA16 600b para la regulacin bombilla 200watt. La tensin de
alimentacin es de 230 V CA 50Hz. La bombilla slo toma 0.800ma de la corriente y
sigue siendo mi triac se calientan despus de 30 minutos. Qu puede ser la causa?
Estoy utilizando el mismo cdigo que en este foro.
resistencia de puerta = 330R.
MOC3021 Conductor
controlador ATtiny85
cordiales.
PRB

Arduino
en30 de junio 2014 a las 16:17 dijo:

Pratik. Es difcil decir si es que hay algo mal. Pero djame ver primero si entiendo
correcto de u: se qued realmente significa 0.800mA? O 0,800? A = 800 mA
800 mA es todava un anuncio actual de tamao considerable, incluso si no sera
decir 20 voltios sobre el triac que todava es el equivalente de un soldador
pequeo. As que tal vez todo est bien. Es difcil decir qu tan caliente "caliente"
es. La temperatura tambin depende del nivel de atenuacin de la lmpara. U
puede querer intentar ver si hay una diferencia entre la mxima potencia y decir
3/4 de potencia

Pratik
en01 de julio 2014 a las 19:53 dijo:

Hola amigo,
Gracias por tu respuesta.
Extremadamente siento su 0.800Amp es decir, 800 mA.
Temperatura del triac cae entre 50-60 C On-FULL-POWER.
Estoy usando ATTINY85 para controlar el triac que tiene comandos de maestro arduino
usando el protocolo I2C. He preparado un pequeo circuito que consigue instalado en el
interior de la placa del interruptor. As que debido a que la temperatura aumenta, me temo
que en el interior del tablero de interruptor de la temperatura aumentar ms y que puede
daar el triac. Para evitar el dao que utilic max triac amp BTA16-600b. Pens que el
actual 0.800A sera nada a este triac.
Examin que si yo uso MOC3041 zc-conductor del triac permanece warm45-50c. Hay
algn problema en el disparo de triac (en el cdigo anterior)..
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

50/57

1/8/2014

Dimmer-Arduino | Arduino

Qu pasa si he aadido carga inductiva como ventilador de techo i temo que mi triac
conseguir tostado

Por cierto que he aadido varistor en paralelo con el triac. .

Su triac tambin calentando.

Arduino
en02 de julio 2014 a las 1:49 am dijo:

De hecho 800mA hay nada para este triac. Sin embargo, si u no enfran lo que
todava puede llegar a ser muy caliente. No me atrevo a decir si es 50-60 grados
es u usual. Que el 3041 mantiene el enfriador triac es de hecho sorprendente. Es
que cuando ambos estn en full.power? El tiempo puede ser un problema. De
qu tamao son las resistencias u han utilizado para cortar la tensin hacia el
4N25 therhe optocoplw?

pratik Bhagat
en02 de julio 2014 a las 15:09 dijo:

Saludos,
Estoy usando 1 watt resitor 120k 1206 SMD en paralelo. Eso hace 2
vatios y 60k.
Hoy me simultneamente probado CKT triac MOC3041 y con triac con
MOC3021. El triac MOC3041 era poco ms fresco que 3021. Carga fue de
2 ventiladores de mesa. Disparando momento de triac est haciendo ms
clido. Pero an as, funciona bien. He notado un comportamiento starnge
en circ triac MOC3021 es que a valores de atenuacin 115-117 bombilla se
queda en penumbra y de alta de forma continua como un latido del
corazn. Mi ATtiny est funcionando con oscilador interno de 8 MHz y se
calibra tinytuner.
Yo no soy bueno en los temporizadores. Podemos utilizar atattin85 8bit
temporizador difcil para disparar con precisin el triac. Se puede apoyar
con el cdigo.
Tambin podemos detectar la deteccin zerocrossing slo mediante el uso
de un acoplador ptico como PC817 y un diodo.
Saludos,
Pratik bhagat

Arduino
en03 de julio 2014 a las 2:37 am dijo:

Me pregunto si el temporizador del ATtiny es quizs un poco apagado.


http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

51/57

1/8/2014

Dimmer-Arduino | Arduino

Como estoy a punto de dormir contestar ms tarde

Arduino
en03 de julio 2014 a las 24:33 dijo:

Pratik. Slo para asegurarse de que estn en la misma pgina: el 3041


tiene una deteccin zerocross incorporado y el 3021 no lo ha hecho. Es
por ello que en este circuito utilizo el 3021, ya que el usuario determina
cundo se cortar la fase. El 3041 se disparar siempre en el zerocross.
Para propsitos de prueba por supuesto el 3041 cab usarse sino porque
siempre se abrir completamente el triac, no es de extraar que un triac
con un 3021 obtendr un poco warnmer que con un 3041, ya que con la
3021 espero que usted es, de hecho, la regulacin del TRIAC, por lo que
es en realidad 'trabajando duro', mientras que el 3041 el Triac ser activado
o desactivado.
Cuando usted est detectando el zerocross ti mismo-como en este
circuito, el problema es que se trata de no un detector ideal: en lugar de
dar un impulso fuerte exactamente en el zerocrossing, ser ms como una
pendiente que comienza a subir un poco antes del zerocross y va a la baja
despus de la zerocross. La calidad de este pico es en cierta medida
definida por el valor de la resistencia en la lnea de CA: si el valor es
demasiado grande, se obtiene un pico ancho si es demasiado bajo, el
optoacoplador morir.
Respecto al temporizador: Supongo que usted est utilizando el oscilador
interno. Supongo que debe ser lo suficientemente precisa para los tiempos
de la micro y la banda de milisegundo. Para utilizar el temporizador para el
disparo, presumo que desea establecer un temporizador y luego usar la
interrupcin del temporizador para disparar el triac en lugar de dejar que el
ATtiny esperar a travs de un retraso. Eso es definitivamente posible
comprobar aqu durante algn arduino basado es mi artculo sobre
instructables).
con respecto a simplemente usando un acoplador ptico y un diodo para
la deteccin zerocross, pues s y no. He visto a gente hacer esto, pero le
falta un zerocross cada ciclo, es mejor que utilizar un optoacoplador AC
como el LT814 o el IL251 o H11AA11, porque van a reaccionar ante la ola
de pecado completo.
Entonces, para resumir ... que su TRIAC se est caliente es difcil de
evaluar para m, ya que no es infrecuente. pero no podemos evaluar que es
"demasiado caliente"
En lo que respecta a su triac cada vez ms caliente con un moc 3021 que
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

52/57

1/8/2014

Dimmer-Arduino | Arduino

con un moc 3041 que no est ms all de las expectativas.


Con respecto a su parpadeo de la lmpara a un nivel de 115 a 117 (se
comporta ? normal en 120) Me imagino que eso de hecho es un problema
de tiempo y que a ese nivel que usted parece estar ya en el lmite de su
perodo de tiempo, en lugar de eso que sucede en 128 Si no me queda
claro, voy a explicar.: en un seno 50Hz usted tiene 10 ms que hacer toda
la regulacin que desee. El software divide ese perodo en 128 pasos, pero
por supuesto, si la deteccin de su zerocross es un poco fuera bien podra
ser que el nuevo zerocrossing ya est all, la conmutacin del triac ao,
mientras que usted todava tratar de tenerlo fuego. Preferira esperar esto
si la interrupcin est configurado para detectar el flanco descendente en
lugar de la salida (como yo lo puse en mi programa).
Pero tengo los siguientes consejos para que usted acerca de lo que usted
podra intentar:
Trate dos cosas, escoger el que i seasiets para usted primero:
- reducir el valor de su resistencia de 60 k, 40 k hacer y ver lo que hace a
su situacin
- cambiar la deteccin de bordes de la interrupcin de flanco descendente
y quiero saber si el efecto que se ve en 115-117 ahora sucede ms pronto
(digamos a 110) o no
buena suerte

Greg
en18 de julio 2014 a las 16:40 dijo:

Hola a todos .. empec aqu como estoy teniendo problemas con un proyecto de la
estacin de soldadura - Mega Arduino, con termopares sobre el MAX6675, un PID y
PIDautotune bibliotecas y los TRIAC. S que debera soportar la totalidad del proyecto en
alguna parte (Fritzing, Arduino, aqu -??? Me dicen).
Es bastante ambicioso, con 128 64 GLCD, soldador y pistola de aire caliente. No hay
control de temperatura independiente para las dos herramientas, as como el control de
flujo de aire para la pistola de aire caliente.
Todo es realmente notable buena, lo que permite una primera carrera y la integracin de
todos ^ esas cosas ... pero el fuego del TRIAC slo en algunos ciclos de la red elctrica .
OC bipolar EL817 y el puente rectificado ac seconday transformador como interrupcin
para zerocrossing - esto comienza un contador (el perodo de las cuales es la del ltimo
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

53/57

1/8/2014

Dimmer-Arduino | Arduino

perodo, conocido, microsegundos contado () ...) y que el recuento se divide y stos


divisin se cuentan de nuevo para determinar cuando se dispara el respectivo triac. La
pantalla LCD slo se actualiza (no redibujado, slo por escrito a) y los termopares de slo
lectura una vez cada 250 ms.
Justo en la parte superior de este hilo se mencion que el cdigo en el ejemplo dado se
necesitaran alrededor de 10000US ejecutar - que es la duracin de un ciclo medio de la
red a 50Hz. Creo que esa es la ruta de mi problema. Cree usted?
Mi cdigo de Arduino es 27704bytes compilados ... no sera eso significa que se
necesita sobre ... algo nos bucle?, El reloj ATmega 16MHz. lo cierto es, es demasiado a
muchos a seguir el ritmo de la toma de corriente? ! ! ! No me parece bien .. 16 MHz es
mucha ms rpida (un montn de ips) de 10 ms de la mitad del ciclo.
Mi pensamiento es, si el bucle se 10mS a ... loop, entonces eso sera dictar cuando (y si)
un TRIAC se dispara y no el "contador" necesaria para dictar el tiempo que el TRIAC es
"on" para.
el croquis est aqu:
http://www.eightyeight.co.uk/solderstation/solderstation_v209j_ino.html y el esquema est
aqu: http://www.eightyeight.co.uk/solderstation/Solder% 20Station% 20v208k_schem.pdf

pic del "alcance (? oscillogram!) que muestra el pulso de fuego TRIAC sobrepuesto en la
forma de onda al otro lado del LED OC, cae bastante cerca el uno zerocrossing - todo
esto es bueno. Llamada ISR en flanco de bajada, "disparador alcance est en la fuente:
http://www.eightyeight.co.uk/solderstation/solderstation% 20fire% 20en% 2050pc.JPG all
al 50% de potencia, los picos estn bien situadas a medio camino a lo largo del ciclo
medio - pero no todos los medio ciclo tiene uno! Los pulsos de fuego son irregulares por lo
que lo que yo puedo decir, no discernible que repite el modelo - ciertamente nunca dos
veces las mismas formas de onda relativas en el 'mbito de aplicacin.

Y aqu, el 80% de potencia, mismos, bien colocados "fuegos", pero faltan algunos:
http://www.eightyeight.co.uk/solderstation/solderstation% 20fire% 20en% 2080pc.JPG
La proximidad a zerocrossing de los pulsos zerocrossing (alarmas) no es lo que tengo
que resolver todava (en su caso) - tengo que encontrar las espigas faltantes
el esquema no es ideal, ya que he sido torturado (slo un poco litte, es bueno para ser
gratuito) por fritzing - por ejemplo. los puentes rectificadores BR1 y BR3 son slo
"conectores" en el esquema, pero el + se etiqueta (BR2 fue en una versin anterior de una
bomba de aire del motor de corriente continua, ha ido). Y los nmeros de pieza falta o
est mal. por ejemplo MOC3023 y TRIAC BT137. Y R31, al otro lado del LED en los
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

54/57

1/8/2014

Dimmer-Arduino | Arduino

EL817is optoacoplador zerocrossing sin dispositivo - pero una gorra 1nF est montado
como un solo LPF escenario (con el gotero R) para el seno 50Hz - haba un 'joggle'
perfecto en cada zerocrossing donde el sine hara azotar alrededor y causar dos disparos
zerocross. - As que R31 es un condensador de 1 nF - fritzing nuevo partes limitaciones.
Que se ha aadido como un equipamiento adicional y no es la causa de los doodahs
faltan.
Despus de todo este mensaje, mi pregunta es en realidad slo - ser la ausencia de
(quizs el 50%) de los pulsos de fuego-drive TRIAC ser porque el ATmega ha estado
haciendo otras cosas y los echaba de menos? O alguna otra idea?
Si hay ms inters que me hago con mucho gusto ms a publicar esto como un proyecto
... http://www.eightyeight.co.uk/solderstation/solderstation.JPG
Pero no sera de mucho tiempo que no trabaja!
-Gran consejo para los usuarios GLCD: utilizar el disco duro IDE de un PC (RIP) cable
plano IDC y el uso de los Mega Arduino pines digitales a lo largo del borde corto. Slo
requiere que el archivo de configuracin de Arduino es modificado, el archivo de
configuracin de la biblioteca GLCD se comenta en el boceto, hay que nombrar a los
pines DI / O (pines alternativas para que pueda obtener slo una de las filas), pero todo es
bueno desde all .... Esto puede afectar a la velocidad del bucle, aunque tambin, como
algunos de los pins estarn en diferentes puertos que significan las lneas adicionales
compilados que conozco.
Greg

Arduino
en22 de julio 2014 en 12:38a.m. dijo:

Ambicioso proyecto Greg.


Con respecto al circuito ... Encuentro Fritzing horrible para circuito. I ISE sPlan7
Con respecto a su pregunta, difcil de decir. Es difcil obtener una comprensin
completa de software de ao, normalmente si se trata de una interrupcin, un
procesador ocupado debe ser interrumpido.
Asimismo, no puedo imaginar lo que el procesador shld todava estar ocupado con
en un ciclo, pero no en el prximo ciclo.
Si Miro las imgenes de alcance yr, que ha incluido las fotografas con principios
y con fines phasecutting y el problema es similar lo que significa que no es un
problema de tiempo. En lo que a unas cuantas formas de onda pueden mostrar un
patrn, el perdedor de los picos de activacin parece ser bastante aleatorio.
Ahora que ha usado una rectificacin fase sinle que puede causar problemas ao
y tambin su cdigo no es realmente ptima para que su uP hecho podra seguir
siendo hacer las cosas, mientras que la siguiente interrupcin ya est ah.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

55/57

1/8/2014

Dimmer-Arduino | Arduino

Yo dira que comienzan con el uso de un rectificador de doble fase y ver lo que
hace y en la media hora intente optimizar cdigo yr.

Greg
en24 de julio 2014 a las 9:23 am dijo:

muchas gracias por sus pensamientos, creo que me voy a tener que
sacarlo de mi cabeza ronda la manipulacin portuaria para conducir los
pines de salida en sus bits de registro (es que bitbanging ellos - o no del
todo).
rectificador de doble fase? no estoy seguro exaclty qu quiere decir con
eso. Tal vez mi puente rectificador (o su simbologa) en Fritzing te ha
engaado. El aire acondicionado es de onda completa (puente) rectificada,
por lo que el detector zc pone medios ciclos positivos y negativos que van,
que no se diferencian. Creo pulso perdidos son muy al azar (de larga base
de tiempo en 'scope).
Acabo de cortar hoy el boceto de vuelta a desnudar esencial probar slo el
zc y triac disparo del cdigo y ejecutar eso - hizo exactamente lo mismo pulsos perdidos. Pero, cuando yo borrado el digitalWrite (triac_pin, LOW)
del loop () (donde siguieron el conjunto ALTA 3US antes en el caso de las
pruebas ..) y que se mueve y escritura BAJA al zc ISR, cada pulso se
dispara correctamente ... y es una muy buena onda cuadrada que termina
siempre en la prxima zc y se inicia en la variable de acuerdo a la entrada
analgica conjunto olla. Yo slo lo he hecho en un pin de salida - no los
tres a la vez. Yo podra hacer los tres. Adems, me podra enviar micros ()
al monitor de serie para ver cuntos somos nosotros que consiguen a
travs de - problemas con eso: la produccin en serie es muy, muy lento
(incluso a 115200 bps) en comparacin por lo que influye en gran medida
el tiempo de bucle.
Yo slo estoy usando interrupciones para marcar el inicio del ciclo medio
y comenzar simultneamente contando centsimas 's del ciclo medio. El
disparo del triac no funciona por interrupciones-, porque hasta ahora no he
codificado para los tres triacs que cada uno tiene diferentes requisitos de
accionamiento (POWER), seran tres ms interrupciones de
desbordamiento del temporizador.
voy a recodificar un montn, creo.
y voy a tratar sPlan7, no conoc antes y lo necesito!
Gracias de nuevo. Voy a publicar de nuevo aqu cuando hay ms.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

56/57

1/8/2014

Dimmer-Arduino | Arduino

Pens que podra hacer un video de la pulsestart ola cuadrados en


movimiento a lo largo del ciclo de media ac sincronizado perfectamente
con twiddling la olla-i - pero Arduinos conducir los servos y leds y cortinas
en youtube en respuesta a nunchucks Wii y .. bueno, cualquier cosa. . . el
precio del pescado .. son todos mucho ms impresionante. tehe hay un
to utiliza arduino para alimentar a su perro con un telfono eh!!.

http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/

57/57

Anda mungkin juga menyukai