Relatorio PID Italo
Relatorio PID Italo
Relatorio PID Italo
DO ARDUÍNO
Resumo. Este projeto tem como finalidade demonstrar o controle proporcional, integral e
derivativo (PID), embarcado com um microcontrolador Arduino UNO.
1. OBJETIVOS
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.
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.
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 código que foi utilizado na placa do microcontrolador Arduino para esse projeto, segue
em anexo ao fim deste relatório.
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
[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.
[5]https://monografias.ufma.br/jspui/bitstream/123456789/3632/1/%c3%81lvaroJos
%c3%a9daSilvaCosta.pdf
ANEXO
#include <PID_v1.h>
#define PIN_INPUT A2
#define PIN_OUTPUT 9
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);
timet = micros();
if (enterFunction == true){
previousTime= timet;
//-----------------------
//Fim do primeiro código
}
// O tempo de ATRASO é ajustado na constante abaixo >>
if (timet - previousTime < 99999){
enterFunction= false;
}
else {
enterFunction= true;
}
}