dimmer-modulo-desarrollo

Módulo dimmer con cruce con cero, con Wemos y Fuente integradas.

diagrama pictorico

diagrama dimensiones

Conexión Básica (pictórico)

Archivo Fritzing disponible

diagrama pictorico fritzing

Fotos: Foto 1 Foto 2 Foto 3 Foto 4

Videos de ejemplo:

https://youtube.com/playlist?list=PLodnFftew_0cyu2CQ-WdjRTRBlGxLo3Lw

Bibliotecas (librerías)

Todos los ejemplos utilizan una función simple para hacer el disparo del triac dentro de una interrupción disparada por el detector de cruce por cero:
ICACHE_RAM_ATTR
void zeroCrosssInt()  {
  if(dimming<10 or dimming>120) {
    if(dimming<10)
      digitalWrite(14, HIGH);
    if(dimming>120)
      digitalWrite(14, LOW);
  }
  else {
    delayMicroseconds(75*dimming);
    digitalWrite(14, HIGH);
    delayMicroseconds(10);
    digitalWrite(14, LOW);
  }
}

Si bien existen librerías que se pueden utilizar esta es la forma que mejores resultados nos ha dado (más estable y sin parpadeos) Las librerías son:

https://github.com/RobotDynOfficial/RBDDimmer

Esta biblioteca funciona para Core 2.4, sin embargo no tiene actividad en los últimos años y para las versiones más recientes del Core de ESP (actualmente 3.0.2) requiere agregar: ICACHE_RAM_ATTR

Ya que al correr cualquier ejemplo se activa el watchdog con la descripción "ISR not in IRAM"

https://github.com/fabianoriccardi/dimmable-light

Esta biblioteca funciona bien y la mantienen actualizada pero en algunos puntos de brillo presenta "flicks" o "parpadeos".