O Dimmer Shield é um dispositivo criado para controlar a potência de determinadas cargas domésticas, por exemplo lâmpadas incandescentes ou fluorescentes dimerizáveis, um ventilador de mesa, entre outros. 

       O princípio de funcionamento desse dispositivo é detectar o ponto zero da onda senoidal da rede elétrica doméstica, e a ativação do Triac. Com uma lógica de programação inserida no microcontrolador Arduino e o Dimmer Shield encaixado, é possível controlar a potência de uma carga.

       Quando é detectado o ponto zero, o pino D2 do Dimmer Shield ficará em nível alto (5 volts). De acordo com a programação, a porta digital D3 (pino D3) do microcontrolador é colocado em nível alto (ativado) para disparar o Triac por um determinado tempo, e desativado (nível baixo – 0 volt) posteriormente. Reativando novamente quando detecta o ponto zero.

       A Figura 1 mostra os pontos zeros da senoide, representada pela “bolinha” verde.

Figura 1 – Onda senoidal com a representação do ponto zero

       A Figura 2 mostra a onda sendo cortada em 50% do meio ciclo, representada pela cor verde, ou seja, será aplicado 50% de potência para a carga.

Figura 2 – Onda senoidal sendo cortada em 50% do meio ciclo

CUIDADO AO MANUSEAR O DIMMER SHIELD NA REDE ELÉTRICA, POIS PODE LEVAR CHOQUE, CUIDADO! Toda vez que for fazer alguma alteração no Dimmer Shield, retire-o da tomada.

       Abaixo está o código utilizado no vídeo tutorial.

//André Kuhn - Automation
//Código para o Dimmer ser controlado pelos botões

int loadR = 3;
volatile int power = 100;

void setup()
{
       pinMode(loadR, OUTPUT);

       //Inicializa interrupção. O número zero indica a porta 2 do Arduino,
       //zero_cross_int é a função que será chamada toda vez que pino 2 do Arduino,
       //"subir" (RISING) de valor de 0 para 1.
       attachInterrupt(0, zero_cross_int, RISING);

       pinMode(4, INPUT);
       pinMode(5, INPUT);
       digitalWrite(4, LOW);
       digitalWrite(5, LOW);
}

void loop()
{

       if(digitalRead(4) == HIGH)
       {
              if(power <= 300)
              {
                     power += 20;
              }
              delay(200);
       }

       if(digitalRead(5) == HIGH)

       {
             if(power >= 20)
             {
                     power -= 20;
             }
             delay(200);
        }
}

void zero_cross_int()
{

       //Cálculo do ângulo de disparo: 60Hz -> 8,33ms (1/2 ciclo)

       //(8333us - 8,33us) / 333 = 25 (aproximadamente)
       int powertime = (25*(333-power));

       if(powertime <= 325)
       {
               digitalWrite(loadR, HIGH);
        }

        else if(powertime >= 8325)
        {
               digitalWrite(loadR, LOW);
         }

         else if((powertime > 0) && (powertime < 8325))
         {
                //Mantém o circuito desligado por powertime microssegundos
                delayMicroseconds(powertime);

                 

                 //Envia sinal ao TRIAC para que ele passe a conduzir
                 digitalWrite(loadR, HIGH);

                 

                 //Espera alguns microssegundos para que o TRIAC perceba o pulso
                 delayMicroseconds(8.33);

                 

                   //Desliga o pulso
                   digitalWrite(loadR, LOW);
           }
}

       Com essa programação é possível ter 15 faixas de potências aplicadas na carga, as faixas são selecionadas pelas duas chaves tácteis inseridas na placa, que são os pinos digitais D4 e D5. 

CUIDADO AO MANUSEAR O DIMMER SHIELD NA REDE ELÉTRICA, POIS PODE LEVAR CHOQUE, CUIDADO! Toda vez que for fazer alguma alteração no Dimmer Shield, retire-o da tomada.

       

       O Vídeo 1 mostra o tutorial.

       Segue abaixo o código para download: Dimmer_Arduino.zipDimmer_Arduino.ino

Exibições: 10653

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Radamés em 5 setembro 2014 às 14:42

uma dica, eu utilizei a biblioteca TimerOne.h como forma alternativa  ao PWM que você implementou com o delayMicroseconds, já que isso é blocking.

Encontrei esse post sobre o dimmer AC utilizando essa lib e foi um sucesso!

http://forum.arduino.cc/index.php?PHPSESSID=f0ofbhbu7p9bga1gj4tli98...

Comentário de André Araújo Kuhn Pereira em 27 agosto 2014 às 15:18

Frank Junior. Eu coloquei sobre o arduino o Ethernet Shield, depois o Dimmer Shield e puxei fios para o acionamento da plaquinha de relê. Cuidado com a potência do ventilador, se for muito alto pode queimar o TRIAC, veja nos comentários abaixo. Eu fiz um vídeo usando um ventilador de 55 Watts de potências, segue o link: Dimmer Shield e Ventilador. Atenciosamente.

Comentário de Frank Junior em 27 agosto 2014 às 14:07

Muito massa André. Show de bola.

Nesse caso tu colocasse um shield por cima do outro né? sem bronca?

Vou comprar o shield dimmer tb pra experimentar com um ventilador q eu tenho em casa, e pegando dados de sensores

Comentário de André Araújo Kuhn Pereira em 27 agosto 2014 às 14:03

Frank Junior, eu fiz um teste e conseguir dimenrizar uma lampada e acionar um relê, pelo ethernet shield, mas não criei página html, ou seja, o acionamento era digitar o endereço do ethernet shield e mais a informação desejada no navegador, por exemplo: "http://192.168.0.177/Diminuir" ou "http://192.168.0.177/Aumentar" ou "http://192.168.0.177/Desligar" ou "http://192.168.0.177/Ligar" para controlar intensidade da lâmpada incandescente, e "http://192.168.0.177/DesligarSom" ou "http://192.168.0.177/LigarSom" para ativar ou desativar o relê. Nessa aplicação usei um Arduino mega 2560. Para facilitar a comunicação criei um aplicativo em android que digite o endereço, mais a informação quando pressiona um botão. A imagem abaixo mostra a aplicação desenvolvida no IDE Eclipse.

Comentário de Frank Junior em 27 agosto 2014 às 10:27

Só uma dúvida...

eu vi nesse vídeo do youtube: https://www.youtube.com/watch?v=TB4ruVVsT9k

que quando um arduino tiver responsável por dimmerizar alguma coisa, não seria bom fazer mais nada pq é um procedimento q meche muito com tempo.
Tudo bem q o shield q ele usou e o código é bem diferente desse. A dúvida é:
Com esse shield aí do post, eu posso usar o arduino pra outras coisas? como por exemplo: acionar reles, pegar dados de sensores e outros módulos...

Comentário de Radamés em 22 agosto 2014 às 18:00

Olá André,

legal o vídeo! eu vi que funciona e funcionou aqui comigo também, mas acho que meu ventilador é mais potente e portanto a corrente RMS é maior, seria legal vocês especificarem isso na página do produto.

Outra dica, os bornes de AC estão muito próximos a placa Arduino, principalmente o LOAD, por alguns milímetros não encosta nos pinos de ISP o que seria um total desastre, 110AC queimando a placa arduino e possivelmente seu computador caso esteja conectado via cabo USB.

Para alguém leigo pode ser muito perigoso, 

abs

ps: fui no labdegarem e comprei outra placa, depois vou comprar outro Triac compatível 

Comentário de André Araújo Kuhn Pereira em 22 agosto 2014 às 17:25

Radamés eu fiz um vídeo utilizando um ventilador com as especificações 127 Volts, 55 Watts, 60 Hz, segue o link: https://www.youtube.com/watch?v=KcdfgjZW108, não sei qual você utilizou, pois no site diz ventilador de mesa. Sobre a troca do produto entre em contato com o pessoal do site. Atensiosamente.

Comentário de Radamés em 21 agosto 2014 às 23:06

Olá, comprei esse shield para controlar uma lâmpada incandescente, os primeiros testes fiz com a lâmpada e funcionou perfeitamente, no entanto quando testei com um ventilador acredito que o triac tenha queimado. Vi no datasheet que a corrente de pico é 25A e a máxima corrente RMS é de 4A, penso que vocês deveriam divulgar isso na página do produto.

Existe alguma possibilidade de trocar o meu shield? obrigado

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço