Holas compañero kaki
Ese circuito es similar al que utilicé en un dimmer digital hace un par de años, y funcionaba de mil maravillas. Por lo que veo de tu post, puedo hacerte un par de acotaciones:
En el circuito utilizas el optoacoplador MOC3041, que sirve para encender y apagar cargas en la salida (luces, motores, etc.) ya que genera el disparo del triac en los cruces por cero (zero crossing) de la red electrica. Pero en el caso de un dimmer, se necesita generar el disparo despues de los cruces por cero (ángulo de disparo), cosa que este optoacoplador no te lo permite. Mi recomendación es mantener este circuito, pero cambiando el optoacoplador por el MOC3021 que es similar al que utilizas, pero sin detección de cruce por cero, lo que te permite disparar el triac con ángulos de disparo a voluntad.
Otro punto a considerar es el control por PWM. para controlar una carga alimentada con corriente continua, el PWM es más que util, pero en el caso de un dimmer, o mejor dicho en el control de un triac con alimentación de corriente alterna, el PWM no sirve. Debes tener en cuenta que el triac es un SCR, no es un transistor, así que no trabajará en corte y saturación (on/off) como un transistor bipolar o un mosfet, sino que funcionará por disparo y enganche. El triac comienza a conducir cuando se le suministra un pulso de disparo en su compuerta (gate), y conduce (se engancha) hasta el cruce por cero (se desengancha). Este proceso hay que repetirlo por cada semiciclo de la sinusoide. El tiempo que transcurre entre el cruce por cero y el disparo del triac se le llama "ángulo de disparo", y es en esencia un retardo. Dicho ángulo de disparo puede ser generado perfectamente por un microcontrolador PIC, siempre y cuando el micro se sincronice adecuadamente con los cruces por cero de la red eléctrica.
Bueno, estas son mis acotaciones por el momento. Esperando ser aporte, me despido por hoy.
Saludos a quienes nos leen.