Em domótica, é interessante poder manipular correntes alternadas para controlar diferentes aparelhos elétricos, como lâmpadas e ventiladores. Um regulador de tensão AC é um módulo que permite variar a potência de uma corrente alternada, que tem a mesma utilização que um transístor em corrente contínua. Ele permite, por exemplo, variar o brilho de uma lâmpada alimentada em 220V ou a velocidade de um ventilador. Veremos como gerir o regulador de tensão AC com um NodeMCU ESP32.
Material
- Computador
- NodeMCU ESP32
- Cabo USB A Macho/Micro B Macho
- AC Light Dimmer (regulador de luminosidade)
Princípio de funcionamento
O regulador de luminosidade AC consiste num TRIAC (equivalente a um transístor CC) e num detector de passagem de fase zero para sincronizar a variação de tensão com a fase da corrente alternada.
Esquema
Quanto ao esquema elétrico, o módulo é ligado ao setor através do bloco terminal AC-IN, e a lâmpada se conecta ao bloco terminal LOAD. Quanto à eletrônica, os pinos se ligam da seguinte forma:
- Vcc no pino 5 ou 3,3V do microcontrolador
- GND na terra GND do microcontrolador
- Z-C no pino 1 (GPIO possíveis 0,1,2,4,5,7,12,13,14,15,16,17,18,19,21,22,23,25,26,27,32,33,34,35,36,39)
- PWM no pino 2 (GPIO possíveis 0,1,2,3,4,5,12,13,14,15,16,17,18,19,21,22,23,25,26,27,32,33 )
Se usar vários reguladores, os pinos Z-C serão todos ligados no mesmo pino do microcontrolador (no nosso caso, o D1). A biblioteca RBDdimmer utiliza alguns pinos em particular dependendo do microcontrolador utilizado. Verifique a documentação da biblioteca para saber quais pinos pode usar.
Atenção: Existem diferentes versões da placa NodeMCU, com diferentes pinouts e labels, que podem por vezes conter erros. Informe-se com o seu fornecedor e verifique a documentação da sua placa.
Código
Antes de programar o seu NodeMCU ESP32, certifique-se de que o gerenciador da placa está instalado na IDE do Arduino. Siga este tutorial para configurar a IDE.
Para utilizar o módulo AC Light Dimmer, usamos a biblioteca RBDdimmer.h. Ela irá gerenciar a sincronização do sinal PWM, que define a potência, com a fase da corrente alternada. Depois de importar a biblioteca e inicializar o módulo, basta escolher o nível de potência entre 0 e 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
O brilho da lâmpada varia de acordo com o valor “power” enviado para o módulo. Vale observar que este módulo funciona com cargas dimerizáveis, e funciona melhor com lâmpadas incandescentes. Eu uso uma lâmpada LED e o escurecimento funciona bem entre 6 e 40. Abaixo de 6, a lâmpada apaga, acima de 40, não percebo a mudança na luminosidade, e a lâmpada também apaga acima de 85.
Aplicações
- Criar uma interface web ou uma aplicação Bluetooth para controle à distância de dispositivos elétricos.