Baixe o app para aproveitar ainda mais
Prévia do material em texto
CONTROLE DE TEMPERATURA ELABORAÇÃO DE UM CONTROLE UTILIZANDO PIC18F4550 J U I Z D E F O R A M I N A S G E R A I S / 2 0 1 5 2 CONTROLE DE TEMPERATURA ELABORAÇÃO DE UM CONTROLE UTILIZANDO PIC18F4550 AUTORES RESPONSAVEIS Hoberty Martins Pedrosa João Otávio de Barros Berbert Thiago Queiroz Botelho da Silva Estudo realizado por alunos em graduação em Engenharia Mecatrônica do Instituto Federal de Educação, Ciência e Tecnologia do Sudeste de Minas Gerais Câmpus Juiz de Fora para a disciplina Sistema Digitais para Mecatrônica sob orientação do professor Thiago Castro. SUMÁRIO Introdução ........................................................................................................... 3 Objetivo ............................................................................................................... 3 Projeto .................................................................................................................. 3 Código fonte implemetado ................................................................................ 6 Layout Painel Frontal ....................................................................................... 13 Layout Diagrama de Blocos ............................................................................ 15 Lógica Implementada ....................................................................................... 21 Manual do Usuário ........................................................................................... 22 Trabalhos Futuros ............................................................................................ 23 Referências ......................................................................................................... 23 3 INTRODUÇÃO Os dispositivos de captura de sinais e atuadores tornaram-se vitais na indústria e os fabricantes estão mostrando uma tendência de integração de equipamentos controlados por computador. No passado, os operadores eram os cérebros de um equipamento e fonte de toda informação sobre a operação de um processo. O operador sabia se as peças estavam disponíveis, que peças estavam prontas, se eram boas ou más, se o trabalho feito com ferramentas estava aceitável, se o dispositivo elétrico estava ligado ou não, e assim por diante. O operador podia detectar problemas na operação vendo, ouvindo, sentindo e cheirando problemas. Visto isso abordaremos neste trabalho a elaboração de um instrumento virtual que integra os equipamentos encontrados no kit didático MCLab3 - PIC18F4550. Utilizaremos do ambiente de desenvolvimento flexível que contém todas as ferramentas necessárias para projetar e implementar sistemas de medição e controle, o LabVIEW. Os programas em LabVIEW são chamados de instrumentos virtuais (VIs—Virtual Instruments). Os VIs contêm três componentes principais: o painel frontal, o diagrama de bloco e o painel de ícones e conectores. No LabVIEW, produziremos uma interface com o usuário, a denominada painel frontal, onde o operador do sistema interage com o sistema. Esta interação pode ser o ínvio de algum comando ou leitura de alguma informação. Além do painel frontal, um quadro com diagrama de blocos onde apresentaremos a topologia do sistema será produzido no LabVIEW. O trabalho busca também apresentar uma aplicação para tal instrumento elaborado. OBJETIVO O presente trabalho consiste em aplicar os conhecimentos adquiridos durante a disciplina de Sistema Digitais para Mecatrônica, através do kit didático MCLab3 - PIC18F4550 (Figura 1). Temos como objetivo a criação de uma situação problema na qual aplicaremos um equipamento para solucionar através de leituras e controle de um sinal. O projeto do referente equipamento apresentará um painel frontal de fácil entendimento para o usuário e também a elaboração de um manual para instrução do usuário ao instrumento virtual elaborando no software LabVIEW. PROJETO A idealização do projeto consiste em solucionar uma situação problema. A situação problema indicada no referente trabalho é a necessidade de controle de temperaturas em áreas onde requer um alto nível de controle de temperatura com uma faixa de variação. Umas das situações proposta são: Um instrumento de controle de temperatura em processos de secagem de grãos em altas temperaturas. 4 Um instrumento de controle de temperatura em processos de chocadeira de ovos. O primeiro caso apresentado, secagem de grãos em altas temperaturas, foi escolhido para o nosso empreendimento devido apresentar faixa de temperaturas de maiores variações dependendo do grão em processo. Secagem de grãos em altas temperaturas, tem sua necessidade de conservar o grão por mais tempo, e assim permitindo sua estocagem. A secagem faz com que os grãos não fermentem, não mofem, entre outras avarias que podem diminuir a qualidade dos grãos recém colhidos. Os grãos identificados neste projeto são a soja, o milho, o arroz, o trigo e sementes em geral. Abaixo uma tabela apresentando as temperaturas máximas e mínimas de cada grão. Grãos Temp. Mín (ºC) Temp. Máx (ºC) Soja 90 100 Milho 90 100 Arroz 60 70 Trigo 70 80 Sementes 50 60 A secagem de grãos é uma das etapas do pré-processamento dos produtos agrícolas que tem a finalidade de retirar parte da água contida neles. Este processo corresponde a aproximadamente 12% da energia total gasta nos sistemas de beneficiamento de pós-colheita e exerce grande influência na manutenção de sua qualidade durante o período de conservação. Existem alguns tipos de secagem de grãos e um destes é a secagem artificial com ventilação forçada, ou seja, um ventilador é ligado na área aonde os grãos estão dispostos para retirar a umidade deste ambiente, quando necessário. Apresentaremos duas simulações do Instrumento Virtual, uma simulação em modo virtual através do software PROTEUS 8 e uma simulação em modo real através do kit didático MCLab3 - PIC18F4550 (Figura 1). As simulações representarão o instrumento em seu ambiente de trabalho, como para aplicação apresentada, um silo de secagem para grãos. 5 Figura 1Kit Didático MCLab3 Figura 2 Esquemático elaborado no Software PROTEUS 8. Para a programação do PIC18F4550 elaboramos um algoritmo em linguagem C e compilamos em MPLab. O projeto contém como componentes físicos: um sensor de temperatura LM35, um PIC18F4550, um COOLER e um Display de Cristal Líquido (LCD) Caractere 16x2, sendo todos presentes no kit didático MCLab3. Os mesmos componentes foram utilizados no PROTEUS, exceto o COOLER, seu funcionamento foi reconhecido através do funcionamento de um LED. Uma observação que devemos citar, que este trabalho não explicará como é feito a interface entre o VI e o PIC18F4550. Agora descreveremos os códigos fontes implementados no PIC18F4550. E a seguir apresentaremos o layout do painel frontal explicando cada dispositivo escolhido assim como o bloco de diagramas todos elaborados no LabVIEW. 6 CÓDIGO FONTE IMPLEME TADO O código implementado foi elaborado no template fornecido em classe. As bibliotecas utilizadas foram: #include <p18F4550.h>: biblioteca relacionada a definições acerca do microcontrolador PIC 18F4550; #include "LCD_lib.h": biblioteca fornecida em sala de aula para uso do display de LCD, utilizada para definir funções de limpar a tela, iniciar a escrita em uma posição a ser definida e escrever as informações e palavras desejadas na tela de LCD do kit. #include<Delays.h>: biblioteca necessária para utilizar a função de delay para a visualização no LCD. #include <usart.h>: biblioteca necessária para utilização de funções relacionadas ao protocolo de comunicação RS232, para leitura (ReadUSART()) e escrita (writeUSART()) de dados com o programa LabVIEW. Algumas variáveis globais foram definidas pois foram trabalhadas em diferentes funções durante a implementação do programa. São elas: int valor_Analogico = 0x30; int n,c,d,u,i; int centena, dezena, unidade; Após bibliotecas definidas e variáveis globais, o módulo USART foi configurado para leitura e escrita de dados: //CONFIGURAÇÃO DA USART OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25); 7 Abaixo um fluxograma da implementação apresentada neste trabalho: O código principal utilizado para implementação da solução do problema proposto foi: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Rotina Principal * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ while(1) { valor_Analogico = conv_AD(); valor_Analogico = (valor_Analogico*(0.4887585532746823069403714565)); n = valor_Analogico; /**************************************************************************************** * LEITURA DA TEMPERATURA + ACIONAMENTO DO VENTILADOR * ****************************************************************************************/ /************************************************************ * Tratamento da variável analógica para aparecer no LCD * *************************************************************/ //Centena: u = c%10; d = (c%100-u)/10; c = (c%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; /************************************************************ * Escrita no LCD * *************************************************************/ comando_lcd(0x80); 8 escreve_lcd ('T'); escreve_lcd ('E'); escreve_lcd ('M'); escreve_lcd ('P'); escreve_lcd ('E'); escreve_lcd ('R'); escreve_lcd ('A'); escreve_lcd ('T'); escreve_lcd ('U'); escreve_lcd ('R'); escreve_lcd ('A'); escreve_lcd (':'); comando_lcd(0xC0); escreve_lcd (centena); escreve_lcd (dezena); escreve_lcd (unidade); escreve_lcd (' '); escreve_lcd (0b11011111); escreve_lcd ('C'); Delay10KTCYx(100); limpa_lcd(); while(BusyUSART()); WriteUSART(valor_Analogico); vent(); } } // FIM DO PROGRAMA /* * * * * * * * * * * * * * * * * * * * * * * * * FUNÇÕES PARA ACIONAMENTO DE DISPOSITIVOS * * * * * * * * * * * * * * * * * * * * * * * * */ /************************************************************ * Conversor A/D * ************************************************************/ void config_ADC(void) { ADCON0 = 0b00000001; // Canal AN0 selecionado ADCON1 = 0b00001110; // Configura quais portas serão analógicas ou digital ADCON2 = 0b10101100; // Resultado justificado à direita // Tempo de aquisição 12 TAD } int conv_AD(void) { int Result_AD; ADCON0bits.GO = 1; while (ADCON0bits.GO); Result_AD = (((int)ADRESH)<<8) | (ADRESL); return Result_AD; 9 } /************************************************************ * Acionamento do ventilador * ************************************************************/ void vent(void) { char controle0; int controle1,controle2; c = 0x30; d = 0x30; u = 0x30; centena = 0x30; dezena = 0x30; unidade = 0x30; while(BusyUSART()); controle0=ReadUSART(); if (controle0=='o') { controle1=100; controle2=90; u = controle1%10; d = (controle1%100-u)/10; c = (controle1%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xC9); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); escreve_lcd (' '); u = controle2%10; d = (controle2%100-u)/10; c = (controle2%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xCD); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); } if (controle0 =='a') { 10 controle1=70; controle2=60; u = controle1%10; d = (controle1%100-u)/10; c = (controle1%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xC9); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); escreve_lcd (' '); u = controle2%10; d = (controle2%100-u)/10; c = (controle2%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xCD); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); } if (controle0=='m') { controle1=100; controle2=90; u = controle1%10; d = (controle1%100-u)/10; c = (controle1%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xC9); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); escreve_lcd (' '); u = controle2%10; d = (controle2%100-u)/10; c = (controle2%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; 11 comando_lcd(0xCD); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); } if (controle0=='t') { controle1=80; controle2=70; u = controle1%10; d = (controle1%100-u)/10; c = (controle1%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xC9); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); escreve_lcd (' '); u = controle2%10; d = (controle2%100-u)/10; c = (controle2%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xCD); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); } if (controle0=='s') { controle1=60; controle2=50; u = controle1%10; d = (controle1%100-u)/10; c = (controle1%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xC9); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); escreve_lcd (' '); 12 u = controle2%10; d = (controle2%100-u)/10; c = (controle2%1000-d-u)/100; centena = 0x30 + c; dezena = 0x30 + d; unidade = 0x30 + u; comando_lcd(0xCD); escreve_lcd(centena); escreve_lcd(dezena); escreve_lcd(unidade); } if(valor_Analogico>=controle1) { PORTCbits.RC1=1; } if(valor_Analogico<=controle2) { PORTCbits.RC1=0; } if (controle0=='e'){ PORTCbits.RC1=0; comando_lcd(0xC9); escreve_lcd ('E'); escreve_lcd ('R'); escreve_lcd ('R'); escreve_lcd ('O'); } escreve_lcd(ReadUSART()); } //FIM DAS FUNÇÕES //FINAL 13 LAYOUT PAINEL FRONTAL O painel frontal é a interface com o usuário. No painel encontramos os controles que são: botões de pressão, os dispositivos de entrada e os indicadores que são: gráficos, LEDs e outros displays. Os controles simulam dispositivos de entrada de instrumentos e fornecem dados para o diagrama de bloco do VI. Os indicadores simulam dispositivos de saída de instrumentos e exibem os dados que o diagrama de bloco adquire ou gera. O layout do painel frontal em estudo apresenta a seguinte configuração: Figura 3 Painel Frontal Os componentes utilizados para este painel frontal são: Sinal Luminoso (LED): Componente booleano ROUND LED. Sua finalidade é informar ao usuário que o sistema de refrigeração é ativado quando o LED é aceso. 14 Termômetro: Componente numérico THERMOMETER. Sua finalidade é informar ao usuário em forma ilustrativa o valor da temperatura atual presente no sistema. Botões Seletores de Grãos: Componentes booleanos OK BUTTON. Suas finalidades são permitir ao usuário qual tipo de sistema será implementado. Display numérico para temperatura atual: Componente numérico NUMERIC INDICATOR. Sua finalidade é informar ao usuário em forma numérica o valor da temperatura atual presente no sistema. Botão ligar: Componente booleano OK BUTTON. Sua finalidade é permitir ao usuário que ativa o sistema. Botão desligar: Componente booleano STOP BUTTON. Sua finalidade é permitir ao usuário que desativa o sistema. Gráfico: Componente gráfico WAVEFORM GRAPH. Sua finalidade é informar ao usuário em forma gráfica o valor da temperatura presente no sistema de acordo com a situação do dispositivo de refrigeração. 15 Display de Informação: Componente texto STRING INDICATOR. Sua finalidade é informar ao usuário o funcionamento do painel frontal. LAYOUT DIAGRAMA DE B LOCOS O diagrama de bloco contém o código dos dispositivos implementados no painel frontal. Sob certos aspectos, o diagrama de bloco assemelha-se a um fluxograma. Descreveremos os dispositivos utilizados e apresentaremos sua lógica. Figura 4 Diagrama de bloco VI O diagrama de bloco elaborado neste VI é apresenta na Figura 4. Os dispositivos referentes à interface LabVIEW e PIC são apresentados na Figura 5, e como citado anteriormente não será explicado neste trabalho. 16 Figura 5 Dispositivos de interface PIC - LabVIEW Bloco representativo do display numérico para temperatura atual: Componente numérico NUMERIC INDICATOR. Sua finalidade é informar ao usuário em forma numérica o valor da temperatura atual presente no sistema. Bloco representativo do termômetro: Componente numérico THERMOMETER. Sua finalidade é informar ao usuário em forma ilustrativa o valor da temperatura atual presente no sistema. Bloco referente ao display de informação: Componente de texto STRING INDICATOR. Sua finalidade é informar ao usuário o funcionamento do painel frontal. 17 Botões Seletores de Grãos: Componentes booleanos OK BUTTON. Suas finalidades são permitir ao usuário qual tipo de sistema será implementado. Função NOT: É uma função booleana que computa a lógica de negação à sua entrada, retornando em sua saída verdadeiro (1) ou falso (0), de acordo com a entrada. Se a entrada “x” é “falsa” (0), a função retorna “verdadeiro” (1), mas se a entrada for “verdadeiro” (1) a função retorna “falso” (0). Esquema de portas AND: a lógica de programação será explicada a seguir. Esta porta faz a lógica aritmética de uma ou mais entradas booleanas. Ela possui modos diferentes de operação, podendo operar como portas AND, OR e XOR, além de fazer operações de soma e multiplicação. 18 Esquema de portas AND: a lógica de programação será explicada a seguir. Esta porta faz a lógica AND em suas entradas. Ambas as entradas precisam ser valores booleanos, númericos ou agrupamento de erros. Se ambas as entradas forem verdadeiras, a função retorna a lógica “verdadeira” (1), caso contrário, ela retorna “falsa” (0) 19 Estrutura case: contém um ou mais subdiagramas, ou processos, sendo que apenas um deles será possível de ser executado de acordo com o terminal seletor, que neste caso foi a lógica verdadeiro ou falso. No caso deste trabalho, elas foram usadas de duas maneiras, a primeira para determinar qual botão foi apertado e enviar um caractér para a leitura no PIC e a outra para determinar as leituras de temperatura máxima e mínima para leitura no gráfico. LED: este bloco refere-se ao LED que será ligado em caso de erro no programa e estará desligado enquanto o programa estiver funcionando corretamente. Bloco de mescla de sinais: Mescla dois ou mais sinais em uma saída única. Gráfico: Componente gráfico WAVEFORM GRAPH. Sua finalidade é informar ao usuário em forma gráfica o valor da temperatura presente no sistema, variando no tempo. Além de mostrar as temperaturas máximas e mínimas dadas por cada tipo de grão a ser escolhido pelo usuário Função de concatenar Strings: este bloco concatena entradas em formato string e matriz de uma dimensão de strings em uma string única de saída. Para entradas do tipo matriz, essa função concatena cada um de seus elementos. 20 Função de espera (ms): esta função espera o número especificado ligado a ela para então realizar as operações do circuito em que ela está inserida. Neste caso foi 100 ms. Loop “While”: esta função repete o código do subdiagrama inserido nele até que uma condição específica ocorra. Esta função ocorre pelo menos uma vez. 1. Subdiagrama: contém o código que o loop executará uma vez por iteração; 2. Terminal de iteração: realiza a contagem de iterações feitas pelo loop; 3. Dá valor à uma entrada booleana para determinar se o While Loop continua sua execução. 21 LÓGICA IMPLEMENTADA A aquisição de dados é feita pelo LM35, a aquisição captada é tratadada e transferida através da porta serial RS232 para o ambiente virtual (Labiview), neste temos um painel no qual consta botões que setam os valores de temperatura de acordo com o grão. Para selecionar os valores de temparatura máxima e minima foi realizado um projeto de circuto lógico na forma de soma e produto obtitido pela tabela 1. A resposta do circuito lógico gera uma variavel que é transferida de volta para o microcontralador para que ele atue no controle de temperatura. Mapa de Karnaugh D' .E' D' .E D .E D'.E' A'.B'.C' 0 1 0 1 A'.B'.C 1 0 0 0 A'.B.C 0 0 0 0 A'.B.C' 1 0 0 0 A.B'.C' 1 0 0 0 A.B'.C 0 0 0 0 A.B.C 0 0 0 0 A.B.C' 0 0 0 0 y = A'.B'.C'.D'.E + A'.B'.C'.D.E' + A'.B'.C.D'.E' + A'.B.C'.D'.E' + A.B'.C'.D'.E' Tabela 1 Mapa de Karnaugh O gráfico da figura 6 foi obtido através da saída do circuito lógico, aqual passa por instruções de falso/verdadeiro, essas funções fazem plotar os limites inferior e superior da temperatura para o grão secelecionado, além de destes valores introtuzimos atemperatura em função do tempo oscilando entre esses limites. Este grafico mostra em tempo real o estado do sistem. Figura 6 Dispositivos de interface PIC – LabVIEW 22 MANUAL DO USUÁRIO 1. Manual de Funcionamento do VI implementado. Figura 7Painael Frontal - Manual de Funcionamento do VI implementado De acordo com a Figura 7, o modo de utilização é: Primeiro pressione o botão LIGAR (1), localizado no canto esquerdo superior do painel frontal, para esta informação o LED (3) ON/OFF é acionado. Pressionado o botão LIGAR (1) escolha um dos tipos de grãos a serem submetido a secagem. Para Soja pressione o botão SOJA (7), para Arroz pressione o botão ARROZ (8), para Milho pressione o botão MILHO (9), para Trigo pressione o botão TRIGO (10), para Sementes pressione o botão SEMENTES (11), os respectivos botões estão localizados de forma horizontal no painel frontal. Após a escolha do grão e pressionado o respectivo botão, o gráfico TEMPERATURA X TEMPO (6), localizado no canto superior direito, é acionado automaticamente apresentando a faixa de temperatura onde o grão selecionado deve estar submetido para que não sofra avarias e a atual temperatura que está submetido o gráfico. 23 A temperatura atual que está submetido o grão é apresentada de duas formas, primeiro de forma ilustrativa como um TERMÔMETRO DE BULBO (4) para fácil visualização do usuário, localizado ao lado esquerdo do gráfico TEMPERATURA X TEMPO (6), e de forma numérica no DISPLAY (5), localizado acima do botão SOJA (7), lado esquerdo do painel frontal. Para a regularização da faixa de temperatura o COOLER é acionado quando a temperatura atual é maior que a máxima permitida. O COOLER é desligado quando a temperatura atual estiver inferior a mínima temperatura permitida pelo tipo de grão selecionado. ATENÇÃO: O COOLER pode está desligado quando a temperatura for maior que a mínima e menor que a máxima, condição desejável. O botão DESLIGAR (2), localizado no canto superior esquerdo, abaixo do botão LIGAR (1), desativa a comunicação com o sistema de medição. Na parte inferior do campo encontramos um QUADRO DE INFORMAÇÃO (12) sobre o as temperaturas limites de máximas e mínimas permitidas a cada tipo de grão. O LED (13) ERRO é acionado quando mais de um tipo de grão ou nenhum é selecionado e também quando o botão LIGA (1) não é ativado. TRABALHOS FUTUROS A partir da elaboração deste instrumento virtual para o controle de variação de temperaturas visamos como trabalhos futuros: A implementação de novos sistemas de medições de outras variáveis, como controle de humidade, quantidade de grão em processo entre outros. REFERÊNCIAS NATINAL INSTRUMENTS CORPORATION. Manual de treinamento do LabVIEW Básico I. Austin, TEXAS. Novembro de 2001 QUEIROZ, Daniel Marçal de. SECAGEM DE GRÃOS EM ALTAS TEMPERATURAS Viçosa, MG. Agosto de 2002 de Sousa e Silva, J.; Divino Lima Afonso, A.; Maurício Lopes Donzelles, S. Secagem e Armazenagem de Produtos Agrícolas. Mata, M.; Dantas, L.; Braga, M. PROGRAMA COMPUTACIONAL PARA SIMULAÇÃO DE SECAGEM DE GRÃOS. RBPA, v. 1, n. 1, p. 33-50, 1999.
Compartilhar