Ero em programa Dimmer com PIC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ero em programa Dimmer com PIC

Mensagempor alsell » 25 Jun 2007 09:08

Consegui resolver o programa de ligar o pic ao triac, conforme pedi ajuda em um tópico anterior. Agora estou desenvolvendo um programa em CCS para controlar a intensidade da lâmpada. Tenho duas chaves que server para aumentar/reduzir o angulo de disparo. Uso 02 4N25 para detectar a passagem por zero e desta forma controlar 100% da onda. Pelos menus cálculos, como cada semiciclo tem 180º, isto equivale a 46us. Fiz o programa abaixo, porém não consigo variar a intensidade, embora todo circuto eletrônico esteja funcionando bem. Estou calculando o tempo de atraso e utilizando dentro da rotina de interrupção no B0 que detecta a passagem por zero. Alguém pode me ajudar?

O programa
//////////////////////////////////////////////
#include <16f628.h>
#use delay(clock=4000000)

#fuses xt, nowdt,put, nolvp, nomclr

int16 atraso = 50;
int angulo = 1;

///////////////////////////////////////////////////////////////////////////////
//------- trata interrupção no RB0 - Ponto Zero da Senóide
///////////////////////////////////////////////////////////////////////////////
#INT_EXT
Ext_Int_Handler() {

output_low(pin_a0);
//--- passou por zero? Aguarda tempo
delay_us(atraso);
output_high(pin_a0);
}

///////////////////////////////////////////////////////////////////////////////
//------- Reduz Ângulo de Disparo
///////////////////////////////////////////////////////////////////////////////
void Decrementa() {
angulo-=10;
if (angulo > -1) {
atraso = angulo * 46;
} else {
angulo = 0;
}
delay_ms(10);
}
///////////////////////////////////////////////////////////////////////////////
//------- Incrementa Ângulo de Disparo
///////////////////////////////////////////////////////////////////////////////
void Incrementa() {
angulo+=10;
if (angulo < 180) {
atraso = angulo * 46;
} else {
angulo = 180;
}
delay_ms(10);

}
///////////////////////////////////////////////////////////////////////////////
//------- Rotina Principal do sistema
///////////////////////////////////////////////////////////////////////////////
main() {

delay_ms(100);

enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);

while(1) {

if (!input(pin_a3)) Incrementa();

if (!input(pin_a2)) Decrementa();

}

}

//////////////////////

Obrigado.
alsell
Nibble
 
Mensagens: 58
Registrado em: 19 Out 2006 09:56
Localização: Três Passos - RS

Mensagempor renatokodaira » 25 Jun 2007 09:40

Pelos menus cálculos, como cada semiciclo tem 180º, isto equivale a 46us


Não entendi o seu cálculo. Se a frequência da rede é 60Hz (você não disse):

Período = 1/ 60 = 0,01666 s = 16,66 ms (milisegundos) = 360 graus

180 graus = 8,33 ms

Se for assim e você estiver fazendo contas com us (microsegundos), praticamente o dimmer dispara sempre perto do zero.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor dennisviana » 25 Jun 2007 09:43

Caro colega,


Se está tentando controlar a luminosidade a partir da rede elétrica, lembre-se que a frequência é 60Hz, ou seja, T = 16,667ms.
Usando 46us não conseguirá controlar nada...
Calcule o ângulo de disparo em função do período da senóide que está usando.




Atenciosamente,



Dennis Viana
dennisviana
Bit
 
Mensagens: 18
Registrado em: 21 Mar 2007 20:16
Localização: Salvador - BA

Mensagempor alsell » 25 Jun 2007 09:43

Bem usei o raciocínio: 180 graus = 8,33 ms, e efetuando a divisão de 8,33 pelos 180 graus, cada grau terá um tempo de 46us. Ou estou errado?
alsell
Nibble
 
Mensagens: 58
Registrado em: 19 Out 2006 09:56
Localização: Três Passos - RS

Mensagempor fabim » 25 Jun 2007 10:04

alsell. seguinte..

Para controlar um triac, da forma convencional.
T Total = 1 / 60hz
T 1/2 = 1 / 120

O disparo do triac deve acontecer sempre da seguinte maneira.
Passou de zero.
como a senoide esta de zero para + positivo ou + negativo.
Vc deve disparar o triac com 1/2 de 1/120hz.
Se o tempo de duração de zero para tensão de crista e zero novamente acontece em 8,33~mS.
Então raciocine comigo.
passou de zero espero 1/2 de 8,33mS, se eu disparar intão V sobre carga = total..

Zero..............||||||||||||zero
..................4,16...........

Observando-se o esquema acima, chega-se a conclusão que quando mais perto do segundo zero, se dispara o triac menor é a tensão sobre a carga desta forma menor é a potencia.

Como montar o algoritmo.

Monto um delay de 4,16mS. e um segundo de 0 a 4,16mS.
Passou de zero, espero 4,16mS
Caio no segundo delay.. quanto maior o tempo menor a potencia.
Segundo delay = 0.
intão potencia aplicada 100%...

Etc etc etc.

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor alsell » 25 Jun 2007 11:17

Não consegui entender direito esse delay de 4,16ms, que seria metade do meio semiciclo?
Como organizo este código dentro do programa que postei acima?
alsell
Nibble
 
Mensagens: 58
Registrado em: 19 Out 2006 09:56
Localização: Três Passos - RS

Mensagempor fabim » 25 Jun 2007 11:24

assim.
passou de zero espero 1/2 de 1/2 ciclo. = 4,16mS.
O outro delay vai variar de 0 a 4mS por exemplo
este outro delay, é o tempo para disparo.
0 esta para 100% e 4mS esta para 0%...

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor alsell » 25 Jun 2007 11:38

fabim escreveu:assim.
passou de zero espero 1/2 de 1/2 ciclo. = 4,16mS.
O outro delay vai variar de 0 a 4mS por exemplo
este outro delay, é o tempo para disparo.
0 esta para 100% e 4mS esta para 0%...

Abraços

Fabim


Bem deixa ver se entendi, a casa passagem por zero, espero 4,16ms e aí aplico o delay (pode ser dentro da rotina de interrupção? ) mas, neste caso sempre vou ter intensidade acima de 50% ou estou enganhado?
alsell
Nibble
 
Mensagens: 58
Registrado em: 19 Out 2006 09:56
Localização: Três Passos - RS

Mensagempor fabim » 25 Jun 2007 12:11

EX:

Zero................................|100%..|..75%..|..50%..|..25%..|..0..|.<senoid
......{--------4.16mS------},{..1mS....2mS......3mS.....4mS.........}
{=======delay 1=====|
........................................|========delay 2 ===========|.}

Obserque que no delay 2, quanto mais vc demora pra disparar do triac menor sera a potência.

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabim » 25 Jun 2007 15:55

tendeu ou não??

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor alsell » 25 Jun 2007 16:59

Funcionou como você orientou.
alsell
Nibble
 
Mensagens: 58
Registrado em: 19 Out 2006 09:56
Localização: Três Passos - RS


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x