Autor Tópico: Controle PID com microcontrolador PIC  (Lida 22801 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Controle PID com microcontrolador PIC
« Online: 19 de Maio de 2009, 20:37 »
Pessoal, boa noite.

A algum tempo venho pegando informações sobre o uso de PID para controles ... exemplo temperatura e rotação.
Apesar de eu pegar alguns exemplos inclusive com os firmwares, eu tenho ainda dúvida de como implementar um ... o que eu deveria exatamente fazer para usar um PID direto pelo PIC.
Alguém tem alguma "receita" ou um "passo a passo" para se implementar um controle por PID utilizando microcontrolador?
Como já disse anteriormente, eu já possuo alguns trabalhos garimpados pela internet mas estou com dúvidas de como implementar, ou seja, fazer um controle por PID.
Agradeço qualquer ajuda quanto a este assunto.


abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #1 Online: 19 de Maio de 2009, 21:03 »
Blackmore,

Há muitos aspectos envolvidos num controle PID em malha fechada, o mais básico, é o tempo de varredura do software, que deve ser compatível com o processo que voce vai controlar.

Também há vários tipos de algoritmos: posicional, incremental, série, paralelo, etc... Há ainda as variações do PID, tais como: somente P, P+I, P+I+D. PID gap, PID ratio, PID com ganho adaptativo, ...

Existem ainda as questões relativas à sintonia do controlador PID.

Como voce deve saber, apesar de ser usado em larga escala, o PID é basicamente um algoritmo para processos lineares, ou que sejam lineares dentro de uma pequena faixa...

Um algoritmo PID simples:

previous_error = 0
integral = 0
output = 0
start:
  error = setpoint - actual_position
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative + output
  previous_error = error
  wait(dt)
  goto start

Esse algoritmo poderia ser passado para o assembler de um PIC.

O PID acima é básico, mas um PID pode conter mais coisas, tais como: o modo MANUAL, o Anti RESET windup, o Bumpless, .... Depende se vai ter interface com usuário, a robustez necessária...

Mas pra começar, que tal definir uma aplicação exemplo, fica mais didático...  ;)

Offline ivancoimbra

  • Hobby
  • ****
  • Posts: 555
Re: Controle PID com microcontrolador PIC
« Resposta #2 Online: 19 de Maio de 2009, 21:18 »
Talves voçe já conheça, mas tem esse site japones com um projeto para servomotor com controle pid via microcontrolador

http://elm-chan.org/works/smc/report_e.html

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Controle PID com microcontrolador PIC
« Resposta #3 Online: 19 de Maio de 2009, 23:47 »
ivancoimbra

Não cheguei a ler ainda pois estou priorizando os que estão em português ... no momento está mais fácil para mim.
Encontrei um material muito bacana ... deve ter tudo .. estou tentando baixar para estudar depois.

http://www.ece.ufrgs.br/~jmgomes/pid/Apostila/apostila/apostila.html

minilathe

Já li alguma coisa e tem um monte ainda para ler, percebi em um dos materiais, e um dos que gostei (inclusive é o que eu comento no primeiro post) foi esse.

http://www.saofrancisco.edu.br/cursos/graduacao/producao_download.asp?arquivo=91

Mas como sempre, achei um pouco "fácil" demais para estar tudo ali, pronto ..
como tu disse, de definir uma aplicação, bem ... eu fiz um aquecedor para água, em um volume grande, como o volume a ser aquecido é relativamente grande apenas comparamos valores de temperatura pré programada com o valor da água .. qdo este atinge o valor o controle se desliga. nada complexo mas que para o que eu necessitava atendia.
Mas acontece que na procura de melhorar encontrei muito material sobre o controle de temperatura com PID, e me interessei em incrementar meu aquecedor, principalmente em se tratando de trabalho de faculdade e que quanto mais da teoria dada se aplicar E BEM é melhor visto pelo professor orientador.
Bom .. vou continuar os estudos e tentar fazer uma montagem pelo menos em protoboard para ver como se comporta tudo ...

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #4 Online: 20 de Maio de 2009, 00:00 »

Já li alguma coisa e tem um monte ainda para ler, percebi em um dos materiais, e um dos que gostei (inclusive é o que eu comento no primeiro post) foi esse.

http://www.saofrancisco.edu.br/cursos/graduacao/producao_download.asp?arquivo=91

Mas como sempre, achei um pouco "fácil" demais para estar tudo ali, pronto ..
como tu disse, de definir uma aplicação, bem ... eu fiz um aquecedor para água, em um volume grande, como o volume a ser aquecido é relativamente grande apenas comparamos valores de temperatura pré programada com o valor da água .. qdo este atinge o valor o controle se desliga. nada complexo mas que para o que eu necessitava atendia.

Na verdade, a implementação de um algoritmo PID é muito simples, apesar de toda a teoria de controle parecer dizer o contrário...

E realmente, se voce usa um tanque com muita água é como se fosse um grande capacitor.... A temperatura variará muito pouco, principalemente se a potência da resistência for baixa. Aí, até um controle ON/OFF funciona muito bem. Já lidei com equipamentos de laboratório de ensaios, que usavam controle ON/OFF e controlavam a temperatura com +/- 0.1 grau de precisão, e usavam volumes de mais de 10 litros de água. Um PID não ofereceria muito ganho, nesse caso. Mas se voce usar volumes menores ou maiores potências na resistência, o PID mostraria as suas vantagens.

principalmente em se tratando de trabalho de faculdade e que quanto mais da teoria dada se aplicar E BEM é melhor visto pelo professor orientador.
Bom .. vou continuar os estudos e tentar fazer uma montagem pelo menos em protoboard para ver como se comporta tudo ...

Agradar o professor é sempre uma boa, rsrsrsrs...

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Controle PID com microcontrolador PIC
« Resposta #5 Online: 20 de Maio de 2009, 00:54 »
olha a loucura do professor ...
a idéia inicial era aquecer em 10 graus Celsius um tanque com 30.000 litros d'agua.
Pelos cálculos chegamos a cerca de 17KW nas resistências e quase 80A em 220volts, pelo que me lembro para aquecer esses 30.000 litros em cerca de 30 horas.
Fizemos um protótipo aquecendo com uma resistência de 4KW cerca de 100 litros d'agua, este protótipo deverá rodar no final de semana e iremos fazer o "levantamento" do aquecimento da água na prática e comparar o com teórico, e caso dê alguma coisa errada ter um plano B para engordar o relatório, logicamente com seu devido protótipo rodar no fds.
Bom .. é ler e tentar montar para o fds ... ver o que dá.

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #6 Online: 20 de Maio de 2009, 01:25 »

a idéia inicial era aquecer em 10 graus Celsius um tanque com 30.000 litros d'agua.
Pelos cálculos chegamos a cerca de 17KW nas resistências e quase 80A em 220volts, pelo que me lembro para aquecer esses 30.000 litros em cerca de 30 horas.

Se não houver vazão no reservatório e como a temperatura sobe 10 graus em 30 horas e considerando que voce quer controlar com +/- 1 grau de resolução, isso corresponde a 0,3 horas=18 minutos, que é uma dinâmica muito lenta para um microntrolador. Ou seja, voce pode rodar o seu algoritmo PID uma vez por minuto e a temperatura ainda não terá variado em 1 grau!!! Até um controlador ON/OFF resolve, e bem!!! O PID não vai se justificar economicamente. A água esquenta em 1 grau a cada 3 horas, mas esfria numa taxa talvez até menor, se o tanque tiver isolamento térmico e se não houver vazão de água.

Não querendo complicar, ao invés de um tanque, voce poderia fazer um aquecedor de passagem, tipo chuveiro elétrico, aí sim o PID iria se justificar. A dinâmica seria bem rápida e um controle ON/OFF não funcionaria bem...

Uma vez (no mestrado, há mais de dez anos...) eu fiz um controle PID usando Visual Basic 3.0 e Windows 3.11, usei um microcontrolador como unidade de entrada e saída apenas. Controlava a temperatura de um secador de cabelo variando o ângulo de disparo de um TRIAC pelo microcontrolador 8751. Funcionou muito bem. Acho que ainda tenho o algoritmo aqui em casa (era bem parecido com o que postei acima).

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Controle PID com microcontrolador PIC
« Resposta #7 Online: 20 de Maio de 2009, 11:29 »
bom ... a necessidade do reservatório ... o professor garantiu que vai testar o equipamento na piscina da casa dele, e nos orienta a trabalhar com a pior condição que é sem isolamento térmico.
Quanto ao aquecedor, o pessoal que está cuidando da parte "mecânica" do trabalho está fazendo um tanque para fixação da resistência onde iremos circular água com um controle de velocidade da bomba, exatamente como tu fala do chuveiro elétrico, ou seja, quanto mais devagar a água passar mais calor ela absorve, e é onde eu tenho o medo de que não dê certo e estou nessa garimpagem do PID.
Teus comentários estão me ajudando um bocado, muito obrigado até aqui!

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #8 Online: 20 de Maio de 2009, 23:25 »
bom ... a necessidade do reservatório ... o professor garantiu que vai testar o equipamento na piscina da casa dele, e nos orienta a trabalhar com a pior condição que é sem isolamento térmico.

Sem isolamento, o resfriamento é mais rápido e também demanda mais potência no aquecimento.

Quanto ao aquecedor, o pessoal que está cuidando da parte "mecânica" do trabalho está fazendo um tanque para fixação da resistência onde iremos circular água com um controle de velocidade da bomba, exatamente como tu fala do chuveiro elétrico, ou seja, quanto mais devagar a água passar mais calor ela absorve, e é onde eu tenho o medo de que não dê certo e estou nessa garimpagem do PID.

Se a água passar devagar a temperatura vai varia mais lentamente, pois existe o que se chama de "tempo de residência", que é calculado como = volume do aquecedor / vazão. É o tempo de resposta desse sistema, necessário para o aquecedor ser renovado. Quanto maior esse tempo, mais lentamente a temperatura varia e inversamente ao que vc está pensando, menos trabalho terá o sistema de controle (vai alterar mais lentamente a potência da resitência), se for lento demais até um controlador ON/OFF resolveria. Mas, num sistema de passagem, use o PID mesmo se tiver resposta lenta....  ;)

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #9 Online: 22 de Maio de 2009, 13:57 »
Blackmore,

Para esclarecer o que eu disse, seguem alguns modelos do processo de aquecimento de água:

             
dm/dt     +--------------+            dm/dt
T1 ------>|                  |--------> T2
             |  Aquecedor  |
P  ------>|                  |
             +---------------+

Abreviaturas:
dm/dt: vazão mássica de água (kg/s)
T1: temperatura de entrada da água (oC)
T2: temperatura de saída da água  (oC)
P: potência elétrica aplicada á resistência (Watts=E2/R)
t: tempo, em segundos
c: calor específico da água (cal/goC)
V: volume do aquecedor
m: massa de água

Calor cedido á um certo volume (p.exe: aquecedor) para aquecer a água:
q =  m.c.(T2-T1)

Como a potência, a massa e a temperatura variam:

dq/dt = (T2-T1).c.(dm/dt) + m.c.(dT2/dt)

Logo:

dT2/dt = (1/m.c).(P - c.(dm/dt).(T2-T1))

Ou seja, para o aquecedor de passagem, podermosconcluir que:

- Ao aumentar seu volume (V), dT2/dt diminui.
- Ao aumentar a potência (P), dT2/dt aumenta
- Ao aumentar a vazão de água, dT2/dt diminui

Para um reservatório (tanque), sem vazão (dm/dt=0), mas a equação acima também pode ser usada.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #10 Online: 22 de Maio de 2009, 15:14 »
Apenas fzendo um crescimo/correção:

q = calor cedido (cal)

Existe uma relação direta entre potência e e taxa de calorias cedidas no tempo (dq/dt). Sabemos que: 1 cal = 4,18 Joule.

Então:

1 Watt = 1 J/s = (1/4,18) cal/s

Assim, a equação anterior deve ser corrigida conforme a seguir:

dT2/dt = (1/m.c).((P/4,18) - c.(dm/dt).(T2-T1))

e a temperatura interna e de saida do aquecedor será:

T2 = T1 + (dT2/dt) (delta t)

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Controle PID com microcontrolador PIC
« Resposta #11 Online: 23 de Dezembro de 2009, 03:31 »
Em agradecimento os amigos que sempre postam opniões e oferecem ajuda (aqui e em outros locais virtuais que frequento), é bom finalizar este tópico iniciado a tempos.

O trabalho foi terminado ... apresentado ... e ficou dentro das expectativas do professor na parte física, e superou na parte eletrônica.
Na parte de conhecimento de Física, "apenas" comprovamos que os cálculos são corretos ... tudo dentro de uma normalidade aceitável, o consumo ficou dentro do esperado, o tempo de aquecimento da água para o volume de 100 litros apresentou um erro de 3 minutos mas para o professor perfeitamente aceitável.
Na parte eletrônica, pode não parecer muito, mas a pesquisa feita e o conhecimento adquirido com este trabalho (curso de Eletricidade e Automação) onde ficou evidente para o professor que praticar a teoria ensinada em sala de aula foi plenamente atingida em nosso trabalho (até o final do 3º semestre).
Com base em datasheets e vários testes pudemos aprender:

- Como fazer controle de altas potências com baixa potência;
- Como dimensionar um bom dissipador de calor;
- Dimensionar adequadamente as bitolas dos condutores;
- Dimensionar adequadamente uma fonte para a parte lógica;
- Porquê utilizar opto-acopladores (acionava o motor, o display ficava louco!!);
- Programação em linguagem C;
- Leitura de sinais analógicos e como tratá-los;

Logicamente que muita coisa pode e deve ser melhorada de acordo com a vontade do grupo e da oportunidade que tivermos, como por exemplo:

- Diminuir a rotação do motor da bomba d'agua atravé do ângulo de fase;
- Melhorar a interface homem máquina;
- Adicionar uma porta de comunicação para um PC;
- Adicionar sensor de corrente;
- Manter dados de programação gravados em memória;
- Etc, etc e etc.

Com toda a dificuldade durante todo o período que tivemos, com noites e noites sem dormir, alguns dias de "cano" no trabalho, fins de semana com a patroa buzinando no ouvido e uma boa grana destinada neste trabalho finalmente nosso objetivo foi atingido.

Com um sistema de passagem por uma resistência blindada de 4,5Kw conseguimos aquecer de 19ºC para 44ºC  cerca de 100 litros d'agua em aproximadamente 40 minutos.

Agradeço o amigo minilathe que com sua paciência e atenção ajudou muito na direção a seguir, e agradeço aos amigos foristas (daqui e em outros locais virtuais que frequento), que sempre "perdem" algum tempo com iniciantes como eu.

Mais uma vez, agradeço a todos.


PS.: Assim que eu encontrar eu posto as fotos do trabalho que foi terminado no final da primeira quinzena de junho/09.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Controle PID com microcontrolador PIC
« Resposta #12 Online: 23 de Dezembro de 2009, 07:29 »
Blackmore,

Parabéns pelo empenho e pelos bons resultados, extensivo ao seu grupo. Você vai longe, hein...

Aproveito para reforçar os votos de Boas Festas e Feliz Natal (já feitas a todos os amigos do Fórum)... ;D

P.S.- vamos tentar aplicar o(s) PID(s) a um pêndulo invertido que estamos fazendo com um outro amigo do Fórum... será divertido...  ;D

Offline Paulo_lumens

  • Hobby
  • ****
  • Posts: 269
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Charqueada-SP
Re: Controle PID com microcontrolador PIC
« Resposta #13 Online: 20 de Julho de 2016, 12:56 »
Blackmore,

Há muitos aspectos envolvidos num controle PID em malha fechada, o mais básico, é o tempo de varredura do software, que deve ser compatível com o processo que voce vai controlar.

Também há vários tipos de algoritmos: posicional, incremental, série, paralelo, etc... Há ainda as variações do PID, tais como: somente P, P+I, P+I+D. PID gap, PID ratio, PID com ganho adaptativo, ...

Existem ainda as questões relativas à sintonia do controlador PID.

Como voce deve saber, apesar de ser usado em larga escala, o PID é basicamente um algoritmo para processos lineares, ou que sejam lineares dentro de uma pequena faixa...

Um algoritmo PID simples:

previous_error = 0
integral = 0
output = 0
start:
  error = setpoint - actual_position
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative + output
  previous_error = error
  wait(dt)
  goto start

Esse algoritmo poderia ser passado para o assembler de um PIC.

O PID acima é básico, mas um PID pode conter mais coisas, tais como: o modo MANUAL, o Anti RESET windup, o Bumpless, .... Depende se vai ter interface com usuário, a robustez necessária...

Mas pra começar, que tal definir uma aplicação exemplo, fica mais didático...  ;)

Olá Minilathe me desculpe por estar reabrindo um tópico antigo, em pesquisa encontrei esse comentário com uma sugestão para o PID.
Estou com a indagação de como determinar o (dt) dentro dos ciclos de maquina? No meu caso estou tentando controlar um motor AC tenho leitura de RPM e passa zerro entrada AC chaveamento com rele sólido FOTEK 25A seria possível? 

 

/** * */