Tutorial: Controlando a potência dissipada de uma lâmpada com Dimmer Shield e Módulo Bluetooth

        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.

Exibições: 5526

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 27 junho 2016 às 23:07
Comentário de André Araújo Kuhn Pereira em 21 junho 2016 às 1:29

Olá pessoal!

O novo Dimmer Shield está pronto!

Acredito que segunda-feira, dia 27/06/2016 estará a venda!

Aguardando as embalagens para postagens no correios.

Segue as fotos do novo Dimmer Shield.

Comentário de André Araújo Kuhn Pereira em 14 setembro 2015 às 22:58

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

Comentário de Nilson ribeiro em 9 setembro 2015 às 0:32
Para controlar um motor ac basta substituir o transistor de potência do shield, talvez por um tipxxx depende da potência do seu motor.
Agora se o motor for trifásico será necessário fazer um sistema totalmente diferente e controlar a frequência que é enviada para o motor, basicamente transformando a energia da rede em contínua e depois transformando ela novamente em alternada com 6 transistores com isso vc consegue alterar a frequência do motor e com isso controlar a velocidade e o torque.
Comentário de André Araújo Kuhn Pereira em 8 maio 2015 às 10:36

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...

Comentário de Carlos em 6 maio 2015 às 23:14

Boa noite, 

Gostaria de saber se posso controlar motor de bomba d'agua com esse sistema?

Obrigado

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço