Ola Pessoal!, Andei lendo uns tópicos aqui no LG sobre a construção de um Dimmer AC controlado com arduino, consegui fazer a placa e controla-lo, funcionou belezinha, mas dai me surgiu uma duvida, sera que eu consigo controlar vários dimmers com um único Arduino? Tive essa duvida porque não encontrei no código do zero_crossing_int() um meio de mudar a porta de entrada do cross, no exemplo abaixo ele mostra algumas portas que posso usar de acordo com o modelo da placa, mas se eu quiser controlar mais de um dimmer como faço pra identificar que o dimmer2 seu cross esta na porta 2, o dimmer 3 na porta cross 3, e assim sucessivamente. Não sei se fui claro na minha duvida, mas agradeço desde já!!

Pin | Interrrupt # | Arduino Platform
---------------------------------------
2 | 0 | All
3 | 1 | All
18 | 5 | Arduino Mega Only
19 | 4 | Arduino Mega Only
20 | 3 | Arduino Mega Only
21 | 2 | Arduino Mega Only

*/

int AC_LOAD = 3; // Output to Opto Triac pin
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF

void setup()
{
pinMode(AC_LOAD, OUTPUT); // Set the AC Load as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
}

void zero_crosss_int() // function to be fired at the zero crossing to dim the light
{
// Firing angle calculation :: 60Hz-> 8.33ms (1/2 Cycle)
// (8333us - 8.33us) / 128 = 65 (Approx)
int dimtime = (65*dimming);
delayMicroseconds(dimtime); // Off cycle
digitalWrite(AC_LOAD, HIGH); // triac firing
delayMicroseconds(8.33); // triac On propogation delay
digitalWrite(AC_LOAD, LOW); // triac Off
}

void loop()
{
dimming = 128;
delay(100);
dimming = 75;
delay(100);
dimming = 25;
delay(100);

}

Exibições: 1780

Responder esta

Respostas a este tópico

A passagem por zero pode-se usar a mesma para todos os dimmers, desde que o mesmo seja monofásico. O segredo é o disparo dos tiristores.

Humm interessante Jucelei vou fazer um teste aqui e se der certo estarei postando aqui para finalizar o post! Obrigado.

Ola jucilei, tentei executar dois Dimmers ao mesmo tempo, não deu certo usei a mesma passagem por zero nos dois, mas quando eu ativo os dois dimmers o arduino trava, tenho que reinicia-lo para funcionar novamente.

Boa tarde Jonata.

 

Cara desculpa encomodar mas tenho uma duvida referente a este codigo. Eu estou tentando desenvolver um controle parecido com o seu mas no meu caso é controle de temperatura onde eu coloco um setpoint e o sistema mantém. No caso este codigo serviria?. Sei que devo implementar um PID por exemplo para controlar os tempos de disparo mas minha maior duvida na maioria dos codigos que encontrei e inclusive neste é por qual porta o sistema detecta o zero cross. É pela analogica zero?

Desde ja agradeço a atenção.

Bom dia Rafael!

Já fiz algo com sensor de temperatura, pelo que entendi você quer criar uma rotina de leitura da temperatura é isso?

correto!! na verdade é um controle de temperatura de um reservatorio de agua ( com resistencia de chuveiro 110V) e ja tenho todos os componente ( sensor de tem., Diac, Triac  e sensor de zero cross). Eu gostaria de colocar um Setpoint ( variar ele ao longo do tempo) e gostaria que o sistema controlasse isso para mim.No caso eu precisaria ler o ponto zero da onda para então disparar o triac. Porém não manjo muito disso!. Vi que seu codigo esta legal e parece que serve para minha aplicação. Só não sei onde é ligado o sinal de zerocross...

Certo! De acordo com o código que diz attachInterrupt(0, zero_crosss_int, RISING); notamos que a função attachInterrupt usa interrupção 0 que de acordo com a documentação do arduino:

Pin | Interrrupt # | Arduino Platform
---------------------------------------
2 | 0 | All
3 | 1 | All
18 | 5 | Arduino Mega Only
19 | 4 | Arduino Mega Only
20 | 3 | Arduino Mega Only
21 | 2 | Arduino Mega Only

A interrupt 0 refere-se ao Pino 2 do arduino, não sendo necessario vc usar somente esse atravez dessa tabela vc pode modificar na função attachinterrupt o primeiro numero, de acordo com a porta que deseja usar! Ah Lembrando que se você usa arduino DUE usa se diretamente o pino na função attachinterrupt!

Espero ter ajudado!

Nossa é totamente contrario ao que pensei rsrs.... Agora sim entendi cara!! Otima explicação!!!

Muito obrigado pela ajuda... vou implementar e testar este codigo. Pelo que vi ele me atende perfeitamente!

Muito obrigado pela ajuda Jonata!. Precisando estamos ai também!! Vlw msm!!!

Jonata só mais uma duvida que surgiu, eu li que o Timer 0 é o mesmo usado na função mills, delay e etc. Por acaso usar ele neste programa não gera algum tipo de problema?. Caso eu quiser usar o Timer 1 ou 2 teria alguma modificação a ser feita no programa fora mudar a porta do zero cross e adicionar uma biblioteca?

Grato desde ja pela atenção.

Achei isso interessante.

Pode ser que ajude:

Arduino - 

AC Phase Control

http://playground.arduino.cc//Code/ACPhaseControl#.UxsZ5fldWa8

Opa com ctz ajuda sim José...

Pelo que vi também, me parece não haver problema em rodar meu programa em timer zero. De qualquer forma agradeço muito a atenção e vou tentar implementar estes códigos.

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço