Paso 4: Arduino controlado por dimmer luz: el software
Como comentamos en la página teórica anterior, el software es bastante fácil.
Si usted quiere desarrollar su propio software todo lo que necesitas hacer es:
Espere a que la zerocrossing
Esperar un tiempo entre 0 y 9090 microsegundos (9090 = 10.000-10)
encender de yr TRIAC
Espere aproximadamente 10us (es el tiempo que necesita para asegurarse de que el TRIAC está en)
Apagar año TRIAC (de hecho, quitar sólo el triggersignal para el TRIAC, el TRIAC permanecerá encendido hasta el siguiente zerocrossing)
Esbozar brevemente el flujo del programa que he usado:
(Asegúrese de que leer la nota abajo)
La señal de cero X-ing genera una interrupción.
A 50Hz que interrumpir es cada 10ms o 10.000uS
A 60Hz que interrumpir es cada ms 8,333 o 8333 nos
La rutina de interrupción se enciende entonces el Triac después de un tiempo específico. Ese momento se encuentra en el bucle principal del programa.
Como el programa varía la regulación de completo en pasos de 128 (que es sólo una opción que fue hecha, podrían ser 100 pasos así), a 50 Hz necesitamos los pasos que Estados Unidos 75 y 60 Hz deben ser Estados Unidos 65
Funciona como sigue:
La función de interrupción "zero_crosss_int" se llama cada vez que detecta un cruce por cero, que es 100times por segundo. Su única función es establecer el momento en que el Triac es encendido en el valor de la variable 'atenuación'
En el bucle principal del programa es establecer el valor real de la variable
http://www.inmojo.com http://www.inmojo.com
Acerca del software: teóricamente en el bucle podría dejar variable 'i' empezar de '0'. Sin embargo, desde el momento de la interrupción es un poco de una aproximación con '0' (completamente encendido) podría atornillar hasta el momento un poco. lo mismo pasa con 128 (apagado total) aunque ese parece ser menos crítica. Ya sea '5' o quizás '1' es el límite para su configuración es cuestión de probar, el rango puede ir de por ejemplo 2 a 126 en lugar de 0-128. Si alguien tiene una forma más precisa para establecer el momento de la interrupción estaría encantado de oírlo.
Por supuesto no es necesario trabajar con interrupciones. También es posible mantener el cero pin de travesía para ir a 0 de la interrogación.
Aunque el software funciona con una interrupción para determinar el momento de cero crosssing, todavía no es tan eficiente porque el tiempo (dimtime) tenemos que esperar después de la cero cruzar antes de que el triac se dispara es literalmente 'espera' en la Cruz cero interrumpir la función.
Sería más eficiente para fijar una interrupción de temporizador para disparar en el momento adecuado para que por el momento el arduino puede hacer otra cosa. Este programa puede encontrarse en el paso
NOTA
Permítanme simplemente reiterar la declaración anterior: este programa es una demostración de cómo puede controlar el regulador. NO y eficiente programa que pasa la mayor parte de su espera de tiempo. Por lo tanto, no es el más adecuado combinar con otras tareas del procesador. Si usted necesita un uso más eficiente del programa un timer en vez de retardo