fbpixel
Etiquetas: , ,
0
(0)

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.

Fontes

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?