Arduino - Controlador PID no Arduino

Поділитися
Вставка
  • Опубліковано 9 лют 2025
  • Nesse vídeo eu mostro como implementar o algoritmo do controlador PID discretizado, utilizando as ações Proporcional e Integral.

КОМЕНТАРІ • 100

  • @Ismanut
    @Ismanut 3 місяці тому +1

    Valeu parceiro, show de bola mesmo!
    Recomendo a todos os apaixonados por Arduino e programação...

  • @leticiabarcelos.
    @leticiabarcelos. 4 роки тому +4

    Que trabalho excelente 🤩🤩🤩

    • @technoeduca
      @technoeduca  4 роки тому +1

      Obrigado. Foi desenvolvido quando eu cursava mestrado. Usei o livro Computer Controlled Systems, de Karl Astrom, como base pra desenvolver o algoritmo.

    • @karollynamartins1043
      @karollynamartins1043 2 роки тому

      @@technoeduca existe a possibilidade de mandar o codigo?

  • @antonioprofinfo
    @antonioprofinfo 4 роки тому +3

    Gostei! Muito útil. Obrigado por compartilhar.

    • @eildosoares2757
      @eildosoares2757 2 роки тому

      vc conseguiiu pegar o codigo do pid com o eduardo? se sim, me ajude ai como pegar?

  • @leticiabarcelos.
    @leticiabarcelos. 4 роки тому +1

    Melhor explicação que eu encontrei 👏👏👏

    • @technoeduca
      @technoeduca  4 роки тому +1

      Obrigado pelo comentário!

    • @eildosoares2757
      @eildosoares2757 2 роки тому

      @@technoeduca nao consigo ve o codgo me ajuda ai obrigado

    • @technoeduca
      @technoeduca  2 роки тому

      @@eildosoares2757 está tentando ver o código aonde ?

  • @joiasalbuquerque
    @joiasalbuquerque 2 роки тому +1

    melhor explicação

  • @henriquecoala2723
    @henriquecoala2723 3 роки тому +1

    ótima explicação

  • @AndreFlenik
    @AndreFlenik 4 роки тому +1

    Explicação sensacional.

    • @technoeduca
      @technoeduca  4 роки тому +1

      Fico feliz que tenha gostado. Obrigado!

  • @hugocesarmoreira5296
    @hugocesarmoreira5296 4 місяці тому +1

    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 ?

    • @technoeduca
      @technoeduca  4 місяці тому

      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.

  • @leticiabarcelos.
    @leticiabarcelos. 4 роки тому +2

    Muito obrigada mesmo por compartilhar 👏👏👏

  • @helcioryansilva4340
    @helcioryansilva4340 3 роки тому +1

    MTO BOA A EXPLICAÇÃO, COMO VC DEFINIU A VARIAÇÃO DA VARIÁVEL u?

    • @technoeduca
      @technoeduca  2 роки тому +1

      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.

  • @imperadorps
    @imperadorps Рік тому +1

    Consegui usar o PID em um simulador no Elipse Scada? Para ver o motor atuando e o processo por completo?

    • @technoeduca
      @technoeduca  Рік тому +1

      Sim, é possível linkar o Arduino com o Elipse E3 studio usando o protocolo Modbus. Posso gravar um vídeo falando dessa configuração.

  • @samrtmind34
    @samrtmind34 Рік тому +1

    Bom dia, Obrigado pela aula ... Por favor, onde acessar o código ?

    • @technoeduca
      @technoeduca  Рік тому

      Me passa seu email que eu mando o código em texto pra vc.

  • @henriquemartins8450
    @henriquemartins8450 Рік тому +1

    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.

    • @technoeduca
      @technoeduca  Рік тому

      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.

    • @henriquemartins8450
      @henriquemartins8450 Рік тому

      @@technoeduca entendi. Bom, vou dar uma pesquisada pra ver se eu encontro algo kkk obrigado pela resposta. Abraços

  • @alertadegambiarra
    @alertadegambiarra Рік тому +1

    Opa muito bom, por gentileza, como chegou nos valores das variáveis sem ser do setpoint?

    • @technoeduca
      @technoeduca  Рік тому +1

      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.

  • @ulissesmaynarthsouzasoares1601

    Como eu posso aplicar em um ar condicionado? Aqueles antigos. As ligações, direto? N tenho conhecimento disso

    • @technoeduca
      @technoeduca  Рік тому

      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.

  • @julhoponde1656
    @julhoponde1656 2 роки тому +1

    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

    • @technoeduca
      @technoeduca  2 роки тому +1

      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.

    • @julhoponde1656
      @julhoponde1656 2 роки тому +1

      @@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

    • @technoeduca
      @technoeduca  2 роки тому +1

      @@julhoponde1656 só cuidado que na ide do arduino, o valor do pwm varia de 0 a 255.

  • @arturtiscoski4061
    @arturtiscoski4061 2 роки тому +1

    Olá, ótimo video, no video você diz, 3:36 qual seria o calculo para calcular a derivativa, sabes me informar?

    • @technoeduca
      @technoeduca  2 роки тому +1

      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.

    • @kaioaraujodesousa2888
      @kaioaraujodesousa2888 2 роки тому

      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...

    • @DeathNVJ
      @DeathNVJ 2 роки тому

      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!

  • @Sd.kauawilly
    @Sd.kauawilly Рік тому +1

    Olá, onde posso acessar o código e o circuito?

    • @technoeduca
      @technoeduca  Рік тому

      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

    • @tiagolegemann8664
      @tiagolegemann8664 Місяць тому +1

      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

    • @technoeduca
      @technoeduca  Місяць тому +1

      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.

    • @tiagolegemann8664
      @tiagolegemann8664 Місяць тому +1

      @@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

  • @zeildosoares1888
    @zeildosoares1888 3 роки тому +1

    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

    • @technoeduca
      @technoeduca  2 роки тому

      me mande um e-mail em edufelippe@gmail.com que eu te passo sem problemas.

  • @gilmarsilva7199
    @gilmarsilva7199 3 роки тому +1

    OI tudo bom , vc tem o link atualizado do tinkercad desta aula .Obrigado .Ps .o link expirou .

    • @technoeduca
      @technoeduca  3 роки тому

      Tenho sim, Gilmar.
      Segue o link atualizado.
      www.tinkercad.com/things/kudyNL6xyFN-controle-pid-correto/editel?sharecode=uXX9fyeA1sdM07ftVgZeQd5ZDXeMbSCL9Nan2Xjo1ic

  • @percepcao7160
    @percepcao7160 2 роки тому +1

    sera que 1 dia vou entender isso e usar onde eu quiser?

    • @technoeduca
      @technoeduca  2 роки тому +1

      Depende de você rsrs... usar onde quiser é mais complicado, nem tudo requer controle automático assim.

  • @Annybaby2S
    @Annybaby2S 2 роки тому +1

    Boa noite, Eduardo. Você ainda possui o link do circuito? Excelente trabalho!!

    • @technoeduca
      @technoeduca  2 роки тому +2

      Tenho sim, vou renovar aqui e te mando.

    • @technoeduca
      @technoeduca  2 роки тому +4

      www.tinkercad.com/things/kudyNL6xyFN?sharecode=XWp650D38JP-xkzLzAssqzohzptGNvctpkrmN8FxNtY
      Segue o link do projeto.

  • @pedrocrivellari1461
    @pedrocrivellari1461 4 роки тому

    Eduardo vc teria como disponibilizar o link no TinkerCAD? gostaria de entender melhor a ligação elétrica

    • @technoeduca
      @technoeduca  4 роки тому +1

      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

    • @pedrocrivellari1461
      @pedrocrivellari1461 4 роки тому

      @@technoeduca Obrigado

  • @ederson1388
    @ederson1388 Рік тому +1

    otimo

  • @luansa1
    @luansa1 3 роки тому +1

    Eduardo você tem como disponibilizar o arquivo da IDE?

    • @technoeduca
      @technoeduca  3 роки тому

      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

  • @viicentiinii
    @viicentiinii 4 роки тому +1

    Olá, bom dia ?
    por acaso aonde eu encontro o arquivo do programa ??

    • @technoeduca
      @technoeduca  4 роки тому +1

      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?

    • @viicentiinii
      @viicentiinii 4 роки тому +1

      Eduardo Felippe , sim estou falando dele mesmo . Caso possa me enviar manda um e-mail para chvicentini2@gmail.com

    • @technoeduca
      @technoeduca  4 роки тому +1

      @@viicentiinii enviado para seu e-mail.

    • @technoeduca
      @technoeduca  4 роки тому +1

      @@leticiabarcelos. claro, assim que estiver com acesso ao meu PC eu te envio.

    • @leticiabarcelos.
      @leticiabarcelos. 4 роки тому +2

      @@technoeduca Muito obrigada mesmo ❤️

  • @ramirocom
    @ramirocom 3 роки тому +1

    Bom dia eduardo estou precisando, implementar um sistema pid, no meu projeto e preciso contratar alguém pra programar , agente pode conversar?

    • @technoeduca
      @technoeduca  3 роки тому

      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.

  • @leticiabarcelos.
    @leticiabarcelos. 4 роки тому +2

    É possível encontrar esse algoritmo em algum site ?

    • @technoeduca
      @technoeduca  4 роки тому +1

      Acho que não, pois nunca publiquei em nenhum site.

  • @weniodouglas6575
    @weniodouglas6575 3 роки тому +1

    Parabéns! Ótima explicação. Se puder me enviar uma cópia do controle pid ficarei muito agradecido!

    • @technoeduca
      @technoeduca  3 роки тому

      Obrigado! Posso enviar sim, só me informar seu e-mail.

  • @Eplsecundario
    @Eplsecundario 4 роки тому +2

    So good

  • @vitorgabrielcastro5434
    @vitorgabrielcastro5434 3 роки тому +1

    muito bom! Poderia me disponibilizar o link?

    • @technoeduca
      @technoeduca  3 роки тому

      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

    • @keilatalita9569
      @keilatalita9569 3 роки тому

      @@technoeduca The share link has expired

  • @erickrocha87
    @erickrocha87 2 роки тому +1

    Amigo ótima explicação, poderias me enviar uma cópia do arquivo? Onde encontro seu email?

    • @technoeduca
      @technoeduca  2 роки тому

      Posso sim, me envie um e-mail que respondo por lá. edufelippe@gmail.com

  • @keilatalita9569
    @keilatalita9569 3 роки тому +1

    Parabéns! Ótima explicação. Se puder me enviar uma cópia do controle pid ficarei muito agradecido!

    • @technoeduca
      @technoeduca  3 роки тому

      Oi Keila. Só me informar seu e-mail que eu envio uma cópia do script.