fbpixel
Etiquetas: , ,

Um regulador de tensão AC é um módulo que permite variar a potência de uma corrente alternada. Ele tem a mesma utilização que um transístor em corrente contínua. Permite, por exemplo, fazer variar o brilho de uma lâmpada alimentada em 220V ou a velocidade de um ventilador.

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/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 em corrente contínua) e num detector de passagem por zero para sincronizar a variação de tensão com a fase da corrente alternada.

ac-light-dimmer-module-pinout Utilizar um regulador de tensão AC com Arduino

Esquema

Quanto ao esquema elétrico, o módulo é ligado ao setor através do bloco terminal AC-IN e a lâmpada é ligada ao bloco terminal LOAD. Quanto à eletrônica, os pinos são ligados da seguinte forma:

  • Vcc no pino 5 ou 3,3V do microcontrolador
  • GND na terra GND do microcontrolador
  • Z-C no pino 2
  • PWM no pino 3

Se usar vários reguladores, os pinos Z-C serão todos ligados ao mesmo pino do microcontrolador (no nosso caso, o D2). A biblioteca RBDdimmer utiliza alguns pinos específicos dependendo do microcontrolador utilizado. Verifique a documentação da biblioteca para saber quais pinos podem ser usados.

arduino-uno-ac-dimmer-module_bb Utilizar um regulador de tensão AC com Arduino

Código

Para utilizar o módulo AC Light Dimmer, usamos a biblioteca RBDdimmer.h. A biblioteca irá gerir a sincronização entre o sinal PWM, que define a potência, e a fase da corrente alternada. Depois de importar a biblioteca e inicializar o módulo, só resta escolher o nível de potência entre 0 e 100%.

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

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

//Variables
int power  = 0;

//Objects
dimmerLamp acd(acdPin);

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize 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 ao módulo. Vale notar que este módulo funciona com cargas dimerizáveis, e funciona melhor com lâmpadas incandescentes. Eu uso uma lâmpada LED e a variação funciona bem entre 6% e 40%. Abaixo de 6%, a lâmpada se apaga. Acima de 40%, não percebo alteração no brilho, e a lâmpada se apaga acima de 85%.

arduino-ac-dimmer-module-result Utilizar um regulador de tensão AC com Arduino

Bônus: Gerenciar dois reguladores de tensão AC

Se quiser utilizar um outro regulador de tensão AC ao mesmo tempo, basta ligar o pino Z-C ao pino 2 (no UNO) e o pino PWM ao pino 5 (ou outro pino PWM).

arduino-uno-ac-dimmer-module-x2_bb-1280x749 Utilizar um regulador de tensão AC com Arduino

No código, para gerir dois módulos, é preciso declarar um objeto adicional dimmerLamp inicializando o pino de saída correto.

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

//Constants
#define nbACD 2

//Parameters
const int zeroCrossPin = 2;
const int acdPin[nbACD] ={3,5};
int MIN_POWER[nbACD] ={0,0};
int MAX_POWER[nbACD] ={80,80};
int POWER_STEP[nbACD] ={1,1};

//Variables
int power[nbACD] ={0,0};
dimmerLamp acd[nbACD] ={dimmerLamp(acdPin[0]),dimmerLamp(acdPin[1])};

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
for(int i=0;i<nbACD;i++) acd[i].begin(NORMAL_MODE, ON);
}

void loop(){
  testDimmer();
}

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

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

As duas lâmpadas se acendem e se apagam gradualmente, uma após a outra. Agora já pode controlar todas as lâmpadas da sua casa aplicando este tutorial.

arduino-ac-dimmer-module-result2 Utilizar um regulador de tensão AC com Arduino

Aplicações

  • Controlar a luminosidade de uma sala de acordo com a hora do dia
  • Controlar a velocidade de um ventilador de acordo com a temperatura ambiente

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie