El_Zorro Escreveu:Como vêm até aqui é tudo simples. Claro que isto pode ser controlado com um Arduino (e já agora via Internet!), mas para mim chega-me utilizar o PID que mandei vir (e que ainda não testei nem sei bem como funciona), mas que basicamente actua como um termostato, ligando ou desligando o sistema.
O PID é muito mais que um termostato. Fazendo uma analogia para um carro, imaginem que querem andar a 100 km\h, o que um termostato faz é pisar no acelerador a fundo quando vais a 90 e largar o acelerador quando vais a 110. O PID o que faz é ter em conta a velocidade a que vais, a aceleração e a acumulação de erro da velocidade, na prática o que acontece é que vais a 90 e ele acelera a fundo, mas à medida que vais chegando aos 100 ele vai tirando o pé do acelerador e por fim ficas nos 100 "eternamente". Claro que se houver alguma oscilação da temperatura ele vai corrigir, mas sempre de forma controlada e não de pé a fundo. Claro que isto parece muito bonito, mas o dificel é calibrar o PID de forma a funcionar optimamente. Basicamente tens 3 parametros para calibrar (ganhos), errando nisso pode acontecer a temperatura ficar constantemente a oscilar, ou ter overshooting, ou seja, está nos 90, sobe até aos 120, desce para 95 sobre para 110..... até que fica nos 100, o melhor é subir gradualmente e parar nos 100, o mais rápido possível. Para conseguir isto convem colocar Kp Ki e Kd com valores baixos, para ser mais simples convem limitar o ki (ou até eliminar = 0, ficas com um PD) que é responsavel pelo acumular do erro. Imagina que existe uma diferença muito grande na temperatura inicialmente, então a parcela do ki vai dar um valor muito alto o que vai fazer ligar a célula à potencia máxima, como só quando ultrapassares a temperatura que queres é que essa parcela começa a diminuir vais ter muito overshooting. Se o erro for muito pequeno e constante, então o kd nada vai fazer e o kp pouco vai fazer, então é aí que o ki deve entrar, já que vai somando o erro e vai dando mais ganho. O kp é o mais importante é o valor proporcional. Se kp = 0.1, então por exemplo se a diferença de temperatura for 10º o ganho é 1 (célula a potencia máxima) depois passa a 5º e o ganho é 0.5 (o pwm está metade do tempo a ON e outra metade a OFF) e quando for 0 o ganho é 0 e a célula fica desligada. O Kd é para uma previsão do erro, ou seja, vai dar mais ganho conforme a velocidade a que o erro aumenta. Vamos imaginar que em 2 segundos a temperatura sobe 2 graus, o kp não vai fazer grande coisa porque o erro não é muito, mas o kd vai reagir bastante porque o erro variou bruscamente. Daí que o kd é sensível ao ruído, se por acaso existe uma má leitura da temperatura num dado momento o kd pode reagir em exagero, daí que o kd convem ser pequeno tambem.