Paso 3: 3 canales dimmer/atenuador: consejos para el software
Aunque puede parecer un poco intimidante para desarrollar software para un dimmer de 3 canales, no es tan difícil como mantener centrada en lo esencial que el software tiene que hacer:
-Espere a que la interrupción de zerocross a suceder.
-Esperar un tiempo antes tiggering el TRIAC
-Disparo del TRIAC
Para los 3 canales que no es mucho diferente, sólo tienes que hacer un seguimiento de 3 variables de tiempo. Usted puede hacer eso con "retrasos" pero eso es algo complicado. Usted puede hacer eso con "micros" y mantener control de las 3 variables de tiempo contra el tiempo transcurrido desde la zerocross. Por último, puede hacerlo con una interrupción de temporizador.
La forma de interrupciones del temporizador se utilizan normalmente si son oscurecimiento de un canal, es configurar la interrupción para el tiempo deseado y cuando la interrupción se produce disparar el TRIAC. Con 3 canales es imposible porque no tienes 3 interrupciones de timer.
Una mejor manera es establecer la interrupción de temporizador para ocurrir para 78uS. Divide el periodo de una frecuencia de red de 50 Hz en pasos de 128 (recordemos lo re son 2 zerocrossings por un periodo de 50 Hz, por lo que en realidad tiene una señal de 100 Hz, así 10 ms para hacer el trabajo antes de la próxima zerocrossing interrupción. 10mS/128 = 78.125uS). Para 60Hz, un valor de 65 sería bueno.
Luego dejas la rutina de servicio de interrupción de timer establece un contador que cuenta en realidad el número de pasos 78uS que han pasado desde que se produjo la interrupción de zerocrossing.
Sus 3 variables de tiempo - cada uno para cada canal - se expresan en un nivel entre 0 y 128. En la comprobación de bucle principal ésos contra el contador de su cronómetro interrumpirán y cuando está en el nivel deseado... encienden el TRIAC correspondiente.
Si no tienes idea cómo establecer interrupciones de contador de tiempo, ver este artículo.