Moderadores: andre_luis, 51, guest2003, Renie
Smarley escreveu:Cara, um amigo meu fez um protótipo para aquecer uma chapa de cobre com uns resistores.
Primeiro ele levantou a curva de temperatura x tempo com várias tensões aplicadas(demorou horas e horas).
Depois ele modelou a planta por um circuito RC e passou para o domínio da freqüência. Ele utilizou um controlador PI com anti windup.
Discretizou o controlador e colocou no PIC.
Ficou perfeito.
Ele utilizou o próprio PWM nativo do PIC.
Só precisa estudar um pouco sobre controle e tu verá que não é tão difícil assim.
Abraço!
no PIC só temos 2 PWM...e necessito de 3 distintos e independentes tanto em frequência quanto em duty cycle.
_blackmore_ escreveu:itamarno PIC só temos 2 PWM...e necessito de 3 distintos e independentes tanto em frequência quanto em duty cycle.
se o PWM é atrelado ao TM2 ... como vc faz para ter dois PWM com frequências distintas? a cada retorno no loop vc altera as config do TM2? e isso não vai alterar para os 2 PWM?
itamar escreveu:estoura uma vez
lê adc 1
carrega duty 1 do PWM
nível alto pino (para setar R1) .
---
estoura de novo
recarrega o timer
lê adc 2
carrega duty 2 do PWM
nível baixo pino(para setar R2).
#INTERRUPCAO DO TIMER
estoura uma vez
carrega duty 1 do PWM
nível alto pino (para setar R1) .
---
estoura de novo
recarrega o timer
carrega duty 2 do PWM
nível baixo pino(para setar R2).
#MAIN ( dentro do loop infinito )
lê adc 1
lê adc 2
MOR_AL escreveu:...você só garante um controle estável com um sistema PID...
int1 controle=0;
#int_timer0
void comuta_PWM(){
if(controle==0){
output_high(enable_1);
output_low(enable_2);
delay_us(100);// coloquei só pra ajudar na visualização
controle=!controle;//inverte para que no proximo cilco vá para o outro IF
clear_interrupt(int_timer0);
set_timer0 (128);
}
if(controle==1){
output_high(enable_2);
output_low(enable_1);
delay_us(100);
controle=!controle;
clear_interrupt(int_timer0);
set_timer0 (128);
}
}
andre_teprom escreveu:MOR_AL escreveu:...você só garante um controle estável com um sistema PID...
Uma alternativa para isso seria mudar gradualmente o Duty-cicle do PWM ( em passos fixos ou variáveis ) a cada interrupção, ao invéz de simplesmente recarregar o valor tabelado para a temperatura final desejada.
+++
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante