Relatorio PID Italo

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 6

CONTROLADOR PID AERO ESTABILIZADOR COM UTILIZAÇÃO

DO ARDUÍNO

Matheus gomes da Silva


Mickaell Jefferson Pereira Reis
Faculdade Diferencial Integral - FACID
Professor: Italo – Controle Digital
[email protected]
[email protected]

Resumo. Este projeto tem como finalidade demonstrar o controle proporcional, integral e
derivativo (PID), embarcado com um microcontrolador Arduino UNO.

Palavras-chave: PID, Microcontroladores.

1. OBJETIVOS

O objetivo deste trabalho, é controlar a velocidade de um motor DC que compõe um aero


estabilizador para a posição predefinida com a utilização do PID (Proporcional Integral
Derivativo) com o controlador Arduíno e regulado por um potenciômetro.

2. MATERIAIS UTILIZADOS

 Arduino UNO;
 Fonte de alimentação (USB Carregador celular);
 2 Potenciômetro de 100kΩ;
 Resistores (300kΩ);
 Jumpers
 Transistor tipo 31
 Protoboard 180 Furos
 Motor 15600KV CW + CCW

3. INTRODUÇÃO

O controlador PID que foi utilizado nesse projeto é um tipo de controle largamente
difundido e utilizado na indústria e em projetos diversos onde seja necessário um controle
de forma mais direta e simples.
O controlador PID utiliza três controladores distintos para conseguir oferecer uma
estabilidade na saída do projeto em relação aos valores pré-determinados com referência a
ser alcançada, como por exemplo, a velocidade de um motor, a intensidade de luz, controle
de temperatura...
A sigla PID significa Proporcional, Integral e Derivativo, onde esses são os parâmetros que
serão usados dentro do controle do projeto.

3.1 RESPOSTA PROPORCIONAL

A ação proporcional resulta em um sinal de saída que é proporcional à amplitude do erro,


sendo Kp a constante de proporcionalidade:

Psaída=Kp∗e ( t )

O sistema com resposta proporcional se torna um sistema com controle mais completo que
um simples controle de liga/desliga, pois nesses casos, ocorre uma transição de nível de
tensão muito brusca de um estado totalmente desligado, para um valor que se deseja, no
sistema P, como o valor do erro é multiplicado por uma constante de proporcionalidade o
circuito nunca chega a zero, logo, nunca ficará totalmente desligado, diminuindo assim os
efeitos de transição de nível de tensão. Uma observação importante é observar o valor
componente P, pois se esse for alto demais pode desestabilizar o circuito e se for baixo
demais pode não ser o suficiente para que ocorra as correções no erro medido.

3.2 RESPOSTA INTEGRAL

A ação integral produz um sinal de saída que é proporcional à magnitude e à duração do


erro, ou seja, ao erro acumulado. Isso fornece uma alternativa para corrigir o erro de off-set
gerado pela ação proporcional e acelera a resposta do sistema, permitindo-o chegar ao valor
de referência mais rapidamente. O sinal de saída do controlador PI pode ser descrito por:

onde Ki é o ganho integral.

A ação integral corrige o valor da variável manipulada em intervalos regulares, chamado


tempo integral. Esse tempo integral é definido como o inverso do ganho integral. Se o
ganho integral é baixo, o sistema pode levar muito tempo para atingir o valor de referência.
No entanto, se o ganho integral for muito alto, o sistema pode tornar-se instável.

3.3 DERIVADA RESPOSTA

A ação derivativa produz um sinal de saída que é proporcional à velocidade de variação


do erro:
onde Kd é o ganho derivativo.
A ação derivativa fornece uma correção antecipada do erro, diminuindo o tempo de
resposta e melhorando a estabilidade do sistema. A ação derivativa atua em intervalos
regulares, chamado tempo derivativo. Esse parâmetro é inversamente proporcional à
velocidade de variação da variável controlada. Isso indica que a ação derivativa não deve
ser utilizada em processos nos quais o sistema deve responder rapidamente a uma
perturbação, nem em processos que apresentem muito ruído no sinal de medido, pois
levaria o processo à instabilidade.

3.4 AJUSTE DE PARAMÊTROS

O ajuste de parâmetros do controlador PID pode ser feito manualmente ou através de


métodos de optimização como o método de Ziegler-Nichols. Nesse método, os
ganhos Ki e Kd são primeiramente ajustados para zero. Em seguida, aumentamos o ganho
proporcional até que o sinal de saída começa a oscilar. Isso define um ganho crítico, Ku, e
um período crítico, Tu. Os ganhos dos controladores P, PI, PID são então ajustados
conforme a tabela abaixo:

Temos também o método de Ziegler-Nichols é um outro método popular de ajustar um


controlador PID. É muito semelhante ao método de tentativa e erro, onde o I e o D são
definidos como zero e P é aumentado até que o ciclo começa a oscilar. Uma vez iniciada a
oscilação, o ganho crítico Kc e o período de oscilações Pc são anotados.

4. METODOLOGIA

Para a realização de nosso projeto foi utilizado um motor DC 3.8VCC fixado a uma haste
metálica em sua extremidade. A haste metálica por sua vez foi presa em uma estrutura de
vertical a qual foi fixado na região do meio, formando um pêndulo horizontal.
No local de fixação da haste metálica também foi posto um potenciômetro que seria
regulado de acordo com o movimento se subir ou descer da haste metálica.
Esse potenciômetro em questão, é o feedback do sistema, pois, em conjunto com esse,
existe um outro potenciômetro ligado a placa do arduíno, onde esse é potenciômetro de
referência.

O projeto funciona da seguinte maneira.


1. É configurado uma resistência de referência no primeiro potenciômetro a qual passa
a ser o valor a ser atingido pelo segundo potenciômetro ligado na haste metálica que
tem a altura regulada pelo motor com hélice girando;
2. O valor da resistência do segundo potenciômetro a haste metálica é medido pela
placa e comparada com o valor de referência, e a partir dessa comparação entre os
dois valores é gerado um erro, onde esse erro é a percentual de diferença entre o
valor medido e valor de referência;
3. Feito a comparação e gerado o erro, a placa manda um comando para que o motor
na extremidade da haste ligue para que ao começar a girar, o vento gerado pela
hélice do motor, faça com que a haste suba regulando assim o segundo
potenciômetro para que a resistência deste se aproxima cada vez mais da resistência
de referência;
4. Caso o valor passe do valor de referência, a placa lê o erro e manda um sinal para
que o motor suspenda a rotação para que assim a haste baixe mais uma vez e se
aproxime novamente do valor de referência;
5. Esse controle de regulação da altura ideal da haste metálica devido a ativação ou
suspensão do motor é feito através do controlador PID.

O código que foi utilizado na placa do microcontrolador Arduino para esse projeto, segue
em anexo ao fim deste relatório.

Durante a prática de nosso projeto reconfiguramos os valores a serem utilizados nos


controladores, ajustamos a montagem física de nosso projeto e em seguida vários testes de
controle de altura da haste foram realizados até o momento onde a regulagem automática da
altura da haste, ficou satisfatória tanto em tempo de resposta, tanto em precisão.

CONCLUSÕES

Pode-se concluir ao fim deste projeto que o motivo que torna o controle PID amplamente
utilizado se dá devido a sua fácil adequação para projeto de diversos tipos e necessidades
de forma que sua implementação dentro de códigos costuma ser bastante simples, e devido
a sua utilização existem muitas ferramentas que auxiliam na hora de utilizar o PID. A forma
como o sistema funciona a base de comparações de seus valores próprios de saída com
valores previamente estabelecidos para um funcionamento ideal, o sistema por conta
própria começa a se regular para atingir esses valores de referência tornando assim todo o
sistema autor regulável, que pela fato de não depender de interferência humana para sua
regulagem torna-o também mais confiável em seu funcionamento e preciso, tornando-o por
fim um controlador ideal para atividades que necessitem estar se reajustando a todo
momento para um melhor funcionamento.
REFERÊNCIAS

[1] N. Instruments, “National Instruments,” 13 12 2011. [Online]. Available:


http://www.ni.com/white-paper/3782/pt/. [Acesso em 04 10 2016].

[2] P. Maya e F. Leonardi, Controle Essencial, São Paulo: Pearson Education do Brasil,
2014.

[3] D. M. Flemming, Calculo A: funções, limite, derivação, integração, São Paulo: Pearson
Prentice Hall, 2007.

[4] Microsoft, “Microsoft Developer Network,” Microsoft, 2016. [Online]. Available:


https://msdn.microsoft.com/ptbr/library/system.io.ports.serialport(v=vs.110).aspx.

[5]https://monografias.ufma.br/jspui/bitstream/123456789/3632/1/%c3%81lvaroJos
%c3%a9daSilvaCosta.pdf

ANEXO

//Código de controle PID do sistema de aero pêndulo.

#include <PID_v1.h>
#define PIN_INPUT A2
#define PIN_OUTPUT 9

//Definir variáveis às quais nos conectaremos


double Setpoint, Input, Output;

//Especifique os vínculos e os parâmetros de ajuste inicial


double Kp=1.5, Ki=1.5, Kd=0.0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

unsigned long timet;


unsigned long previousTime;
boolean enterFunction= true;

void setup()
{
Serial.begin(115200);
//inicialize as variáveis às quais estão vinculados
Input = analogRead(PIN_INPUT);
Setpoint = analogRead(A1);
pinMode(A0,INPUT);
//Ligar PID
myPID.SetMode(AUTOMATIC);
}

void loop()
{
Input = map(analogRead(A0),0,1023,0,100);
Setpoint = map(analogRead(A1),0,1023,0,100);
myPID.Compute();
analogWrite(PIN_OUTPUT, Output);

// A partir daqui fica apenas o código da comunicação serial!

timet = micros();
if (enterFunction == true){
previousTime= timet;

// Começa o primeiro código abaixo


//-----------------------

Serial.print(Setpoint); //a primeira variável para plotagem


Serial.print(" "); //Quebra de Linha
Serial.println(Input);

//-----------------------
//Fim do primeiro código
}
// O tempo de ATRASO é ajustado na constante abaixo >>
if (timet - previousTime < 99999){

// 1 million microsencods= 1 second delay


/* Na verdade, usei 0,999990 segundos, em um teste para compensar o tempo que
essa função SE leva para ser executada. este é realmente um ponto que
preciso melhorar no meu código */

enterFunction= false;
}
else {
enterFunction= true;
}
}

Você também pode gostar