Obrigado. Foi desenvolvido quando eu cursava mestrado. Usei o livro Computer Controlled Systems, de Karl Astrom, como base pra desenvolver o algoritmo.
A variável u é o sinal de controle... a variação dela foi por testes mesmo, se você não definir uma faixa, o arduino vai gerar sinais 'gigantes' de controle para zerar o erro, então o que fiz foi definir uma faixa de valores nos quais u poderia variar. Isso evita um golpe muito grande no atuador(que aqui não existe porque é virtual) mas também representa um risco de saturação do sinal de controle sem efetivamente controlar o processo.
Otimo video parabens. Uma duvida. Geralmente os controladores tem uma funcao auto sintonia. Onde ele calcula automaticamente os valores de p i d. Conhece como fazer isso tambem Usando arduino ? Se tiver algum tipo de material. Muito obrigado.
Excelente pergunta rsrs. Teria que pesquisar mas não sei se vou encontrar com facilidade. Os controladores que tem auto sintonia não abrem o algoritmo pra a gente estudar. Mas olha, existem métodos de sintonia manual que envolvem alguns testes do processo e acho que daria pra criar um script pra isso, mas nada simples.
Bom, vamos lá. Os ganhos Proporcional e Integral foram apenas uma estimativa... apenas para ver o algoritmo funcionar. As ações Proporcional e Integral foram discretizadas a partir das equações que estudei num livro de mestrado... acho que já falei sobre ele em algum outro comentário aqui. O PID é um algoritmo contínuo no tempo, mas o processamento do arduino é discreto, então é preciso discretizar as equações do PID de alguma forma. Usei um dos métodos que estava no livro e foi daí que apareceram as equações das ações proporcional e integral. Sobre o erro, peguei a definição de qualquer livro de sistema de controle onde o erro pode ser SP-PV ou PV-SP, dependendo do tipo de ação desejada.
Bom, teria que ver como é a montagem de um AC antigo. Tudo se resume a controlar o funcionamento do compressor do AC. Que eu me lembre, em ACs antigos, os compressores usam controle on-off (liga-desliga) baseado na temperatura de um termostato. O compressor fica ligado, fazendo a troca de calor gasosa, e quando o termostato envia sinal de que está na temperatura desejada, o compressor desarma (desliga). Quando a temperatura sobe, o compressor arma novamente, e até por isso consome muita energia, pois o ciclo de ficar ligando o compressor várias vezes (partida) consome muita energia elétrica. Então o controle do compressor é bem diferente do que eu fiz no vídeo e explico: No video, usei um sensor de temperatura, que me dá a temperatura real no momento, diferente do termostato, que é apenas um contato que avisa quando a temperatura estiver abaixo de um valor, então você não tem a informação da temperatura em tempo real, apenas a informação de que ela está abaixo de um valor. O outro desafio está na atuação... o AC antigo fica ligando e desligando o compressor... como um atuador on-off, já os ACs novos usam os inversores para controlar o compressor... o que mantém ele ligado o tempo todo, mas reduz sua potência quando chega na temperatura desejada, exatamente como fiz no vídeo. Resumindo, além de um arduino pra executar a lógica de controle, você precisa de um sensor de temperatura, pra medir corretamente a temperatura, e de um elemento que pudesse controlar a potência ou velocidade do compressor sem desligar ele, que é o que o inversor faz nos ACs novos. Talvez pesquisar um outro componente, tipo um relé de estado sólido, pra ligar o compressor. Isso aí teria que pesquisar mesmo mas com os componentes que tem no AC antigo não vejo como fazer. Teria que incluir novos componentes.
Amigo parabéns pelos vídeos e o canal ótimo tenho uma dúvida! Tenho um sensor de arduino chamado MPU6050 muito comumente usado como acelerômetro e giroscópio digital ele tem dados de saída i2C eu quero fazer um drone más quero usar um potenciometro para ajustar a aceleração de todos os motores brush ao mesmo tempo para ele ganha altura não tenho dinheiro para um controle agora por isso decidi usar um módulo Joystick de arduino más estou infrentado está dilema como deve ser está função para controlar a aceleração dos brussheles motor para o drone subir sem interromper o MPU6050 que controla o equilíbrio do drone no ar por gentileza me ajude você ou quem mais estiver lendo está pergunta desde já eu agradeço a atenção! Espero resposta para está difícil dúvida
Amigo, eu entendo pouco de arduino. Esse vídeo do PID eu gravei como um exercício do mestrado... conheço pouco do protocolo I2C e não sei se consigo te ajudar.
@@technoeduca obrigado eu ando tendo dúvidas sobre como acelerar todos os motores das elices de um drone eu sei que o sinal dela de saída é de pwm e vai de 0 até 1023 pulsos mas não consigo colocar um pitenciometro para acelerar todos os motores sem interromper ou atrapalhar o mpu6050
Meu camarada, fiz esse vídeo como um exercício no mestrado mas não cheguei a programar a ação derivativa. Em um dos comentários aqui eu disse pra outra pessoa qual o livro que usei e as equações discretizadas que foram utilizadas. No livro tem a equação da ação derivativa discretizada, acho que seria um ponto de partida pra vc.
Aconselho vc a dar uma pesquisada sobre os métodos euristico, para extrair os parâmetros do controlador. Existe uma tabela que tem as formolas para calcular os parâmetros, seja em função do tempo ou do ganho...
Você pode calcular a derivada da seguinte maneira: ... erro = y - sp; /*Faça aqui seus calculos de P I como feito no video e em seguida calcule a derivada: */ Derivada = erro - erro_anterior; //Estamos verificando a variação entre o erro à cada amostragem /*Pode até multiplicar a derivada por um ganho kd*/ Derivada = Derivada * kd: //exemplo kd = 0.001 /*E agora você determina o valor de erro anterior para ser usado na próxima iteração*/ erro_anterior = erro; Espero ter ajudado. Atrasado... mas vai ajudar!
Claro, me manda um email que eu te envio por lá, mas não garanto que esteja igual do video pq já é antigo e modifiquei algumas coisas depois. edufelippe@gmail.com
Excelente explicação Tenho uma dúvida, quero montar um projeto e gostaria de colocar potenciômetros para modificar os valores de Kp, Ki e Kd como poderia fazer isso ? Relacionar os valores do potenciômetro com os ganhos
Cara, é até mais fácil do que discretizar os ganhos como fiz. Vc vai criar uma variável pra cada ganho, e essa variável vai receber a leitura de algum potenciômetro usando a leitura analógica e o "map" pra colocar o valor do potenciômetro dentro de alguma escala.
@@technoeduca Então a minha linha de raciocínio tava certa, tinha pensado a princípio no map mas não tinha certeza se daria certo, uso os 3 potenciômetros nas entradas analógicas escrevendo os valores em variáveis Kp Ki e Kd, obrigado pela ajuda, vou fazer esse código no tinkercad pra testar
Tenho sim, Gilmar. Segue o link atualizado. www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
Pedro, segue o link do circuito no TinkerCad. As ligações estão o mais simples possíveis, visto que a ideia era demonstrar o algoritmo. www.tinkercad.com/things/kudyNL6xyFN-controle-pi-correto/editel?sharecode=7F37-zPUQVRSC08mzm5bG8gAbPa_VzlKsZ_qKazy5Ew
Luciano, posso disponibilizar sim. Vou deixar aqui o link do tinkercad, que fica disponível por algumas horas. Se mesmo assim precisar do script para a IDE, é só me responder com seu e-mail que eu faço o envio. www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
Olá, bom dia Carlos. Se está falando do algoritmo, é de minha autoria e poderia te enviar sem problema algum, quando ao site usado, é o tinkercad, para simulação de pequenos projetos. Tem alguma forma de eu entrar em contato com vc?
Olá, tudo bem? Podemos conversar sim. Poderia entrar em contato pelo meu e-mail: edufelippe@gmail.com Por lá eu consigo entender melhor seu projeto e te responder com mais agilidade.
Perdão pela demora... precisei me ausentar um pouco da internet. Segue o link do tinkercad www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
Valeu parceiro, show de bola mesmo!
Recomendo a todos os apaixonados por Arduino e programação...
Obrigado meu amigo!
Que trabalho excelente 🤩🤩🤩
Obrigado. Foi desenvolvido quando eu cursava mestrado. Usei o livro Computer Controlled Systems, de Karl Astrom, como base pra desenvolver o algoritmo.
@@technoeduca existe a possibilidade de mandar o codigo?
Gostei! Muito útil. Obrigado por compartilhar.
vc conseguiiu pegar o codigo do pid com o eduardo? se sim, me ajude ai como pegar?
Melhor explicação que eu encontrei 👏👏👏
Obrigado pelo comentário!
@@technoeduca nao consigo ve o codgo me ajuda ai obrigado
@@eildosoares2757 está tentando ver o código aonde ?
melhor explicação
Obrigado!
ótima explicação
Obrigado!
Explicação sensacional.
Fico feliz que tenha gostado. Obrigado!
me tira uma duvida se eu quiser por um osciloscópio, eu tenho que fazer algum código a mais pra ele, ou o osciloscópio la faz a leitura ?
Como o osciloscópio é um instrumento de medição, não precisa fazer nada no código não, só colocar ele pra ler a saída PWM.
Muito obrigada mesmo por compartilhar 👏👏👏
De nada!
MTO BOA A EXPLICAÇÃO, COMO VC DEFINIU A VARIAÇÃO DA VARIÁVEL u?
A variável u é o sinal de controle... a variação dela foi por testes mesmo, se você não definir uma faixa, o arduino vai gerar sinais 'gigantes' de controle para zerar o erro, então o que fiz foi definir uma faixa de valores nos quais u poderia variar. Isso evita um golpe muito grande no atuador(que aqui não existe porque é virtual) mas também representa um risco de saturação do sinal de controle sem efetivamente controlar o processo.
Consegui usar o PID em um simulador no Elipse Scada? Para ver o motor atuando e o processo por completo?
Sim, é possível linkar o Arduino com o Elipse E3 studio usando o protocolo Modbus. Posso gravar um vídeo falando dessa configuração.
Bom dia, Obrigado pela aula ... Por favor, onde acessar o código ?
Me passa seu email que eu mando o código em texto pra vc.
Otimo video parabens.
Uma duvida. Geralmente os controladores tem uma funcao auto sintonia. Onde ele calcula automaticamente os valores de p i d. Conhece como fazer isso tambem Usando arduino ? Se tiver algum tipo de material.
Muito obrigado.
Excelente pergunta rsrs. Teria que pesquisar mas não sei se vou encontrar com facilidade. Os controladores que tem auto sintonia não abrem o algoritmo pra a gente estudar. Mas olha, existem métodos de sintonia manual que envolvem alguns testes do processo e acho que daria pra criar um script pra isso, mas nada simples.
@@technoeduca entendi. Bom, vou dar uma pesquisada pra ver se eu encontro algo kkk obrigado pela resposta. Abraços
Opa muito bom, por gentileza, como chegou nos valores das variáveis sem ser do setpoint?
Bom, vamos lá.
Os ganhos Proporcional e Integral foram apenas uma estimativa... apenas para ver o algoritmo funcionar.
As ações Proporcional e Integral foram discretizadas a partir das equações que estudei num livro de mestrado... acho que já falei sobre ele em algum outro comentário aqui. O PID é um algoritmo contínuo no tempo, mas o processamento do arduino é discreto, então é preciso discretizar as equações do PID de alguma forma. Usei um dos métodos que estava no livro e foi daí que apareceram as equações das ações proporcional e integral.
Sobre o erro, peguei a definição de qualquer livro de sistema de controle onde o erro pode ser SP-PV ou PV-SP, dependendo do tipo de ação desejada.
Como eu posso aplicar em um ar condicionado? Aqueles antigos. As ligações, direto? N tenho conhecimento disso
Bom, teria que ver como é a montagem de um AC antigo. Tudo se resume a controlar o funcionamento do compressor do AC. Que eu me lembre, em ACs antigos, os compressores usam controle on-off (liga-desliga) baseado na temperatura de um termostato. O compressor fica ligado, fazendo a troca de calor gasosa, e quando o termostato envia sinal de que está na temperatura desejada, o compressor desarma (desliga). Quando a temperatura sobe, o compressor arma novamente, e até por isso consome muita energia, pois o ciclo de ficar ligando o compressor várias vezes (partida) consome muita energia elétrica. Então o controle do compressor é bem diferente do que eu fiz no vídeo e explico: No video, usei um sensor de temperatura, que me dá a temperatura real no momento, diferente do termostato, que é apenas um contato que avisa quando a temperatura estiver abaixo de um valor, então você não tem a informação da temperatura em tempo real, apenas a informação de que ela está abaixo de um valor. O outro desafio está na atuação... o AC antigo fica ligando e desligando o compressor... como um atuador on-off, já os ACs novos usam os inversores para controlar o compressor... o que mantém ele ligado o tempo todo, mas reduz sua potência quando chega na temperatura desejada, exatamente como fiz no vídeo. Resumindo, além de um arduino pra executar a lógica de controle, você precisa de um sensor de temperatura, pra medir corretamente a temperatura, e de um elemento que pudesse controlar a potência ou velocidade do compressor sem desligar ele, que é o que o inversor faz nos ACs novos. Talvez pesquisar um outro componente, tipo um relé de estado sólido, pra ligar o compressor. Isso aí teria que pesquisar mesmo mas com os componentes que tem no AC antigo não vejo como fazer. Teria que incluir novos componentes.
Amigo parabéns pelos vídeos e o canal ótimo tenho uma dúvida! Tenho um sensor de arduino chamado MPU6050 muito comumente usado como acelerômetro e giroscópio digital ele tem dados de saída i2C eu quero fazer um drone más quero usar um potenciometro para ajustar a aceleração de todos os motores brush ao mesmo tempo para ele ganha altura não tenho dinheiro para um controle agora por isso decidi usar um módulo Joystick de arduino más estou infrentado está dilema como deve ser está função para controlar a aceleração dos brussheles motor para o drone subir sem interromper o MPU6050 que controla o equilíbrio do drone no ar por gentileza me ajude você ou quem mais estiver lendo está pergunta desde já eu agradeço a atenção! Espero resposta para está difícil dúvida
Amigo, eu entendo pouco de arduino. Esse vídeo do PID eu gravei como um exercício do mestrado... conheço pouco do protocolo I2C e não sei se consigo te ajudar.
@@technoeduca obrigado eu ando tendo dúvidas sobre como acelerar todos os motores das elices de um drone eu sei que o sinal dela de saída é de pwm e vai de 0 até 1023 pulsos mas não consigo colocar um pitenciometro para acelerar todos os motores sem interromper ou atrapalhar o mpu6050
@@julhoponde1656 só cuidado que na ide do arduino, o valor do pwm varia de 0 a 255.
Olá, ótimo video, no video você diz, 3:36 qual seria o calculo para calcular a derivativa, sabes me informar?
Meu camarada, fiz esse vídeo como um exercício no mestrado mas não cheguei a programar a ação derivativa. Em um dos comentários aqui eu disse pra outra pessoa qual o livro que usei e as equações discretizadas que foram utilizadas. No livro tem a equação da ação derivativa discretizada, acho que seria um ponto de partida pra vc.
Aconselho vc a dar uma pesquisada sobre os métodos euristico, para extrair os parâmetros do controlador. Existe uma tabela que tem as formolas para calcular os parâmetros, seja em função do tempo ou do ganho...
Você pode calcular a derivada da seguinte maneira:
...
erro = y - sp;
/*Faça aqui seus calculos de P I como feito no video e em seguida calcule a derivada: */
Derivada = erro - erro_anterior; //Estamos verificando a variação entre o erro à cada amostragem
/*Pode até multiplicar a derivada por um ganho kd*/
Derivada = Derivada * kd: //exemplo kd = 0.001
/*E agora você determina o valor de erro anterior para ser usado na próxima iteração*/
erro_anterior = erro;
Espero ter ajudado. Atrasado... mas vai ajudar!
Olá, onde posso acessar o código e o circuito?
Claro, me manda um email que eu te envio por lá, mas não garanto que esteja igual do video pq já é antigo e modifiquei algumas coisas depois.
edufelippe@gmail.com
Excelente explicação
Tenho uma dúvida, quero montar um projeto e gostaria de colocar potenciômetros para modificar os valores de Kp, Ki e Kd como poderia fazer isso ? Relacionar os valores do potenciômetro com os ganhos
Cara, é até mais fácil do que discretizar os ganhos como fiz. Vc vai criar uma variável pra cada ganho, e essa variável vai receber a leitura de algum potenciômetro usando a leitura analógica e o "map" pra colocar o valor do potenciômetro dentro de alguma escala.
@@technoeduca Então a minha linha de raciocínio tava certa, tinha pensado a princípio no map mas não tinha certeza se daria certo, uso os 3 potenciômetros nas entradas analógicas escrevendo os valores em variáveis Kp Ki e Kd, obrigado pela ajuda, vou fazer esse código no tinkercad pra testar
boa tarde amigo , muito boa explicaçao, sou apenas hobista, e gostaria de lhe pedir uma copia desse seu trabalho, dessa aula de PID. muito obrigado
me mande um e-mail em edufelippe@gmail.com que eu te passo sem problemas.
OI tudo bom , vc tem o link atualizado do tinkercad desta aula .Obrigado .Ps .o link expirou .
Tenho sim, Gilmar.
Segue o link atualizado.
www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
sera que 1 dia vou entender isso e usar onde eu quiser?
Depende de você rsrs... usar onde quiser é mais complicado, nem tudo requer controle automático assim.
Boa noite, Eduardo. Você ainda possui o link do circuito? Excelente trabalho!!
Tenho sim, vou renovar aqui e te mando.
www.tinkercad.com/things/kudyNL6xyFN?sharecode=XWp650D38JP-xkzLzAssqzohzptGNvctpkrmN8FxNtY
Segue o link do projeto.
Eduardo vc teria como disponibilizar o link no TinkerCAD? gostaria de entender melhor a ligação elétrica
Pedro, segue o link do circuito no TinkerCad. As ligações estão o mais simples possíveis, visto que a ideia era demonstrar o algoritmo.
www.tinkercad.com/things/kudyNL6xyFN-controle-pi-correto/editel?sharecode=7F37-zPUQVRSC08mzm5bG8gAbPa_VzlKsZ_qKazy5Ew
@@technoeduca Obrigado
otimo
Obrigado!
Eduardo você tem como disponibilizar o arquivo da IDE?
Luciano, posso disponibilizar sim. Vou deixar aqui o link do tinkercad, que fica disponível por algumas horas. Se mesmo assim precisar do script para a IDE, é só me responder com seu e-mail que eu faço o envio.
www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
Olá, bom dia ?
por acaso aonde eu encontro o arquivo do programa ??
Olá, bom dia Carlos. Se está falando do algoritmo, é de minha autoria e poderia te enviar sem problema algum, quando ao site usado, é o tinkercad, para simulação de pequenos projetos. Tem alguma forma de eu entrar em contato com vc?
Eduardo Felippe , sim estou falando dele mesmo . Caso possa me enviar manda um e-mail para chvicentini2@gmail.com
@@viicentiinii enviado para seu e-mail.
@@leticiabarcelos. claro, assim que estiver com acesso ao meu PC eu te envio.
@@technoeduca Muito obrigada mesmo ❤️
Bom dia eduardo estou precisando, implementar um sistema pid, no meu projeto e preciso contratar alguém pra programar , agente pode conversar?
Olá, tudo bem? Podemos conversar sim. Poderia entrar em contato pelo meu e-mail: edufelippe@gmail.com
Por lá eu consigo entender melhor seu projeto e te responder com mais agilidade.
É possível encontrar esse algoritmo em algum site ?
Acho que não, pois nunca publiquei em nenhum site.
Parabéns! Ótima explicação. Se puder me enviar uma cópia do controle pid ficarei muito agradecido!
Obrigado! Posso enviar sim, só me informar seu e-mail.
So good
muito bom! Poderia me disponibilizar o link?
Perdão pela demora... precisei me ausentar um pouco da internet.
Segue o link do tinkercad
www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic
@@technoeduca The share link has expired
Amigo ótima explicação, poderias me enviar uma cópia do arquivo? Onde encontro seu email?
Posso sim, me envie um e-mail que respondo por lá. edufelippe@gmail.com
Parabéns! Ótima explicação. Se puder me enviar uma cópia do controle pid ficarei muito agradecido!
Oi Keila. Só me informar seu e-mail que eu envio uma cópia do script.