Fórum sobre desenvolvimento de sistemas embarcados: Hardware e Software, Tecnologias: Eletrônica digital e analógica, Microcontroladoras, Microprocessadores, Sistemas *NIX (Linux, BSD), Software embarcado Baremetal. Sem fins lucrativos.
É Egídio, eu lembro quando você botou um post dizendo que ia parar de ficar vagabundando aqui no fórum por um tempo, para se dedicar mais aos estudos!! kkk Bem, então: Vou continuar estudando, mais revendo todos os posts anteriores, eu já posso parar de estudar sobre o algoritmo pois eu aprendi o que podia aprender sobre como e porque funciona, e os detalhes de ajustes. E! Vou ter que estudar: 1° - Transformadas de Laplace. Para eu poder entender as equação diferenciais lineares, para poder denotar e interpretar um comportamento de uma função de transferência.
Para depois poder entender como as simulações do MATLAB funcionam, para poder prever através de dados reais, as variantes de ajustes temporais!!
Para daqui uns 6 meses, conseguir entender o comportamento matematicamente, ao invés de tentativa e erro de tiros na imensidão de cálculos, de engenheiros que fazem a sintonia de forma diferente utilizando sempre Laplace, e outros mais recentes que justificam o (s), para implementação digital do algoritmo com base em Teorema de Nyquist.
Meu problema de interpretação das informações dos colegas, é a falta de conhecimento de algumas matérias fundamentais em engenharia 1 e 2.
Eu procurei um professor de matemática em Orlândia, que cobra 80R$ por aula de 1 hora, que pelo que eu informei para ele, me disse que vou precisar de umas 20 horas bem reforçadas para poder entender todo o contexto, e exercícios não teóricos e sim tirados de algo pratico para poder entender ao pé da letra.
São 20 sábados, com certeza vale o investimento pelo aprendizado!!
Obrigado pessoal, pela paciência, e pela humildade de tentar ensinar o inútil aqui!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
Oi Fabim! Tem um excelente livro, que trata deste assunto. Na minha época, custava cerca de um salário mínimo e eu não pude comprá-lo. Hoje você encontra nos sebos por ninharia. Sempre o procurei nos sebos. Finalmente eu acabei encontrando no sebo há cerca de uns seis anos. É daqueles livros que se deve ter em casa. Sempre os consultamos. Quando fui fazer prova para o mestrado na COPPE, eu reestudei por ele. Como o livro não é recente e foi usado por muitas universidades daqui e lá de fora, acabaram resolvendo todos os exercícios propostos no livro. Os exercícios resolvidos eu baixei da net. Também o livro é rico em exemplos resolvidos. Estudando por ele o aluno consegue eliminar todas as dúvidas sobre este e outros assuntos abordados. O livro é conhecido como Close (autor) Título: The Analysis of Linear Circuits Autor: Charles M. Close Editor: Harcourt, Brace & World, Inc. New York / Chicago / San Francisco / Atlanta
Seguem as imagens das três páginas do índice. Tem uma quarta página, mas aqui só são permitidos três anexos. A quarta página não contém nada importante. Se ainda me lembro bem, a transformada de Laplace foi dada em dois semestres na faculdade. Aconselho a estudar com o auxílio de um conhecedor do assunto, pois será necessário. Bons estudos. MOR_AL
Você não está autorizado a ver ou baixar esse anexo.
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke. "Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Brincando aqui com esse controle do Fabim, experimentei utilizar a técnica de Modos Deslizantes, Sliding Mode.
A lei de controle que experimentei:
Na qual: u = potência a ser imposta na resistência de aquecimento (em W); dy = variação da temperatura entre a amostra atual e a anterior; yp = temperatura no instante atual (saída da planta controlada) em ºC. Ts = 10 sec, isto é, atualiza a equação acima a cada 10 segundos.
Ufaaa, passei a tarde e parte da noite lendo todo esse post e vendo os links também. Bom, eu tenho aqui algumas coisas que podem te ajudar. Fiz um modelo no Proteus para testar algoritmos PID, inclusive lá tem como vc observar a influência do período de amostragem, coisa que já vi você perguntar muito sobre isso, rsrsrs, eu também ralei q só... Lá no Proteus tem um componente que você coloca a função de transferência que quiser, está na biblioteca Laplace. Uso o matlab para comparar com os resultados do proteus, tenho um algorítmo PID rodando no PIC18F4550, e bate certinho com o Matlab. Também fiz uma GUI no Matlab onde através de controles deslizantes posso alterar Kp, Ki e Kd e observar os resultados, assim já me livro de ter que usar ziegler nichols, tendo os valores ótimos de Kp,Ki e Kd, coloco no firmware do PIC e é só rodar. Depois disso ainda fiz aqui uma pequena planta, consta de um secador de cabelos (rsrsrs) sendo acionado por um TRIAC (controle por angulo) e jogando o ar em um dissipador desses de processador, onde tenho nele um LM35, um PIC18F4550 roda o PID e manda os dados para uma GUI no Matlab.
Pra começar, vou pegar sua função de transferência e colocar no modelo do Proteus.
MORIS, infelizmente eu tenho muita dificuldade em conseguir ao mesmo tempo interpretar o inglês e aprender, com Ebook ou livros mesmo! Ebook ainda facilita um pouco, pois onde ficar complexo, eu tragooglo e já fica menos difícil para eu assimilar! Mesmo assim muitíssimo obrigado!
Eletroinf vou dar uma estudada!
Agílio eu já havia assistido um vídeo sobre o que você disse no youtube, porém de nada adianta eu fazer algo no escuro!! Digo, se eu não entender sobre função de transferência, transformadas de Laplace. Não vou saber porque daqueles valores estarem ou não corretos, o que desencadeia eu fazer ajustes absurdos, ou não funcionais!!
Thankyouzious!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
Fabin! Ontem eu vi um vídeo no Youtube, que ensina usar o ajuste do PID por meio do método de Ziegler e Nichols. Não é necessário conhecer a equação da tal PLANTA e nem mesmo saber nada além das quatro operações. O problema é que este método apresenta overshoot não desprezível. Mas, você consegue chegar aos três parâmetros, que te auxiliarão a alterá-los para não ocorrer o overshoot. Tem as dicas na net da influência de cada um. O vídeo foi o mostrado a seguir, mas este método é o mesmo, que todos usam. Está em inglês, mas eu também não domino o inglês. Apenas observando o que ele desenha é possível aplicar.
Uma última e importantíssima coisa.
Controle de temperatura é chato, pois depende da potência e da localização da fonte de calor, da rapidez da distribuição no ambiente e da localização do sensor. Se a fonte de calor ficar longe do sensor, vai haver um overshoot. Fazendo uma analogia, imagine um quarto em que a lâmpada foi substituída por uma fonte bem mais potente, que possa elevar a temperatura do quarto até, sei lá, uns 100ºC. Se o sensor ficar a cerca de 1cm da fonte, vai demorar muito para o quarto todo se aquecer, porque você estará quase monitorando a temperatura da fonte e não do quarto. Quando a fonte ultrapassar um pouco a temperatura desejada, o gerador vai desligar e a temperatura no quarto quase não vai se alterar. Aí a temperatura da fonte cai e o sensor manda religar a fonte. Conclusão. A temperatura do quarto todo vai se elevar muito lentamente, e se não houver ventilação forçada, a temperatura no quarto não vai ser constante. Longe da fonte talvez nem suba, mas provavelmente não haverá overshoot. Agora imagine que você afasta muito o sensor da fonte de calor e não coloca uma ventilação forçada adequada. Junto da fonte, a temperatura sobe muito, pois o sensor nem sentiu esta elevação. Quando a temperatura desejada chegou ao sensor, ele envia a ordem de desligar a fonte. Mas a temperatura próxima à fonte estará bem mais alta do valor esperado. Aí, sem mais energia aplicada à fonte, a temperatura do quarto tenderá a se estabilizar. Como a temperatura no sensor chegou ao valor desejado, mas daí até a fonte a temperatura está bem mais alta, a temperatura no quarto vai subir bem acima da desejada. É o tal overshoot. Conclusão: 1 - Considere uma fonte de calor com potência apenas suficiente para ultrapassar UM POUCO a temperatura máxima desejada, quando houver a temperatura ambiente mínima (inverno?) e carga máxima. Vai facilitar o controle. 2 - Dependendo da sua câmera, como dimensões, isolamento térmico, etc, vai ser necessário usar ventilação forçada. Imagine o ideal. Toda a energia fornecida pela fonte é distribuída igualmente e imediatamente por todo o ambiente de sua câmera. Neste caso não ocorrerá overshoot e a tal equação da planta seria bem simples e fácil de se obter. Mas esta equação nem seria necessária, já que a temperatura na fonte, na câmera e no sensor seriam iguais. A equação da planta seria 1 e do sensor também. Não existiria erro. Bastaria ligar a fonte e desligar quando a temperatura alcançasse a desejada. Daí para a prática, em diante, poderia ficar ligando e desligando quando ocorresse um erro limite desejado. O pulo do gato é se aproximar destas condições ideais. MOR_AL
Editado pela última vez por MOR_AL em 03 Nov 2015 20:54, em um total de 1 vez.
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke. "Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Ele usou a resposta da planta para fazer os cálculos. Do mesmo modo que eu fiz. Não tem como projetar um controlador sem saber como a planta se comporta.
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Ele usou a resposta da planta para fazer os cálculos. Do mesmo modo que eu fiz. Não tem como projetar um controlador sem saber como a planta se comporta.
Talvez eu não tenha me expressado bem. Não informei que não tem como projetar um controlador sem saber como a planta se comporta. Informei que não é necessário conhecer a equação da planta. Coloquei este detalhe em negrito, na minha postagem anterior. Comecei informando o método de Ziegler e Nichols, que não depende da equação da planta e sim de seu comportamento. MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke. "Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Feedback 1°. Bem pessoal, continuei estudando e fazendo o treinamento com o professor de matemática. KP - KP KI - TI KD - TD Estudando melhor os tutoriais, e observando melhor as formas diferentes de se representar a função do algoritmo pid, que eu encontrei-lho-eis: Existe uma confusão nos iniciantes, (eu) sobre a utilização de ("termo integrativo" com "ganho integral"). Alguns cálculos, são dadas as funções de integração do erro como abaixo: integrador += e*ki; Nesta situação ki é ganho e não termo integral. integrador += e/Ti; Nesta situação Ti é o termo integral de tempo. Onde : e = ERRO = SP - VP; ki = 1/Ti; Ti = termo integrativo expresso geralmente em Ti != 0, podendo ser de 0,xS até x*10^x. As diferenças são: O ganho é igual AMPLIFICAÇÃO, ou seja se o erro = 1x, e a razão de saída é menor que entrada, então: Ki = 1x = x/Ti = 1x/Ti = x = 1/Ti = 1xe = xe = Entrada de erro * (1 / Tempo expresso em segundos que foi retirado de Ziegler e Nichols, ou outros) .
Alguns cálculos, são dadas as funções de derivativo como abaixo: Vd = (VP-ant - VP-atu) * KD; (VP variável de processo, ant= anterior, atu=atual); Nesta situação ki é ganho e não termo integral. Vd = (VP-ant - VP-atu) /Td; (VP variável de processo, ant= anterior, atu=atual); Nesta situação Ti é o termo integral de tempo. Onde : Vd = Resposta Derivativa da mudança de estados diferente de um coeficiente angular diferente de uma reta traçada entre X e Y conhecidos, trabalhando no limiar. VP = variável de processo; ant = anterior; atu = atual; Kd = 1/Td; Td = termo derivativo, expresso geralmente em Td != 0, podendo ser de 0,xS até x*10^x. As diferenças são: O ganho é igual AMPLIFICAÇÃO, ou seja se (VP-ant - VP-atu = 1x), e a razão de saída é menor que entrada, então: Kd = 1x = x/Td = 1x/Td = x = 1/Td = 1x = x(VP-ant - VP-atu ) = (VP-ant - VP-atu ) * (1 / Tempo expresso em segundos que foi retirado de Ziegler e Nichols, ou outros) .
Resumindo: Quando o calculo expressa as notações em Ti e Td, são os termos referentes ao tempo conhecido expresso em segundos, onde (saída = entrada / (Ti ou Td)). Quando o calculo expressa as notações em Ki e Kd, são os ganhos referentes ao inverso de 1x, onde (saída = entrada *( 1/(Ti ou Td))). Então: Tx = Tempo expresso geralmente em segundos; Kx = 1x/Tx ganho expresso geralmente em !=0, onde é 1x dividido pelo tempo expresso geralmente em segundos;
Existe também uma informação importante sobre tempo de amostragem. Muitas vezes nós tempos um controlador onde o Ta, tempo de amostragem é > ou < 1. Se por exemplo sua planta faz amostragem a cada 10 segundos, basta fazer Ki = Ki*10s. Se por exemplo sua planta faz amostragem a cada (0.1 segundos), basta fazer Ki = Ki/((1)/(0,1s)).
Bem, estou começando a entender outras coisas como exemplo:
Quando se faz o levantamento da planta, do Ponto A até o Ponto B, os valores obtidos tendendo para o ideal, são de "A até B". Caso você inicie seu processo onde A != 0, onde zero é o valor inicial do levantamento da curva, o resultado quando chegar a B vai ser totalmente diferente; De forma que, por exemplo: 1° 25°C.......36°C. Ki=0,0188. Resultado satisfatório. 2° 29°C.......36°C. Ki=0,0188. Resultado ruim (o valor acumulado no integrador estava muito baixo, ganho proporcional manteve 1,5°C abaixo de 36 por muito tempo até integrador chegar no ideal).
Ficou claro pra mim que: Devo fazer testes com faixas diferentes, e distancias diferentes, e caso o set point mude, eu faça um calculo de distancia e modifique os ganhos Ki e Kd.
Continuando;;;; Depois posto mais aprendizados, e resultados.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
Feedback 2°. Fiz vários ensaios práticos na planta, os quais não estavam nem próximos de ficar com resposta próxima as cartas de tempo dos tutoriais, como os cálculos indicam. Obviamente eu consegui interpretar como tirar os valores e fazer os cálculos, além de ter aprendido outras coisas. Por algum motivo eu estava olhando o arquivo que criei no Excel, e olhei para a anotação (curva 50% de potencia). Modifiquei o wind-up para limitar a potencia máxima de saída para a planta em 50%, esfriei o equipamento para 24,8°C, SP=32, VP=24,8°C(inicial), e para minha surpresa:
A resposta no tempo de subida ,overshoot e o tempo de estabilização, ficaram muito próximos das cartas de tempo, apresentados nos exemplos dos tutoriais e apostilas que foram utilizadas como fonte de pesquisa.
Refiz o teste, e resultado praticamente igual !!
De forma que: Levantei a curva novamente com potencia em 100%, e deixei o equipamento chegar a 40°, com todas as condições ambientais exatamente iguais ao primeiro ensaio. Plotei a curva de 100% juntamente com a de 50%, fiz uma regra de 3 na média linear dos dois gráficos para descobrir qual foi o percentual médio, na razão de 50%->100%.
O tempo médio foi de 32%> de 50%->100% de potencia. O Ki para planta com 50% = 0.00193, Ki para planta com 100% = 0.00254. O Kp para planta com 50% = 23.5, Kp para planta com 100% = 31.2
Após aplicar novamente os valores de Kp e Ki, refiz o ensaio exatamente com os outros valores. O resultado ficou novamente igual as cartas de tempo!!
Bem Fábio mais para isto serve a kd! - Eu não sei exatamente como o derivativo se comporta em plantas com resposta rápida, más posso afirmar que em plantas com resposta tipo, "lesma com escoliose andando de cadeira de rodas", não serve para nada!!
Após os ensaios e ter descoberto estes detalhes: Fiz um estudo básico de como o Kp se comportaria no sistema, e cheguei a conclusão que: Para 30°C até 39°C, sem a integral Kp com valor de 34.0 * erro * fator = (um valor de saída que sempre manteria uma diferença de temperatura linear que, em 39°<2.5°C, e em 30°C<0.6°C). Tracei uma reta entre os erros, e achei um novo valor de Kp que dependendo da temperatura setada ele iria variar de 31.0 até 35.0.
Resultados: Até o momento o equipamento esta respondendo muitíssimo bem, com alguns detalhes lógicos como exemplo:
O PID esta controlando o sistema e você desliga o sistema, e liga novamente. Suponha que SP=34 inicial, e VP=34 inicial. Acontece que o acc(i), acumulador integral = 0.0, e SP=VP. De forma que a VP vai cair, e ficar aproximadamente X°C abaixo da SP, e vai demorar uma eternidade para voltar a VP=SP. Porque o valor de Ki, foi retirado dos cálculos levando-se em consideração que a diferença entre VP para SP, inicialmente seria. EX : 34° - 24,8°C = 9.2° de diferença, e acc(i)=0.0. Se o equipamento foi ligado com SP=VP e temperatura ambiente = a faixa de operação do equipamento, entre (20 e 25), a temperatura começará a cair, o Kp fará com que a VP fique próximo de SP porém abaixo, e o erro é muito menor que 9.2. De forma que acc(i) += Ki*e, vai demorar mais para estabilizar em VP=SP, do que o tempo que leva para: VP=24.8 -> SP=34.0.....
Estou montando regras para tomar estas decisões.
Descobrindo mais, posto mais!!
Por enquanto muito obrigado!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
Resumo da historia!! Sistemas de controle PID digitais, tem uma dinâmica muito grande e não podem ser aplicados analogamente a sistemas auto sintonizantes. Para sistemas onde é necessário um controle fino, e possui variáveis: 1° - É necessário criar regras baseadas nas variáveis que influenciam no processo, e em tempo de execução fazer a carga dos ganhos Kp, Ki e KD, de forma a manter o sistema estável. 2° - Dependendo da variável de processo controlada, com certeza é necessário criar regras para que seja feita a pré carga do acumulador integral, de forma a deixar o sistema mais estável. 3° - Se possível é necessário adicionar ao algoritmo pid, de forma a trabalhar em paralelo, um algoritmo que faça a síntese de tempos e ganhos da VP, e informe ao sistema se o controlador esta dentro ou fora da faixa possível de controle.
No mais, eu consegui aprender como funcionam os cálculos, o que é o dito cujo do calculo de função de transferência.
Como resumo:
Ao se criar um algoritmo pid, e entrar com os ganhos de Kp, Ki, Kd. É necessário enxergar a VP como sendo uma variável adimensional, e, baseado em seus valores mínimo e máximo, enxergar como o resultado do algoritmo pid vai influenciar no atuador! No meu caso. Temperatura de trabalho entre 25° e 39°C. Kp: Dentro das condições normais de operação do equipamento, para manter a temperatura próximo do teto de 39°C. Foi necessário o valor de Kp = 32.0, para que a temperatura ficasse com 37.1°C. A lógica, é: ((39,0 - 37,1)*32,0)*10;
Ki: Dentro das condições normais de operação do equipamento, a saída de controle da potencia com o valor 700 em um máximo de 1000, faz o sistema chegar a 39°C e manter-se oscilando sem problemas. De forma que eu limitei o acumulador integral para um valor máximo de 70.0, pois no final tudo é multiplicado por 10.
Kd: Dentro das condições normais de operação do equipamento, o tempo da Kd nos cálculos ficou com 110, porém como eu faço a leitura a cada 10 segundos, é necessário que Kd seja (110 * 10)*10, 10 novamente é a constantes que faz a adaptação do resultado ao valor de saída que esta para 1000.
Enfim: A função de transferência baseada em valores reais da VP e SP, deriva um valor ou uma forma de adaptar o resultado do somador de SP e FBK, a entrada do algoritmo PID, de forma a resultar um valor que esta para o mínimo e máximo valor de controle da variável manipulada!!
OBS: O algoritmo PID é para sistemas de 1 segundo!! Se você fizer os cálculos por exemplo de nichols e Ziegler, e o Ti der 400s, Ki = 1/Ti = 0,0025. E por exemplo ao invés de entrar no algoritmo a cada 1 segundo entrar a cada 10 segundos, é necessário fazer Ki *= 10, fica 0,0025 * 10 = 0,025. E se por exemplo for entrara no algoritmo PID a cada 1/2 segundo, deve-se fazer Ki /= 2, Ki= 0,00125...
Estou fazendo alguns outros testes, mais no mais consegui atingir os resultados que eu queria atingir!!
Obrigado a Todos, e vou criar um documento simples, com exemplos simples, e cálculos reais, e disponibilizar aqui para todos!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
Olhem que interessante. A uns 3 anos ou mais quando Moral postou este documento, eu olhava, lia e relia, e o que eu via eram apenas hieróglifos egípcios. Eu olhava os cálculos e entendia a matemática, mais longe de entender como aplicava aquilo no mundo real!! Agora com as aulas de matemática aplicada, com a minha implementação prática, onde obtive resultados baseados nos cálculos envolvidos. O Documento do Moral se tornou um manual de tudo que eu escrevi, até as observações de tempo estão expressas matematicamente nos algoritmos dele!!
Única coisa é, Didática para dummies!!!
Tenho anos de experiência em quase tudo de eletrônica, mais é impossível ser conhecedor de todas as áreas, como diz o Sr. Eudóxio Ramos Junior. Não sei poha, quando for ganhar dinheiro com isto eu aprendo, e esqueço de novo pra guardar outra coisa que esta dando dinheiro!! KKKK E é a mais pura verdade!!!
Obrigado pessoal, estou escrevendo uma apostila super ultra mega blaster didática, explicando ponto a ponto da lógica, cálculos, e algoritmos empregados e o porque de cada. Na verdade vou pegar o Documento do MORAL se ele permitir, e encher de linguiça todos os cálculos de forma didática com exemplos reais e tudo mais!!
Obrigado pessoal pela paciência!!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!