Boa Tarde Pessoal,

Eu estou montando um projeto com o Arduino Mega2560 para o meu Tcc e nele eu me deparei com o seguinte problema.

Fazer um código para que eu encontre a passagem por zero da fase A da rede elétrica e faça o disparo de 3 triacs ligados em 3 fases diferentes (A,B e C). 

Meu circuito de detecção de passagem por zero e os circuitos dos triacs estão ok. Eu consigo controlar perfeitamente apenas uma fase utilizando um potênciometro. 

Mas o problema esta em controlar as 3 fases ao mesmo tempo. Eu sei que para a rede elétrica de 60Hz eu tenho uma defasagem de fase B para a fase A de 120 graus. E da fase C para a fase A de 240 gaus, ou seja, tenho um diferença de tempo para o disparo de 5,5556 ms de um triac ao outro. 

Eu preciso de ajuda para fazer uma programação que receba o sinal do Zerocross da fase A e dispare o triac da fase A ao mesmo tempo que recebeu o sinal. Logo espere 5,5556ms e dispare o triac da fase B, consequentemente depois de mais 5,5556ms dispare o triac da fase C. 

Estou usando interrupcão para detectar o sinal do zerocross e acionar a fase A. Mas nao sei como incluir o processo pra fase B e C. Sabendo que a função delay() e millis() não funciona dentro de uma interrupção, 

Alguem poderia me ajudar nesse problema?

Obrigado.

Exibições: 2760

Responder esta

Respostas a este tópico

você não considerou a possibildiade de disparar apenas o primeiro triac e colocar capacitores em série com o gate dos proximos para gerar um delay?

Boa Noite Luiz, 

Não sabia disso. Isso é possivel?

No meu caso vai ser meio dificil pq estou usando circuitos prontos ja. Não estou montando o meu próprio circuito. Mas se for o unico jeito de funcior eu teria que fazer isso. 

Eu na verdade queria fazer esse delay na programação. Mas não estou encontrano soluções. 

Não sei se é realmente possível nem se é necessariamente o único caminho, mas é uma alternativa que pode ser pensada, já que você não pode pretende modificar o circuito de triacs, as alternativas que penso podem ser as seguintes:

Como o vc ta usando interrupção e a programação dela com timers e a função milis parece um pouco complicado, talvez essa defasagem no disparo entre as três fases pode ser feita com um circuito externo ao invés de ser feita com o arduino.

A alternativa que propus inicialmente parece um pouco complicada devido a dificuldade dos calculos com os capacitores, que nem eu planejei de modo exato onde colocar.

 mas você pode colocar um circuito como o 555 como oscilador astavel gerando um clock que seja igual ao tempo de defasagem de 120º, (se não errei nas contas, aproximadamente 55 ms) e então colocar a saída dele em um ci registrador de deslocamento como o da figura so que com 3 FFs

ai você liga o clock do 555 no clock e na porta D você liga a saída do arduino. E na saída de cada FF você liga cada moc que faz a interface com o triac.

Essa possibilidade é teorica, eu não testei ainda, mas creio que não custa tentar.
Talvez seja necessária alguma correção transformando esse Registrador de Delocamento em uma FSM, mas de inicio parece  funcionar ao meu ver.

Obrigado pela ajuda Luiz,

Vou tentar fazer pelo código primeiro. Mas se de tudo não conseguir ai vou para a modificação dos hardwares. 

Não lembrava do 555. Pode ajudar sim. Valeu

Olá Brunno, blza cara, tambem estou na peleja de finalizar meu tcc em Eng. Eletrica na PUC-goias, a parte de implementação já está feita, só que fiz com pic 18f4520, meu orientador nao aceitou fazer com arduíno, mas usei o Mega para fazer uns testes, então vamos ao seu problema:

acredito que uma solução seria:

void interrupcao () // entra aki quando detecta zero crossing

{

>>dispara a fase A

>> incrementa uma variavel booleana (exemplo:  passou = 1;) // daki vai pro loop e faz os delays de fase B e C

}

void loop

{

if (passou==1)

   {

    >> delay da fase B (5,5556 ms)

   >> dispara fase B

   >>delay da fase C (8 - 5,5556 ms = 2,4444) //disparos tem q ser dentro de um semiciclo, senao entra outra interrupção e vai dar merda

  >> dispara fase C

   >> passou=0; //zera novamente a variavel passou

   }

}


Depois nos atualize dos resultados.

Abraço


escreve um codigo assim, que vai funcionar

Obrigado Leir,

Eu tmb sou de Goias, estudo no IFG Jataí.

Vou tentar fazer desse jeito no projeto. Ai posto como ficou o resultado. 

Estou fazendo um protótipo para acionar motores de indução trifásico e medir sua corrente através de sensores.

Ai pretendo acionar por um shield Ethernet em partida direta, estrela-triangulo e soft starter.

As outras partes estão prontas ja. So ta faltando arrumar esse código para fazer a soft starter funcionar direito. 

Abraço.

blza, tenta escrever ai, se der problema ai vc posta o codigo pra eu ver.

boa sorte

Olá Brunno. Blz?

Deixa eu ver se entendi.

Você quer controlar a carga trifásica com 3 triacs nas Fase A, B e C com um potenciômetro? 

Olá Rodrigo. Não exatamente com potenciômetro. 

Quero usar ele apenas para testar se as fases estão sendo controladas no mesmo instante. Ficaria mais fácil caso eu queira medir tensão e os angulos no osciloscópio. 

Mas para o projeto mesmo eu quero usar 3 triacs 1 para cada fase (A,B e C) e um circuito de detecção de zero da rede na fase A. E com isso ir aumentando a tensão conforme o tempo. Por exempo de 10% a 100% da rede em 5 segundos ou 10 segundos. 

Entendi.

Da pra usar o modo "frequencímetro" que haverá o contador de cada fase e poderá gerar um pulso a cada 60 contagens e reinicia o ciclo. É parecido com o post do colega Leir.

Sobre o assunto:

http://forum.arduino.cc/index.php?topic=156977.0

https://efloyola.wordpress.com/2011/10/02/controle-triac-com-arduin...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço