Controle TRIAC com Arduino (Dimmer)

Atualizado 12/11/2013.

Trabalhar com circuito de corrente alternada e arduino não é tão simples assim, porém um pouco de persistência e pesquisa trará resultados interessantes.

Encontrei um projeto com um Optoacoplador MOC3020 que é capaz de executar esta atividade. É importante saber que não é simplesmente reduzir e aumentar a luminosidade ou a velocidade de um motor o circuito precisa controlar o ângulo de disparo do TRIAC (pesquisa como um TRIAC funciona).

A arduino possui uma porta que deve ser utilizada como interrupção para que seja possível utilizar o sinal de um circuito de detecção de passagem pelo zero.

CUIDADO CIRCUITO 127 VOLTS, RISCO DE CHOQUE ELÉTRICO!!!

Circuito Básico

Componentes:
CI MOC3020
TRIAC BTA12-600
CI H11AA1
Resistores 180, 2,4K, 10K, 33K
Capacitor 0,01uF

Vídeo de Resultado:


Vídeo 2

Com este circuito é possível controlar a tensão em cargas de corrente alternada 127 Volts 60Hz com limitação de corrente do TRIAC BTA12-600 que é de 12A . (Ex.: Motores, Lâmpadas, Ventiladores)

Código Arduino:

#include <TimerOne.h>   // inclui biblioteca Timer1

#define triacApin 4 // Define que o Dimmer será comandado pelo pino 4
int frequencia = 60;
int stateTriacA = 0;
int power = 0;  //inicializa variavel que controla potencia na lampada com 0 (lampada apagada)

void setup()
{
Serial.begin(9600);
pinMode(triacApin, OUTPUT);
digitalWrite(triacApin, LOW);
Serial.println("Controle de TRIAC.\r\nDigite o Percentual de Brilho (duas casas) Ex.: 25");
// Initialize the interruption time Timer1
Timer1.initialize(); // Initialize TimerOne library for the freq we need
// Attach the interrupt 0 to pin 2 for the detection of zero crossing (Zero Cross Detection)
attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interrupt to Pin 2 (Interrupt 0) for Zero Cross Detection
}

void loop()
{
int i = 0;
int read_data[2];
while(i<2){
while(Serial.available()){
read_data[i] = Serial.read();
i++;
}
}
power = Concatena_Numeros(read_data[0],read_data[1]);
Serial.println(power);

}

void zero_cross_detect()
{
if(power > 0){
long dimtime = int(map(power,0,100,8000,150));  // calcula o tempo de delay para o disparo do TRIAC 7950,100
Timer1.attachInterrupt(gateTRIAC, dimtime);  //associa a funcao gateTRIAC com Interrupcao do TIMER1
Timer1.start();  // inicia contagem TIMER1
}else{
digitalWrite(triacApin, LOW);   // mantem gate do TRIAC desativado.
Timer1.stop();
}
}

void gateTRIAC ()
{  // trata interrupcao do TIMER1 gerando pulso no gate do TRIAC
digitalWrite(triacApin, HIGH);  // dispara o Triac
delayMicroseconds(5);  // aguarda 5 microsegundos para garantir disparo do TRIAC
digitalWrite(triacApin, LOW);   // desabibilta gate do TRIAC
Timer1.stop();
}

int Concatena_Numeros(int variavel1, int variavel2)
{
int resultado;
resultado = ((variavel1-'0')*10)+(variavel2-'0');
return resultado;
}

Links de Referência:

Fritzing Schema: https://drive.google.com/file/d/0B2AbCxM9Dr_wRlItNFplMzhoOWs/edit?usp=sharing

Biblioteca TimeOne: https://drive.google.com/file/d/0B2AbCxM9Dr_wejNXdUJLemQzTk0/edit?usp=sharing

a) http://arduino.cc/forum/index.php/topic,22512.0.html
b) http://blog.eletronlivre.com.br/2011/02/dimmer-digital-futuristico-com-arduino.html

Dica Importante:
Após tentar utilizar a biblioteca TimerOne mais recente (atualiza) percebi que o circuito não funcionou, está compartilha acima a biblioteca que está funcionando.

128 comentários em “Controle TRIAC com Arduino (Dimmer)

      1. Muito legal seu projeto! Eu quero fazer mais ou menos isso,estou adquirindo os valores de um sensor LDR pela porta analógica do arduino,pego esses valores e utilizo a função map para ascender um led ,com a saída pwm. Só que agora queria fazer com uma lampada AC,mas vi que não é tao facil assim,ja pesquisei bastante e tem que se fazer uma sincronização com a rede,outros falam que não,alguns dize, que o optoacoplador só recebe ligado ou desligado,portanto os valores mediante o pwm não tem muita importância,que o que importa é o angulo de disparo em fim estou muito confundido com O pwm em AC e o Triac. Vc poderia me dar algumas dicas?

      2. Olá, sofri também para entender, o controle não é igual ao LED que trabalha com tensão DC. Quando trabalhamos com AC (alternada) a técnica aqui mostrada controla o angulo de dispado do TRIAC para alterar forma da onda de corrente e por consequência a tensão média na lâmpada. Não conheço outra forma de fazer um dimmer, já pesquisei muito.

    1. Quem precisar controlar mais componentes com potência, pode substituir o MOC pelos PS2505 (1, 2, 3, 4). que tem vários optoacopladores no mesmo DIE…

  1. Parabéns pelo projeto, porém montei e não consegui fazê-lo funcionar, o que a função abaixo faz?
    void ativaTriacA()
    {
    Serial.println(“RA Ativado”);
    stateTriacA = 1;
    while(stateTriacA == 1){
    digitalWrite(triacApin, HIGH);
    delayMicroseconds(frequencia);
    digitalWrite(triacApin, LOW);
    delayMicroseconds(frequencia);
    if(Serial.available()){
    byte read = Serial.read();
    if(read == ‘a’) stateTriacA = 0;
    Serial.println(“RA Desativado”);
    }
    }
    }

    1. Olá,
      Esta função ativa ou desativa o TRIAC através do terminal serial do software do arduino através da letra ‘a’.
      Verifique a conexão do TRIAC de potência pois custei a encontrar esse problema na minha montagem.
      Qual o comportamento do circuito.

  2. Olá efloyola, gostaria de saber ou como ver como vc liga a lampada. Os dois fios livres na frente do triac eu gostaria saber de como conectar. Obrigado

  3. Mto bom o projeto, copiei o código pro meu arduino e montei o circuito, porém quando eu digito “a” a lampada acende de uma vez só e continua acesa e quando eu digito “a” novamente ela apaga. Um abraço.

    1. Olá,
      Me parece que o circuito de detecção de passagem por zero não está legal, quando a letra ‘a’ é ativada o codigo começa a chavear o gatilho do triac para que ele dispare somente no angulo desejado, no caso esse angulo é a intensidade da lâmpada. Voce usou os mesmos componentes do meu esquema?

      1. Olá estou com o mesmo problema da Bruna, eu aqui acabei usando o 4N35 em vez do CI H11AA1 pois não encontrei-o. Será que tenho que mexer nos parâmetros na linha onde está o long dimtime = int(map(power,0,100,8000,150)); abraços

      2. Pode tentar ajustar sim. Pois os valores 8000 à 150 são os ângulos de disparo. Para o circuito que montei estes valores foram os melhores que encontre. Abraço

  4. Esse circuito nãoe stá queimando o 4N35?
    Como medida de proteção, coloque um diodo reversamente polarizado em relação ao LED do optoisolador. O optoisolador tem tensão reversa máxima em torno de 3V. Portanto, no semiciclo negativo a tensão sobre ele é maior do que isso.
    Abs.

    Joao

    1. Olá, o parâmetro input-diode reverse voltage no datasheet é de 6V. A princípio a queda de tensão pelo resistor não ultrapassa. Mas proteção nunca é demais. Abraço.

    1. Olá Marcelo, obrigado. Esse projeto só funciona para corrente alternada. Para controlar corrente contínua é mais fácil, dependendo da tensão e corrente, é possível utilizar MOSFET transistor. No caso do cooler se você precisar somente ligar e desligar pode até utilizar relé ou um transistor menor que suporte a corrente.

      1. Edu, obrigado. Seria para controlar a velocidade do cooler, por isso achei que o triac resolveria. Mas qual MOSFET vc indica ? Abraços.. Marcelo

  5. Edu, a entrada do 4n35 (pino 1 e 2) é em série ou paralelo com circuito ? eu coloquei em pararelo e parece não dar certo, a lâmpara só liga e desliga. É isso mesmo ? Abraços

    1. Olá, é paralelo mesmo, esta parte do circuito serve para detectar a passagem do sinal pelo zero e atuar no código como um sincronismo, verifique a outra ligação AC (com o triac)

  6. Edu, boa tarde!

    Cara eu to precisando fazer um controle de chaveamento AC, 110V, ligado a uma indutância (transformador). Estou tentando utilizar um optoacoplador MOC3020 e um Triac BT139-600.

    Você tem alguma sugestão cara? To tentando a muito tempo. Obrigado!

    1. A princípio este circuito controle uma entrada AC (110V) para uma saída AC controlada, em tese pode ser utilizado com um transformador. Conforme o datasheet do MOC3020 o circuito aqui postado comporta uma carga indutiva. Qual a aplicação do seu circuito?

  7. Olá,

    Adorei o projeto e estou tentando reproduzi-lo. E como não entendo muito de eletroeletrônica tento fazer a reprodução do seu projeto pela imagem. Porém não consigo encontrar na imagem onde está o capacitor (por acaso é a bolinha amarelada?) e vi um resistor a mais na imagem (ou esta embaçado). Por favor, se puder colocar ou me enviar mais imagens do projeto detalhado, ficarei muito grato.

    Obs.: Estou querendo controlar a luminosidade de uma lâmpada através de um potenciômetro.

  8. Bem legal o circuito, quero fazer um parecido pra controlar a temperatura do chuveiro usando um sensor de temperatura, implementando PID no Arduino. A parte de software e Arduino eu sei fazer mas manjo muito pouco sobre alternada… Vc pode me recomendar algum triac que aguente pelo menos 50A@110V (de preferência um pouco mais só pra garantir)? Preciso trocar mais algum componente na parte do circuito que controla o Triac?

  9. Ola Edu, estou doido atras de um código que faz estas funcionalidades, o dimmer eu montei exatamente como o video do Renato Aloi e funciona perfeitamente quando eu carrego o digo sugerido por ele (faz a lampada acender e apagar como um blink gradualmente. Copie e colei o código que você postou, a única diferença foi a saída digital de 3 para 4. Infelizmente não funcionou, nem da sinal de vida, tanto no pino 4 ou 3 alterando o código …mas se eu volto a carregar o programa do tal blink gradual funciona perfeitamente, ou seja, creio não ser problema no dimmer. Faz idéia do que possa ser ?
    Abs

      1. Rodrigo que valores de 0 a 128 que vc mudou para 8 a 126. Não encontro esses parâmetros no código. Você esta usando esse código do edu??

  10. ola pessoal sou agricultor apenas conheço arduino mas tenho uma ideia que segue, bom estamos construindo um silo para secar grãos de milho, ate aqui tudo bem , mas neste silo vamos colocar um exaustor com motor 2cv com rede 220 v que apenas deve ser acionado quando a umidade do ar estiver baixa, penso que poderia ser automatico ou seja quando a umidade do ar estiver alta o sistema apenas controla-se a temperatura interna acionando ar quando necessario ao contrario quando a umidade do ar estiver baixa o sistema secasse o cereal gostaria se alguen entendeu a ideia se pudese me passar um material Grato.

    1. Acho que seu caso é bem mais simples. Você pode comprar um sensor de umidade e uma placa de no dx.com e uma placa de relés pra Arduino. Aí você olha a corrente que o motor puxa e liga quantos relés precisar em paralelo (se for 20A pode usar dois relés de 10A, recomendo deixar uma margem de segurança). No código você faz ele ler o sensor e ligar/desligar o motor, tomando o cuidado de colocar um tempo mínimo de alguns minutos pra evitar de ficar ligando e desligando toda hora.

  11. Ola. JA faz um tempo que estou estudando esse tipo de controle com variação por angulo. Possuo um circuito igual a o seu porém o seu firmaware nao ativa a lampada. Fiz algumas alterações no software porem so consigo ligar e desligar mais nunca com o ajuste de luminosidade. Ele inica pedindo a porcentagem porem coloco o valor nada acontece. Vi que no software tem algumas linhas inativas em relação ao comando ‘a’ para inicalizacao, quando acero o software para utilizar taç comando a lampda so acende e apaga. Vc poderia me ajudar? grato desde ja.

    1. Olá, conforme a linha de código nr.59 a variavel dimtime determina qual o angulo de disparo no TRIAC consequentemente definindo a luminosidade da lâmpada. Quando utilizamos a letra ‘a’ ele envia o valor máximo (100%) ao invés dos valores intermediários. Observe que a variável utiliza uma função de relaciona de 0 à 100% com valores numéricos (função map) você pode tentar apurar dois últimos valores da função map de indicam ao sistema o angulo inicial e final de disparo. Obs: Se atende ao circuito na ligação do neutro e fase, quando invertido não funciona corretamente.

  12. Edu vc pode me explicar o que significa essa linha:
    long dimtime = int(map(power,0,100,8000,150));
    o que é cada valor desse, se eu quisesse fazer a lampada ficar fixa com 30% com eu deveria escrever,
    como exemplo.

    1. Edu meu circuito esta montado conforme sua orientação, porém não da sinal nenhum. A interrupção esta funcionando quando a rede esta ligada no circuito. Estou usando o 4N25 e não sei se devo mudar os parametros do power,0,100,8000,150. Não tenho ideia do que colocar no lugar, vou ficar chutando numeros????

      Porque vc comentou essa parte do código, tive de tirar esse comentário para poder funcionar e trocar a variável read por read_data[i] senão da erro e não funciona.

      /*switch (read){
      case ‘a’: ativaTriacA(); break;
      }
      */

      Da uma força ai ve se tu enxerga o que eu não consigo identificar. Obrigado

      1. Olá, este circuito é trabalhoso pois para ativar a Lâmpada teremos que “disparar” o TRIAC em um tempo específico após detectar que a onda senoidal da rede passou pelo zero, ou seja, é necessário um sincronismo do circuito. Confesso que os tempos de 8000 à 150 eu encontrei em fóruns e depois que alguns ajustes por tentativa. Para efeito de teste sugiro que tente se concentrar em fazer o circuito funcionar como chave, ou seja, desliga com 0 e liga com 100. Após sucesso, os valores deveram ser avaliados para resultados intermediários (10, 20, 30, etc). Veja se este vídeo ajuda nos conceitos: http://renatoaloi.blogspot.com.br/2012/07/codigo-dimmer-digital-ac-aula-14.html

    2. Olá Márcio, está variável armazena o valor do angulo de disparo ajustado ao circuito. Este ajuste vem do valor digitado pelo usuario, utilizando a função map(), ela converte proporcionalmente um range de valores em outro. Em nosso exemplo 0 a 100 para 8000 a 150. Ao digitar 30 no console do arduino a função passa para a variavel dimtime = ~5645, tempo que sera utilizado para definir o angulo de disparo no TRIAC.

  13. Edu, parabéns pelo seu trabalho e seu interesse em compartilhar conhecimento! Comecei recentemente a descobrir o universo dos Triacs e estou maravilhado com a capacidade dessas peças em controlar muita corrente em um simples formato TO-220!
    Antes de encontrar a sua página, achei essa outra aqui http://www.dextrel.net/diyzerocrosser.htm
    Sem querer abusar do seu tempo, você por acaso já se deparou com esse circuito? Estou pensando em montá-lo, porque já tenho todas as peças. Falta só estudar um pouco a parte do software, (pretendo programar em Basic), mas eu já entendi que basicamente, é só questão de disparar o triac um tempo determinado após a passagem por zero, então, deve ser razoavelmente simples.

    Obrigado pela atenção!

    1. Olá, confesso que estudei o zero crossing somente para este projeto com o arduino, mas este link que enviou explica bem o método de montagem. Caso tenha alguma dúvida poste aqui, talvez eu ou o pessoal possa te ajudar. Um abraço.

      1. Mas o triac não é exatamente isso? ele liga e desliga? Senão não faria sentido todo um circuito para controlar a passagem por zero, o único problema é a velocidade de acionamento do relê de estado sólido.

      2. Me expressei mal, com outro circuito, controlando a posição da onda e a velocidade do relê de estado sólido ser rápida o suficiente é possível fazer o dimmer, apenas não poderia substituir diretamente no circuito, certo?

  14. Olá… gostaria de saber se é possível calcular os componentes para operar em 110/220 automaticamente…

    Se sim, quais valores eu precisaria alterar??

    Obrigado!!

    1. Olá Bruno,
      Automaticamente?? Bom se entendi a pergunta, é possível desenvolver o circuito para trabalhar com 110 ou 220. Para calcular as mudanças necessárias você pode consultar o datasheet do MOC3020 que possui as alterações necessárias. Seria necessário alterar também os resistores do circuito de detecção de passagem pelo zero (33K) para ajustar a tensão limite no CI H11AA1. Ajudei?

  15. Estou com este erro :’Timer1′ was not declared in this scope

    No trecho de código : Timer1.initialize();

    Já coloquei o arquivo TimerOne.h na mesma pasta do arquivo arduino mas nao resolveu.

  16. PARABÉNS!
    ACHEI MUITO INTERESSANTE O SEU PROJETO.
    ESTOU COM DIFICULDADE PARA ESCREVER UM PROGRAMA ONDE EU POSSA ACIONAR UM MOTOR TRIFÁSICO COM UMA RAMPA DE ACELERAÇÃO E DESACELERAÇÃOUTILISANDO TRIAC.
    VC TERIA ALGUMA SUGESTÃO QUE POSSA ME AJUDAR?

    1. Fala Joseph (um exemplo de perseverança… rs). Veja bem o circuito com arduino é fruto que várias pesquisas, apesar que ser Engenheiro Eletrônico, não atuo na área, logo não sou expert nas teorias. O método de controle utilizado aqui neste circuito é controlando o angulo de disparo na tensão de alimentação do aparelho à ser controlado. Já para o motor trifásico é diferente, me parece que será necessário controlar a frequência entre as fases. Procurei algo no google para ajudar: http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1129&context=eesp

    1. Olá Sofia, não fiz porque a lâmpada fluorescente não é dimerizável, o reator destas lâmpadas não variam a luminosidade com a variação da tensão. Apesar de que se vc aplicar uma tensão crescente nestas lâmpadas com rosca a luminosidade diminui, porém não é linear como na lâmpada incandescente. Minha sugestão é utilizar a “lâmpada” LED, assim vc fará a dimerização sem problemas…. ok? Se alguém conseguiu dimerizar lâmpada fluorescente por gentileza reporte aqui. Valeu….

  17. Boa Tarde.. Gostaria de saber porque existe uma parte do código que esta comentada. Tive que tirar o comentario e substitituir “switch(read)” por “switch(read_data[i]). Contudo entendi que read_data somente armazenaria o valor da potencia digitada. Essa substituição que fiz ta certa? Caso contrario, qual é a variavel que armazena a letra “a” para ativar o triac?

    void loop()
    {
    int i = 0;
    int read_data[2];
    while(i<2){
    while(Serial.available()){
    read_data[i] = Serial.read();
    /*switch (read){
    case 'a': ativaTriacA(); break;
    }
    */
    i++;
    }

    1. Olá, esta parte comentada do código foi utilizada para testar o funcionamento do TRIAC sem digitar valores (debug). Pressionando a tecla ‘a’ o lâmpada é ligada e pressionando novamente é apagada. No funcionamento como dimmer a variável read_data armazena dois caracteres (ex 08) e converte em número para controlar o tempo de disparo do TRIAC. Se você não descomentar basta digitar os valores de 01 à 99 para que a lâmpada acenda variando a intensidade.

  18. Boa tarde, gostaria de tirar uma dúvida. eu montei o circuito utilizando apenas o triac. mas quando vou executar em vez da lampada acendendo ou apagando conforme a potencia aplicada, ela fica como se estivesse piscando. a minha dúvida é com LED o circuito funcionou perfeitamente, mas quando vou aplicar em corrente alternada acontece conforme descrito. o TRIAC que estou utilizando é o Bta41 600b.
    abraços grato t+

    1. Olá, no circuito alternado com TRIAC é necessário que haja um sincronismo do circuito de controle com a rede AC. Isto é feito com a parte do Zero Cross do esquema, caso contrário a carga receberá uma tensão irregular, gerando o pisca. No controle do LED é diferente pois o controle é feito com PWM e a tensão é DC, muito mais fácil e simples. Abraço

      1. Entendi, o optoacoplador que vai ficar responsavel pela detecção do momento perfeito para o triac agir sobre a tensão ?, o capacitor vai servir pra proteger o circuito contra o chaveamento do triac ?, outra coisa eu vi 2 optoacopladores no exemplo 1 MOC e 1 H11AA1 mas não entendi mto bem a função de cada 1.
        muito obrigado pela ajuda abs t+

      2. Olá o MOC irá fazer a interface do Arduino com o circuito do TRIAC de maior potência. O H11AA1 fará o papel de circuito detector de passagem pelo zero, utilizado para sincronizar o sistema.

  19. Pingback: Anônimo
  20. olá a todos, excelente projeto, parabéns
    Estou precisando de um projeto com bta41-600b e moc3020, que tenha controle ou regulagem da de tensão de saida e que eu possa liga-lo a um temporizador programavél com display que já tenho, poderia me ajudar?
    Abraço

    joão filho

      1. obrigadão amigo, pelo retorno e atenção.
        Na realidade tenho um temporizador com pic 16f628a, programavel de 0 á 15min com 3 display 7 seg, na saida deste temporizador preciso ligar um dimmer que trabalhe com entrada de 220v ac me forneça algo em torno de 40v ac na saida, que pode ser fixa neste valor, é para ser usada em um equipamento de eletrofusão( faz um tipo de solda a quente, as conexões saem de fabrica com uma resistência imbutida), equipamento usado para montagem de canalização de combustivel em postos de gasolina.
        Assim com o temporizador se programaria o tempo desejado e ao fim deste tempo ele desligaria o dimmer. Caso tenha e possa me disponibilizar um projeto que me atenda, serei agradecido,
        Atenciosamente,

        joão filho

      2. Olá João, não trabalho com eletrônica e por isso não tenho experiência para guiá-lo com detalhes em seu projeto. Achei interessante, pelo que entendi o TRIAC seria ativado periodicamente, no caso o PIC precisa ser programado para disparar o TRIAC com a mesma lógica do Arduino, ou o arduino receber um comando do PIC para ativar o TRIAC. A saída de 40V você conseguiria fazer através de medições, o tempo de disparo do gatilho do TRIAC controla a tensão média de saída do circuito. Sugiro verificar a potência exigida pelo eletrofusor, conforme informado no post o circuito aqui suporta 12A, caso precise de uma maior potência, procure um TRIAC mais adequado. Espero ter lhe direcionado, boa sorte.

  21. Olá 🙂 Eu montei o seu circuito e funciona bem com lâmpadas incandescentes. Agora eu estou a tentar controlar lâmpadas LEDs. Para isso comprei um “Dimming Led Driver”, mas estou a ter problemas. Para além do “Dimming Led Driver” fazer um ruído intenso, existe uma queda de tensão de 220VAC para 170VAC no TRIAC de potência para a saída.
    Será que é preciso um circuito diferente para LEDs Dimáveis?
    Cumprimentos

    1. Olá, interessante. A lâmpada LED no formato “lâmpada” possui um circuito que converte AC em DC pois o LED é um diodo certo? Ao dimerizar a lâmpada o este circuito (TRIAC+MOC) o LED ficará chaveando em frequência baixa, acredito que para diremizar LED´s é preciso um PWM de maior frequência, alguém ajuda?

      1. Olá. Sim já consegui. Para o conseguir não usei Triacs. EM vez disso usei uma ponte retificadora e meia onda e depois disso construí um Switch baseado num Mosfet. Desta forma tenho um controlo da onda muito melhor que o Triac e já coloquei o dimmer a funcionar em Leds, incandescentes e hologéneo.

  22. Olá amigo, estou estudando esse seu circuito para a implementação, mas porém não estou entendendo algumas coisas, a variável power é a intensidade que a lâmpada vai ficar acessa?
    o loop que está no vídeo que é de acender e desligar é o loop do GateTriac?
    e também porque tem um arduino input, ou seja, o que você está recebendo?
    Desculpe, mas sou novato ainda…

    1. Olá, ok a variável power é utilizada para fornecer a intensidade desejada. O bloco ativaTriacA mantém o loop de liga/desliga. A entrada do arduino recebe o sinal da rede para que o circuito detecte quando a onda senoidal passa pelo zero, servindo como sincronismo do sistema. No problem também aprendo com as perguntas… um abraço

  23. Muito legal seu tutorial, eu fiz algo semelhante, porem bem “gambiarra” usando um motor de passo para girar o potenciometro de um dimmer comum hehe, cara deixa eu tirar uma duvida, quando fiz meu projeto era para controlar uma lampada de 110v e descobri que com um dimmer comum o DIAC somente faz o disparo a partir de 30 volts, eu vi que no esquema eletrico, dentro do moc3020 tem um simbulo tipo de DIAC, a duvida é ele funciona so a partir de 30v?? (dai o minimo que se acende a lampada seria algo proximo a 30%).
    No meu caso eu resolvi isto descobrindo apos muita pesquisa que dava para substituir o diac por 2 diodo zenner ligados catodo com catodo.
    Obrigado!

    1. Olá, eu testei o circuito substituindo a variável ‘a’ por um input de valores iniciando de 01 à 99%. E consegui obter luminosidades aparentemente menores, vou fazer um vídeo novo e post amanhã para mostrar…

  24. Olá, eu tentei montar esse seu circuito e controlar pelo arduíno, porém não deu certo.
    Existe algum problema eu usar o arduíno mega e conectar na porta 2 e 4?
    agradeco

  25. vou te explicar o que eu fiz, montei o seu circuito de acordo como está na caixa preta lá encima, conectei o arduíno mega a porta 2 no 4n25 e a porta 4 na saída com o led e copiei seu programa daqui e coloquei no arduíno mega.Porém quando abro o programa tem a seguinte mensagem : Controle de TRIAC.
    a.Ativa/Digite o Percentual de Brilho (duas casas) Ex.: 25

    eu digito por exemplo 25 e não acontece nada. Nem com outros números, tem idéia do que seja? Obrigado!

  26. como funciona essa tensão de saída do triac, essa tensão varia conforme o percentual que eu digito ou ela fica sempre constante? estou medindo minha saída e independente do percentual que eu coloco no multímetro aparece 127 volts, porém a lâmpada não acende, coloquei o multímetro um no AC e outro cabo na saída do triac.

  27. quando coloquei 5 volts no meu circuito na saída do arduíno de vez de deixar na porta digital 4, a leitura estou fazendo na digital 2, a luz acende 100 %, voce te idéia do que poderia estar acontecendo?

  28. Olá.
    Se eu quiser cortar a onda antes do zero da onda que alterações do circuito fazer? Porque com este MOC só consigo mudar o estado do triac a cada zero..

  29. ola Edu, primeiramente parabéns.. em seguida quero reportar que montei o circuito aqui com 220v, ln25 e moc3022 e o circuito funcionou sem problemas. Só um detalhe.. o moc3022 eu tive que aterrar o pino 2 no GND do arduino, e o map eu deixei entre 6500 e 150. obrigado.

  30. Edu, vc pode me tirar uma dúvida? eu fui fazer um teste pra vê como o circuito se comportava sem o zero cross.. como ficava oscilando sem pegar o mesmo ponto na senoide, então tirei o pino 2 e deixei flutuando no protoboard.. e para a minha surpresa, o circuito funcionou normal.. eu tava com uma programação de fade in e out e funcionou normal, aí pensei que era por causa do fade e não dava pra perceber, quando carreguei a sua programação, da mesma forma!.. ele segura luminosidade de forma fixa, o que está acontecendo ? e qual a forma eu testo se as interrupções estão msm funcionando, quando o pino 2 está conectado. Obrigado e bom dia.

  31. Bom dia
    tenho uma duvida o que o arduino faz com a corrente eletrica em si?
    ele apenas bloqueia como um interrupitor? fornece energia?as portas de saida digitais são positivas ou neutras? se positiva qual a sua carga?
    Obrigado

    1. Olá, o arduino atua como chaveador (gatilho) do TRIAC. Ele atua na lógica do controle e indiretamente na tensão de saída. As saídas das portas do arduino é 5V, porém o controle faz um controle através de pulsos. Procure no Google a lógica do TRIAC. Abraço

  32. Parabéns e obrigado. Deu certo. Para Tanto… com Arduino Nano eu tirei o capacitor porque queimava o resistor e como a dica do colega acima mudei os valores para : long dimtime = int(map(power,0,100,7950,150)); ta rodando bacana e fiz teste ligando cargas maiores como ferros de solda, ventiladores, lampadas etc.

Deixar mensagem para efloyola Cancelar resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.