Ir ao conteúdo

Posts recomendados

Postado

Bom pessoal, estou desenvolvendo um aplicativo para Android de automação residêncial. A ideia começou bem básica, com acionamento de lâmpadas e motores, e até então tudo tranquilo.
Porém, estou tentando implementar um dimmer eletrônico, para controlar a intensidade da lâmpada, e não estou obtendo um resultado positivo.
O aplicativo foi desenvolvivo utilizando o AppInventor 2, e os componentes utilizados basicamente são:
 
PIC16F877A
HC 05
TRIAC BTA41600-B
MOC3020
RESISTORES
LÂMPADA
 
A ideia é utilizar PWM para controlar a intensidade... Recentemente eu utilizei um osciloscópio para visualizar a saída da PIC, e percebi que a programação está ok, pois a onda varia conforme os comandos enviados pelo celular.
 
A frequência do PWM foi definida desta forma:
 
     setup_timer_2(T2_DIV_BY_16, 255, 1);
     setup_ccp1(ccp_pwm);
     set_pwm1_duty(0);

 

O programa conta com 5 níveis de intensidade da lâmpada:

 

     set_pwm1_duty(0);

     set_pwm1_duty(60);

     set_pwm1_duty(153);

     set_pwm1_duty(215);

     set_pwm1_duty(255);

 

O clock utilizado na PIC é 4MHz, e a tensão da rede elétrica é de 127V.

Ainda esta semana vou visualizar no osciloscópio como está a saída do MOC e a do TRIAC, pois acredito que talvez um destes componentes não está conseguindo chavear na frequência necessária.

Alguém teria sugestões?

Obrigado!

 

  • Membro VIP
Postado

Certa feita fiz um dimmer com pic10f + 2 botões sobe-desce. Funcionou direitinho (na simulação). Se um dia achar o fonte E você (caro leitor) achar interessante, posto-o (acho que até já o fiz...).

Nada a ver pwm (no meu caso). O macete é esperar a senoide passar pelo zero, dar um tempinho e enviar um pulsinho pro triac. tempo zero=100%, 2mS=~25%, 4= 50 e por aí vai. Estás a fazê-lo?

abç

  • Curtir 1
Postado

Acho o seguinte:

 

setup_timer_2(T2_DIV_BY_16, 255, 1);

Fosc = 4MHz

Prescaler divididos por 16.

Colocou 255 no registro PR2

Dividiu o Postcaler por 1.

 

Então, o período do seu PWM será:

T = (4 / Fxtal) x Precaler x (PR2 + 1)

T = (4/ 4.000.000) x 16 x 256 = 4,096ms

Ou você setou a frequência do PWM para 244Hz.

 

Lembro que para acionar o triac, você deve fazer um PWM SINCRONIZADO COM CADA SEMI-PERÍODO DA FREQUÊNCIA DA REDE.

Ao final de Ton deste PWM é que o triac tem que ser acionado, já que o triac vai desligar ao final do semi-período.

E tem mais...

Não é bom ligar o triac nos limites dos períodos, pois um pequeno erro de sincronismo pode causar uma grande mudança.

Imagine que você queira conduzir ao máximo o triac. Então vai ligar ele coincidindo com o início do semi-ciclo. Mas e se o seu circuito de sincronismo apresentar uma pequena defasagem, o que é normal? Então, ao invés de ligar o triac no zero grau elétrico, pode ligar ele no 179 grau elétrico do semi-ciclo anterior. Ao invés de ligar ele ao máximo, vai ligar ele ao mínimo.

O contrário também é válido.

Por isso é que não se costuma aplicar pulsos de gate no triac (ou no tiristor) próximo aos extremos.

Mas aí você questiona...

"Mas então eu nem posso ligar no máximo e nem desligar totalmente o triac?"

Eu respondo...

A coisa não é tão dramática assim.

Se você quiser desligar o triac, basta não enviar pulsos para o gate.

Se você quiser ligar ao máximo o triac, você liga ele aos 18 graus. Segundo meus cálculos, ao invés de enviar 100% da energia para a carga, você vai enviar 99%. Se você acionar o triac aos 10 graus elétricos então, a energia entregue à carga será maior que 99% e ainda assim você fica longe do extremo do semi-ciclo.

Em anexo tem um gráfico da energia entregue à carga em função do ângulo de disparo.

Observe que o eixo horizontal, que é o ângulo de disparo, se encontra em sub múltiplos de pi. O eixo horizontal varia desde zero até pi em um semi-ciclo elétrico.

Para transformar graus elétricos em radianos para graus, basta:

 

Graus = (180 / 3,14) x graus em radianos.

Ex.:

Quantos graus corresponde 0,1 x pi radianos?

Graus = (180 / 3,14) x 0,1 x 3,14 = 180 x 0,1 = 18º

 

MOR_AL

post-683989-0-64527400-1429032738_thumb.

  • Curtir 2
Postado

Pessoal, não estava utilizando um circuito zero cross, para acionar o TRIAC apenas no momento 0 da senóide.

Porém, mesmo com este bloco, o circuito não funciona!

 

Eu consegui fazer com que a lâmpada fique oscilando, porém numa frequência visível, o que não altera a intensidade que a mesma fica ligada.

 

Poderia estar relacionado com a frequência do timer 2 do PWM?

  • Membro VIP
Postado

segundo a dica do amigo moris, você deve setar o pwm a 120Hz alémd de sincronizar com a passagem pelo zero e seu duty cicle deve ir de 0 a 8mS

 

