Ir ao conteúdo
  • Cadastre-se

Controle de Potencia por ciclos inteiros com arduino


luisce_28

Posts recomendados

Bom pessoal, preciso fazer um trabalho na area de eletronica de potencia com arduino. A tecnica é para controlar a potencia numa carga resistiva com uma tecnica que controla o numero de semi ciclos senoidais (Inteiros) da rede eletrica 220V que serão entregues a carga. Ao CONTRARIO do controle por angulo de disparo, esse que eu me refiro deve deixar passar sempre semi ciclos inteiros para a carga. Para isso eu defino um periodo de por exemplo 1 segundo, e sabendo que em 1 segundo existem 120 semi ciclos da senoide da rede (60Hz) eu controlo sempre o numero de semi ciclos que serão entregues a carga em cada periodo de 1 segundo. Para uma potencia de 50% portanto eu deixaria passar 60 semi ciclos e cortaria os outros 60, e isso se repetiria sempre. 

 Preciso fazer isso com  um arduino UNO, mas nao tenho quase nenhuma experiencia com arduino... No inicio achei que seria bem simples e que o codigo abaixo resolveria, mas nao se comportou muito bem

 

 

void setup() {                
 
  pinMode(13,OUTPUT);  // saida digital
  pinMode(8,INPUT);  // entrada digital
  pinMode(2, OUTPUT);  // saida digital
  digitalWrite(2,HIGH);
  
}
 
 
// the loop routine runs over and over again forever:
void loop() {
      
      
       
     if (digitalRead (8) == HIGH){
         while(1){
          
              digitalWrite(13,HIGH);
              delay(33.333333);
              digitalWrite(13,LOW);
              delay(33.333333);
             
           }
           
        
           
         }
     }
 
 
Nesse caso eu deixaria uma saida ( pino 13) ligada por 33.333 milisegundos para deixar 4 semiciclos inteiros passar e cortaria os proximos 4. porém notei no osciloscopio um comportamento estranho onde um semi ciclo a mais parecia ficar abrindo e fechando... nao sei porque. A porta digital de entrada pino 8 recebe um pulso a cada vez que a senoide bate no zero e para isso utilizei um circuitinho simples (imagem em anexo) e ja constatei que  esse circuito funciona bem. Usei um MOC 3020 para isolar o arduino da rede e disparar um triac BTA 26 600
 
Preciso de ajuda com o codigo para o arduino.....
 
 
 
 

post-744761-0-56104300-1416503914.jpg

post-744761-0-62910100-1416504291_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Existe um foto-triac com prefixo MOC que só conduz no ponto zero, pois tem um detector de ponto zero. 

 

Sendo assim se você acioná-lo por meio de um PWM feito com um simples LM555, já terá seu controle de potência por ciclos inteiros.

Pra este caso não. Uma vez disparado, um triac só para de conduzir quando o ciclo estiver em zero ou próximo a isto.

Link para o comentário
Compartilhar em outros sites

@ Segundo o próprio peticionário....

"A tecnica é para controlar a potencia numa carga resistiva com uma tecnica que controla o numero de semi ciclos senoidais (Inteiros) da rede eletrica 220V que serão entregues a carga. Ao CONTRARIO do controle por angulo de disparo, esse que eu me refiro deve deixar passarsempre semi ciclos inteiros para a carga."


Um PWM com 555 disparando um foto-triac com sensor de ponto zero já resolve o problema. 


http://www.sabereletronica.com.br/artigos/945-controle-de-src-e-triac-por-zero-crossing

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 Cara não sei se o 555 é tão preciso pra essa aplicação.. como eu iria sincronizar com  zero da senoide...

Ouvi falar de uma tecnica  chamada interrupção externa, onde eu utilizo as bibliotecas Timer do arduino... só que eu nao faço ideia de como utilizar.. .. esse programa que eu fiz nao ficou nada eficiente....alguem tem alguma sugestão?? Por favor o quanto antes..

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@ Segundo o próprio peticionário....

"A tecnica é para controlar a potencia numa carga resistiva com uma tecnica que controla o numero de semi ciclos senoidais (Inteiros) da rede eletrica 220V que serão entregues a carga. Ao CONTRARIO do controle por angulo de disparo, esse que eu me refiro deve deixar passarsempre semi ciclos inteiros para a carga."

Um PWM com 555 disparando um foto-triac com sensor de ponto zero já resolve o problema. 

http://www.sabereletronica.com.br/artigos/945-controle-de-src-e-triac-por-zero-crossing

Me desculpe. você tem razão.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Não entendo muito do arduino, mas no seu programa parece que você monitora a tensão da rede e identifica um zero de tensão APENAS UMA VEZ.!!!

Depois ocorre um loop infinito while (1).

Aí:

1 - Pode ser que o seu zero, devido ao ruído esteja apenas próximo ao zero da rede. Isso gera um erro.

2 - O seu período delay(33.333333); vai introduzir um erro cumulativo, pois nunca é exato. Imagine um pequeno desvio na frequência da rede. Como você só identificou o primeiro zero volts e não monitorou mais (lembre-se do loop infinito) esse erro não será considerado.

3 - Você não considerou o tempo que levam as outras instruções do loop. Mesmo pequenas elas são cumulativas. Ou seja, o erro sempre aumenta.

 

1 - Seu programa deve permanecer monitorando cada semi ciclo e daí tomar a decisão de ligar a saída ou não.

2 - Se o MOC só liga no zero, então você só vai poder acionar o semi ciclo seguinte, uma vez que o zero já ocorreu. Mas o seu moc pode acionar em até alguns graus elétricos acima do zero, aí não tem problema. Consulte o manual.

3 - Para garantir o acionamento, desative a saída no meio de um ciclo. Assim você garante que aquele ciclo vai ser aplicado à saída e o seguinte não. Um término de acionamento que pode coincidir com o início do ciclo seguinte pode acionar o ciclo seguinte.

4 - Verifique o seu terra. A monitoração não é isolada (galvanicamente) da rede. Pode haver problemas com o terra da fonte do arduino. Pode até queimar um osciloscópio por curto circuito na ponteira. Procure por outros circuitos na net. Tem muitos. Pesquise mais.

MOR_AL

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom curto circuito nao tem como acontecer pois eu utilizo um transformador isolador 1:1 assim nao ha risco de colocar a ponteira preta do osciloscopio no fase da rede.... Realmente esse codigo so aguarda receber um pulso da rede e depois fica num loop infinito... sei que com certeza nao é o jeito certo de fazer mas eu nao conheço quase nada sobre a programação do arduino... o jeito pelo que me disseram é utilizar uma interrupção externa (attachinterrupt) e fazer uma porta de entrada do arduino UNO (pino 1 ou 2 que são os de interrupçao)   para monitorar cada semiciclo da senoide.. Como voce falou tentei desligar o pino de saida do arduino um pouco antes do ultimo semi ciclo que ele deve deixar passar mas ainda nao deu certo(a forma de onda ficou um tanto estranha)... Fico no aguardo se alguem tiver outras sugestoes.. por enquanto muito obrigado a todos pela atenção.

Link para o comentário
Compartilhar em outros sites

Vai precisar de um circuito detector de zero para o programa monitorar.

O detetor de zero do MOC é para quando se deseja ligar e desligar uma carga,para controlar linearmente uma potencia vai precisar do detetor zero cross.

 

Tenho um exemplo para estudo para voce pesquisar.

 

http://www.4shared.com/rar/j0Xij_j8/ccs_dimmer.html

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...