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: 10631

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 André Araújo Kuhn Pereira em 20 fevereiro 2017 às 15:02

Boa tarde Leandro!

Aguardo os novos testes!

Use o código do blog Dimmer Shield: dimmershield.blogspot.com.

Melhor testar com o código deste link: https://dimmershield.blogspot.com.br/2016/06/dimmer-shield-controle...

Abraço.

Att.

André Kuhn.

Comentário de Leandro Chamiso em 20 fevereiro 2017 às 14:46

Boa tarde Andre. Vou fazer novos testes, usando o seu programa puro para verificar se o que eu inclui não está gerando tal interferência.

Comentário de André Araújo Kuhn Pereira em 17 fevereiro 2017 às 20:55

Boa noite Leandro!

Conseguiu resolver?

Comentário de André Araújo Kuhn Pereira em 15 fevereiro 2017 às 17:21

Boa tarde Leandro!

O código é o que está no meu blog: dimmershield.blogspot.com?

Controlando pelo botão?

As pequenas piscadas de lâmpadas, quando não é problema de código, pode ser os seguintes problemas:

  • Ruídos de certas cargas elétricas na rede que modifica o sinal da tensão e corrente quando ligados ou desligados, e o Dimmer Shield não sincroniza o ponto de zero da senoide de tensão.
  • O Arduino não sincronizar o modo de interrupção.
  • Problema no circuito do driver da lâmpada de LED.
  • O circuito SNUBBER (capacitor e o maior resistor) da placa Dimmer Shield interferir no funcionamento do driver da Lâmpada de LED.

As pequenas piscadas são intermitente? Ou de vez em quando acontece? Você fez um teste com outro Arduino? Testou com outra lâmpada LED ou um incandescente? 

Comentário de Leandro Chamiso em 15 fevereiro 2017 às 8:17

Bom dia André. O código que estou usando é este que está postado no seu tutorial

Comentário de André Araújo Kuhn Pereira em 15 fevereiro 2017 às 8:07

Bom dia Leandro!

Sobre o problema da lâmpada dar pequena piscadas, tem que ver o código.

Você usou o modo de interrupção (attachinterrupt) para controlar os pulsos?

Ou colocou um IF no programa principal (void loop) para executar o controle dos pulsos quando a senoide da rede passa por zero?

Tem como postar o código para analisar?

Quando você manda o controle em zero, a lâmpada desliga totalmente?

Ou o problema é quando vai diminuindo pelo botão?

Pois algumas lâmpadas de LED tem em seu circuito que é possível acender com pouca tensão e corrente, ou seja, o circuito SNUBBER (maior resistor e capacitor da placa) que tem no novo Dimmer Shield "deixa" passar um pouco a alimentação, este circuito foi inserido para proteger o TRIAC quando utiliza cargas indutivas.

Então, se for usar somente esta lâmpada, pode fazer um corte no maior resistor da placa do Dimmer Shield, para tirar o circuito SNUBBER, tornando possível a lâmpada LED apagar totalmente.

Mas antes de fazer isso, me mande o código! 

Obrigado!

Att.

André Kuhn.

Comentário de Leandro Chamiso em 13 fevereiro 2017 às 16:12

Boa tarde André. Comprei seu shield e venho testando a algum tempo.... aqui na minha região a rede é 220V/60hz acredito que a mesma que a sua. Tenho tido problemas em ligar lâmpadas pois elas ficam dando pequenas piscadas e não chegam a desligar totalmente quando diminuo pelos botões. Atualmente estou testando com uma lampada LED dimmerizável, mas este problema persiste.... poderia dar um help 

Comentário de André Araújo Kuhn Pereira em 12 julho 2016 às 17:05

Tem muito tutorial no youtube! Eu achei muito simples e prático!

Comentário de Leandro Chamiso em 12 julho 2016 às 16:59

O app inventor eu nunca utilizei, vou dar uma olhada tbm

Comentário de André Araújo Kuhn Pereira em 12 julho 2016 às 16:33

Entendi Leandro!

Vou dar uma olhada nos dois programas!

Você já desenvolveu aplicativo pelo app inventor? Achei prático e intuitivo!

Poderia criar um sistema de automação com este software!

Coloca um temporizador no aplicativo para ficar solicitando informação ao arduino a cada 5 segundos ou menos, depois trata o retorno da informação.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço