Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
AUTOMAÇÃO
Banca Avaliadora:
.................................................................................................................................
Prof. Alexandre Carvalho Leite
Dr. Engenharia e Tecnologia Espaciais/ Mecânica Espacial e Controle/INPE
Instituto Federal de Educação, Ciência e Tecnologia Fluminense/Campos
...........................................................................................................................................
Prof. Sergio Assis Galito de Araujo
MSc. Engenharia Mecânica /UFF
Instituto Federal de Educação, Ciência e Tecnologia Fluminense/Campos
.................................................................................................................................
Prof. Helder Siqueira Carvalho (orientador)
MSc. Computação Aplicada e Automação/UFF
Instituto Federal de Educação, Ciência e Tecnologia Fluminense/Campos
IV
AGRADECIMENTOS
Agradecemos primeiramente a Deus, pela vida e por permitir que chegássemos até aqui.
Agradecemos também aos nossos familiares por nos apoiarem em todos os momentos de
Aos amigos e colegas que fizemos e que nos ajudaram durante todo o decorrer da nossa vida
acadêmica.
Por fim ao Instituto Federal de Educação, Ciência e Tecnologia Fluminense por disponibilizar
conhecimento adquirido, desde o ensino médio e técnico ao ensino superior, seremos gratos
para sempre.
V
RESUMO
ABSTRACT
LISTA DE FIGURAS
A/D - Analógico/Digital
CCP - Capture, Compare e PWM
CI’s - Circuito Integrados
CK - Clock
CLP - Controlador lógico programável
CLR - Common Language Runtime
CPU - Central Processing Unit
D - Controlador derivativo
DCE - Comunicador de Dados
DT - Dado
DTE - Terminal de Dados
E - Erro
EIA - Eletronic Industries Association
HLDV - Módulo de detecção de alta/baixa voltagem
I - Controlador Integral
I/O - Input / Output
IHM - Interface Homem Máquina
IL - linguagem intermediária
KD - Ganho do Controlador Derivativo
KI - Ganho do Controlador Integral
KP - Ganho do Controlador Proporcional
MCU ou µC - Microcontroladores
MV - Variável Manipulada
P - Controlador Proporcional
PC - Personal Computer
PID - Controlador Proporcional Integra Derivativo
PV - Variável de Processo
PWM - Modulação Por Largura de Pulso
RISC - Computador com Conjunto Reduzido de Instruções
RX - Recepção
SFRs - Special Function Registers (Registradores de Função Especial)
XI
SP - Setpoint
TD - Tempo derivativo
TI - Tempo Integral
TX - Transmissão
USART - Universal Synchronous Asynchronous Receiver Transmitter
VP - Variável de Processo
XII
SUMÁRIO
1 INTRODUÇÃO ................................................................................................................... 14
1.1 Apresentação ..................................................................................................................... 14
1.2 Objetivo ............................................................................................................................. 14
1.3 Justificativa ....................................................................................................................... 15
1.4 Estrutura do Trabalho ..................................................................................................... 15
2 MICROCONTROLADORES ............................................................................................ 17
2.1 Definição ............................................................................................................................ 17
2.2 Arquitetura ....................................................................................................................... 18
2.3 Unidade Central de Processamento ................................................................................ 19
2.4 PIC18F4550 ....................................................................................................................... 20
2.4.1 Memórias ........................................................................................................................ 21
2.4.2 Portas I/O Digitais ......................................................................................................... 22
2.4.3 Conversor Analógico/Digital ........................................................................................ 23
2.4.4 USART............................................................................................................................ 24
2.4.5 Protocolo RS-232 ........................................................................................................... 24
2.4.6 Modulação por Largura de Pulso ................................................................................ 27
3 CONTROLE ........................................................................................................................ 29
3.1 Introdução ......................................................................................................................... 29
3.2 Definições........................................................................................................................... 29
3.2.1 Variável Controlada e Variável Manipulada.............................................................. 30
3.2.2 Sistemas a Controlar ou Plantas .................................................................................. 30
3.2.3 Processos ......................................................................................................................... 30
3.2.4 Sistemas .......................................................................................................................... 30
3.2.5 Distúrbios ....................................................................................................................... 31
3.3 Sistemas de Controle de Malha Aberta .......................................................................... 31
XIII
5 METODOLOGIA ............................................................................................................... 42
5.1 Aplicação Prática ............................................................................................................. 42
5.2 Medição de Temperatura ................................................................................................ 43
5.3 Kit Didático de Desenvolvimento .................................................................................... 44
5.4 Interface de Potência ........................................................................................................ 46
5.5 Circuito de Comunicação ................................................................................................. 47
5.6 Protocolo Criado ............................................................................................................... 50
5.7 Algoritmo de Controle...................................................................................................... 50
6 RESULTADOS .................................................................................................................... 52
7 CONCLUSÃO...................................................................................................................... 57
7.1 Sugestões para Trabalhos Futuros.................................................................................. 57
REFERÊNCIAS ..................................................................................................................... 58
ANEXO .................................................................................................................................... 60
ANEXO A: Tabela de Códigos ASCII .................................................................................. 61
APÊNCICE ............................................................................................................................. 62
APÊNDICE A: Código Gravado no PIC18F4550 ............................................................... 63
14
1 INTRODUÇÃO
1.1 Apresentação
A automação de processos industriais é uma realidade nos dias de hoje, pois possui
vantagens consideráveis como, aumento de confiabilidade e produção, eficiência, redução de
custos e melhorias na qualidade do produto. A crescente necessidade de se controlar
processos industriais faz com que diferentes estratégias sejam proposta com o mesmo
objetivo.
Nos processos industriais existe um conjunto de variáveis que precisam ser
controladas, para que se obtenha um produto de qualidade. Respeitando as normas de
segurança. O objetivo geralmente é manter a variável controlada em um valor pré-fixado
(desejado) que é denominado setpoint. Um dos meios para que se consiga tal feito é
implementar um controle de malha fechada, na qual utiliza-se o microcontrolador PIC-
18F4550, da Microchip, para efetuar leitura de informações, processá-las e realizar o controle
para que se possa atuar de modo a conseguir a correção devida.
Técnicas de controle como, Proporcional Integral e Derivativo (PID), utilizadas com
Controladores Lógicos Programáveis (CLP) já se encontram bem consolidadas, por isso são
muito aplicadas em diversos processos industriais. Com microcontroladores essa técnica de
controle também pode ser implementada construindo-se um algoritmo PID de controle, de
modo que se consiga aproveitar dos benefícios desta técnica em um pequeno
microcontrolador.
A utilização de microcontroladores e um programa de interface gratuito tornam o
projeto de controle mais barato, quebrando o paradigma de que automatizar requer custos
elevados. A ferramenta usada para interface é recomendada para usuários iniciantes com a
programação na linguagem C#, cuja interface torna o desenvolvimento das aplicações mais
rápido. Podemos assim implementar um projeto com baixo custo e atraente para o mercado.
1.2 Objetivo
Este trabalho tem como objetivo principal construir um protótipo para realizar o
controle PID microcontrolado da variável temperatura e fazer comunicação entre o
microcontrolador e o PC (personal computer em inglês ou computador pessoal em
15
1.3 Justificativa
2 MICROCONTROLADORES
2.1 Definição
2.2 Arquitetura
As instruções que irão ser realizadas tem que estar armazenadas na memória principal.
Buscar os dados armazenados para trazer até a UCP.
Executar a operação com os dados e guardar o resultado no local definido na
instrução.
Efetuar todo o processo localizando outra instrução.
Estas etapas descritas acima é o que se chama de ciclo de instrução, ele se repete
infinitamente até que o sistema seja desligado, ou ocorra um erro, ou ainda, uma instrução de
20
2.4 PIC18F4550
Na Figura 4 seus pinos podem ser observados, uma descrição detalhada de cada pino,
bem como de cada periférico poderá ser vista no datasheet do PIC18F4550, disponível no site
da Microchip, referenciado no final deste documento.
21
2.4.1 Memórias
de um Conversor Analógico-Digital.
(2.1)
2.4.4 USART
Criado pela EIA (Eletronic Industries Association) para comunicação entre um DTE
(terminal de dados) e um DCE (um comunicador de dados) o protocolo RS-232 é um padrão
de comunicação serial, conhecido também por EIA-232. Na maioria das vezes o pacote de
dados enviados é formado por 10 ou 11bits, dos quais 8bits formam a mensagem, 1bit de
inicio (Start Bit), 1/1.5/2bit(s) de parada (Stop Bit) e 1bit de paridade (Parity bit) para controle
de um eventual erro na mensagem.
25
Quando se deseja usar uma porta serial, torna-se necessário escolher um tipo de
conector, normalmente utilizam do tipo DB9, DB25 e RJ45, sendo que o mais usado é o DB9.
A Figura 7 mostra o conector DB - 9 macho e fêmea com seus respectivos pinos.
Quando o canal serial não está transmitindo nenhuma informação, ele possui nível
lógico „1‟. Para informar ao receptor o início de uma nova comunicação, o transmissor coloca
nível lógico „0‟ (Start bit) no canal, sinalizando que iniciou a transmissão de dados. Logo em
seguida o receptor inicia à contagem de clock, internamente para receber os dados.
Depois de enviar o start bit, o transmissor manda a mensagem formada por 8bits de
acordo com a tabela ASCII (ANEXO), começando pelo bit menos significativo (LSB),
seguido do bit de paridade (opcional) e por último um Stop bit, informando para o receptor o
final da transmissão. A respeito das taxas de transmissão, normalmente as mais utilizadas são
300bps, 600bps, 1200bps, 2400bps, 4800bps, 9600 bps e 19200bps.
Na Figura 8 pode-se observar um pacote de dados de 11 bits, utilizado na transmissão
de dados serial.
O protocolo RS-232 é assíncrono. Isso quer dizer que para realizar com sucesso a
comunicação entre dispositivos, o receptor tem que estar configurado com a mesma taxa de
transmissão do transmissor, ou seja, se os dados estão sendo enviados a uma taxa de
19200bps e receptor tem que estar configurado para receber 19200bps. Se isso não acontecer
à informação não será interpretada de forma correta.
Para utilizar a USART de modo a conseguir implementar corretamente o protocolo é
necessário conhecer as funções de controle que serão utilizadas na programação, as funções
são:
BusyUSART( ) - Verifica se a USART do microcontrolador está transmitindo, caso
esteja ocupada retorna „1‟, se estiver livre retorna „0‟.
Dado: é uma constante de 8bists tipo char, pertencente ao código ASCII (ANEXO I).
BRG: Informa a taxa de transmissão dos dispositivos, deve ser calculado de acordo
com a tabela 1.
Modo assíncrono
(baud rate alto)
Modo assíncrono
(baud rate baixo)
Modo assíncrono
27
Como os níveis de tensão utilizado na comunicação RS-232 são diferentes dos níveis
TTL, para realizar a comunicação entre microcontrolador e computador e vice-versa é
necessário utilizar conversores de nível, capazes de efetuar esta conversão. Estes conversores
serão mostrados detalhadamente mais a frente, bem como o seu circuito de comunicação.
No trabalhado é utilizado o módulo CCP para operar como PWM, ele fornece através
do seu respectivo pino um sinal PWM com resolução de 10bits.
A modulação por largura de pulso (PWM) tem a função de controlar o tempo que o
sinal permanecerá em nível alto (duty cycle), como pode ser observado na Figura 9.
Este sinal é muito importante para este trabalho, pois ele servirá como o sinal de
controle do processo.
29
3 CONTROLE
3.1 Introdução
3.2 Definições
3.2.3 Processos
3.2.4 Sistemas
3.2.5 Distúrbios
Sistemas em que o sinal de saída não exerce nenhuma ação de controle no sistema é
dito sistemas de controle de malha aberta. Com isso pode-se perceber que em um sistema de
controle de malha aberta o sinal de saída não é medido nem realimentado para comparação
com a entrada. Um bom exemplo é o da máquina de lavar roupas. Onde as operações de
colocar de molho, lavar e enxaguar em uma lavadora são executadas em uma sequência em
função do tempo. A lavadora não mede o sinal de saída, isto é, não verifica se as roupas estão
bem lavadas.
Na Figura 10 pode-se perceber que um sistema de controle em malha aberta não
possuí uma realimentação, esta é a principal diferença entre a malha aberta e malha fechada.
MV = Kp . E (3.1)
Kp = (3.3)
Sendo:
Kp = ganho do controlador
E = erro
MV = variável manipulada
(3.4)
= = (3.5)
(3.6)
É importante resaltar que o controle derivativo não pode ser utilizado separadamente
em um controlador, pois esta ação não identifica o setpoint atual, a ação derivativa “somente
sabe que o erro está variando”.
O controlador Proporcional Integral Derivativo (PID) une os três tipos de ação dos
controladores, ele pode ser arranjado na configuração série ou paralelo e ainda pode utilizar a
ação derivativa padrão ( ) ou a modificada ( ).
(3.7)
4.1 Visual C#
4.3 Linguagem C#
A sintaxe do C# é uma sintaxe simples e fácil de aprender por aqueles que já estão
familiarizados com a linguagem C, C++ ou Java. Os desenvolvedores que sabem trabalhar
com uma dessas linguagens já conseguem começar a trabalhar de forma produtiva com o C#
em período de tempo muito pequeno.
Quando se desejar trabalhar com objetos deve-se criar um novo projeto e em seguida
escolher o tipo Windows Forms Application, a Figura 18 mostra a criação de um novo projeto.
39
5 METODOLOGIA
Fabricante: Microchip.
Faixa de operação: -40°C a 125° C.
Alimentação: 2,3 a 5,5 volts.
Precisão: +/- 1°C.
Coeficiente de temperatura: 10mV/°C.
Na figura 22 são mostrados seus pinos com seus respectivos números, e na Figura 23 a
foto do sensor utilizado.
O Kit didático E-P18, mostrado na Figura 24, é uma placa eletrônica fabricada pela
empresa SEMPRA Tecnologia, para aprendizagem e desenvolvimento de sistemas
microcontrolados. O componente principal do kit é o microcontrolador PIC18F4550,
localizado no centro da placa, mas o kit também possuí vários componentes como: Display
LCD, Display de 7 segmentos, Relé, LEDs, LDR, Potenciômetro, sensor de temperatura,
chaves, buzzer e bornes de I/O para conectar a outros componentes externos.
Nem todos os componentes da placa foram utilizados no trabalho, mas os que foram
são de vital importância.
O display LCD foi utilizado para mostrar o valor do SP (setpoint) e MV (variável
manipulada), ele é importante para auxiliar na monitoração do sistema, já que como já foi dito
anteriormente ela é feita remotamente por um computador.
A Figura 26 mostra o display LCD sendo usado na monitoração.
A interface de potência tem a finalidade de alterar o valor de VP, ela foi construída em
uma placa de cobre com seus componentes soldados a ela, seus principais componentes são a
resistência de aquecimento e o transistor TIP 142.
O primeiro, a resistência de aquecimento, irá dissipar seu calor produzido na água, esta
quantidade de calor depende da tensão que é aplicada na mesma e consequentemente da
corrente que fluirá por ela.
O segundo, o transistor TIP 142, fará que a tensão varie na carga proporcionalmente
com o sinal de controle.
A Figura 27 apresenta a resistência de aquecimento utilizada no trabalho, e a Figura 28
mostra a placa que contem o circuito de potência.
O circuito acima foi montado em uma protoboard, tem como principal componente o
CI MAX 232. Ele é responsável para converter o sinal TTL de 0 a 5V da transmissão e
recepção serial do microcontrolador, para o padrão RS-232.
A Figura 31 mostra o circuito montado na protoboard.
(5.1)
(5.2)
A variável MV, saída do controlador, serve como argumento para o duty cycle do
PWM, este valor varia entre 0 a 600, o que corresponde um valor de tensão no PWM de 0 a 5
volts. Através deste sinal, sinal de controle, é que é possível realizar o controle de potência
fornecida à carga.
52
6 RESULTADOS
Após 180 segundos o sistema alcançou pela última vez o SP e logo em seguida atingiu
o regime permanente, ficando em 59 °C. A Figura 39 ilustra a visão geral da monitoração,
com a alteração de todos os SP.
7 CONCLUSÃO
REFERÊNCIA
HEMERLY, Elder Moreira. Controle por Computador de Sistemas Dinâmicos.2 ed. São
Paulo: Edgard Blücher, 1996.
Visual C#. Site oficial da Microsoft Brasil sobre o MSDN - Visual C#. Disponível em:<
http:/msdn.microsoft.com/library/vsutudio/z1zx9t92>. Acesso em: 17 Nov. 2012.
60
ANEXO
61
APÊNDICE
63
/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
#include <usart.h>
#include <ADC.h>
#include <delays.h>
#include "displayLCD.h"
#include <timers.h>
#include <pwm.h>
//** D E F I N E S ************************************************************/
#define CH1 PORTEbits.RE2
#define CH2 PORTEbits.RE1
#define Resolucao 5.0/1023.0
#pragma config CCP2MX = ON
/** V A R I A V E I S G L O B A I S ****************************************/
unsigned char ucMASK[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; // Protocolo da
comunicação serial
unsigned char ucEnvia[4]; // Protocolo da comunicação serial
unsigned char ucEnvia1[2]; // Protocolo da comunicação serial
unsigned char ucMASK1[] = {'0','1','2','3','4','5','6','7','8','9'};
char a='['; // Protocolo da comunicação serial
char b='A'; // Protocolo da comunicação serial
char c='D'; // Protocolo da comunicação serial
char d='0'; // Protocolo da comunicação serial
char e=':'; // Protocolo da comunicação serial
char f=']'; // Protocolo da comunicação serial
char s='S'; // Protocolo da comunicação serial
char p='P'; // Protocolo da comunicação serial
char valor1; // Protocolo da comunicação serial
char valor2; // Protocolo da comunicação serial
char ucRecebe; // Protocolo da comunicação serial
unsigned int Valor; // Protocolo da comunicação serial
int temp; // Possui o balor de temperatura em binário
int Ea = 0;
int Eant = 0;
int soma = 0;
int SP = 15;
int SP0 = 0;
int SP1 = 0;
float PV;
int proporcional;
int integral ;
int derivativo;
int Kp = 100;
int Ki = 1;
int Kd = 30;
int MV = 0;
int flag=0;
unsigned char Texto[20]; // Protocolo da comunicação serial
unsigned char *Ponteiro; // Protocolo da comunicação serial
unsigned char dado_recebido;
64
{
ConfiguraSistema(); // Configura as portas e periféricos do PIC.
if(CH1)
{
flag=1;
}
if(CH2)
{
flag=0;
}
if(flag)
{
if(!BusyADC())
Valor=ReadADC(); // Lê o sensor de temperatura
temp=Valor;
PV=(temp * Resolucao)*100-50; // Converte o valor em ºC
ConvertADC();
}
ucEnvia[3] = ucMASK[Valor%10]; // Protocolo da comunicação serial
Valor/=10;
ucEnvia[2] = ucMASK[Valor%10]; // Protocolo da comunicação serial
Valor/=10;
ucEnvia[1] = ucMASK[Valor%10]; // Protocolo da comunicação serial
Valor/=10;
ucEnvia[0] = ucMASK[Valor%10]; // Protocolo da comunicação serial
Valor/=10;
if(DataRdyUSART())
{
Delay10KTCYx(120);
dado_recebido = ReadUSART();
Delay10KTCYx(120);
WriteUSART(dado_recebido);
Delay10KTCYx(120);
}
if(dado_recebido == 'S') // Condição para alterar o Setpoint
{
while(!DataRdyUSART());
dado1[0] = ReadUSART(); // Recebe a dezena
SP0 = atoi(dado1);
SP0=SP0*10;
while(!DataRdyUSART());
dado1[0] = ReadUSART(); // Recebe a unidade
SP1 = atoi(dado1);
SP = SP0 + SP1; // Soma dezena com unidade
dado_recebido = 0;
}
if(!BusyUSART()) // Envia os dados pela serial
{
WriteUSART(a); // [
Delay10KTCYx(120);
WriteUSART(b); // A
Delay10KTCYx(120);
WriteUSART(c); // D
Delay10KTCYx(120);
66
WriteUSART(d); // 0
Delay10KTCYx(120);
WriteUSART(e); // :
Delay10KTCYx(120);
WriteUSART(ucEnvia[0]); // 1
Delay10KTCYx(120);
WriteUSART(ucEnvia[1]); // 0
Delay10KTCYx(120);
WriteUSART(ucEnvia[2]); // 2
Delay10KTCYx(120);
WriteUSART(ucEnvia[3]); // 3
Delay10KTCYx(120);
WriteUSART(f); // ]
Delay10KTCYx(120);
WriteUSART(a); // [
Delay10KTCYx(120);
WriteUSART(s); // S
Delay10KTCYx(120);
WriteUSART(p); // P
Delay10KTCYx(120);
WriteUSART(e); // :
Delay10KTCYx(120);
WriteUSART(ucEnvia1[0]); // 2
Delay10KTCYx(120);
WriteUSART(ucEnvia1[1]); // 0
Delay10KTCYx(120);
WriteUSART(f); // ]
}
SetDCPWM2(MV);
}//end flag
}//end while(1)
}//end main
/******************************************************************************
* Funcao: void ConfiguraSistema(void)
* Descrição: ConfiguraSistema é a rotina de configuração principal do projeto.
*Seu objetivo é configurar as portas de I/O e os demais periféricos do microcontrolador para que
operem da maneira desejada no projeto.
*****************************************************************************
void ConfiguraSistema (void)
{
ConfiguraLCD();
TRISEbits.TRISE2=1;
TRISEbits.TRISE1=1;
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
67
USART_BRGH_LOW &
USART_ADDEN_OFF
,77);
OpenADC(ADC_FOSC_64 &
ADC_RIGHT_JUST &
ADC_2_TAD,
ADC_CH0 &
ADC_INT_OFF &
ADC_REF_VDD_VSS,
ADC_5ANA);
WriteTimer0(28036);
OpenTimer0(TIMER_INT_ON &
T0_16BIT &
T0_SOURCE_INT &
T0_PS_1_256);
}//end ConfiguraSistema
/****************************************************************************
* Funcao: void ConfiguraInterrupcao(void)
* Descrição: Função que configura a interrupções utilizada no projeto
****************************************************************************/
void ConfiguraInterrupcao(void)
{
RCONbits.IPEN = 1; // Habilita prioridades de interrupcao
INTCONbits.GIEH = 1; // Habilita vetor de alta prioridade
INTCONbits.GIEL = 0; // Desabilita vetor de baixa prioridade
INTCON2bits.TMR0IP=1;
INTCONbits.TMR0IE=1;
INTCONbits.TMR0IF=0;
}// end ConfiguraInterrupcao
/****************************************************************************
* Funcao: void Tratamento_High_Interrupt(void)
*****************************************************************************
#pragma interrupt Tratamento_High_Interrupt
void Tratamento_High_Interrupt(void)
{
if(INTCONbits.TMR0IF)
{
WriteTimer0(0);
Eant = Ea ;
68
Ea = SP - PV ;
proporcional = Ea*Kp;
soma=(soma+Ea);
if(soma>50)
{
soma=50;
}
if(soma<0)
{
soma=0;
}
integral=soma*Ki;
derivativo=Kd*(Ea- Eant);
MV=(proporcional+integral+derivativo);
if(MV>600)
{
MV=600;
}
if(MV<0)
{
MV=0;
}
}// fecha if