Icono del sitio AranaCorp

Uso de un variador AC con el ESP32

En la domótica, es interesante poder manipular la corriente alterna para controlar diferentes aparatos eléctricos como lámparas o ventiladores. El variador de tensión CA es un módulo que permite variar la potencia de una corriente alterna. Tiene el mismo uso que un transistor en corriente continua. Permite variar la luminosidad de una lámpara alimentada con 220V o variar la velocidad de un ventilador, por ejemplo. Vamos a ver cómo gestionar el regulador de tensión de CA con un NodeMCU ESP32.

Material

Principio de funcionamiento

El atenuador de luz de CA consta de un triac (equivalente a un transistor de CC) y un detector de paso por cero de fase para sincronizar la variación de tensión y la fase de la corriente de CA.

Esquema

Según el esquema de cableado, el módulo se conecta a la red a través de la regleta AC-IN y la bombilla se conecta a la regleta LOAD. En la parte electrónica, los pines se conectan de la siguiente manera:

Si estás usando varios accionamientos, los pines Z-C se conectan todos al mismo pin del microcontrolador (en nuestro caso D1). La biblioteca RBDdimmer utiliza algunos pines en particular, dependiendo del microcontrolador utilizado. Consulta la documentación de la biblioteca para ver qué pines puedes utilizar.

Cuidado: Cuando se utiliza una NodeMCU, hay diferentes versiones de estas placas con diferentes pinouts y etiquetas que a veces pueden tener errores. Pregunte a su proveedor y compruebe la documentación de su placa.

Código

Antes de programar tu NodeMCU ESP32, asegúrate de que el gestor de placas está instalado en el IDE de Arduino. Para configurar el IDE, puedes seguir este tutorial.

Para utilizar el módulo AC Light Dimmer, utilizamos la biblioteca RBDdimmer.h. La biblioteca gestionará la sincronización entre la señal PWM, que establece la potencia, y la fase de la corriente alterna. Una vez importada la librería e inicializado el módulo, sólo tenemos que elegir el nivel de potencia entre 0 y 100%.

//Libraries
#include <RBDdimmer.h>//https://github.com/RobotDynOfficial/RBDDimmer

//Parameters
const int zeroCrossPin  = 1;
const int acdPin  = 2;
int MIN_POWER  = 0;
int MAX_POWER  = 80;
int POWER_STEP  = 2;

//Variables
int power  = 0;

//Objects
dimmerLamp acd(acdPin,zeroCrossPin);

void setup(){
//Init Serial USB
Serial.begin(115200);
Serial.println(F("ESP32 System"));
acd.begin(NORMAL_MODE, ON);
}

void loop(){
  testDimmer();
}

void testDimmer(){/* function testDimmer */ 
////Sweep light power to test dimmer
  for(power=MIN_POWER;power<=MAX_POWER;power+=POWER_STEP){
    acd.setPower(power); // setPower(0-100%);
      Serial.print("lampValue -> ");
      Serial.print(acd.getPower());
      Serial.println("%");
    delay(100);
  }

  for(power=MAX_POWER;power>=MIN_POWER;power-=POWER_STEP){
    acd.setPower(power); // setPower(0-100%);
      Serial.print("lampValue -> ");
      Serial.print(acd.getPower());
      Serial.println("%");
    delay(100);
  }
}

Resultado

La luminosidad de la bombilla varía en función del valor de «potencia» enviado al módulo. Es bueno tener en cuenta que este módulo funciona con cargas regulables y funciona mejor con bombillas incandescentes. Yo uso una bombilla LED y la regulación funciona bien entre 6 y 40. Por debajo de 6, la lámpara se apaga, por encima de 6, no veo ningún cambio en la luminosidad y la bombilla se apaga por encima de 85.

Aplicaciones

Fuentes

Salir de la versión móvil