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.zip, Dimmer_Arduino.ino
Comentar
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.
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.
Boa noite Leandro!
Conseguiu resolver?
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:
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?
Bom dia André. O código que estou usando é este que está postado no seu tutorial
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.
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
Tem muito tutorial no youtube! Eu achei muito simples e prático!
O app inventor eu nunca utilizei, vou dar uma olhada tbm
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)