Llevo un par de ratos trabajados sobre el control de ventilos y extractores de alterna. Hasta ahora he podido detectar bien los cruces por cero y controlar una lámpara incandescente (40W). Dejo por aquí los avances.
Componentes
Usamos un H11AA1 para detectar los cruces por cero. La señal genera un pulso que capturamos con la interrupción externa del Arduino. Otros dimmers suelen usar un puente de diodos para tener el pulso tanto en la bajada como en la subida del seno, pero el H11AA1 ya captura el paso en ambas mitades.
Explicado de puta madre aquí.
Para accionar sobre la parte de alterna se utiliza un optoacoplador SIN cruce por cero, el MOC3020 en éste caso. Importante que no sea con detección de cruce, como los MOC304x, por ejemplo. Éstos al recibir la señal de control, esperarían al siguiente cruce por cero para activar el triac, lo que no nos valdría para realizar el control del ángulo de fase. El triac utilizado es un BT139.
Esquemático
Código
Código y demás en el repo de Github