Índice:

Controlador de temperatura PID: 7 etapas
Controlador de temperatura PID: 7 etapas

Vídeo: Controlador de temperatura PID: 7 etapas

Vídeo: Controlador de temperatura PID: 7 etapas
Vídeo: Sintonia control PID por Zielger y Nichols - Método 1 2024, Julho
Anonim
Controlador de temperatura PID
Controlador de temperatura PID

Meu amigo está construindo uma extrusora de plástico para reciclagem de plástico (https://preciousplastic.com). Ele precisa controlar a temperatura de extrusão. Para isso, ele está usando uma faixa de resistência do bico. Neste bico, existe um termopar e uma unidade de aquecimento que nos permitem medir a temperatura e finalmente atingir a temperatura desejada (fazer um loop de retroação).

Quando soube que ele precisava de vários controladores PID para controlar todas essas bandas de resistência do bico, imediatamente tive o desejo de tentar fazer as nossas próprias.

Etapa 1: Ferramentas e material

Ferramentas

  • ferro de solda, fio de solda e fluxo
  • pinça
  • fresadora (gravação química também é possível para prototipagem de PCB) (você também pode solicitar a PCB com meu arquivo águia)
  • termômetro (para calibração)
  • arduino (qualquer tipo) ou um programador AVR
  • Cabo USB TTL-232 serial FTDI
  • cortador a laser (opcional)
  • multímetro (ohmímetro e voltímetro)

Material

  • Placa de cobre de lado único de baquelita (60 * 35 mm mínimo) (estraguei minha serra comprando a de fibra de vidro, então tome cuidado: baquelita)
  • Microcontrolador Attiny45
  • Regulador de tensão LM2940IMP-5
  • Amplificador operacional AD8605
  • Transistor NDS356AP
  • um monte de resistores e capacitores (eu tenho o livro SMT 0603 adafruit)
  • Transformador 230V-9V ac-dc
  • Diodos 1N4004
  • relé de estado sólido
  • esmalte de unha (opcional)

Etapa 2: Etch o PCB

Etch o PCB
Etch o PCB
Etch o PCB
Etch o PCB
Etch o PCB
Etch o PCB

Usei meu CNC Proxxon MF70 transformado e uma broca cônica para fresar o PCB. Acho que qualquer broca final de gravação funcionaria. O arquivo Gcode foi gerado diretamente pelo eagle e pelo plugin pcb-gcode. Apenas três passagens foram feitas para garantir uma boa separação de rota, mas sem gastar horas moendo todo o cobre. Quando a placa de circuito impresso saiu da máquina CNC, limpei as rotas com um cortador e testei com um multímetro.

Parâmetros: taxa de alimentação 150 mm / min, profundidade 0,2 mm, velocidade de rotação 20.000 t / min

Etapa 3: soldar os componentes

Solde os componentes
Solde os componentes

Com a pinça e o ferro de soldar, coloque os componentes nos lugares certos e solde com fluxo (ajuda) e começando pelos menores componentes. Novamente, verifique com um multímetro se você não tem nenhum curto-circuito ou elementos desconectados.

Você pode escolher o ganho do amplificador escolhendo o resistor desejado (ganho = (R3 + R4) / R4). Tomei 1M e 2,7k, então no meu caso o ganho é igual a aproximadamente 371. Não posso saber o valor exato porque estou usando um resistor de tolerância de 5%.

Meu termopar é do tipo J. Isso significa que dá 0,05mV para cada grau. Com o ganho de 371, obtenho 18,5 mV por grau da saída do amplificador (0,05 * 371). Eu quero medir em torno de 200 ° C, então a saída do amplificador deve ser em torno de 3,7 V (0,0185 * 200). O resultado não deve exceder 5 V porque eu uso a tensão de referência de 5 V (externa).

A imagem corresponde à primeira versão (não funcional) que fiz, mas o princípio é o mesmo. Nessa primeira versão, usei um relé e coloquei bem no meio do tabuleiro. Assim que estava trocando para alta tensão, tive picos que fizeram o controlador reiniciar.

Etapa 4: programe o microcontrolador

Programe o microcontrolador
Programe o microcontrolador

Usando um arduino como neste instructables: https://www.instructables.com/id/How-to-Program-a… você pode carregar o código.

Usei um bugiganga profissional com um cabo FTDI-USB para programar o Attiny 45, mas esse método é equivalente. Em seguida, conectei o pino PB1 e GDN diretamente no RX e GND do cabo FTDI-USB para receber os dados seriais e poder depurar.

Você deve colocar todos os parâmetros em zero (P = 0, I = 0, D = 0, K = 0) no esboço do Arduino. Eles serão definidos durante a etapa de ajuste.

Se você não vir fumaça ou cheiro de queimado, pule para a próxima etapa!

Etapa 5: montagem e calibração

Montagem e calibração
Montagem e calibração
Montagem e calibração
Montagem e calibração

Cuidado: Nunca conecte a fonte de alimentação e os 5 V do programador ao mesmo tempo! Caso contrário, você verá a fumaça que eu estava produzindo na etapa anterior. Se você não tem certeza de que pode respeitar isso, pode simplesmente remover o pino de 5v do programador. Deixei porque era mais conveniente para mim programar o controlador sem fonte de alimentação e testar o controlador sem ter o aquecedor esquentando loucamente na minha cara.

Agora você pode ramificar o termopar no amplificador e ver se está medindo algo (respeite a polaridade). Se o seu sistema de aquecimento estiver na temperatura ambiente, você deve medir zero. Aquecer com a mão já deve levar a alguns valores pequenos.

Como ler esses valores? Simplesmente conecte os pinos PB1 e GDN diretamente no RX e GND do cabo FTDI-USB e abra o monitor serial arduino.

Quando o controlador inicia, ele envia o valor vermelho pelo termômetro interno do chip. É assim que compenso a temperatura (sem usar um chip dedicado). Isso significa que se a temperatura mudar durante a operação, isso não será levado em consideração. Este valor é muito diferente de um chip para outro, por isso deve ser inserido manualmente na definição REFTEMPERATURE no início do esboço.

Antes de conectar o relé de estado sólido, verifique se a saída de tensão está na faixa suportada pelo seu relé (3 V a 25 V no meu caso, o circuito gera em torno de 11 V). (respeite a polaridade)

Esses valores não são temperaturas em graus ou Fahrenheit, mas o resultado da conversão analógico para digital, de modo que variam entre 0 e 1024. Eu uso a tensão de referência de 5 V, portanto, quando a saída do amplificador está perto de 5 V, o resultado da conversão é próximo a 1024.

Etapa 6: Ajuste de PID

Ajuste PID
Ajuste PID

Preciso dizer que não sou um especialista em controle, então encontrei alguns parâmetros que funcionam para mim, mas não garanto que funcionem para todos.

Em primeiro lugar, devo explicar o que o programa faz. Implementei uma espécie de software PWM: um contador é incrementado a cada iteração até chegar a 20.000 (nesse caso é zerado para 0). Um atraso retarda o loop para um milissegundo. Os mais perspicazes notarão que o período de controle é de cerca de 20 segundos. Cada loop começa com uma comparação entre o contador e um limite. Se o contador estiver abaixo do limite, desligo o relé. Se for maior, eu ligo. Então, eu regulo a potência definindo o limite. O cálculo do limite ocorre a cada segundo.

O que é um controlador PID?

Quando você deseja controlar um processo, você tem o valor que mede (analogData), o valor que deseja atingir (tempCommand) e uma forma de modificar o estado desse processo (seuil). No meu caso é feito com o limite ("seuil" em francês mas muito mais fácil de escrever e pronunciar (pronuncia-se "sey")) que determina quanto tempo o interruptor ficará ligado e desligado (o ciclo de trabalho), portanto, a quantidade de energia colocar no sistema.

Todos concordam que se você estiver longe do ponto que deseja alcançar, poderá fazer uma grande correção e, se estiver perto, uma pequena correção será necessária. Isso significa que a correção é uma função do erro (erro = analogData-tempComand). Sim, mas quanto? Digamos que multiplicemos o erro por um fator (P). Este é um controlador proporcional. Mecanicamente, uma mola faz uma correção proporcional porque a força da mola é proporcional à compressão da mola.

Você provavelmente sabe que as suspensões do seu carro consistem em uma mola e um amortecedor (amortecedor). A função desse amortecedor é evitar que o carro salte como um trampolim. Isso é exatamente o que o termo derivado faz. Como amortecedor, ele gera uma reação proporcional à variação do erro. Se o erro mudar rapidamente, a correção será reduzida. Reduz oscilações e overshoots.

O termo integrador existe para evitar o erro permanente (ele integra o erro). Concretamente, é um contador que é incrementado ou decrementado se o erro for positivo ou negativo. Então, a correção é aumentada ou diminuída de acordo com este contador. Não tem equivalência mecânica (ou você tem uma ideia?). Talvez haja um efeito semelhante quando você leva seu carro para o serviço e o mecânico percebe que os choques estão sistematicamente muito baixos e decide adicionar um pouco mais de pré-carga.

Tudo isso está resumido na fórmula: correção = P * e (t) + I * (de (t) / dt) + D * integral (e (t) dt), P, I e D sendo três parâmetros que têm para ser ajustado.

Na minha versão, adicionei um quarto termo que é o comando "a priori" (feed forward) necessário para manter uma certa temperatura. Escolhi um comando proporcional à temperatura (é uma boa aproximação das perdas de aquecimento. É verdade se desprezarmos as perdas de radiação (T ^ 4)). Com este termo, o integrador fica mais leve.

Como encontrar esses parâmetros?

Tentei um método convencional que você pode encontrar pesquisando "controlador de temperatura de ajuste do pid" no Google, mas achei difícil aplicá-lo e acabei usando meu próprio método.

Meu método

Primeiro coloque P, I, D em zero e coloque "K" e "tempCommand" em valores pequenos (por exemplo K = 1 e tempCommand = 100). Ligue o sistema e espere, espere, espere … até que a temperatura se estabilize. Neste ponto você sabe que com um "seuil" de 1 * 100 = 100, a temperatura tende para X. Então você sabe que com um comando de 100/20000 = 5% você pode chegar a X. Mas a meta é chegar a 100 porque é "tempCommand". Usando uma proporção, você pode calcular K para chegar a 100 (tempCommand). Por precaução usei um valor menor do que o calculado. Na verdade, é mais fácil aquecer mais do que resfriar. Então finalmente

Kfinal = K * tempCommand * 0,9 / X

Agora, quando você liga o controlador, ele deve tender naturalmente para a temperatura desejada, mas é um processo muito lento porque você compensa apenas as perdas de aquecimento. Se você quiser ir de uma temperatura para outra, uma quantidade de energia térmica deve ser adicionada ao sistema. P determina a que taxa você coloca a energia no sistema. Defina P com um valor pequeno (por exemplo, P = 10). Experimente uma (quase) inicialização a frio. Se você não tiver um grande overshoot, tente com o duplo (P = 20) se agora você tiver um, tente algo no meio. Se você tiver 5% de ultrapassagem, é bom.

Agora aumente D até que você não tenha ultrapassagem. (sempre tentativas, eu sei que isso não é ciência) (eu tirei D = 100)

Em seguida, adicione I = P ^ 2 / (4 * D) (é baseado no método Ziegler-Nicholts, deve garantir estabilidade) (para mim I = 1)

Por que todas essas provações, por que não a ciência?

Eu sei eu sei! Existe uma grande teoria e você pode calcular a função de transferência e a transformada Z e blablabla. Eu queria gerar um salto unitário e então registrar por 10 minutos a reação e escrever a função de transferência e depois o quê? Não quero fazer aritmética com 200 termos. Portanto, se alguém tiver uma ideia, ficaria feliz em aprender como fazer isso da maneira certa.

Também pensei em meus melhores amigos Ziegler e Nichols. Eles me disseram para encontrar um P que gerasse oscilações e então aplicar seu método. Nunca encontrei essas oscilações. A única coisa que encontrei foi um oooooooovershoot para o céu.

E como modelar o fato de que aquecimento não é o mesmo processo que resfriamento?

Vou continuar minha pesquisa, mas agora vamos empacotar seu controlador se você estiver satisfeito com o desempenho obtido.

Etapa 7: Empacote

Embalar
Embalar
Embalar
Embalar
Embalar
Embalar
Embalar
Embalar

Tive acesso ao fablab de Moscou (fablab77.ru) e seu cortador a laser e sou grato. Essa oportunidade me permitiu fazer um belo pacote gerado em um clique por um plugin que faz caixas com as dimensões desejadas (h = 69 l = 66 d = 42 mm). Existem dois orifícios (diam = 5mm) na parte superior para o led e o interruptor e uma fenda lateral para os pinos de programação. Prendi o transformador com dois pedaços de madeira e o PCB com dois parafusos. Soldei o bloco terminal aos fios e ao PCB, adicionei a chave entre o transformador e a entrada de energia do PCB, conectei o led ao PBO com um resistor (300 Ohms) em série. Também usei esmalte de unha para isolamento elétrico. Após o último teste, colei a caixa. É isso.

Recomendado: