Neste tutorial iremos utilizar um Dimmer Shield para controlar o brilho da lâmpada pelos dois botões e/ou pelo celular com Sistema Operacional Android.
ATENÇÃO: este projeto utiliza conexão direta à rede elétrica, e não fazer as conexões de forma adequada causa riscos de CHOQUE ELÉTRICO e INCÊNDIO. Só execute este projeto caso você já tenha experiência prévia com instalações elétricas.
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.
Figura 1 - Dimmer Shield para Arduino
O módulo Bluetooth é um dispositivo utilizado para fazer a interface de comunicação entre o celular e o microcontrolador utilizando o protocolo de comunicação serial, ou seja, o celular envia caracter ou sequência de caracteres para o módulo Bluetooth, e este envia para o microcontrolador.
Figura 2 - Módulo Bluetooth
O aplicativo utilizado no Smartphone com Sistema Operacional Android foi o "Bluetooth spp pro", disponível gratuitamente no Play Store. Na Figura 3 mostra o passo-a-passo de pesquisar o aplicativo no Play Store.
Figura 3 - Busca do aplicativo no Play Store e ícone após da instalação
Quando é pressionado o ícone do aplicativo "Bluetooth spp pro", o programa abre e imediatamente procura dispositivos bluetooth disponível. O módulo bluetooth utilizado neste tutorial tem nome de "linvor", selecionamos este dispositivo, irá aparecer a tela de senha na primeira comunicação, a senha padrão é "1234". Existe outros tipos de módulos bluetooth com a senha "000000". Depois pressione Connect. A Figura 4 mostra esses passos.
Figura 4 - Procurando dispositivo bluetooth e conectando
Após a conexão do celular com o módulo bluetooth, vai aparecerá a tela principal do programa. Clicando no botão CMD line mode, irá aparecer a tela para enviar caracteres ou sequências de caracteres, ou seja, digite um caractere e pressione Enviar. E no botão Keyboard mode irá aparecer a tela com 12 botões, chamados de "ClickMe", para alterar o nome do botão pressionamos o ícone de configuração, na própria tela, e selecione Buttons set, agora clicamos sobre uns dos botões "ClickMe", para modificar o nome e em "BTN Up" coloque um caractere. A Figura 5 mostra as telas do aplicativo Bluetooth spp pro, da esquerda para a direita: Tela inicial, Tela CMD line mode e Keyboard mode.
Figura 5 - Tela inicial, CMD line mode e Keyboard mode
O código ou algoritmo, está logo abaixo, com os comentários. Copie esse programa e cole na IDE do Arduino, conforme a Figura 6, e pressione upload, para gravar o código no microcontrolador Arduino.
Figura 6 - Pressionando UPLOAD na Arduino IDE
//André Kuhn - Automation
//Código para o Dimmer ser controlado pelos botões e pelo módulo Bluetooth
int load = 3; //Pino digital responsável pelo chaveamento do TRIAC, o Dimmer Shield é o pino digital 3.
volatile int power = 40;
char leitura;
void setup()
{
pinMode(load, OUTPUT); //Declarando o pino digital load (digital 3) como saída
//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); //Declarando o pino digital 4 como entrada
pinMode(5, INPUT); //Declarando o pino digital 5 como entrada
digitalWrite(4, LOW); //Colocando o pino digital 4 em nível baixo (0 volt)
digitalWrite(5, LOW); //Colocando o pino digital 5 em nível baixo (0 volt)
Serial.begin(9600); //Definindo a valocidade da comunicação serial (baud-rate)
}
void loop()
{
//Verificando se há comunicação serial
if(Serial.available())
{
leitura = Serial.read(); //Fazendo a leitura da comunicação serial e armazenando na variável leitura do tipo char
}
//Verificando se o botão do pino digital 4 foi pressionado ou se a variável leitura for "A"
if((digitalRead(4) == HIGH) || (leitura == 'A'))
{
//Se power (porcentagem) for menor que 100, executa
if(power < 100)
{
power += 10; //Faz a soma do power anterior com 10 (incremento de 10)
}
delay(200); //Espera de 200 milisegundos
Serial.print(power); //Impressão na serial o valor de power
Serial.println(" %"); //Impressão na serial o texto " %"
}
//Verificando se o botão do pino digital 5 foi pressionado ou se a variável leitura for "B"
if((digitalRead(5) == HIGH) || (leitura == 'B'))
{
//Se power (porcentagem) for maior que 0, executa
if(power > 0)
{
power -= 10; //Faz a subtração do power anterior com 10 (decremento de 10)
}
delay(200); //Espera de 200 milisegundos
Serial.print(power); //Impressão na serial o valor de power
Serial.println(" %"); //Impressão na serial o texto " %"
}
//Verificando se leitura é igual a "C"
if(leitura == 'C')
{
power = 100; //power recebe valor 100
Serial.print(power); //Impressão na serial o valor de power
Serial.println(" %"); //Impressão na serial o texto " %"
}
//Verificando se leitura é igual a "C"
if(leitura == 'D')
{
power = 0; //power recebe valor 100
Serial.print(power); //Impressão na serial o valor de power
Serial.println(" %"); //Impressão na serial o texto " %"
}
leitura = ' '; //Atribuindo o " " (espaço), na variável leitura
}
//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)
int powertime = (83*(100-power)); //O powertime é o tempo que o TRIAC permanescerá desligado quando é detectado o ponto 0 da senóide
//e varia de 0 a 8300 microsegundos
//Se o powertime for menor ou igual a 300 microsegundos, dar o comando de ligar a lâmpada (carga) - potência total fornecida
if(powertime <= 300)
{
//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 300 microsegundos a 8000 microsegundos
else if((powertime > 300) && (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,33 microssegundos para que o TRIAC perceba o pulso
delayMicroseconds(8.33);
//Desliga o pulso do TRIAC, coloca o pino digital "load" em nível baixo
digitalWrite(load, LOW);
}
}
Link do vídeo: Vídeo no YouTube
Link da venda do Dimmer Shield: Dimmer Shield
Link da venda do Módulo Bluetooth: Módulo Bluetooth
Link dos meus tutoriais: Tutorial com Dimmer Shield
Link do tutorial do LabdeGaragem: Dimmer Shield - LabdeGaragem
Arquivo do código:
dimmer_shield_e_modulo_bluetooth.ino
dimmer_shield_e_modulo_bluetooth.txt
dimmer_shield_e_modulo_bluetooth.zip
ATENÇÃO: este projeto utiliza conexão direta à rede elétrica, e não fazer as conexões de forma adequada causa riscos de CHOQUE ELÉTRICO e INCÊNDIO. Só execute este projeto caso você já tenha experiência prévia com instalações elétricas.
Comentar
Link de venda do novo Dimmer Shield.
http://produto.mercadolivre.com.br/MLB-775276602-dimmer-shield-ardu...
Boa noite Nilson e Carlos!
Se for fazer alteração no Dimmer Shield trocando o TRIAC para outro de maior potência, terá que reforçar as trilhas de entradas e saídas da placa, para suportar mais corrente. O reforço poderá ser utilizando jumps de fio.
As trilhas que mencionei são as trilhas que conecta os bornes (AC e Load) com o Triac.
Não recomendo modificar a placa, por questão de segurança.
Obrigado pelo comentário Nilson!
Att. André Kuhn
Infelizmente não é possível controlar o motor de bomba d'água!
Pois o motor utilizado provavelmente deve ser superior a 55 W de potência.
Eu fiz teste utilizando o Dimmer Shield para controlar o ventilador com as especificação de 127 Volts, 55 Watts e 60 Hz. Segue o link do vídeo: http://labdegaragem.com/profiles/blogs/usando-dimmer-shield-para-co...
Boa noite,
Gostaria de saber se posso controlar motor de bomba d'agua com esse sistema?
Obrigado
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)