Como aprender o controle PID?

26

Quero aprender o controle PID (Proporcional – Integral – Derivativo) principalmente para temperatura.

Eu gostaria de aprender de preferência através de um projeto fácil de fazer.

Você poderia recomendar algo que levaria algumas semanas para aprender?

Edit: Eu quero controlar a temperatura de um tanque de água. O aquecimento é feito por um resistor.

Daniel Grillo
fonte
Tentei obter um projeto básico com o qual alguém pudesse aprender, acho que a matemática também é interessante. As pessoas dedicam suas vidas a isso.
Kortuk
Do que você deseja controlar a temperatura?
J. Polfer
3
Como você não pode remover o calor, é necessário garantir que o sistema ainda esfrie, mesmo ao aplicar uma corrente pequena ou que o seu PID possa ter problemas de regulamentação. Eu adicionaria um ventilador ou gelo ao fazer seu experimento. Você quer que ele suba quando estiver cheio e desça quando estiver fora. Se for esse o caso, o feedback será regulamentado por você.
Rex Logan
11
Isso é determinado pela temperatura do tanque de água necessária. Se ele quer 80 ° C, a temperatura do ambiente será suficiente; se ele quiser 25 ° C, ele terá um problema. O PID, quando ajustado corretamente, deve ser capaz de lidar com uma perda lenta de temperatura.
Kortuk

Respostas:

27

Controlar a temperatura (depende do seu meio) não é terrivelmente difícil. Esse foi o meu primeiro projeto quando comecei. Perdoe-me, se eu repetir coisas que você já sabe.

Suponho que você já tenha uma maneira de controlar o sistema (ou seja, um aquecedor ou uma unidade mais fria) e uma maneira de obter feedback do sistema (um sensor de temperatura como um termistor ou algo assim). Você precisará de ambos para implementar um loop PID, que é um tipo de controle de loop fechado. Tudo o que você realmente precisa fazer depois é escrever um pouco de software para enviar comandos de controle, ler comentários e tomar decisões sobre esse feedback.

Eu começaria lendo o PID sem um doutorado . É o artigo que usei quando tive que regular a temperatura em um experimento científico. Ele fornece algumas imagens fáceis de entender e um bom código de amostra (um loop básico que você pode ajustar apenas precisa de 30 linhas) que explica como controlar sua 'planta' - nesse caso, o que você deseja controlar a temperatura .

A essência do controle PID - Proporcional-Integral-Diferencial - é usar o desempenho instantâneo, passado e futuro previsto (respectivamente) do sistema para determinar como controlar um sistema em um determinado ponto no tempo para atingir um ponto definido. Em muitos casos, será necessário ajustar os fatores de ganho do algoritmo para obter o desempenho desejado de que você precisa - com que rapidez a temperatura aumentará, quanto você deseja evitar excedentes etc. Você pode até achar que não precisa do diferencial ou mesmo controle integral para chegar onde você quer estar!

J. Polfer
fonte
não conseguia lembrar para onde foi o link para o PID sem um doutorado. Eu tinha esquecido o nome e não conseguia me lembrar do que li há tanto tempo. +1 senhor.
Kortuk
3
PID sem PhD é um ótimo artigo! No entanto, bem, meu 8-bit microcontrolador não gostava que a aritmética de ponto flutuante ..
Abdullah kahraman
Apenas excelente! PID sem PHD é perfeito. Eu tenho um doutorado, mas fiz o meu melhor para ficar longe da teoria do controle :) Além disso, adoro o mini seguidor de linha.
@ Bistromath Por favor, não adicione "obrigado" como resposta. Depois de ter reputação suficiente , você poderá votar nas perguntas e respostas que achou úteis.
usar o seguinte código
10

Sim. Pegue um termistor e um resistor. Escolha uma resistência que possa puxar uma corrente decentemente grande (> 100mA).

Use pasta térmica entre eles e prenda-os com fita adesiva. Conecte o circuito do termistor a um microcontrolador através do ADC. Use um transistor para controlar o resistor e controle-o com um PWM.

Desenvolva um PID que permita controlar a temperatura com um dial e pratique a criação de um PID que ultrapasse e toque a temperatura. Faça um amortecimento excessivo e demore uma eternidade para atingir a temperatura, e tente amortecê-lo criticamente e atingir a temperatura na velocidade máxima.

Deixe-me saber se mais detalhes ajudariam.

Depois de fazer isso, reduza a condutância térmica, tente adicionar um estágio que atrasará a propagação da temperatura e tente controlar bem.

Isso também pode ser feito com um LED e um foto-transistor.

Kortuk
fonte
Essas são boas sugestões para tentar entender como os loops PID se comportam.
J. Polfer
1

Um bom simulador de PID está disponível para o Scilab.

Leon Heller
fonte
1

Apenas adicionando meus 2 centavos às boas respostas já.

O uso prático do PID para controle de temperatura geralmente possui comportamentos não lineares se a detecção de erro de temperatura é limitada (o ganho do amplificador operacional satura a saída) e a energia disponível para controlar a temperatura é fixa.

Considere um controlador on-off. O sistema terá latência a partir do momento em que o calor é aplicado e uma mudança na temperatura é detectada. Sem loop PID, essa latência cria um loop instável oscilando e, se houver histerelas, a energia alterna com ruído (On-Off-On). Entretanto, um ganho muito alto (como um comparador) resulta em um pequeno erro de temperatura residual. A latência afeta o tempo do ciclo e o excesso.

Se houver uma perturbação externa, como uma lâmpada do tanque, que possa adicionar calor significativo, o regulador do aquecedor deverá responder assim que um aumento de temperatura for detectado pelo calor da lâmpada. Se o swith da lâmpada não fizer parte do loop PID, ele não poderá "antecipar" o efeito (ganho derivado de feedback). Obviamente, se as lâmpadas gerarem muito calor, a temperatura não poderá ser regulada e excederá o ponto de ajuste.

Seu controle de calor com controle PID pode precisar de uma entrada para o estado do interruptor da lâmpada e controle de saída para regular a energia da luz como fonte secundária de calor, novamente se for demais.

Definindo seus requisitos para erro de controle absoluto,% de ultrapassagem e tempo de resposta são algumas entradas de design necessárias para otimizar seu loop PID. Igualmente importante é definir os distúrbios do sistema e incluí-los no sistema de controle de entrada e saída. por exemplo. Potência de aquecimento da lâmpada e escolha do (s) sensor (es) e localização.

Além da experiência.

Minha primeira experiência com aquecedor de água foi durante a era do leito aquático dos anos 70, quando eu era estudante, projetei meu próprio controlador de temperatura usando um termistor, circuito de controle e um interruptor triac de cruzamento zero para o aquecedor. Comecei com o controle do comparador e encontrei uma resposta incomum ao pular na cama. Por isso, adicionei controle proporcional usando ruído não filtrado no sensor para fornecer "ciclos perdidos" proporcionais quando o triac do ZCS estava ligado próximo ao limite. Eu poderia regular a temperatura dentro de 0,1 ° C. A resposta foi mais suave, mas o resultado foi o mesmo.

Descobri que o maior erro ocorreu no local e pequenas alterações na pressão da água no sensor. (Eu era pequeno na época, apenas 185 libras, mas em uma cama de água de 2000 libras <mudança de 10% na pressão da água era pequena)

A resistência térmica entre o sensor e o leito da água criou um pequeno erro de deslocamento, dependendo da pressão da água contra o sensor. No cenário do tanque de água, o erro do sensor pode ser afetado pelo tamanho do tanque e pela distância entre o sensor e o aquecedor ou o sensor e a superfície mais distante da água ou a taxa de fluxo ou bolhas de água entre o sensor e o aquecedor.

No meu caso, sempre que eu pulava na cama, a resistência térmica diminuía levemente devido à pressão adicionada e a luz de potência brilhava mais fraca por um minuto ou dois até que a temperatura caísse um décimo de grau ou para coincidir com o aumento aparente da temperatura devido a peso e pressão adicionais. o colchão de água contra o termostato.

(Lição aprendida. Não negligencie as fontes de distúrbios e seus efeitos no erro do sistema de controle)

Tony Stewart Sunnyskyguy EE75
fonte