37
Sistemas de Controle 2 Projeto de sistema de controle digital PID com Arduino Pontifícia Universidade Católica de Goiás Escola de Engenharia Prof. Dr. Marcos Lajovic Carneiro Referência: Ivan Seidel https://www.youtube.com/watch?v=txftR4TqKYA

Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

  • Upload
    others

  • View
    29

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Sistemas de Controle 2Projeto de sistema de controle digital PID com Arduino

Pontifícia Universidade Católica de Goiás

Escola de Engenharia

Prof. Dr. Marcos Lajovic Carneiro

Referência: Ivan Seidelhttps://www.youtube.com/watch?v=txftR4TqKYA

Filipe
Rectangle
Page 2: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Projeto de sistema de controle digital PID com Arduino

Índice

1. Uso da porta PWM do Arduino2. Estudo do código do controle PID digital no Arduino3. Código completo4. Trabalho prático de PID

Page 3: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

3

Saída PWM do Arduino – Exemplo de uso:

Ajustando o Brilho de um LED por PWM

No Arduino existem alguns pinos digitais escrito PWM.

Eles são capazes de enviar um sinal PWM que é uma técnica usada para digitalizar sinaisanalógicos.

Nestes pinos, o Arduino envia umaonda quadrada alternando o pinoem ON/OFF rapidamente. Asequência destes ON/OFFs podemsimular a variação de tensão entre0 a 5v.

Na placa ARDUINO UNO pode se utilizar os pinos 3,5,6,9,10 e 11 para esta função.

Page 4: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

4

Saída PWM do Arduino – Exemplo de uso:

Ajustando o Brilho de um LED por PWM

Isto é feito trocando-se a quantidade de tempo que a saída fica em 1 (on) ou em 0 (off). Aduração deste tempo é conhecida como pulse width (largura de pulso).

Por exemplo, caso você envie o valor 0 pela saída digital PWM Pin 11 usando analogWrite(),o período em ON será zero, ou terá 0% de duty cycle (ciclo de trabalho). Se enviar o valor 64(25% do valor máximo 255) o pino ficará em ON por 25 porcento do tempo e 75 porcentoem OFF, logo duty cicle de 25%. O valor 191 terá o teu duty cicle de 75% e o valor 255 de100%.

Page 5: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Saída PWM do Arduino – Exemplo de uso:

Ajustando o Brilho de um LED por PWM

A função analogWrite deve ser utilizada da seguinte forma:

Sintaxe:analogWrite(pino, valor);

Onde o parâmetro pino corresponde ao pino que será gerado o sinal PWM e valor corresponde ao duty cycle, ou seja, o valor que permanecerá em nível alto o sinal.

O valor deve ser de 0 a 255 onde 0 a saída permanece sempre em nível zero e 225 a saída permanece sempre em nível alto.

Page 6: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Saída PWM do Arduino – Exemplo de uso:

Ajustando o Brilho de um LED por PWM – Exemplo:

Intensidade do LED

Page 7: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Programando o PID

Page 8: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

8

Dados do sistema de controle PID e do programa

Definindo o problema:

Sistema de controle de temperatura

Atuador (controle PWM)Pino 3, aquecedor/resfriador.

valor 0 resfriando (MAX)valor 50 desligarvalor 100 aquecer (MAX)

Sensor (Leitura analógica)Sensor analógico de Temperatura:

porta analógica A10 – 10230 : 01023: 100

Page 9: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

9

Inicio do programa

Page 10: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

10

Configurando o Setup

- Define sensor na porta analógica A1- Pino de controle PWM: pino 3- Configura saída serial- Define o pino do sensor como entrada e o pino de controle como saída.

Page 11: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop() Bloco de código executado continuamente.

Primeira ação Ler temperatura

Leitura “crua” do valor do conversor analógico digital

Regra de 3 para converter degraus do A/D (de 0 a 1023) para a faixa de 0 a 100 (percentual).

Função map

Analog read

Page 12: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop()

Primeira ação Ler temperatura

Simplificando o código para uma linha só:

Page 13: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop()

Definindo a temperatura desejada Set Point

Page 14: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop()

Definindo o controle PWM

Define atuador como desligado inicialmente

Envia para pino de controle o valor do PWM desejado

Page 15: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop()

Início da implementação do controle PID digital

Definindo valor do Erro Erro: Valor desejado – valor real

Page 16: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando o loop()

Início da implementação do controle PID digital

Definindo controladores Proporcional, Integral e Derivativo

Constantes de erro (kP, kI e kD) para aumentar a importância daproporcional, da integral e da derivada.

Definindo de início apenas kP=1

Page 17: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Definindo controlador Proporcional

Exemplo:

SetPoint = 20Temperatura = 25Erro = -5

P = error * kP

kP é um multiplicativo do valor do erro.“Aumenta a importância do erro”

Page 18: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Definindo controlador Integral

Exemplo

Considere um erro pequenoError=0.001

Soma erros ao longo do tempo na

variável I. Quanto mais tempo errado

maior sua força para corrigir o erro.

Simplificando:

Page 19: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Definindo controlador Derivativo

É preciso salvar a temperatura passada a cada amostragem:

Multiplicador da diferença entra a temperatura anterior e a atual

Page 20: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Definindo controlador P I D

Se PID = 0 Então sistema OK Temperatura final é

igual a desejada Erro = 0

Page 21: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Definindo controlador P I D

O zero do nosso sistema representa 50.

