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é mecánico o un relé de estado sólido con un triac ópticamente aislado. Se convierte en un poco más complejo si se quiere regular una lámpara de CA de la red con un arduino: simplemente limitando la corriente a través un triac no es realmente posible debido a la gran potencia del triac entonces tendrá que disipar, resultando en mucho calor y también no es eficiente desde el punto de vista de uso de la energía. La forma correcta de hacerlo es a través de control de fase:. El Triac entonces está completamente abierto, pero sólo durante una parte de la onda AC sinoid Uno podría un Arduino dejar abierta la Triac para un número 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 regulación 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 través de cero y por lo tanto da un punto definido en el que la onda de seno. Apertura de la Triac para un número de microsegundos después de por lo tanto, el cruce por cero da un nivel predecible de atenuación .
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 fácil de construir: El paso por cero se deriva directamente de la red de corriente alterna rectificada líneas - a través de un acoplador óptico, por supuesto-y le da una señal cada vez que la onda pasa por cero. Debido a que la onda senoidal pasa primero por la rectificación doble por etapas (véase la figura a continuación), la señal de cruce por cero se da sin tener en cuenta si la onda de seno sube por cero o hacia abajo por cero. Esta señal se puede utilizar para dirigir una interrupción 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 través de un circuito de triac opto acoplada probado y comprobado. Para el Triac un TIC206 se puede utilizar, pero un BT136 (un poco más barato) probablemente funcionaría también. Con respecto a la MOC3021: que tiene una tensión directa de aproximadamente 1.2 a 1.4 voltios y una corriente de disparo de 8-15 mA. Un LED tiene una tensión directa de unos 2Volts. Suponiendo una señal de dirección 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 opción decente. En realidad, un LED puede tener una tensión directa ligeramente inferior y una resistencia de 330 Ohm fue encontrado para trabajar también. 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 señal de entrada débil. Como la caída de tensión sobre un LED puede variar dependiendo del color. que es más 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á fácilmente plenamente en la saturación. 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 básico. Simplemente adapté el código ligeramente:
/* AC Voltaje dimmer con Zero detección cruzada Autor: Charith Fernanado http://www.inmojo.com Licencia: Creative Commons Attribution Share-Alike 3.0 License.
Coloque el pasador transversal cero del módulo de Arduino pin de interrupción exter Seleccione la correcta Interrupción # de la siguiente tabla: (Los números de pin son los pines digitales, NO pins físicas: pin digital 2 [INT0] = pin físico 4 y pin digital 3 [INT1] = pin física 5) Pin | de interrupción de # | Plataforma Arduino --------------------------------------2 | 0 | Todo 3 | 1 | Todos 18 | 5 | Arduino Mega Sólo 19 | 4 | Arduino Mega Sólo 20 | 3 | Arduino Mega Sólo 21 | 2 | Arduino Mega Sólo En el pin programa se elige 2 */
int AC_LOAD = 3; / / Salida de pin Opto Triac int oscurecimiento = 128; / / Nivel de atenuación (0-128) 0 = ON, 128 = OFF / * Debido a problemas de tiempo, el uso de '0 'a veces puede hacer que el circuito parpadeo. Es más 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 interrupción para el cruce por cero } / / La función de interrupción debe tener parámetros y devolver nada void zero_crosss_int () / / Función para ser disparado en el cruce por cero para atenuar la luz { Cálculo del ángulo / / cocción: 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 propagación / / (Para uso 60Hz 8,33) digitalWrite (AC_LOAD, LOW); / / Triac Off } void loop () { for (int i = 5; i <= 128; i + +) { atenuación = i; de retardo (10); } }
Diseño de impresión . 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 alimentación ya hecho, sino más bien proporcionar su propia fuente de alimentación, construido a partir de un transformador y un rectificador, usted podría considerar recogiendo el 0-travesía desde el lado secundario del transformador. Un posible circuito podría 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
Conmutación de baja tensión de CA con un microcontrolador
Interruptor de un solo canal Triac AC
Relé de estado sólido 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 hábil
Arduino en16 de diciembre 2012 a las 10:50 am dijo:
Gracias mitad de ellos. Potencia puede seguir siendo la misma. Más que suficiente
Jos en22 de diciembre 2012 a las 11:57 am dijo:
Saludos, tengo un par de preguntas tontas (?); Soy un tipo de matemáticas 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é cómo funciona un triac ... A partir del código Puedo ver que la mitad de un ciclo de toma 10000US y el pin AC_LOAD se establece en alto para 10us en algún momento durante ese ciclo. Mi calculadora muestra que (10000US-10us) / 128 == 78.046875us así ¿no 78us ser una mejor aproximación en lugar de 75us? ¿Por qué se divide el (medio) ciclo en 128 partes? Sería más 'natural' no 256 partes? Mi otra pregunta trata sobre el propio procesador: durante ese retraso puede el procesador aún se interrumpa o se trata efectivamente muerto durante ese período 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 contestación. 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 aproximación, sólo haber elegido un número agradable cerca wether 256 sería un proceso más natural es de hasta al gusto, incluso a 256 la velocidad del cambio es más importante que el tamaño del paso. Para mi propósito pasos 0f 128a parecía satisfactoria, pero no hay problema en tomar pasos más pequeños Gracias por su interés
Jos en28 de febrero 2013 a las 9:58 am dijo:
No hay problema; en la media hora que tomé un enfoque diferent: su solución hace que la espera hasta que el procesador tiene que enviar un pulso a la triac; en mi solicitud de que es una pérdida 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 según el tipo de triac).
Arduino en20 de marzo 2014 a las 12:55 pm dijo:
Esa es, de hecho, una buena solución Josh. El ejemplo que di era sólo eso, un ejemplo. He dado una solución con una interrupción del temporizador, así
Nativepr en03 de marzo 2013 a las 2:54 am dijo:
¿Puedo usar un arduino a dimm 220v para un todavía? 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 destilación. 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 más fáciles para que
Andy en21 de marzo 2013 a las 16:40 dijo:
¿Alguien más ha tenido problemas con el parpadeo / brillantes destellos de la lámpara? Me parece que no puede conseguir una transición 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 alimentación de 5V en un ámbito. La forma de onda es terrible. No es de extrañar 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 alimentación 5volt año. Gracias por publicarlo
Arduinodiy en28 de marzo 2013 a las 22:08 dijo:
Ese es un enfoque interesante. Mi programa era sólo una manera rápida de mostrar el funcionamiento pero si yoy establece una interrupción de temporizador que sería más eficiente. ¿Le importaría compartir su código?
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 eléctrica a través de 150K de resistencia (yo usé 3 * 47K en serie) para controlar directamente la entrada óptica, pero (lo más importante) poner un diodo en paralelo con la entrada óptica, dirección inversa. Así que ahora en el columpio positivo de la vivo, la entrada óptica se "ilumina", y en la oscilación negativa del diodo en paralelo atrapa el voltaje en la entrada óptica de ir más 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 código, cambie: attachInterrupt (0, zero_crosss_int, RISING); a: attachInterrupt (0, zero_crosss_int, CHANGE); Ahora "vacío 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 más bajo que 150K si está utilizando un 4N25. También 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 caídas. Tener buenos fuertes subidas y caídas en los cruces por cero es clave para evitar "parpadeo" o miss-disparo. He adaptado el código se ejecute en interrupción utilizando el temporizador 1, en lugar de poner en un retraso en el código de servicio zero_crosss_int. Aquí está mi código de prueba arduino leonado: Char inByte ;/ / personaje de recepción serie int volátiles 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 atenuación = 10; / / Nivel de atenuación (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 función de interrupción debe tener parámetros y devolver nada vacío zero_crosss_int () / / Función 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 = varían; / / 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 habilitación de interrupción | = (1 <0) {TIMSK1 : / / obtener byte entrante ; inByte = Serial.read () interruptor (inByte) { case 'h': atenuación = oscurecimiento + 5; if (atenuación> 95) { desvaneciendo = 95; } Serial.print ("nivel es"); Serial.println (oscurecimiento); break; case 'l': atenuación = atenuación-5; if (oscurecimiento <10) { atenuación = 10; } Serial.print ("nivel es"); Serial.println (oscurecimiento); romper; caso 'p': Serial.print ("Vary es"); Serial.println (varía); romper; caso '3 ': regulación = 30; romper; caso '6 ': regulación de luz = 60; } } variar = 200 * (100-oscurecimiento) -20; }
Arduino en20 de junio 2013 a las 20:33 dijo:
Gracias por la sugerencia año. 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 señal 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 código no fue fijado derecha. un trozo faltaba en el medio. Aquí está el código de nuevo: Char inByte ;/ / personaje de recepción serie int volátiles variar = 19980; / / 200 = 100 nosotros con una preescala 8, 100 * 200 = 10 ms de interrupción = off ... pero int respuesta = 10us así 19980 int AC_LOAD = 3; / / Salida Opto Triac pin int atenuación = 10; / / Nivel de atenuación (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 interrupción para el cruce por cero Serial.begin (115.200); } / / la función de interrupción debe tener parámetros y devolver nada vacío zero_crosss_int () para ser disparado en el cruce por cero para atenuar la luz / / Función { / / 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 = varían; / / activar el modo de CTC: TCCR1B | = (1 << WGM12); / / bit Set CS11 para 8 prescaler: TCCR1B | = ( ; 1 << CS11) : / / temporizador comparar habilitación de interrupción | = (1 <0) {TIMSK1 : / / obtener byte entrante ; inByte = Serial.read () interruptor (inByte) { case 'h': atenuación = oscurecimiento + 5; if (atenuación> 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': atenuación = atenuación-5; if (oscurecimiento <10) { atenuación = 10; } Serial.print ("nivel es"); Serial.println (oscurecimiento); romper; caso 'p': Serial.print ("Vary es"); Serial.println (varía); romper; caso '3 ': regulación = 30; romper; caso '6 ': regulación de luz = 60; } } variar = 200 * (100-oscurecimiento) -20; }
Jeff en30 de abril 2013 a las 2:11 am dijo:
segundo intento de pegar código también 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 propagación 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 después TIMSK1 texto | = (1 <0)
Jeff en30 de abril 2013 a las 2:37 am dijo:
mensaje al moderador ... Veo otros fragmentos de código removido de la pasta, por lo que incluso mi corrección de código que falta también tiene algo de código que falta. No creo que esta entrada de blog es bueno para el código. Hay texto en la carga de ser filtrado y eliminado por la aplicación web por alguna razón. Envíame un correo electrónico si usted piensa que otros estarían interesados en el código del temporizador. Jeff
Arduino en20 de junio 2013 a las 8:30 pm dijo:
Puede que tengas razón. Ha tenido problemas con él antes.
Arduino en20 de junio 2013 a las 20:37 dijo:
Estoy en el móvil ahora lo que no puede ponerse en contacto con u por correo electrónico, 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 electrónico, ya que no tengo dirección yr
Nikoas en06 de mayo 2013 a las 22:29 dijo:
Tratar de utilizar un temporizador en lugar de los delayMicroseconds pero sigue parpadeando .. Código es como esto: int AC_LOAD = 3; volátil int atenuación = 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 código. Tal vez alguien más lo hará
Arduino en07 de septiembre 2013 a las 22:38 dijo:
parpadeo también puede ser causef si el LED de la entrada le quita demasiado de una caída de tensión. 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 módulo, ¿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 módulo 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. ¿Podría usted los pls compartir el circuito completo esquemática ...? .. Tengo que construir en la India por lo que mi alimentación de CA será 50Hz 230v ...
Arduino en19 de julio 2013 a las 23:13 dijo:
Che que, el circuito completo es en este artículo. 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 diseño de impresión 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 más
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 señal de accionamiento paso a cero, la señal de atenuación en. Lo que entendí desde el programa anterior es, Conecte estos puntos a los pines de microcontrolador, y utilizar el programa anterior. Zero Crossing señal o / p trabajo como de interrupción en el controlador y en base a esto se acciona la señal del atenuador hacia fuera puesto .. ¿Puedo utilizar encima programa directamente con sólo 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 interrupción del microcontrolador annd continuación 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 año 8051 un uso dyou este programa, obtendrá bastante lejos, mediante la adaptación de los pasadores y haciendo que la lengua un poco más pura C. Si consigues que funcione, yo estaría 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 algún código que sé que hace muchos años que escribí algo de código para hacer esto por un 8051, incluso en ensamblador, pero después de 20 años he perdido ese código y no estoy trabajando con más 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 información, a continuación es el código 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 propagación / / (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 interrupción ---------------- * / IT0 = 1; / / Configurar Zero Configurar interrumpa 0 para el borde que cae sobre / INT0 (P3.2) EX0 = 1; / / Habilitar la interrupción 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 + +) { atenuación = 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 código que he escrito para 89V51RD2. recibo la interrupción de Zerocrossing pin de salida ... Pero la carga (bombilla) que estoy conectado no está variando, su siempre ON .. si me quito la señal de entrada triac también mi carga es ON ".. Es TRIAC está bien? Dado que no he tenido 30k (1,2 vatio), conecté 33k (1/2watt) todos los demás o normal resistencia .. aquí está mi retraso y el código 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 propagación P0 = 0X00 ;/ / triac Off }
Arduino en08 de octubre 2013 a las 22:17 dijo:
Indra, si desconecta la entrada al optoacoplador y triac años todavía está en entonces, evidentemente, ya sea triac años ha tenido o optoaislador año tiene un corto. Si ha utilizado un pie ic para optoaislador año le sugiero que tome el chip y vuelve a intentarlo con sólo aplicar la tensión de red de nuevo. Si triac año está apagado, el optoaislador tiene un corto. Si todavía 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 ningún pie ic,, voy a tratar de reemplazar el IC y comprobar ... Tengo una pequeña pregunta: ¿ Tengo que apoyar a cuatro niveles de regulación para mi carga (bombilla). se cambia el retardo entre ON y OFF triac funciona bien? Al igual que a continuación. / / Nivel: 0 P0 = 0 × 01; De disparo / / triac delayMicroseconds (8); / / Triac El retardo de propagación de Nivel: 0 P0 = 0X00 ;/ / triac Off / / Nivel: 1 P0 = 0 × 01; De disparo / / triac delayMicroseconds (10); / / Triac El retardo de propagación de Nivel: 1 P0 = 0X00 ;/ / triac Off / / Nivel: 3 P0 = 0 × 01; De disparo / / triac delayMicroseconds (12); / / Triac El retardo de propagación 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 entendía "retardo desde el zerocrossing" .. ¿Está agregando un cierto retraso en la rutina de interrupción que me pasa por la salida de cruce por cero .. según mi código de abajo, cada vez que tengo la interrupción, en la rutina de interrupción que hago el disparo traic y OFF .. Entonces, ¿dónde agregar el dealy con el fin de tener niveles tenues diffrent vacío ex0_isr (void) interrumpen 0 { P0 = 0 × 01; De disparo / / triac delayMicroseconds (10); / / Triac El retardo de propagación P0 = 0X00 ;/ / triac Off }
Arduino en11 de octubre 2013 a las 9:24 am dijo:
Hola Indra, bueno que identificaron el problema. Sin embargo, asegúrese de que no interrumpía cualquier cortocircuito accidental entre las pistas de la optoaislador. Con el retardo de la zeorcrossing quiero decir que el lightlevel de la lámpara 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 lámpara de yr a media potencia, es necesario encender el TRIAC mitad de ese ciclo, que es de 5 ms después de la zerocrossing. Si quieres lámpara año en el 25% hay que esperar para 7,5 ms después de la zerocrossing antes de que se activa el TRIAC y si quieres lámpara año a la fuerza el 75% que necesita para activar el TRIAC después de 2,5 ms. (técnicamente para el 25% y el 75% se trata de una aproximación como el área bajo la curva no es liniair, pero está lo suficientemente cerca para la ilustración de los proces). Hay que añadir que la demora en su programa antes de disparar el TRIAC. ¿Dónde está exactamente depende de ti, pero lo que he hecho en mi código de Arduino es que en mi rutina de interrupción, 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, podría establecer una más 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 También 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 condición DimTime = 9,000; ELSE IF condición DimTime = 7,000; ELSE IF condición 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 regulación que no es un problema, pero podría 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 más ayuda
Indra en12 de octubre 2013 a las 10:14 am dijo:
Hola, Gracias por la información detallada. Traté como usted ha dicho anteriormente. en lugar de la regulación a nivel constante .. Mi carga (bombilla) parpadea al ritmo que he añadido como DimTime ... este es mi código 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 algún 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 móvil sólo puedo dar una respuesta corta pero, francamente, no entiendo su código. Si 'i' es tenue yr tiempo, entonces ¿cuál es la función de la de 2000, y cuál es la función de la 'k'? Yo no estoy seguro de cómo retraso año es llamado por lo que la función de año parece hacer es simplemente repita el retraso 2000microsecond un número de veces. Si se trata del paso por cero que llama a esto, entonces tal vez la primera vez que nosotros bien, pero después de eso no hay una relación adecuada con el cruce por cero más y usted incluso pasar a la siguiente fase del ciclo. A mí me parece que J y K no tienen ninguna función 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 código-lamento decirlo-es completamente erróneo, hará TRIAC año 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 había sugerido reemplacé con 220ohm 440ohm y 1kohm, pero aún así me sale el parpadeo durante el funcionamiento normal .. pls sugieren cómo 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 continuación es mi código completo / * Dimmer.C - Keil Evaluation Board MCBx51 con 80C51 dispositivo * / # Include # include int regulación = 0; unsigned int j, k; anular delayMicro (unsigned int nosotros) { for (; nosotros> 0; nosotros-) { _nop_ (); / / Si el cristal es cristal de 11 MHz a continuación 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; Cocción / / triac P0 = 0x00; / * ---------------Zero Crossing interrupción ---------------- * / IT0 = 1; / / Configurar Zero Configurar interrumpa 0 para el borde que cae sobre / INT0 (P3.2) EX0 = 1; / / Habilitar la interrupción 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
{ atenuación = 380; / / Nivel 1 delay (9999); atenuación = 450; / / Nivel 2 delay (9999); atenuación = 500; / / Nivel 3 delay (9999); atenuación = 550; / / Nivel 4 delay (9999); } }
Arduino en14 de octubre 2013 a las 23:24 dijo:
Hola Indra, gracias por su código. Pero para ser sincero, es difícil de decir. Sigo dando un ejemplo de que en la medida de lo que puedo ver es sólo simple y debería trabajar su Drive_Trac rutina parece totalmente innecesario, ya que se puede establecer que en su routne interrupción. Ahora sólo tienes años de interrupción llamada de rutina otra rutina. Su función 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 año está, lo dejé como tal, pero creo que podría 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
30/57
1/8/2014
Dimmer-Arduino | Arduino
} / * ================================================ === * / void main (void) { / * ---------------Configurar INT0 (interrupción externa 0) para generar una interrupción en el flanco de bajada de / INT0 (P3.2). Habilitar la interrupción EX0 y luego habilitar el indicador de interrupción mundial. ---------------- * / IT0 = 1; / / Configurar interrumpa 0 para el borde que cae sobre / INT0 (P3.2) EX0 = 1; / / Habilitar la interrupción 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 + +) { atenuación = i; msdelay (10); } } / * ================================================ === * / En los programas en C que usted no puede estar seguro de retraso, porque depende de compilador cómo 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 continuación es una función de 1 segundo utilizando temporizadores ..... / / La idea es hacer un retardo de 50 ms y ejecutarlo 20 veces más 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 también. Pero todavía 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 algún 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 algún problema en mi circuito? Traté de cambiar todos los valores de la resistencia, pero todavía 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 año, podría ser picos en PSU año. Si comparte código yr conmigo voy a comprobar. Trate de ejecutar el código que te di y ver cómo 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 solía MOC3020. lo hace adecuado o tengo que usar 3021?
Arduino en14 de noviembre 2013 a las 7:14 am dijo:
Sí u can. Lo más importante es que el acoplador óptico es la detección 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 cómo se limita la corriente que va hacia la puerta del Triac. Es una resistencia de 1K (CA a que MOC3021), lo que permitiría 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 más 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 más altos de la resistencia, y creo que también 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 cálculo año 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 números son diferentes. http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
33/57
1/8/2014
Dimmer-Arduino | Arduino
Más que para iniciar el cálculo de que he elegido un diseño existente que conozco funcionó bien. Estoy seguro de que a pesar de una mayor resistencia también funcionaría. Puedo intentar una vez lo que podría ser la resistencia máx. Si usted descubre que wld encantaría oír.
De Tony en25 de noviembre 2013 a las 22:44 dijo:
¿Cuál es la carga de corriente máxima de esto? Estoy diseñando un control para un elemento de calefacción 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 líneas telefónicas a 120VCA 180 grados fuera de fase. ¿Es este el tipo de circuito que debe utilizarse para esta aplicación? ¿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 líneas de alta tensión de 180 grados fuera de fase, pero si puedo entender también tiene un feed neutro, 3 hilos ir al dispositivo de año? Si se trata de sólo dos líneas, entonces la única cosa que cuenta es el hecho de que hay un cruce por cero. Si usted tiene 3 líneas de lo que es un poco más complicado, pero sí, en principio, 2 circuitos podría 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. Después 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 tensión disminuya cuando el triac está encendido ( V_R) El valor más bajo de esta resistencia puede tener (para 220 V AC) es de R = 220 * sqrt (2) / I_ {TMS}, donde I_ {} TMS es la máxima corriente permitida en fototriac del fotoacoplador. Estos son valores de la oleada, por lo que son transitorios y representan un límite antes de desmontarlo. Por lo tanto, en su circuito R sería 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 limitaría la corriente a 311mA. Este caso "aumento" puede tener lugar sólo cuando se recibe un impulso por la fototriac y es capaz de realizar I_ {GT}, y por supuesto, para un valor de la línea 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 más positivas que A2) para que la carga suficiente para edificar y V_ {GT} en el triac principal a la abeja alcanzado, el voltaje a través del triac debe ser igual V_R + V_ {TM } + V_ {GT} Por supuesto V_R = I_ {GT} * R. Comúnmente, 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 mínimo 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) ¿Cuál es la tensión necesaria para activar el triac. Por lo tanto, el más pequeño de la resistencia se requiere menos voltaje para encender el triac principal. Lo que sucede después es principalmente que hay una caída de tensión en A1 y A2, por lo que la tensión y la corriente fototriac caerá causando estado de apagado (del fototriac). La tríada 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 configuración. 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 leído los mismos artículos en que hice y que me hizo decidirme a usar sólo un tratado y reposó en el diseño 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 código de seguridad. Ahora que he estado intentando algunas cosas a mí mismo en el código, pero me siguen dando la "búsqueda de nombre de '" mensaje de error cuando i verifico ella. Yo sólo ajusté el bucle del código original de este modo: void loop () { int x = 1; for (int i = 5; i> -1, i = i + x) { if (i == 128) x = -1; } { atenuación = i; / / Línea de mensaje de error de delay (10); } } Miré el código 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 regulación 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 múltiples declaraciones de i. Donde u hacer esto no es inmediatamente claro para mí, pero su código es un poco extraño. . Dado que no es inmediatamente claro para mí lo que está tratando de achive es difícil decir lo que hay que cambiar El problema sin embargo es en el ';' después 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 después de una sentencia if. Debe haber un punto y coma después de la acción que se define por corchetes alrededor Si x = -1 es la acción tras su condición, 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 consideración. No estoy seguro de lo que está tratando de lograr, pero eliminando el punto y coma hace año error desaparece, pero luego por supuesto pide un punto y coma. retirar 'x = -1;' en total hace que el error de código de funcionamiento libre. Así, ergo usted ha estructurado su caso, condición equivocada. Un caso de condiciones debería tener este aspecto: Si (condición) {action;} Mientras que usted tiene: Si algo (condición); acción 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 publicación y era muy servicial. Diseños 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! También los comentarios y el apoyo que dan son realmente útiles! @ Mali, también gracias a usted por su detallada explicación sobre el valor de la resistencia entre el moc y triac
Si he entendido bien, el valor más pequeño es mejor,
ya que entonces el voltaje al otro lado del triac es menor y menos energía se disipa? ¿Existe la posibilidad de que las corrientes transitorias se romperá la R de menor valor? He visto circuitos similares donde también añaden una resistencia entre la puerta y la T1 del triac. ¿Le suena familiar a cualquiera? ¿Por qué esto se necesitaría? He estado rompiendo la cabeza de él, pero la única razón que se me ocurre es que sólo es necesario si la corriente de puerta max es menor que la corriente del terminal máx del moc? Así que por lo general no necesita entonces ... ¿Alguien puede confirmar? Ahora, que he construido el circuito con R 330 y también una resistencia similar entre G y T1. He notado que cuando conecto el circuito a la red eléctrica, la lámpara parpadea y hasta mi arduino recoge falsas alarmas (yo uso una interrupción adicional para controlar la luz con un interruptor). Alguien se dio cuenta de esto también? ¿Cómo 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, básicamente, elegí un valor que es seguro para el MOC y la puerta. Conozco el circuito te refieres, yo siempre supuse que era conseguir una definición más estricta de la tensión en la puerta coz que tiene un divisor de tensión, pero no estoy seguro . Youe explicación podría ser verdad, así lo que se refiere a la oscilación, ¿esto sólo sucede cuando se agrega que la resistencia extra? El parpadeo de la lámpara puede ser causado por el arduino recogiendo falsas alarmas, pero ¿por qué se recoge éstos (es decir, ¿cuál es la razón) que no sé. Tal vez alguien más 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 atenuación = 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 propagación / / (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 (atenuación> 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 reacción año
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 parecía 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 podría 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 detección 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 más arriba, me supuesto utilizo 4N25 junto con dos resistencias de 30k (230V 60 Hz). Traté de controlar el puerto serie (debe mostrar '1 'cada interrupción), y me dieron resultado sólo al enchufar el cable de 230 V y desenchufarlo. Lo siento por mi pregunta de novato, pero estoy realmente nuevo a la electrónica. Gracias de antemano por su respuesta, Tom
Arduino en20 de marzo 2014 a las 4:22 am dijo:
El dfo8 debería estar bien, pero sólo le dou comprobar la disposición 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 producción de cero pin cruce consigo 5 V sólo cuando estoy enchufando y desenchufando 230V, de lo contrario no pasa nada. Revisé todos los pins montón de veces y todo parece estar conectado bien. Como puedo ver que está utilizando doble rectificación gradual, DF08 es monofásico, ¿importa? Tal vez debería 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 impresión 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 posición correcta. ¿Podría decirme qué BR que utilizó en su caso? Por favor envíeme un correo electrónico, ya que no puedo poner fotos aquí, voy a enviar de vuelta en respuesta a su correo electrónico.
Arduino en20 de marzo 2014 a las 5:02 am dijo:
Voy a tener que comprobar. Enviará u email cuando estoy detrás 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 también única por etapas que he podido ver en la ficha técnica. Yo acabo de enviar un correo electrónico
Arduino en20 de marzo 2014 a las 13:03 dijo:
Tiene que uno y verlo. ¿Es realmente un 4N25? Realmente no puedo distinguir el número
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 código 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 monofásica se referiría a ya que es un rectificador normal de puente. De todos modos, la configuración 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 configuración es correcta, el software está bien, los cables están bien, entonces empiezo a pensar que quizás su 4N25 no está bien. Después de hacer la medición puede cambiarla por otra?
Tom en20 de marzo 2014 a las 13:29 dijo:
Ok, acabo medí lo que está pasando justo después de BR, y no da ninguna Votage. Ahí es donde sucede la magia - como he mencionado antes sólo 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 multímetro veo que incluso cuando mostrando 0 cuando conecto o alejar el multímetro cable muestra - 0.00V por un rato. De hecho, yo no sé cómo es posible porque yo ya cambié DF08 dos veces. He cambiado de nuevo y ... funciona. El primero que yo sólo sé que roto, segundo parecía estar bien! Voy a terminar el circuito de regulación 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 también. daño 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 código. Estoy tratando de valores diferentes para la regulación: Cuando me puse int atenuación de 25 que parece tener la potencia máxima, cuando me puse a 23 empieza a parpadear mal. Cuando me puse de atenuación a 128 que tiene aproximadamente 1/2 de potencia, 149 es el valor que se ilumina sólo 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 sorprendería. Los valores límite son teóricamente 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 aproximación, ya que en teoría podría 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 sería 8320 nosotros y por lo tanto la lámpara no sería totalmente apagado. Si, efectivamente, usted tendría que a 60 Hz y luego a 149 su tiempo sería 9685, que es de hecho casi apagado. Si, efectivamente, ha seleccionado correctamente 50Hz luego una fuente de alimentación "sucia" puede causar estragos ya que puede couse picos adicionales que provocan la interrupción. Así que primero me gustaría comprobar el software de año 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 alimentación ya hecho, sino más bien proporcionar su propia fuente de alimentación, construido a partir de un transformador y un rectificador, usted podría considerar recogiendo el 0-travesía 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 señal directamente desde BR1 porque hay un condensador de filtrado sobre el + y -. líneas y, por tanto, simplemente no hay ninguna señal de zerocrossing izquierda ya Lo que podría 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 tensión de los capacitores. Sin embargo, ya que el puente es un componente barato, decidí simplemente mantenerlo limpio y separar las dos señales por completo. Confío 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 Núcleo. Mi pregunta no es sobre eso, aunque (aún no). Más 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). ¿Cómo voy a ser capaz de hacer este proyecto (que parece que necesita dos cables de la red eléctrica y dos fuera)?
Arduino en30 de mayo 2014 a las 7:12 am dijo:
Christoph no estoy del todo seguro de lo que u están pidiendo, pero voy a tratar de responder. No estoy seguro de si te están 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 sólo dos cables son lo suficientemente: uno procedente de la red eléctrica y uno que va a la carga. La carga, por supuesto, tiene otro cable que va de nuevo a la red eléctrica. 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 eléctrica. La carga como u puede ver tiene un cable que va directamente a la red, pero simplemente se conecta a través de la Junta de Coordinación de este circuito. ¿Eso aclarar o hace necesidad de u un poco más de explicación. No dude en preguntar
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
46/57
1/8/2014
Dimmer-Arduino | Arduino
Steven obstáculo en25 de mayo 2014 a las 7:07 am dijo:
Me parece que la mitad superior del circuito sería redundante si operaba PWM del triac a> 480Hz, porque usted estaría promediando 8 o más muestras de la carga en la onda sinusoidal - el patrón de ritmo estaría por encima del nivel de discernimiento de la persistencia de la visión humana.
Steven obstáculo 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 línea de CA más rápido 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 Potenciómetro un, párr Realizar la Regulación de la ampolleta. Gracias
Arduino en22 de junio 2014 a las 5:00 pm dijo:
/* Control de Luz AC Puesto al día por Robert Twomey Cambiado de detección de cruce por cero para buscar flanco ascendente en lugar de caer. (En principio, sólo estaba cortando la mitad negativa de la forma de onda de CA). También cambió la dim_check () para encender el Triac, dejándola 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 atenuación 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. Después de detectar el cruce por cero de la prueba de funcionamiento para asegurarse de que ha sido el nivel de regulación adecuado alcanzado y la luz se enciende de onda media, sólo proporcionar corriente parcial y atenuación 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 volátil = 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 atenuación LED int = 3; / / LED para la prueba int dim = 0; / / Nivel de atenuación (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 tensión de alimentación (50Hz o 60Hz) / / y el número 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 número 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 configuración 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 detección Timer1.initialize (freqStep); Biblioteca / / Inicializar TimerOne para la frecuencia que necesitamos Timer1.attachInterrupt (dim_check, freqStep); / / Usar la Biblioteca TimerOne adjuntar una interrupción / / a la función que utilizamos para comprobar para ver si es / / el momento adecuado para disparar el triac. Esta función / / Ahora se ejecute cada freqStep en microsegundos. } void zero_cross_detect () { zero_cross = true; / / Establecer el valor booleano true para contar nuestra función de regulación 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 restauración del contador zero_cross = false; / / Restablecer la detección 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 potenciómetro analogWrite (LED, dim); / / Escribir el valor dimmer al LED, para la depuración }
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 regulación bombilla 200watt. La tensión de alimentación es de 230 V CA 50Hz. La bombilla sólo toma 0.800ma de la corriente y sigue siendo mi triac se calientan después de 30 minutos. ¿Qué puede ser la causa? Estoy utilizando el mismo código 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 difícil decir si es que hay algo mal. Pero déjame ver primero si entiendo correcto de u: se quedó realmente significa 0.800mA? O 0,800? A = 800 mA 800 mA es todavía un anuncio actual de tamaño considerable, incluso si no sería decir 20 voltios sobre el triac que todavía es el equivalente de un soldador pequeño. Así que tal vez todo está bien. Es difícil decir qué tan caliente "caliente" es. La temperatura también depende del nivel de atenuación de la lámpara. U puede querer intentar ver si hay una diferencia entre la máxima 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 pequeño 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á más y que puede dañar el triac. Para evitar el daño que utilicé max triac amp BTA16-600b. Pensé que el actual 0.800A sería nada a este triac. Examiné que si yo uso MOC3041 zc-conductor del triac permanece warm45-50c. ¿Hay algún problema en el disparo de triac (en el código anterior).. http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
50/57
1/8/2014
Dimmer-Arduino | Arduino
¿Qué pasa si he añadido carga inductiva como ventilador de techo i temo que mi triac conseguirá tostado
Por cierto que he añadido varistor en paralelo con el triac. .
¿Su triac también 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 enfrían lo que todavía 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 están en full.power? El tiempo puede ser un problema. ¿De qué tamaño son las resistencias u han utilizado para cortar la tensión 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 simultáneamente probado CKT triac MOC3041 y con triac con MOC3021. El triac MOC3041 era poco más fresco que 3021. Carga fue de 2 ventiladores de mesa. Disparando momento de triac está haciendo más cálido. Pero aún así, funciona bien. He notado un comportamiento starnge en circ triac MOC3021 es que a valores de atenuación 115-117 bombilla se queda en penumbra y de alta de forma continua como un latido del corazón. 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 difícil para disparar con precisión el triac. ¿Se puede apoyar con el código. También podemos detectar la detección zerocrossing sólo 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 quizás 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é más tarde
Arduino en03 de julio 2014 a las 24:33 dijo:
Pratik. Sólo para asegurarse de que están en la misma página: el 3041 tiene una detección zerocross incorporado y el 3021 no lo ha hecho. Es por ello que en este circuito utilizo el 3021, ya que el usuario determina cuándo se cortará la fase. El 3041 se disparará siempre en el zerocross. Para propósitos de prueba por supuesto el 3041 cab usarse sino porque siempre se abrirá completamente el triac, no es de extrañar 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 regulación 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á más como una pendiente que comienza a subir un poco antes del zerocross y va a la baja después de la zerocross. La calidad de este pico es en cierta medida definida por el valor de la resistencia en la línea 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 interrupción del temporizador para disparar el triac en lugar de dejar que el ATtiny esperar a través de un retraso. Eso es definitivamente posible comprobar aquí durante algún arduino basado es mi artículo sobre instructables). con respecto a simplemente usando un acoplador óptico y un diodo para la detección 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 difícil 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 más 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á más allá de las expectativas. Con respecto a su parpadeo de la lámpara 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 límite de su período 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 regulación que desee. El software divide ese período en 128 pasos, pero por supuesto, si la detección de su zerocross es un poco fuera bien podría ser que el nuevo zerocrossing ya está allí, la conmutación del triac año, mientras que usted todavía tratar de tenerlo fuego. Preferiría esperar esto si la interrupción 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 podría 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 situación - cambiar la detección de bordes de la interrupción de flanco descendente y quiero saber si el efecto que se ve en 115-117 ahora sucede más 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 estación de soldadura - Mega Arduino, con termopares sobre el MAX6675, un PID y PIDautotune bibliotecas y los TRIAC. Sé que debería 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 integración de todos ^ esas cosas ... pero el fuego del TRIAC sólo en algunos ciclos de la red eléctrica . OC bipolar EL817 y el puente rectificado ac seconday transformador como interrupción para zerocrossing - esto comienza un contador (el período de las cuales es la del último http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
53/57
1/8/2014
Dimmer-Arduino | Arduino
período, conocido, microsegundos contado () ...) y que el recuento se divide y éstos división se cuentan de nuevo para determinar cuando se dispara el respectivo triac. La pantalla LCD sólo se actualiza (no redibujado, sólo por escrito a) y los termopares de sólo lectura una vez cada 250 ms. Justo en la parte superior de este hilo se mencionó que el código en el ejemplo dado se necesitarían alrededor de 10000US ejecutar - que es la duración de un ciclo medio de la red a 50Hz. Creo que esa es la ruta de mi problema. ¿Cree usted? Mi código de Arduino es 27704bytes compilados ... ¿no sería 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 más rápida (un montón de ips) de 10 ms de la mitad del ciclo. Mi pensamiento es, si el bucle se 10mS a ... loop, entonces eso sería 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 están 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 aplicación.
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 todavía (en su caso) - tengo que encontrar las espigas faltantes el esquema no es ideal, ya que he sido torturado (sólo un poco litte, es bueno para ser gratuito) por fritzing - por ejemplo. los puentes rectificadores BR1 y BR3 son sólo "conectores" en el esquema, pero el + se etiqueta (BR2 fue en una versión anterior de una bomba de aire del motor de corriente continua, ha ido). Y los números 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 - había un 'joggle' perfecto en cada zerocrossing donde el sine haría azotar alrededor y causar dos disparos zerocross. - Así que R31 es un condensador de 1 nF - fritzing nuevo partes limitaciones. Que se ha añadido como un equipamiento adicional y no es la causa de los doodahs faltan. Después de todo este mensaje, mi pregunta es en realidad sólo - será la ausencia de (quizás 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 más interés que me hago con mucho gusto más a publicar esto como un proyecto ... http://www.eightyeight.co.uk/solderstation/solderstation.JPG Pero no sería 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. Sólo requiere que el archivo de configuración de Arduino es modificado, el archivo de configuración de la biblioteca GLCD se comenta en el boceto, hay que nombrar a los pines DI / O (pines alternativas para que pueda obtener sólo una de las filas), pero todo es bueno desde allí .... Esto puede afectar a la velocidad del bucle, aunque también, como algunos de los pins estarán en diferentes puertos que significan las líneas 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, difícil de decir. Es difícil obtener una comprensión completa de software de año, normalmente si se trata de una interrupción, un procesador ocupado debe ser interrumpido. Asimismo, no puedo imaginar lo que el procesador shld todavía estar ocupado con en un ciclo, pero no en el próximo ciclo. Si Miro las imágenes de alcance yr, que ha incluido las fotografías 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 patrón, el perdedor de los picos de activación parece ser bastante aleatorio. Ahora que ha usado una rectificación fase sinle que puede causar problemas año y también su código no es realmente óptima para que su uP hecho podría seguir siendo hacer las cosas, mientras que la siguiente interrupción ya está ahí. http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
55/57
1/8/2014
Dimmer-Arduino | Arduino
Yo diría que comienzan con el uso de un rectificador de doble fase y ver lo que hace y en la media hora intente optimizar código 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 manipulación 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 simbología) en Fritzing te ha engañado. 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 sólo el zc y triac disparo del código 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 próxima zc y se inicia en la variable de acuerdo a la entrada analógica conjunto olla. Yo sólo lo he hecho en un pin de salida - no los tres a la vez. Yo podría hacer los tres. Además, me podría enviar micros () al monitor de serie para ver cuántos somos nosotros que consiguen a través de - problemas con eso: la producción en serie es muy, muy lento (incluso a 115200 bps) en comparación por lo que influye en gran medida el tiempo de bucle. Yo sólo estoy usando interrupciones para marcar el inicio del ciclo medio y comenzar simultáneamente contando centésimas '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), serían tres más interrupciones de desbordamiento del temporizador. voy a recodificar un montón, creo. y voy a tratar sPlan7, no conocí antes y lo necesito! Gracias de nuevo. Voy a publicar de nuevo aquí cuando hay más. http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
56/57
1/8/2014
Dimmer-Arduino | Arduino
Pensé que podría 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 más impresionante. tehe hay un tío utiliza arduino para alimentar a su perro con un teléfono eh!!.
http://arduinodiy.wordpress.com/2012/10/19/dimmer-arduino/
57/57