Não tenho certeza se dá pra fazer isso só com o hw do seu mc. Se conseguir ensina nós!!

O que fiz com o pic10F era por sw... achei!!

//programa dimmer com pic10f200//16/04/08//V0.0 - simulação no MPLAB OK//V0.1 - simulação no Proteus
#include <pic.h>
#define sobe GP0
#define desce GP1
#define triac GP2
#define zeroc GP3
#define ligado 1
#define desligado 0
__CONFIG(PROTECT & WDTDIS & MCLRDIS);
void delay(unsigned char dl)
{
  while(dl--); //alguns uSegs
}
//******************************************************
void main (void){
unsigned char a=120; //valor de teste ~ metade da potência
OPTION=0b00000100; ///pullup, prescaler timer0=1:32
TRIS=0b1011; //só GP2=saída=dispara triac
GPIO=0xff;
for (;;)
    {
    while(!zeroc); //aguarda passagem por zero
    TMR0=a-20; //de neg. p pos. alguns triacs disparam antes (ou depois!)
    while(TMR0);//aguarda por alguns mSeg
    triac=ligado; //pulso no gate
    delay(30);triac=desligado; //pulso rápido
    while(zeroc); //aguarda passagem por zero
    TMR0=a;while(TMR0); //aguarda por alguns mSeg
    triac=ligado;//2º pulso
    delay(30);
    triac=desligado;
    if (!sobe) a++; //ângulo de disparo
    if (!desce) a--;
    if (a<25) a=25; //limite mínimo
    if (a>240) a=240; //máximo
    }
}

Acionar com circuto zero cross pode zoar o barraco caso ele bloqueie o acionamento quando não em zero

 

de nada??

 

abç

 

edit ... anexo

 

post-528815-0-56760600-1429704142_thumb.

  • Curtir 1
Postado

Pode ser que haja um mal-entendido aqui .....

 

Existem circuitos ( módulos ) que fazem o acionamento de uma carga apenas na passagem por zero, independente se o comando de acionamento chegou em qualquer outro momento da senóide; o módulo simplesmente "memoriza" e só aciona a saída quando cruzar por zero. Isto não vai resolver o problema do autor do post.

 

Já o circuito que irá solucionar o problema é um DETETOR DE PASSAGEM POR ZERO, o qual informa ao PIC o instante em que a tensão é muito baixa ( quase zero... )  , e a partir deste sinal conseguimos fazer o controle da potência entregue à carga, obedeçendo ao posto do Mor acima.

 

Normalmente este circuito funciona ligado ao transformador que irá alimentar o Pic, recebendo o sinal AC da saída do transformador. Aqui no Fórum mesmo exitem dezenas de posts sobre esse assunto.

 

Paulo

  • Curtir 1
Postado

Esse foi o assunto que mais estudei na prática.

Sem passagem por zero,...zero de controle linear.

O circuitio que postei foi a mais simples que consegui na prática.

  • Curtir 3
Postado

Esse foi o assunto que mais estudei na prática.

Sem passagem por zero,...zero de controle linear.

O circuitio que postei foi a mais simples que consegui na prática.

Vtrx!

Explica o que significa o valor em "Posição" no osciloscópio.

 

Por exemplo.

O traço Azul se encontra em aprox. 140. 140 o quê?

 

O osciloscópio não marca o centro como coordenadas 0,0.

Há 20 divisões horizontais na tela. Dá para ver que na escala azul, cada divisão vale 1V e que o zero teria que ser na terceira divisão horizontal de baixo para cima. O que 140 tem a ver com a posição do traço azul?

MOR_AL

  • Curtir 1
Postado

@MOR

O osciloscópio esta na emulação para observar as formas de onda,os valores de marcação eu só defini para visualização das formas de onda.

Este circuito zero-cross,é o mesmo que sempre posto no forum,pois é totalmente confiável e funcional.

No esquema só faltou ligar o circuito do triac.

O circuito dos triacs,podem ser este abaixo,ligado em RB1 e RB4:

 

http://www.4shared.com/download/NZCrpolo/moc_triac.bmp?lgfp=3000

 

Não sei se percebeu,mas o traço azul é a passagem por zero,não sei se é isso que deseja saber.

  • Curtir 1
Postado

@MOR

O osciloscópio esta na emulação para observar as formas de onda,os valores de marcação eu só defini para visualização das formas de onda.

Este circuito zero-cross,é o mesmo que sempre posto no forum,pois é totalmente confiável e funcional.

No esquema só faltou ligar o circuito do triac.

O circuito dos triacs,podem ser este abaixo,ligado em RB1 e RB4:

 

http://www.4shared.com/download/NZCrpolo/moc_triac.bmp?lgfp=3000

 

Não sei se percebeu,mas o traço azul é a passagem por zero,não sei se é isso que deseja saber.

Na verdade não era isso que queria saber.

Quero saber o que significa o valor 140 (bem próximo) no ajuste da posição vertical do sinal Azul no osciloscópio do proteus.

Entendi seu projeto, apenas não entendi o valor 140 no osciloscópio do proteus.

MOR_AL

  • Curtir 1
  • 3 semanas depois...
Postado

Desculpem a falta de resposta, deixei de lado o Dimmer pra finalizar os outros pontos do projeto.

 

Acredito que semana que vem estarei voltando a tentar implementar este recurso.

 

Agradeço a ajuda obtida até então, e logo trago resultados :)

  • Triste 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!