Tutorial para controlar o novo Dimmer Shield pelos botões, utilizando o Arduíno UNO.
ATENÇÃO: Neste projeto utiliza conexão direta à rede elétrica, se for feito ligação de forma inadequada pode causar CHOQUE ELÉTRICO e INCÊNDIO. Só execute este projeto caso você tenha conhecimento com instalações elétricas!
Descrição:
O novo Dimmer Shield é um shield para Arduíno. É utilizado para controlar a potência de aparelhos elétricos domésticos, por exemplo, lâmpada incandescente, lâmpadas fluorescente ou LED dimerizáveis, ventilador de mesa e de teto, liquidificador, entre outros.
Está a venda neste link: http://produto.mercadolivre.com.br/MLB-775276602-dimmer-shield-ardu...;Link da venda
* CUIDADO ao colocar a mão no dissipador e no triac! Pois a temperatura pode chegar acima de 100 °C.
Ligação elétrica:
A ligação elétrica do novo Dimmer Shield é feito da seguinto forma, o VAC indicado na placa será a conexão da tomada e o LOAD é a conexão da carga.
Tomada <=> VAC
Carga <=> LOAD
A figura 2, 3 e 4 mostra o esquema da ligação elétrica.
Seleção do pino digital de disparo do triac:
O novo Dimmer Shield tem a possibilidade de alterar o pino digital de disparo do triac, são os pinos digitais 3, 5 e 6. A alteração é feito por jumper. É necessário modificar no código o pino selecionado. No algoritmo deste tutorial tem o comentário explicando como é feito a alteração. A figura 4 mostra onde é feito a seleção do jumper.
Seleção de pinos dos dois botões:
O novo Dimmer Shield utiliza os pinos analógicos para detectar o pressionamento. O circuito dos botões estão na configuração pull-down, ou seja, quando o botão não está pressionado está em nível baixo, e quando pressionado em nível alto na entrada analógica. É possível alterar a porta analógica que irá detectar o pressionamento do botão, o B0 pode utilizar as portas A0, A1 ou A2 e o B1 as portas A3, A4 ou A5.
B0 <=> A0 ou A1 ou A2
B1 <=> A3 ou A4 ou A5
A Figura 5 mostra onde é feito a alteração dos jumpers.
Código de programação para o Arduino:
Segue o código de programação utilizado neste tutorial. Observar os comentários, para fazer as alterações de acordo com os jumpers na placa. Copiar e colar na IDE do Arduino e depois fazer o upload do código.
//------------------------------inicio do programa---------------------------------
//André Kuhn - Automação
//Código para utilizar o novo Dimmer Shield para ser controlado pelos botões.
//Pino digital responsável pelo chaveamento do TRIAC, o novo Dimmer Shield
//pode utilizar os pinos digitais 3, 5 e 6, é necessário alterar o jumper na
//placa. Para utilizar no antigo Dimmer Shield, o pino é o 3.
int load = 3;
//Porcentagem inicial em 40%, variável com valor da 0 a 100.
volatile int power = 40;
//Declarando os pinos de leitura dos botões B0 e B1 do novo Dimmer Shield, o
//botão B0 podem ser A0,A1 e A2, e o botão B1 as entradas A3, A4 e A5. Lembrar
//da alteração dos jumpers na placa. No antigo Dimmer Shield os pinos dos botões
//são fixos, pino 4 e 5.
int botao_0 = A0, botao_1 = A3;
//Inicializando a função de configuração das portas digitais e analógicas
void setup()
{
//Declarando o pino digital load (digital 3) como saída
pinMode(load, 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);
//Declarando o pino do botão 0 como entrada
pinMode(botao_0, INPUT);
//Declarando o pino do botão 1 como entrada
pinMode(botao_1, INPUT);
//Colocando o pino do botão 0 em nível baixo (0 volt)
digitalWrite(botao_0, LOW);
//Colocando o pino do botão 1 em nível baixo (0 volt)
digitalWrite(botao_1, LOW);
}
//Função responsável por executar a lógica de programação
void loop()
{
//Verificando se o botão 0 foi pressionado
if (digitalRead(botao_0) == HIGH)
{
//Se power (porcentagem) for maior que 0, executa
if (power > 0)
{
//Faz a subtração do power anterior com 10 (decremento de 10)
power = power - 10;
}
delay(200); //Espera de 200 milisegundos
}
//Verificando se o botão 1 foi pressionado
if (digitalRead(botao_1) == HIGH)
{
//Se power (porcentagem) for menor que 100, executa
if (power < 100)
{
//Faz a soma do power anterior com 10 (incremento de 10)
power = power + 10;
}
delay(200); //Espera de 200 milisegundos
}
}
//Função executada quando o Dimmer Shield detecta a passagem por zero da tensão
//alternada (senóide)
void zero_cross_int()
{
//Cálculo do ângulo de disparo: 60Hz -> 8,33ms (1/2 ciclo)
//(8333us - 8,33us) / 100 = 83 (aproximadamente)
//O powertime é o tempo que o TRIAC permanescerá desligado quando é detectado
//o ponto 0 da senóide e varia de 0 a 8300 microsegundos
int powertime = (82 * (100 - power));
//Se o powertime for menor ou igual a 820 microsegundos, dar o comando de
//ligar a lâmpada (carga) - potência total fornecida
if (powertime <= 820)
{
//Liga o pulso do sinal ao TRIAC para que ele passe a conduzir, coloca o
//pino digital "load" em nível alto
digitalWrite(load, HIGH);
}
//Se o powertime for menor ou igual a 8000 microsegundos, dar o comando de
//desligar a lâmpada (carga) - potência zero fornecida
else if (powertime >= 8000)
{
//Desliga o pulso do sinal ao TRIAC para que ele não conduza, coloca o pino
//digital "load" em nível baixo
digitalWrite(load, LOW);
}
//Se o powertime estiver entre 820 microsegundos a 8000 microsegundos
else if ((powertime > 820) && (powertime < 8000))
{
//Mantém o circuito desligado por powertime microssegundos (espera powertime
//microssegundos)
delayMicroseconds(powertime);
//Envia sinal ao TRIAC para que ele passe a conduzir, coloca o pino digital
//"load" em nível alto
digitalWrite(load, HIGH);
//Espera 8 microssegundos para que o TRIAC perceba o pulso
delayMicroseconds(8);
//Desliga o pulso do TRIAC, coloca o pino digital "load" em nível baixo
digitalWrite(load, LOW);
}
}
//------------------------------fim da programa----------------------------------------------
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)