Professional Documents
Culture Documents
Agradecimentos
minha famlia pelo apoio e principalmente aos meus pais pela oportunidade que me
deram de poder estudar.
minha namorada Daniela por estar do meu lado nos bons e maus momentos.
Aos meus amigos e principalmente a minha segunda famlia, Repblica Bar do Moe.
Ao professor Samir, pela orientao.
Aos tcnicos administrativos do laboratrio de controle: Alexandre e Joo.
UFSJ, pela formao profissional e social.
Ao Rodrigo da Inter Car Sound por ter fornecido o material para a confeco do suporte.
Resumo
Sumrio
1.
INTRODUO ............................................................................................................................. 7
2.
OBJETIVO .................................................................................................................................... 8
3.
3.1.1
3.2
Controle ................................................................................................................................. 10
3.3
3.4
Microcontroladores ............................................................................................................... 11
3.5
PWM ...................................................................................................................................... 12
METODOLOGIA ....................................................................................................................... 13
4.
4.1
Suporte .................................................................................................................................. 14
4.2
5.
RESULTADOS ............................................................................................................................ 25
6.
CONCLUSO ............................................................................................................................. 27
7.
8.
9.
ANEXO ........................................................................................................................................ 30
9.1
ALGORITMO ....................................................................................................................... 30
9.2
10.
ASSINATURAS ....................................................................................................................... 37
Lista de figuras
Lista de tabelas
1.
INTRODUO
A Engenharia de Controle a rea da engenharia responsvel pela eficincia de um
processo industrial. Apesar do controle moderno ter sido idealizado para processos industriais,
ele est sendo utilizado em vrios outros setores na sociedade, como por exemplo nas
residncias, na sade, no transporte, no comrcio e nos servios pblicos e privados.
Os controladores que utilizam as aes proporcional, derivativa e integral so chamados
de controladores PID. Segundo a professora Ninoska Bojorge do Departamento de Engenharia
Qumica e de Petrleo da Universidade Federal Fluminense, os controladores PID so
predominantes nas indstrias. Isso se deve ao seu bom desempenho para diversos tipos de
processos industriais e sua simplicidade de funcionamento. Porm, deve-se haver um cuidado
ao se sintonizar um controlador, se mal sintonizado ele pode prejudicar o processo, gerando
perdas e ineficincia na produo.
Devido ao seu pequeno tamanho e preo, o microcontrolador bastante usado em
projetos acadmicos e industriais, com ele possvel criar uma enorme gama de sistemas
embarcados. Um microcontrolador basicamente um componente eletrnico que
programvel e tem a funo de controlar perifricos (leds, botes, rels, sensores, etc.). Neste
trabalho ser usado o Arduino Uno R3, uma placa de prototipagem eletrnica de cdigo aberto
projetada com um microcontrolador ATmega328.
O Arduino foi criado em janeiro de 2005 na Itlia pelos professores de Computao
Fsica, David Cuartielles e Massimo Banzi, com o objetivo de criar uma plataforma de
hardware que fosse facilmente programvel por no especialistas em computadores. A
estrutura da linguagem de programao do Arduino formada por dois blocos de funes:
setup() e loop(). Essas funes carregam outros blocos de funes que so escritas na linguagem
C/C++. O Arduino ainda possui poderosos acessrios, chamados Shields, placas de circuitos
que so plugadas no prprio Arduino estendendo sua capacidade.
A maioria dos processos industriais utilizam motores, e muitos desses processos
necessitam operar com velocidade varivel. Assim, torna-se necessrio controlar a velocidade
angular desses motores. Os motores de corrente contnua foram os primeiros motores a serem
utilizados nas indstrias, e um dos principais motivos pelo qual eles ainda so usados, mesmo
aps o surgimento de acionamentos baseados na eletrnica de potncia para controlar os
motores de corrente alternada, a facilidade de controle da velocidade angular desses motores.
A velocidade uma das principais grandezas fsicas j medidas pelos seres humanos.
Essa grandeza proveniente da relao entre duas das sete grandezas fsicas fundamentais:
7
distncia e tempo. A velocidade angular relaciona o deslocamento circular que um objeto faz
em relao um centro de massa, com a grandeza fsica tempo. No Sistema Internacional de
Unidades a velocidade angular tem como unidade o rad/s, porm mais comumente usado o
rpm (rotaes por minuto).
2.
OBJETIVO
3.
REVISO BIBLIOGRFICA
3.1
3.1.1
O motor de corrente contnua uma mquina eltrica rotativa que converte potncia
eltrica em mecnica. O primeiro motor de corrente contnua surgiu em 1821 criado pelo fsico
e qumico ingls Michael Faraday (1791 1867). Faraday resolveu fazer experimentos para
confirmar ou refutar os resultados dos estudos de dois grandes cientistas: Oersted e Ampre.
O fsico e qumico dinamarqus Hans Christian Oersted (1777 1851) em 1820,
publicou um trabalho onde defendia a ideia de que uma corrente eltrica passando por um fio
condutor produzia um efeito magntico circular ao redor desse fio.
Aps a publicao do trabalho de Oersted, o fsico, filsofo e matemtico francs Andr
Marie Ampre (1775 1836) resolveu estudar sobre tais descobertas. Assim, em 18 de setembro
de 1820, demonstrou que as correntes eltricas se atraem ou se repelem mutuamente.
Posteriormente, em outubro de 1821, Faraday usou uma base na qual existia um fio,
pelo qual passava uma corrente, que girava ao redor de um im, criando assim um motor eltrico
na sua forma mais simplificada.
Figura 1 - Experimento de Michael Faraday. Extrado de Elektrotechnisches Institut (ETI). The invention of the electric motor
1800-1854.1
3.2
Controle
10
3.3
Instrumentao e Medidas
3.4
Microcontroladores
O microprocessador um circuito integrado que controla as operaes como um todo
interpretando e executando as instrues dos programas. Para que isso ocorra, necessrio se
conectar vrios componentes ao microprocessador. J o microcontrolador um circuito
integrado mais completo, composto por uma unidade de processamento (CPU), memrias de
programas (ROM, RAM, FLASH), diversos mdulos para controle de perifricos
(temporizadores, porta serial, conversor digital-analgico, conversor analgico-digital) e um
circuito gerador de clock.
Segundo o Instituto Smithsoniano, o primeiro microcontrolador foi inventado em 1971
por Gary Boone e Michael Cochram, engenheiros da Texas Instruments. O nome dado para
esse microcontrolador foi TMS 1000, sendo que ele era de 4 bits e possua memrias ROM e
RAM. Inicialmente utilizado apenas internamente pela empresa nas suas calculadoras, foi
colocado venda em 1974, sendo que em 1983 j tinham sido vendidos 100 milhes de TMS
1000. [8]
11
Figura 3 - Primeiro microcontrolador, o TMS 1000. Extrado de Computer Museum. Chip TI TMS 1000 Microcontroller
(1972).4
3.5
PWM
Modulao por largura de pulsos, ou PWM (Pulse-Width Modulation) na lngua inglesa,
uma tcnica usada para gerar tenses analgicas a partir de uma sequncia de pulsos digitais.
Graas ao PWM podemos controlar a velocidade dos motores, mantendo o torque ainda que em
baixas velocidades o que garante partidas suaves mesmo quando h uma carga maior sobre os
motores.
A forma de onda de um sinal PWM quadrada, com frequncia fixa e com a largura de
seus pulsos varivel. Esta variao feita mudando o tempo em que o sinal fica em nvel logico
alto. Com isso podemos controlar a tenso mdia gerada. Para calcular essa tenso mdia
primeiro tem-se que calcular a porcentagem de ciclo de trabalho de acordo com a seguinte
frmula:
% =
100
(1)
12
Figura 4 - Modulao por largura de pulso do Arduino. Extrado de Arduino. Tutorial sobre PWM.5
4.
METODOLOGIA
13
4.1
Suporte
Muitos fatores foram contemplados para a fabricao do suporte, e uma delas foi o
tamanho de uma p da hlice. O motor teria que estar a uma altura mnima para que a hlice
no batesse ou raspasse na superfcie, e essa altura foi um pouco maior que o comprimento de
uma p da hlice.
O suporte foi feito de aglomerado de madeira com as dimenses a seguir:
Figura 6 - (a) Dimenses do suporte do motor. (b) Dimenses do suporte do sensor infravermelho.
Posteriormente ele foi envernizado e pode ser visto j com os sensores e o motor fixado
na figura a seguir.
14
4.2
Sistema de controle
O sistema de controle composto por: Arduino, hlice, sensor infravermelho,
15
Finalmente foi construda uma hlice usando dois palitos de picol, sendo que um palito
foi usado como base e o outro foi cortado em dois pedaes e colado no meio do outro palito
respeitando as distncias para que as ps tivessem o mesmo tamanho. Para que essa hlice no
gira-se no seu prprio eixo foi usado um objeto usado em aeromodelismo chamado salva-hlice.
O sensor infravermelho usado foi o E18-D50NK, ele um sensor digital simples,
apresentando apenas dois estados de sada: baixo ou alto. Quando esse sensor detecta o objeto
o nvel da sua sada baixo e acende um led atrs do sensor, quando no detecta o objeto o
nvel da sua sada alto. Sua sensibilidade e distncia mxima medida so calibrados por um
parafuso atrs do sensor, sendo este parafuso um potencimetro. Ele consegue detectar objetos
a uma distncia de 3 at 50 cm. Por se tratar de um sensor infravermelho ativo, ele possui um
emissor e um receptor. O emissor emite uma luz que refletida ou no dependendo da cor e
constituio do objeto, e assim ou no captada pelo receptor. Este sensor serve tanto como
detector de presena como medidor de distncia.
Para o clculo da velocidade angular do motor, a hlice foi tratada como um tipo de
encoder, sendo necessrio usar a tcnica de interrupes para detectar as mudanas de estado
na entrada digital da porta escolhida do Arduino. A funo interrupo muita em
microcontroladores, ele nada mais que um aviso ao microcontrolador que um evento prprogramado ocorreu e que o controlador deve suspender temporariamente suas tarefas de rotina
e saltar para uma rotina de tratamento dessa interrupo. No caso desse projeto o evento seria
a mudana de estado na entrada digital 2 do Arduino e a rotina de tratamento dessa interrupo
seria um acumulador que somaria em uma varivel o nmero de vezes que a funo interrupo
foi executada. Assim, o programa enxerga que o motor deu uma volta quando a varivel que
conta o nmero de interrupes igual a 9, como podemos ver na imagem abaixo:
16
Supondo que quando o sensor detecta o objeto a sada dele seja 0, e quando no detecta
seja 1.Supondo tambm que o sensor est lendo na faixa da risca preta, para se garantir que a
hlice deu 1 volta, preciso que a sada do sensor seja alterada 9 vezes, sendo a sequncia 1-01-0-1-0-1-0-1-0.
Na primeira verso do algoritmo, era contando o nmero de vezes que houve variao
na sada do sensor durante 1 segundo. Depois o resultado era dividido por 9 e multiplicado por
60, obtendo assim a velocidade angular em rpm. Porm, percebeu-se a necessidade de mudar o
algoritmo para que fosse possvel fazer o modelo do processo, assim na verso final do
algoritmo, era contado o tempo em milissegundos que demorava para o sensor ler n voltas e
ento era feita uma regra de 3 simples, sendo que as grandezas so diretamente proporcionais,
para o clculo da velocidade angular. Supondo que o sensor demora-se 100 milissegundos para
ler 5 voltas, a velocidade angular do motor em rpm no momento na medio seria calculada da
seguinte forma, lembrando que 1 minuto tem 60000 milissegundos:
5 voltas
100 milissegundos
Rpm
60000 milissegundos
5 60000
100
= 3000 []
(2)
() =
()
()
+1
(3)
17
Figura 9 - Grfico da resposta ao degrau de 2V, com o algoritmo contando o tempo de 5 voltas para calcular a velocidade.
Grfico plotado pelo software Matlab.
1153
2
= 576,5 [1]
(4)
() =
576,5
1,792+1
(5)
18
Foi aplicado um degrau de 2V a esse modelo e comparado com o grfico da mdia dos
20 ensaios da resposta ao degrau de 2V onde o sensor espera 5 voltas para calcular a velocidade
angular, o grfico da comparao mostrado a seguir:
Figura 10 - Comparao entre a curva obtida pela mdia dos 20 ensaios ao degrau e a curva relativa ao modelo obtido.
Grfico plotado pelo software Matlab.
Feita a comparao notou-se que o sistema descrito por uma dinmica de segunda
ordem e que pode ser aproximada por um modelo de primeira ordem com atraso puro de tempo.
O atraso puro de tempo quando a sada do instrumento no afetada assim que h uma
variao na entrada do mesmo.
O atraso puro de tempo alm de causar o atraso da entrada, tm efeito desestabilizador
em aplicaes com malha fechada. Por isso muitas vezes necessrio usar um modelo de
primeira ordem com atraso puro de tempo para se modelar uma dinmica de segunda ordem
sobreamortecida. Para isso so usadas as aproximaes de Pad, como se segue:
() =
( )
( )
(6)
em que:
() = =0
(+)!
!()!
( )
(7)
Como que para a perfeita aproximao do atraso puro de tempo necessrio aumentar
a ordem da funo de transferncia ao infinito, os instrumentos de primeira e segunda ordem
com atraso puro de tempo podem produzir oscilaes em malhas de controle.
19
Porm, neste trabalho no foram usadas as aproximaes de Pad, assim foi utilizado o
modelo de primeira ordem com atraso puro de tempo. Considerando o atraso puro de tempo, a
funo de transferncia de um sistema de primeira ordem descrita pela funo abaixo:
() =
()
=
()
+1
(8)
O atraso puro de tempo Td, medido em segundos, foi obtido por inspeo visual, e
representa o tempo em que o sistema demora para comear a responder aps a aplicao da
entrada degrau, na figura 10 podemos notar que esse tempo de aproximadamente 2 segundos,
porm para que as curvas entre o modelo e a mdia ficassem mais prximas o valor adotado foi
de 1 segundo. Pelo mesmo motivo, o valor de tambm foi alterado. Com isso, a funo de
transferncia do modelo final ficou assim:
() =
576,5
0,5+1
(9)
A seguir podemos ver o grfico que compara a curva que representa a mdia das
entradas ao degrau com o modelo contemplando o atraso puro de tempo.
Figura 11 - Comparao entre a curva obtida pela mdia dos 20 ensaios ao degrau e a curva relativa ao modelo obtido
considerando o atraso puro de tempo. Grfico plotado pelo software Matlab.
20
Com o modelo obtido, foi usado a ferramenta Sisotool do Matlab para a sintonia do
PID. Nessa ferramenta, o primeiro passo escolher a arquitetura, em formato de diagrama de
blocos, que o controle do processo se encaixa. A arquitetura escolhida mostrada abaixo:
Escolhido a estrutura de controle, o prximo passo foi escolher o mtodo a ser utilizado
para sintonizar o controlador. O mtodo escolhido foi o de tempo de resposta robusto, que
baseado no modelo. Este mtodo baseado em um algoritmo que modifica a largura de banda
e a margem de fase do sistema, sendo que h duas opes de sintonia: automtica e interativa.
Na sintonia automtica, o algoritmo promove um balano entre desempenho e robustez. J na
sintonia interativa, o usurio quem decide como ser a resposta do sistema.
Para efeito de comparao em relao ao desempenho, foram sintonizados dois tipos de
controladores, um PI e um PID. A funo de transferncia do controlador PI mostrada abaixo:
(1+0,5 )
() = 0,00090783
(10)
(11)
Onde Ti = Kp / Ki
Igualando as funes transferncias temos:
(1 +
(1 +
1
1
1+0,5
) = 0,00090783 (
(12)
( +0,5)
) = 0,00090783 (
(13)
21
(1 +
(1 +
(1 +
1
1
1
) = 0,00090783 ( + 0,5) 2
)=
0,00090783
2
(1 + )
(14)
(15)
) = 0,000453915 (1 + )
(16)
() = 0,00068538
(1+0,073)(1+0,073)
(17)
22
(18)
hFE
0,234
1000
= 0,000234 []
(19)
Com o valor da maior corrente de base necessria para controlar esse motor obtida, o
prximo passo calcular o resistor que ser ligado entre a porta de sada do Arduino e a base
do transistor. Esse resistor usado para limitar a corrente de base. A corrente de base a
responsvel pela conduo entre o coletor e emissor. Ento esse resistor fundamental para o
bom controle do processo. Se o valor desse resistor ficar muito abaixo do correto, a corrente de
base ser muito maior que a necessria, fazendo assim com que a corrente do coletor seja maior
do que a necessria podendo danificar o motor. Se o valor desse resistor ficar muito acima do
correto, a corrente de base ser muito menor que a necessria, assim a corrente do coletor no
ser suficiente para controlar de forma adequada o motor. A equao usada para o clculo do
resistor a seguinte:
=
[]
(20)
23
(21)
(22)
3,6
0,000234
= 15385 []
(23)
O resistor com valor comercial prximo desse valor o de 15 k, sendo assim o resistor
usado neste trabalho.
O esquema eltrico pode ser visto com mais detalhes abaixo:
24
5.
RESULTADOS
Foram feitos trs ensaios no LACOI, um usando os parmetros obtidos atravs do
Matlab para o controlador PI, outro usando os parmetros obtidos atravs do Matlab para o
controlador PID, e um ltimo usando parmetros aleatrios de um controlador PI. Em todos os
ensaios, a velocidade a ser controlada era alterada aps 2 minutos, comeando em 1700 rpm,
passando para 1200 rpm, e depois indo a 2200 rpm.
Para analisar os resultados com mais facilidade, foi utilizando o software Processing
2, que uma ferramenta de desenvolvimento de uma linguagem de programao de cdigo
aberto, usado para mostrar ou salvar dados coletados pelo Arduino. Sendo assim o Processing
2 foi utilizado para construir um supervisrio SCADA. A interface do Processing 2
extremamente parecida com a do Arduino, o que facilita o seu uso.
Nos grficos obtidos pelo supervisrio SCADA que sero apresentados a seguir, a curva
em vermelho a velocidade angular medida, a reta verde representa o setpoint e a curva azul
representa a sada do controlador. As escalas dos grficos so ajustadas por comandos no
prprio algoritmo usado, no caso o PID_FrontEnd_v03. Pode-se ver no lado esquerdo todos
os valores tanto dos parmetros do controlador, como os valores de entrada, sada e setpoint do
sistema, podendo-se mudar o setpoint por ali mesmo e mandar a informao direto para o
Arduino sem precisar modificar o algoritmo no Arduino.
Figura 15 - Parte grfica do controle feito pelo controlador PID. Obtido pelo supervisrio SCADA.
25
Figura 16 - Parte grfica do controle feito pelo controlador PI sintonizado pelo Matlab. Obtido pelo supervisrio SCADA.
Figura 17 - Parte grfica do controle feito pelo controlador PI com os parmetros escolhidos aleatoriamente. Obtido pelo
supervisrio SCADA.
26
6.
CONCLUSO
27
7.
Como proposta para um trabalho futuro fica a ideia de melhorar o sistema de medio
usando uma hlice mais uniforme e um sensor melhor. Para o sistema de controle a ideia seria
melhorar o controle, usando um controle mais avanado como por exemplo fuzzy ou redes
neurais.
28
8.
REFERNCIA BIBLIOGRFICA
FITZGERALD,
A.
E;
KINGSLEY,
Charles;
UMANS,
Stephen
Sala
de
Fsica.
Biografias.
Disponvel
em:
AYCOCK,
S.
histria
dos
microcontroladores.
Disponvel
em:
<http://www.ehow.com.br/historia-microcontroladores-info_42970/>. Acesso em 07 de
novembro de 2014.
[9]
BOJORGE,
N.
Sintonia
de
malhas
de
controle.
Disponvel
em:
<http://www.professores.uff.br/controledeprocessos-eq/images/stories/Control_Aula17_Sintonia.pdf>.
Electrnica.
Transstor.
Disponvel
em:
<http://www.electronica-
29
9.
ANEXO
9.1
ALGORITMO
//
// Algoritmo usado no Trabalho de Concluso de Curso
// de Gustavo Scaldini Schaeffer no curso de Engenharia
// Eltrica pela Universidade Federal de So Joo del Rei
// com orientao do professor Samir Angelo Milani Martins
//
#include <PID_v1.h>
double Setpoint, Input, Output, rpm; // Declarao das variveis usadas pela biblioteca PID_v1
PID myPID(&Input, &Output, &Setpoint,0.006,0.041,0.00022, DIRECT); // Comando usado
pela biblioteca PID_v1 usado para executar o controle
unsigned long serialTime; // Declarao da varivel usada pelo programa Processing para obter
dados do Arduino
int contagem = 0; // Declarao da varivel mais importante do programa, que faz a contagem
das vezes que o nvel da sada do sensor mudou
unsigned long inicio = millis(); // Declarao da varivel que comea a contar o tempo, tempo
esse que usado para calcular a velocidade angular
void setup() {
Serial.begin(9600);
attachInterrupt(0, contador, CHANGE); // Funo do Arduino que executa a funo 'contador'
quando h mudana de nvel na porta digital 2 do Arduino
Input = rpm;
Setpoint = 1700; // Escolha do setpoint em RPM
myPID.SetMode(AUTOMATIC);
30
void loop()
{
if(contagem >= 44){
atravs da regra de 3:
rpm = 300000/tempo;
//
Serial.println(rpm);
//
contagem = 0;
//
inicio += tempo;
//
Input = rpm;
//
myPID.Compute();
para a varivel
analogWrite(3,Output);
Aps isso a
}
Arduino ter
if(millis()>serialTime)
funo
{
de
SerialReceive();
SerialSend();
//
serialTime+=500;
obter os dados
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
//
union {
//
31
byte asBytes[24];
//
foo;
//
//
void SerialReceive()
//
//
//
//
int index=0;
//
//
//
while(Serial.available()&&index<26)
//
//
if(index==0) Auto_Man = Serial.read();
//
//
//
index++;
//
//
//
if(index==26
&&
(Auto_Man==0
||
Auto_Man==1)&&
(Direct_Reverse==0
||
Direct_Reverse==1)) //
{
//
Setpoint=double(foo.asFloat[0]);
//
//
//
//
if(Auto_Man==0)
{
//
//
Output=double(foo.asFloat[2]);
}
//
//
//
32
double p, i, d;
//
p = double(foo.asFloat[3]);
//
i = double(foo.asFloat[4]);
//
d = double(foo.asFloat[5]);
//
myPID.SetTunings(p, i, d);
//
//
if(Auto_Man==0) myPID.SetMode(MANUAL);
//
else myPID.SetMode(AUTOMATIC);
//
//
if(Direct_Reverse==0) myPID.SetControllerDirection(DIRECT);
//
else myPID.SetControllerDirection(REVERSE);
}
//
//
Serial.flush();
}
//
//
//
void SerialSend()
{
//
//
Serial.print("PID ");
//
Serial.print(Setpoint);
//
Serial.print(" ");
//
Serial.print(Input);
Serial.print(" ");
//
//
Serial.print(Output);
Serial.print(" ");
//
//
Serial.print(myPID.GetKp());
Serial.print(" ");
//
//
Serial.print(myPID.GetKi());
Serial.print(" ");
//
//
Serial.print(myPID.GetKd());
Serial.print(" ");
//
//
if(myPID.GetMode()==AUTOMATIC) Serial.print("Automatic");
else Serial.print("Manual");
Serial.print(" ");
//
//
//
if(myPID.GetDirection()==DIRECT) Serial.println("Direct");
//
33
else Serial.println("Reverse");
}
//
//
//
///////////////////////////////////////////////////////////////////////////////////////////////
void contador() //
{
//
34
9.2
CUSTO DO PROJETO
Total - R$19,40
------------------------------------------------------------------------------------------Total gasto aproximadamente - R$381,03
Total gasto s com os componentes usados na verso final (marcados com *) e desconsiderando as 4
pilhas AA, resistor de 15k, jumpers para conexo do circuito e o frete R$132,87
36
10.
ASSINATURAS
__________________________________________________________________
Gustavo Scaldini Schaeffer
(Aluno)
__________________________________________________________________
Prof. Samir Angelo Milani Martins
(Professor Orientador)
37