50 Sistema desligado (não aquece e nem resfria)

Page 22: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Programa pronto

Page 23: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Ajuste dos controladores Integral e Derivativo no tempo

O sistema funciona baseado na repetição do bloco de código loop().

O operador de integral irá somar o erro a cada vez que for executado. Se a execução do programa for muito rápida, o seu valor irá crescer excessivamente com relação ao tempo real.

Este operador precisa ficar dependente do tempo em segundos.

Exemplo:Se ele for executado 200 vezes por segundo, deve ser dividido por 200.Se for executado 1 vez por segundo, divide por 1 (que é como está).

É preciso calcular o tempo de execução.

Comando millis()Retorna número de milissegundos desde que o Arduino começou a executar o programa atual.

Esse número sofre overflow e volta para zero depois de aproximadamente 50 dias.

Page 24: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Calculando o tempo de execução

Variável para armazenar o tempo de execução do último processo

Variável para calcular o tempo de execução do processo atual

lastProcess recebe novamente tempo atual.

deltaTime

lastProcess

Controlador Derivativo dependente do tempo em segundos

Controlador Integraldependente do tempo em segundos

Ajuste dos controladores Integral e Derivativo no tempo

Page 25: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Detalhe importante

Dividir por 1000.0 (“mil ponto zero”) para considerar que a variável é float (real)

Ajuste dos controladores Integral e Derivativo no tempo

Page 26: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Bloco de código loop() finalizado com os ajustes:

Page 27: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Programa completo com os ajustes:

Page 28: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Programa pronto

O que falta é configurar corretamente as constantes kP, kI e kD.

Ajustando as constantesTeoria do capítulo 9

Levantando a função de transferência do sistemaTeoria do capítulo 2

Ou, tentativa e erro...

Page 29: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Configurando sistema por tentativa e erro

Testar kP = 1 Se estiver devagar Testar kP = 10

Ir ajustando kP

Ir amostrando valor da variável controlada. Observar se o sistema estabiliza antes de alcançar a temperatura ideal e fica com um pequeno erro que nunca desaparece.

Ajustar kI

Verificar se o sistema apresenta ultrapassagem percentual, se ele oscila muito.

Ajustar kD

Page 30: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

- Deixando o código reutilizável - Controle de múltiplas malhas com PID

Utilizando o poder do controle digital

Classes do C++

Page 31: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

- Deixando o código reutilizável - Controle de múltiplas malhas com PID

Utilizando o poder do controle digital

Substituindo no cógido:

Temperature Sample Temperatura se torna uma amostra genérica para qualquer tipo de leitura

Criando código com objeto PID...

Page 32: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Programa completo – Parte 1

// (Really Simple) PID Class by Ivan Seidel// GitHub.com/ivanseidel// Use as you want. Leave credits

class PID{public:

double error;double sample;double lastSample;double kP, kI, kD; double P, I, D;double pid;

double setPoint;long lastProcess;

PID(double _kP, double _kI, double _kD){kP = _kP;kI = _kI;kD = _kD;

}

Page 33: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

void addNewSample(double _sample){sample = _sample;

}

void setSetPoint(double _setPoint){setPoint = _setPoint;

}

double process(){// Implementação P IDerror = setPoint - sample;float deltaTime = (millis() - lastProcess) / 1000.0;lastProcess = millis();

//PP = error * kP;

//II = I + (error * kI) * deltaTime;

//DD = (lastSample - sample) * kD / deltaTime;lastSample = sample;

// Soma tudopid = P + I + D;

return pid;}

};

Programa completo – Parte 2

Page 34: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

#define pSENSOR A1#define pCONTROLE 3

PID meuPid(1.0, 0, 0);

void setup() {Serial.begin(9600);

pinMode(pSENSOR, INPUT);pinMode(pCONTROLE, OUTPUT);

}

int controlePwm = 50;

void loop() {

// Lê temperaturadouble temperature = map(analogRead(pSENSOR), 0, 1023, 0, 100);

// Manda pro objeto PID!meuPid.addNewSample(temperature);

// Converte para controlecontrolePwm = (meuPid.process() + 50);

// Saída do controleanalogWrite(pCONTROLE, controlePwm);

}

Programa completo – Parte 3

Page 35: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Vantagens do novo programa

Possibilidade do controle de diversas malhas ao mesmo tempo:

Exemplo:

Controle temperatura 1Controle temperatura 2Controle temperatura 3

Controle de umidadeControle de pressão

Controle da posição do motor 1Controle da posição do motor 2Controle da posição do motor 3

Page 36: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Trabalho de implementação do PID

Parte prática (primeiro)

• Criar um sistema físico com controle PID

• Utilizar um Arduino (ou outro microcontrolador) para coletar uma variável e controlar esta variável através do PID.

• Calibrar o sistema

• Apresentar sistema funcionando em sala de aula

Parte teórica (segundo) – Depois que o sistema estiver funcionando

Princípio básico da ciência Reprodutibilidade

• Trabalho escrito deve conter o máximo de detalhes a respeito da implementação do sistema (código, diagramas elétricos, mecânicos, explicações, fotos).

Conhecimento que não se propaga é conhecimento inútil.

Entregar trabalho escrito e apresentar a prática.

36

Page 37: Sistemas de Controle 2 - SOL - Professorprofessor.pucgoias.edu.br/SiteDocente/admin...Projeto de sistema de controle digital PID com Arduino Índice 1. Uso da porta PWM do Arduino

Mãos a obra!