LusoRobótica - Robótica em Português
Sistemas específicos => PIC => Tópico iniciado por: edybahia em 15 de Dezembro de 2011, 23:39
-
plá pessoal,
estou necessitando de ajuda em um projeto de acionamento com carga para pic com triac
na pratica, necessito controlar potencia do circuito
Sei que preciso de detector de zero, mais o que esta complicando é o circuito do mesmo
-
Tens de ser mais específico
-
Precisa de uma detecção por zero para disparar o TRIAC no sitio certo e poder fazer controlo de fase, acho que tenho aqui meia duzia de esquemas para fazer isso, mais logo já vou procurar no PC e tenho tambem código em SDCC para PIC16F259 ou 18F não tenho a certeza.
-
Precisa de uma detecção por zero para disparar o TRIAC no sitio certo e poder fazer controlo de fase, acho que tenho aqui meia duzia de esquemas para fazer isso, mais logo já vou procurar no PC e tenho tambem código em SDCC para PIC16F259 ou 18F não tenho a certeza.
Olá amigo, obrigado pela resposta
Pretendo desenvolver este circuito de controle de potência utilizando o pic 16f877A ou 16f628a, estou verificando qual vai atender as minhas necessidade de projeto
Caso alguem tenha esquemas, fico no aguardo ou dica de como fazer...
-
Ve se este te ajuda
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg577.imageshack.us%2Fimg577%2F2347%2Fzerocros1.png&hash=c406eb5715bbf864d19e28cb4ff2b6e71127c570)
-
Ve se este te ajuda
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg577.imageshack.us%2Fimg577%2F2347%2Fzerocros1.png&hash=c406eb5715bbf864d19e28cb4ff2b6e71127c570)
Opa... Walleeuu amigo, vou simular aqui no proteus, já é o começo do projeto
-
Ve se este te ajuda
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg577.imageshack.us%2Fimg577%2F2347%2Fzerocros1.png&hash=c406eb5715bbf864d19e28cb4ff2b6e71127c570)
Opa... Walleeuu amigo, vou simular aqui no proteus, já é o começo do projeto
Olá pessoal, simulei o primeiro exemplo e funcionou conforme o esperado,
agora vou desenvolver a programação para "detectar" os zeros...
Pessoal, alguém ja desenvolveu alguma coisa do tipo ?
Att.
-
Tens de usar interrupções, tenho isto para o 18f258:
SIGHANDLER(_int1_handler){
PORTBbits.RB7 = 0; //Disable triac when zero crossings happen
if(gotInt1 == 1){
TMR0L = (unsigned char)(dutyCycle & 0xFF);
TMR0H = (unsigned char)((dutyCycle >> 8) & 0xFF);
gotInt1 = 0;
}
INTCON2bits.INTEDG1 ^= 1; //Sets edge to falling/raising edge, using XOR magic
INTCON3bits.INT1F = 0;
}
SIGHANDLER(_tmr0_handler){
INTCONbits.T0IE = 0;
PORTBbits.RB7 = 1; //Enable triac
gotInt1 = 1;
gotInt2 = 1;
INTCONbits.T0IE = 1;
INTCONbits.T0IF = 0;
}
Atenção que isso é código de teste e não está optimizado e ainda tem para ai coisas que eram para debug, mas já deve dar para teres uma ideia de como controlas o triac.
-
Tens de usar interrupções, tenho isto para o 18f258:
SIGHANDLER(_int1_handler){
PORTBbits.RB7 = 0; //Disable triac when zero crossings happen
if(gotInt1 == 1){
TMR0L = (unsigned char)(dutyCycle & 0xFF);
TMR0H = (unsigned char)((dutyCycle >> 8) & 0xFF);
gotInt1 = 0;
}
INTCON2bits.INTEDG1 ^= 1; //Sets edge to falling/raising edge, using XOR magic
INTCON3bits.INT1F = 0;
}
SIGHANDLER(_tmr0_handler){
INTCONbits.T0IE = 0;
PORTBbits.RB7 = 1; //Enable triac
gotInt1 = 1;
gotInt2 = 1;
INTCONbits.T0IE = 1;
INTCONbits.T0IF = 0;
}
Atenção que isso é código de teste e não está optimizado e ainda tem para ai coisas que eram para debug, mas já deve dar para teres uma ideia de como controlas o triac.
Obrigado amigo, pelo que entedir este código detectar a passagem de zero pela interrupção é após isso aciona TRIAC, nesse caso ele não utiliza o pwm para o controle.