Curso de Engenharia Mecânica Automação e Sistemas PROPOSTA DE AUTOMAÇÃO: ACIONAMENTO DO MAÇARICO PARA TÊMPERA SUPERFICIAL POR CHAMA. Paulo Fernando Madiuto Itatiba – São Paulo – Brasil Dezembro de 2005 II Curso de Engenharia Mecânica Automação e Sistemas PROPOSTA DE AUTOMAÇÃO: ACIONAMENTO DO MAÇARICO PARA TÊMPERA SUPERFICIAL POR CHAMA. Paulo Fernando Madiuto Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do Curso de Engenharia Mecânica – Automação e Sistemas da Universidade São Francisco, sob a orientação do Prof. André Renato Bakalereskis, como exigência parcial para conclusão do curso de graduação. Orientador: Prof. André Renato Bakalereskis Itatiba – São Paulo – Brasil Dezembro de 2005 III Proposta de automação: acionamento do maçarico para têmpera superficial por chama. Paulo Fernando Madiuto Monografia defendida e aprovada em 01 de dezembro de 2005 pela Banca Examinadora assim constituída: Prof Esp André Renato Bakalereskis - orientador USF – Universidade São Francisco – Itatiba – SP. Prof Ms Josemar dos Santos USF – Universidade São Francisco – Itatiba – SP. Eng. Jose Luiz Zanotto Magneti Marelli Escapamentos – Amparo – SP IV Faltou luz, mas era dia, o sol invadiu a sala e fez da TV um espelho... refletindo o que a gente esquecia... O Rappa V A meus pais Líbia e Laércio, sem os mesmos este sonho não se realizaria. A minha esposa Denise, por ter sido tão paciente e amável. Ao meu filho, Giuliano, que depois de esperar por tanto tempo, não vê à hora do pai ficar em casa para poder brincar e montar o seu carrinho que prometi. A todos o meu carinho. VI .Agradecimentos Agradeço, primeiramente, ao Professor Werner Mertzig que, com coragem, me disse sim, abrindo-me as fronteiras do conhecimento. Ao Professor André que, no início do projeto, concedeu-me a idéia e que depois de muito tempo, se tornou meu orientador, mostrando-me o caminho que deveria seguir. Aos amigos Celso, Luisinho, Alex, Marcos, Cleber e os demais companheiros da USF, que de alguma forma, seja física ou inconsciente, ajudaram-me, incentivaram-me, criticaram-me, ouviram-me por horas falar deste projeto e de todas as suas fases. Ficam aqui os meus sinceros agradecimentos. À Universidade São Francisco, representada pela Engenharia Mecânica, pelo aproveitamento nos laboratórios e por todos estes anos de ensinamento. Aos colegas de sala, que contribuíram com todos os meios para que este projeto tomasse forma, pelas idéias trocadas, pelos relatórios criticados, enfim, pelo companheirismo e os goles tomados no bar. E, é claro que não posso deixar de agradecer à minha família, que por longos dias e noites não tiveram-me no aconchego do nosso lar. Não me ouviram falar em outra coisa e, mesmo assim, tiveram a paciência e a dedicação de me esperar e estarem ao meu lado. Também agradeço a Helder Laudares e a Magneti Marelli, pelos dias que fiquei na minha casa para a conclusão da digitação destes parágrafos. VII Sumário Resumo II Abstract III 1. INTRODUÇÃO 1 2. OBJETIVO 1 3. JUSTIFICATIVA 2 4. REVISÃO BIBLIOGRÁFICA 2 4.1 Têmpera 2 4.2 Tratamento de endurecimento superficial 2 4.2.1 Têmpera superficial 3 4.2.2 Têmpera superficial por chama 4 4.3 O sistema proposto 6 4.4 Estudo da chama 8 4.4.1 Características dos gases 11 4.4.2 O gás liquefeito de petróleo (GLP) 11 4.4.3 Diferenças entre gás liquefeito de petróleo e gás natural 12 4.5 Microcontrolador 12 4.5.1 Arquitetura harvard e filosofia risc 13 4.5.2 O PIC 16F877 14 4.5.3 A linguagem Assembly 15 4.6 Elementos de automação 16 4.6.1 Motor de passo 16 4.6.1 Sensor de oxigênio 17 4.6.3 Válvula reguladora de fluxo 18 4.7 O sistema de controle 19 4.7.1 Modelo matemático 20 4.7.2 Sistema em malha aberta e fechada 20 4.7.3 As estratégias de controle 22 5. MATERIAIS E MÉTODOS 23 VIII 6. RESULTADOS 6.1 Os testes práticos 25 27 7. CONCLUSÃO E PROPOSATAS FUTURAS 30 8. REFERÊNCIA BIBLIOGRÁFICA 32 Apêndice 1 Fluxograma do programa do microcontrolador 33 Apêndice 2 Circuito elétrico 35 Apêndice 3 Circuito pneumático e do gás GLP 36 Apêndice 4 Código-fonte do microcontrolador em assembly 37 IX MADIUTO, Paulo Fernando. Proposta de Automação: Acionamento do Maçarico da Têmpera Superficial por Chama. 2005. 30f. Monografia (Engenharia Mecânica) – Curso de Engenharia Mecânica – Automação e Sistemas da Universidade São Francisco, Campus de Itatiba. Resumo Este projeto tem por objetivo descrever o desenvolvimento da automatização do acionamento do maçarico para o processo de têmpera superficial por chama, utilizando para esta tarefa um microcontrolador. A têmpera superficial consiste em aquecer superficialmente uma amostra de material metálico e, em seguida, resfriá-la com água. Desta forma, altera-se a microestrutura somente na superfície do material, conseqüentemente, aumentando a sua dureza superficial. Desenvolveu-se uma bancada didática, onde os componentes utilizados eram todos de nível industrial, simulando o processo de têmpera superficial. Foi utilizado para o aquecimento um maçarico a gás (Gás Liqüefeito de Petróleo e Ar Comprimido) e para fazer as movimentações necessárias, um circuito com elementos pneumáticos. O microcontrolador foi o dispositivo de controle para acionar e controlar o gás de entrada e acendê-lo, acionar o posicionamento da amostra, verificar através de um sensor de oxigênio a chama e automaticamente cessar o aquecimento e acionar o resfriamento da amostra. O microcontrolador é um dispositivo eletrônico, especifico para tarefas dedicadas de processos dos mais variados, desde equipamentos industriais a eletrodomésticos. Utilizou um programa especifico, o qual foi gravado no dispositivo e com ele podê-se comandar solenóides, sensores (mecânicos e elétricos), motores de passo, entre outros instrumentos. Pretendeu-se com este estudo propor um sistema automático para o processo de têmpera superficial, comprovando a vantagem do microcontrolador para tarefas dedicadas. Palavras-chave: têmpera superficial, microcontrolador, automação em têmpera. 1 1. INTRODUÇÃO Este trabalho realizou o estudo do processo de automação para a têmpera superficial focalizando no acionamento do maçarico e utilizou um microcontrolador da família PIC. O processo de têmpera superficial exige uma chama homogênea e com características próprias, dependendo do material empregado. A têmpera superficial, consiste em aquecer uma amostra de material metálico, de médio teor de carbono, acima da temperatura de recristalização. Este aquecimento tem de ser controlado, pois, o que se espera é que somente a superfície seja aquecida em tal temperatura, para que posteriormente e rapidamente se inicie o resfriamento. Desta forma, altera-se a microestrutura somente na superfície do material, conseqüentemente, aumentando a sua dureza superficial. O sistema que este projeto propõe, é que, com um microcontrolador PIC 16F877 se possa fazer o controle preciso e rápido que o sistema de têmpera superficial requer. O sistema proposto está apto a controlar os gases de entrada no maçarico, verificar através de um sensor sonda lambda a condição da chama produzida pelo maçarico, em função da quantidade de oxigênio queimada. O sistema mecânico foi montado com sucesso, e também uma placa protótipo, para o controle. O desenvolvimento da lógica de programação, bem como as adaptações dos elementos de automação foram necessárias para o sucesso deste trabalho, que consistiu em unir válvulas reguladoras de fluxo, motores de passo, e elemento sensor, como a sonda Lambda, na composição da proposta que foi desenvolvida nas páginas seguintes. 2. OBJETIVO O objetivo deste trabalho é propor um sistema utilizando um microcontrolador, que possa acionar o maçarico da têmpera superficial por chama. E, para isto, construir uma 2 bancada didática com o sistema de têmpera superficial por chama e uma placa eletrônica protótipo com os elementos de automação necessários. 3. JUSTIFICATIVA Os processos empregados atualmente na indústria para a têmpera superficial, utilizam máquinas que são de acionamento e controle através de relês, ou com CLP (Controlador Lógico Programável). O CLP é uma plataforma muito apropriada para este pequeno controle, porém de alto custo, e os acionamentos por relês são muito antigos para o emprego industrial atual. Estes dois fatores encarecem demasiadamente o projeto; assim, a alternativa de se trabalhar com um microcontrolador. Os microcontroladores são elementos para sistemas dedicados e de baixo custo. Devido ao seu alto desempenho e flexibilidade em se adaptar aos mais diversos sistemas, é uma ferramenta poderosa da automação dos dias atuais. 4. REVISÃO BIBLIOGRÁFICA 4.1. Têmpera Para a BRASIMET Comércio e Indústria S.A (2003), a têmpera é o tratamento térmico que consiste no aquecimento de uma peça numa temperatura superior à sua temperatura crítica e, em seguida, resfriamento rápido do material, em meio de resfriamento específico - obtendo uma estrutura martensítica. Sem o necessário complemento de um revenimento, as peças temperadas apresentar-se-ão, quase sempre frágeis. 3 4.2. Tratamento de endurecimento superficial Os aços, quando temperados, apresentam uma estrutura martensítica que se estende da superfície para o núcleo das peças, tanto mais profundamente quanto maior a sua temperabilidade. Segundo Chiaverini (1987), nem sempre é necessário que se obtenha uma elevada dureza à máxima profundidade possível, ou seja, para muitas aplicações, a prática tem demonstrado que uma dureza superficial adequada, abrangendo camadas superficiais relativamente finas, é mais do que suficiente. Alia-se a esse fator, a constatação que alguns dos tratamentos que endurecem o aço apenas superficialmente, como os métodos de têmpera superficial, são mais econômicos, sobretudo do ponto de vista energético. Além disso, o equipamento apresenta menor custo, porém com maior manutenção, principalmente nos queimadores, segundo Silva (1988). Por isso, os tratamentos de endurecimento superficial são largamente utilizados em aços, com resultados excelentes sob vários aspectos. Sob o aspecto metalúrgico, os tratamentos de endurecimento superficial podem ser divididos em dois grupos (CHIAVERINI, 1987): Têmpera superficial; Tratamentos termo-químicos, como cementação, nitretação, etc. Este projeto, apenas englobará o primeiro grupo. 4.2.1 Têmpera superficial Neste método, o procedimento consiste em aquecer a superfície do aço rapidamente, de modo que a sua temperatura atinja a zona austenítica, até uma certa profundidade, seguindo-se resfriamento rápido. Desse modo, somente uma camada superficial, de espessura que pode ser pré-determinada com alguma segurança, ficará temperada e adquirirá a estrutura martensítica. Abaixo dessa camada, o aço permanece na sua 4 condição original de estrutura recozida ou, eventualmente, normalizada, com uma zona de transição, segundo Chiaverini (1987). As vantagens decorrentes deste processo sobre a têmpera total são (CHIAVERINI, 1996): Endurecimento somente de determinadas seções das peças onde a dureza é propriedade crítica (dentes de engrenagens grandes, guias de máquina operatrizes etc.); Menores riscos de empenamento e fissuração durante o resfriamento; Utilização de aços de menor custo, como os aços-carbono; Menor investimento em equipamento do que a têmpera convencional. Para Chiaverini (1987), a têmpera superficial confere aos aços boa resistência à fadiga por dobramento e boa capacidade de resistir a cargas de contato. Para se ter uma maior segurança em relação aos riscos de empenamento ou fissuração, devem-se evitar camadas muito profundas; com essa preocupação, previne-se ainda o desenvolvimento de tensões levadas abaixo da camada endurecida (CHIAVERINI, 1987). A têmpera superficial pode ser executada por quatro processos principais, segundo Chiaverini (1996): Têmpera por chama; Têmpera por indução; Têmpera por laser; Têmpera por feixe eletrônico. Este projeto trata apenas do primeiro processo. 4.2.2 Têmpera superficial por chama Na têmpera por chama, a superfície a ser endurecida é rapidamente aquecida à temperatura de austenitização por intermédio de uma chama de oxiacetileno ou outros gases - propano, gás natural, GLP, etc - e é, logo a seguir, resfriada por meio de um jato de água 5 (SILVA, 1988). A Figura 4.1, mostra o esquema de têmpera superficial, pelo método rotativo e progressivo (CHIAVERINI, 1987). Figura 4.1: Esquema de tempera superficial, método rotativo e progressivo. (CHIAVERINI, 1987). Segundo Chiaverini (1987), o processo é indicado para peças grandes e delgadas ou planas com geometrias que não permitem têmpera convencional. A profundidade de endurecimento não ultrapassa 10 mm, sendo geralmente menor. A Figura 4.2 mostra a espessura da camada endurecida por têmpera superficial por chama (CHIAVERINI, 1987). Figura 4.2: Espessura da camada endurecida por têmpera superficial por chama. (CHIAVERINI, 1987) 6 A temperatura de aquecimento para atingir a zona austenítica depende principalmente do teor de carbono, segundo Chiaverini (1987): quanto mais baixo o teor de carbono maior a temperatura, a qual varia de 850ºC à 875ºC para aços com 0,60% C e de 900ºC à 975ºC para aços com 0,30%C. O meio de resfriamento é a água e, eventualmente, ar ou óleo. Três métodos usuais são empregados para se realizar a têmpera superficial, segundo Chiaverini (1996). A Figura 4.3 mostra os métodos de têmpera superficial, esquematicamente. São eles: Método “estacionário”: o método mais simples, em que se aquece apenas localmente as áreas selecionadas da peça, com subseqüente resfriamento por imersão ou borrifo. Método “progressivo”: empregado para endurecer secções grandes que não podem ser endurecidas pelo processo “estacionário”. As dimensões e a forma da peça a ser endurecida, assim como o volume de gás oxigênio e gás combustível necessário para aquecer a seção, são fatores a serem levados em consideração na escolha deste processo. O método progressivo consiste em um ou mais cabeçotes de chama e de resfriamento, montados sobre um carro para a movimentação, a uma velocidade regulável. Assim, com o movimento do cabeçote sobre a peça consegue-se, num limite prático, temperar a peça no seu comprimento. Método “giratório”: empregado em peças circulares ou semicirculares, tais como, rodas, cames, e pequenas engrenagens. Na sua forma mais simples, utiliza-se um mecanismo para girar a peça num plano horizontal ou na vertical, ficando sua superfície à ação da chama. Desde que se consiga um aquecimento uniforme, a velocidade de rotação é relativamente pouco importante. Depois que a superfície da peça estiver aquecida – por intermédio de um ou mais cabeçotes de chamas – a chama é extinta ou retirada e inicia-se o resfriamento, por borrifo ou imersão, ou ambos combinados. Finalmente, o método “combinado progressivo-giratório” alia os dois métodos descritos anteriormente, ou seja, a peça gira e a tocha se movimenta de uma extremidade à outra. Somente uma faixa estreita na circunferência é aquecida progressivamente pela chama e, logo atrás, vem o bocal de resfriamento. 7 Figura 4.3: Três métodos de aplicação do endurecimento superficial por chama. A figura superior corresponde ao método progressivo; a figura central corresponde ao método giratório; e finalmente, a figura inferior corresponde ao método combinado (CHIAVERINI, 1987). 4.3 O Sistema proposto O sistema que este trabalho propõe é baseado na construção de uma bancada didática de Têmpera Superficial por Chama, que foi montada no laboratório de Sistemas Térmicos da Universidade São Francisco. Esta bancada utilizou equipamentos encontrados na própria Universidade e, após a sua montagem, pôde-se estudar o controle de acionamento do maçarico. Praticamente todos os elementos de construção da bancada eram existentes, porém, não estavam unidos de forma a integrar este equipamento; isto se deu com a idealização do projeto em construir este protótipo. Montou-se uma estrutura em alumínio, o maçarico, a bomba d´água, o reservatório de água, as mangueiras para instalação das válvulas de controle da chama, uma coifa para a sonda lambda, tudo isto representando a parte mecânica. As válvulas de controle da chama 8 foram construídas a partir de uma válvula reguladora de fluxo e de um motor de passo e o acoplamento se deu com um sistema de engrenagem. A Figura 4.4 mostra um esquema para representar o sistema proposto. Figura 4.4: Esquema do sistema proposto para a automação. O sistema montado foi idealizado para o método estacionário, devido a não utilização de movimento da amostra ou do maçarico. Na parte eletrônica, foi necessária a montagem de uma placa protótipo para simular todo o sistema, antes desta funcionar na bancada construída. (Cabe mencionar que não foi possível realizar um teste prático na bancada, ficando aqui uma sugestão para a continuação deste trabalho). E é nesta placa protótipo que se encontra o microcontrolador, atuando nos elementos ao seu redor, seguindo a programação efetuada, para atender a necessidade da bancada que é de acionar o maçarico para a têmpera superficial automaticamente. Na placa, efetuou-se a montagem de vários circuitos que, independentes, tem efeito quase nulo sobre a bancada, mas integrados ao microcontrolador, são de fundamental importância para o perfeito funcionamento do mesmo. A bancada é própria para utilizar a têmpera superficial por chama com o aço ABNT 1045, aço de médio teor de carbono, excelente para esta aplicação e de fácil acesso no 9 mercado. Também possibilita uma boa estrutura, diferenciando a estrutura temperada da estrutura do centro da amostra (normalizada). A justificativa de se utilizar para esta aplicação o gás GLP (Gás Liquefeito de Petróleo), é que no Laboratório de Sistemas Térmicos há uma instalação deste gás e isto levou a fazer esta proposta de automação baseada neste gás. Apesar do seu poder de aquecimento ser menor que os demais gases largamente utilizados na indústria atual, os teste apontados verificaram uma eficiente ação para esta aplicação. Sobre o programa, pode-se verificar que, ao iniciar o processo, algumas perguntas são realizadas, solicitando ao operador da bancada, as informações para que o programa atue de forma correta. Estas informações estão dispostas no display LCD. Esta idéia surgiu para poder testar vários tempos de aquecimento e resfriamento, forçando variações no processo de têmpera e viabilizando uma futura aula sobre o assunto, visto que, este equipamento foi produzido para a disciplina de Materiais de Construção Mecânica da Universidade São Francisco. O programa contido no microcontrolador, está representado no Fluxograma 1 (Apêndice 1). Os sub-capítulos posteriores, vão demonstrar, de forma sintética, os estudos realizados para a conclusão deste projeto. 4.4 Estudo da chama Ao estudar a chama para o processo de têmpera superficial, deve-se ter em mente que tipo de chama é apropriada para o processo de aquecimento do material em questão. O aço, neste caso, é o aço 1045, que deve ser aquecido em torno de 900ºC. Para se atingir esta temperatura em poucos segundos, deve-se ter uma chama que ultrapasse este limite facilmente. Inicialmente, trata-se do comportamento da chama independente de seu combustível. A chama se baseia em uma combustão que ocorre em duas etapas: 1º- A combustão primária, a qual ocorre somente entre o combustível e o oxigênio da mistura de gases; 2º- A combustão secundária, a qual ocorre entre a mistura e o ar atmosférico. 10 A Figura 4.5 demonstra esquematicamente a formação da chama em um bico de maçarico. Figura 4.5: Localização das reações de combustão na chama de um maçarico.(WAINER, BRAND E MELLO 1995). No detalhe da Figura 4.5, está a formação da chama. O esquema de um bico de maçarico está na figura maior. As partes que a chama possui são: dardo e penacho, as quais são constituintes de qualquer tipo de chama. No dardo ocorre a combustão primária e no penacho, a combustão secundária. As características da chama dependem da relação entre o combustível (acetileno, hidrogênio, propano ou GLP) e o comburente (oxigênio). Define-se a regulagem da chama, ou relação de consumo, a razão entre os volumes do comburente e do combustível na zona de combustão primária: A = regulagem da chama = Volume do comburente (oxigênio) Volume do combustível (gás) (4.1) 11 Com o conceito de regulagem da chama podem-se definir 3 tipos de chama: neutra, redutora (ou carburante) e oxidante, cujas características são mostradas na Tabela 4.1. Tabela 4.1: Tipos e 1995). Regulagem da chama características das chamas.(WAINER, BRAND E MELLO Tipo da chama Formato da chama Característica Penacho longo. Aplicação Soldagem de aços (ou regulagem neutra 1,0 < A < 1,1 Neutro Fig. 4.6a Dardo branco, levemente redutora). brilhante e Cobre e suas ligas arredondado. (exceto latão). Níquel e suas ligas. Penacho esverdeado. Véu branco A < 1,0 Redutora Fig. 4.6b circundando o dardo. Revestimento duro, Dardo branco, ferro fundido, alumínio brilhante e e chumbo. arredondado. Chama menos quente. Penacho azulado ou A > 1,1 Oxidante Fig. 4.6c avermelhado, mais Aços em geral curto e turbulento. (regulagem neutra Dardo branco, levemente oxidante). brilhante, pequeno e Latão. pontiagudo. Bronze. Chama mais quente. Ruído característico. A Figura 4.6, especifica cada tipo de chama citada na Tabela 4.1. 12 Figura 4.6: (A) chama neutra; (B) chama redutora; (C) chama oxidante, segundo Wainer, Brand e Mello 1995. Necessariamente, neste projeto, precisa-se de uma chama oxidante devido a sua característica de alta temperatura, porém, trabalha-se para conseguir uma mistura levemente oxidante para não prejudicar o processo, não precipitando a oxidação do material e conseqüentemente, dificuldades no aquecimento da amostra. A temperatura da chama é uma função da distância, medida a partir da extremidade do dardo. Existe um ponto onde ela atinge o máximo e depois começa a decrescer. Da mesma maneira, a atmosfera do penacho muda sua composição química, tornando-se mais oxidante à medida que aumenta a distância a partir da extremidade do dardo. 4.4.1 Características dos gases Como a chama é gerada pela combustão de um gás, as propriedades químicas do gás determinam as características da chama. Esta deve possuir, do ponto de vista do aquecimento localizado, uma elevada temperatura máxima de chama, além de uma repartição térmica no volume da chama suficiente para suprir o calor de fusão. A temperatura máxima do combustível, ou temperatura teórica da chama, é uma propriedade física do combustível, obtida a partir do calor de reação. A repartição térmica é determinada pelos calores de reação da combustão primária e da secundária. Uma das maneiras de quantificar a repartição térmica da chama é dividir a 13 soma dos calores das reações de combustão secundária pelo calor de reação da combustão primária. Quanto maior o valor mais concentrada é a chama. Os cálculos deste sistema seriam inviáveis de se conseguir devido a dificuldade prática de se levantar este dados, pois a composição do GLP pode variar e a do ar comprimido tem todos os elementos encontrados na nossa atmosfera, em quantidades que somente um laboratório de análise de gases poderiam mensurar, ficando fora do escopo deste projeto. 4.4.2 O gás liquefeito de petróleo (GLP). O GLP - gás liquefeito de petróleo - pode ser separado das frações mais leves de petróleo ou das mais pesadas de gás natural. À pressão atmosférica e temperaturas normalmente encontradas no ambiente, é um produto gasoso, inflamável, inodoro e asfixiante, quando aspirado em altas concentrações. Para Ultragás S/A. o GLP é um derivado composto da mistura de hibrocarbonetos com 3 e 4 átomos de carbono com ligação simples, denominados de propano e butano. Na composição do GLP, a mistura ideal é de 50% de propano + 50% de butano, mas ocorrem variações nesta composição. Se tivermos uma proporção de propano maior do que a de butano, teremos um GLP rico, com mais pressão e menos peso. Se ocorrer o inverso, teremos um GLP pobre, com mais peso e menos pressão. Aplicações: Butano – Utilizado como propelente em aerossóis e isqueiros; Propano – Utilizado em vidreiras e indústrias metalúrgicas; GLP – Utilizado na avicultura, aquecimento de ambientes, chamuscadeira de tecidos, desidratação de alimentos, empilhadeiras, fabricação de massas alimentícias e biscoitos, preparação de gêneros alimentícios, solda (latão, prata), secagem de papel, iluminação, hospitais e laboratórios, vulcanização de borracha, aquecimento de aço em alguns processos industriais, etc. 14 Para que os vazamentos de gás sejam facilmente identificados, compostos à base de enxofre são adicionados, apenas para lhe dar um odor característico, sem lhe atribuir características corrosivas. Sua densidade, isto é, a relação entre massa e volume (conceito básico) é 2,10 kg/m³, ou seja, 1m³ de GLP pesa 2,10 kg (a 15 °C e à pressão atmosférica). 4.4.3 Diferenças entre gás liquefeito de petróleo e o gás natural. Gás liqüefeito de petróleo (GLP): Produto constituído de hidrocarbonetos com três ou quatro átomos de carbono (propano, butano), podendo apresentar-se misturados entre si. Sua produção está essencialmente ligada à de petróleo. Gás Natural (GN): Hidrocarbonetos combustíveis gasosos, essencialmente metano, cuja produção pode ser associada ou não à de petróleo. 4.5 Microcontrolador O microcontrolador é um dispositivo eletrônico, específico para tarefas dedicadas de processos dos mais variados, desde equipamentos industriais a eletrodomésticos. Utiliza um programa específico, o qual é gravado no dispositivo e com ele pode-se comandar diversos instrumentos e periféricos. O microcontrolador utilizado neste projeto é o PIC 16F877, da família PIC da Microchip. Para Souza (2003), uma definição rápida é que o microcontrolador é um “pequeno” componente eletrônico, dotado de uma inteligência programável, utilizado largamente no controle de processos lógicos. Para um melhor entendimento, este será exposto por partes: É composto por uma única pastilha de silício encapsulado, mais conhecido por CI (circuito integrado) ou CHIP. Possui internamente todos os meios necessários para automações, como: memória de programa, memória de dados, portas de entrada e/ou saída, timers, contadores, comparadores, PWM, comunicação serial, conversores analógicodigitais, etc. Este é o ponto principal de diferença entre um microprocessador e um microcontrolador: o primeiro não possui todos estes elementos em uma única pastilha. 15 O microcontrolador é programável, utilizando um software que compreende um compilador, como MPLab (Assembly) da Microchip, ou outros compiladores em C++, que permitem a criação do arquivo de programa, para posteriormente, o arquivo gerado ser gravado no PIC, possibilitando ao microcontrolador controlar as suas memórias, portas, timers, e outros mais. O microcontrolador utiliza a ULA – Unidade Lógica Aritmética, para processar todas as operações de matemática e lógica. Quanto mais poderosa a ULA do componente, maior a capacidade de processar informações. O controle de processos deve ser entendido como controle de periféricos, tais como: botões, leds, displays de sete segmentos, displays de cristal líquido (LCD), resistências, relês, sensores de diversos tipos (pressão, temperatura, vazão, etc.) e muitos outros analógicos ou digitais. Estes elementos fazem parte dos chamados controles lógicos, pois as operações de controle sobre os mesmos, dependem das ações lógicas executadas pelo microcontrolador em função do estados das entradas e saídas. 4.5.1 Arquitetura harvard e a filosofia risc Os microcontroladores da família PIC são dotados de uma arquitetura baseada em dois barramentos de comunicação, um para dados e outro para instruções. Isto facilita e agiliza a comunicação interna do microcontrolador, possibilitando que, enquanto uma instrução seja executada outra possa ser buscada da memória, tornando-o mais rápido. O barramento de dados é sempre de 8 bits e o de instrução pode chegar a 16 bits, dependendo do modelo de microcontrolador. Segundo Souza (2003), a filosofia RISC (Reduced Instruction Set Computer) nada mais é que um set de instruções reduzido, com cerca de 35 instruções (número pode variar de acordo com o modelo do PIC) que facilitam a programação e o aprendizado. Por outro lado, pode haver uma solicitação de maior habilidade por parte do usuário, pois, muitas operações têm de ser construídas pelo simples fato de não existirem como instrução pronta; é o caso da divisão ser complexa dentro do PIC. 4.5.2 O PIC 16F877 16 As características do microcontrolador PIC 16F877, segundo o Data Sheet Microchip PIC16F87XA (2003), são: - Microcontrolador de 40 pinos; - Possui 14,3K de 14 palavras de Flash, 368K de RAM, 256K de EEPROM; - 33 Entradas e Saídas (I/O) configuráveis; - 8 canais A/D de 10-bit; - 2 módulos CCP e PWM; - Comunicação serial USART; - 3 Timers de 8/16-bits, para interrupções; - 2 Comparadores; - Porta paralela (PSP). - Baixo-consumo, baixo custo, alta velocidade de comunicação; - Range de operação de 2,0v a 5,5v Em cada pino das PORT, podem existir particularidades, como o pino RC2/CCP1. Este pino pode ser configurado como entrada ou saída simplesmente, ou ser um pino para o Capture 1 input / Compare 1 output / PWM 1 output. Esta característica demonstra que os pinos podem ter várias funcionalidades, desde que configurados previamente para cada função. As propriedades de cada pino podem ser visualizadas na Figura 4.7. 17 Figura 4.7: Pinagem do PIC 16F877 (DATA SHEET, PIC16F87XA, 2003). 4.5.3 A linguagem Assembly Esta linguagem de programação foi estudada para programar o PIC 16F877. Mas antes de expor a programação, apresentar a ferramenta de trabalho é muito importante esta ferramenta é o MPLab. O MPLab é um programa para PC, que roda em plataforma Windows, e serve como ambiente de desenvolvimento de programas PIC. È uma ferramenta muito poderosa, pois junta, no mesmo ambiente, o gerenciamento de projetos, compilação, simulação e até a gravação do PIC (SOUZA, 2003). O ambiente de programação se assemelha a uma página de documento de texto, aonde as colunas com os comandos vão preenchendo o vazio e tomando forma a programação. Este programa também é chamado de código-fonte. É neste ambiente que se forma a linguagem assembly, uma linguagem de baixo nível, de entendimento fácil para os microcontroladores. Um exemplo desta programação é feito na Figura 4.8, demonstrando uma rotina para o LCD. 18 ;***************************************************** ********* ; INICIALIZA O DISPLAY ;***************************************************** ********* ; DISPLAY_INIT: MOVLW 0x038 ; Comando para interface 8-bits call SEND_CMD MOVLW 0x00E CALL SEND_CMD ; liga display ; MOVLW 0x006 ; incrementa display CALL SEND_CMD ; Figura 4.8: Rotina para iniciar o display LCD. As rotinas são freqüentemente utilizadas na programação. Elas são pequenos programas e são chamadas através da instrução CALL, a qual indica onde se localiza o programa chamado, para poder executá-lo. Em resumo, com este conhecimento adquirido, pode-se construir o código-fonte, compilar e gravar no microcontrolador como realizado neste projeto, ou outro controle de um sistema qualquer. 4.6 Elementos de atuação 4.6.1 Motor de passo O motor de passo é um transdutor que converte energia elétrica em movimento controlado através de pulsos, o que possibilita o deslocamento por passo, onde passo é o menor deslocamento angular (Braga, 1999). 19 Uma vantagem do motor de passos em relação aos outros motores é a estabilidade. Quando se obtêm uma rotação específica de um certo grau, calcula-se o número de rotação por pulsos o que nos possibilita uma boa precisão no movimento. Tipos de Motores de Passo Relutância Variável: Apresenta um rotor com muitas polaridades construídas a partir de ferro doce, apresentado também em estator laminado. Imã Permanente: Apresenta um rotor de material alnico ou ferrite e é magnetizado radialmente; devido a isto, o torque estático não é nulo. Híbridos: É uma mistura dos dois anteriores e apresenta rotor e estator multidentados . O rotor é de imã permanente e magnetizado axialmente. Apresenta grande precisão (3%), boa relação torque/tamanho e ângulos pequenos (0,9 e 1,8 graus). Dentro dos três tipos, encontra-se, o unipolar e o bipolar. São diferenciados na sua construção. Os unipolares possuem dois enrolamentos com uma derivação central. Os bipolares possuem mais enrolamentos e não são energizados num terminal central. Funcionamento básico do motor de passo Motores de passo unipolares são caracterizados por possuírem um center-tape entre o enrolamento de suas bobinas. Normalmente utiliza-se este center-tape para alimentar o motor, que é controlado aterrando-se as extremidades dos enrolamentos. Para que um motor de passo funcione, é necessário que sua alimentação seja feita de forma seqüencial e repetida. Ligam-se os fios do motor de passo a um circuito que execute a seqüência requerida pelo motor. Para que se obtenha uma rotação constante é necessário que a energização das bobinas seja periódica. Esta periodicidade é proporcionada por circuitos eletrônicos que controlam a velocidade e o sentido de rotação do motor. Este trabalho utilizou o SAA 1027, um drive especifico para esta aplicação. 20 O torque do motor de passo depende da freqüência aplicada ao clock. Quanto maior a freqüência, menor o torque, porque o rotor tem menos tempo para mover-se de um ângulo para outro. 4.6.2 Sensor de oxigênio Muito conhecido como sonda lambda, estes sensores têm uma aplicação vasta na indústria automotiva e em indústrias em geral. Como nenhuma combustão pode se realizar sem a presença de oxigênio este sensor é vital quando se quer verificar o elemento oxigênio numa combustão. Os sensores de oxigênio são baseados em elementos de zircônio. Sensores de Zircônio A superfície externa do elemento zircônio está em contato com o gás do escape; a interna está em contato com o ar. Ambas estão revestidas por uma fina camada de platina. O elemento de zircônio, a uma temperatura acima de 300ºC, conduz os íons de oxigênio, gerando uma tensão elétrica. Esta tensão elétrica é gerada se a concentração de oxigênio na parte interna e externa do elemento for diferente, e uma baixa voltagem (próxima a zero) é gerada se a mistura ar/combustível for pobre e uma voltagem próxima de 1000mV é gerada se ela for rica. Quando a mistura ar/combustível se aproxima da relação ideal (estequiométrica; λ =1) existe uma variação brusca na tensão gerada, entre 0 e 1000mV. Um controle usa a voltagem produzida pela sonda lambda para instruir o sistema de mistura de combustível para enriquecer ou empobrecer a mistura. Por um exemplo, como em um automóvel, visto que o sensor apenas produz a voltagem quando o elemento está acima de 300ºC, o gás de escape leva algum tempo para aquecer o elemento a esta temperatura, após o motor ter sido acionado. Para reduzir o tempo que leva para o sensor começar a funcionar, muitos sensores hoje em dia possuem um aquecedor interno de cerâmica. Estes sensores têm 3 multicamadas, assegurando alta performance e confiabilidade 21 Um sensor de Zircônio utilizado neste trabalho é a Sonda lambda, que é altamente confiável, mesmo em condições de utilização severas, tem rápida resposta e é de tipo compacto. Características: - alta precisão e alta repetibilidade; - resposta rápida; - sinal de saída proporcional à concentração de oxigênio. 4.6.3 Válvula reguladora de fluxo À válvula reguladora de fluxo é muito utilizada para controlar a vazão em um sistema. É composta de uma agulha, um manípulo, válvula de retenção. Neste projeto, a válvula foi acoplada a um motor, para o controle automático da vazão dos gases de entrada no maçarico. A Figura 4.9, mostra uma válvula reguladora de fluxo em corte. Figura 4.9: Válvula reguladora de fluxo em corte e a sua simbologia. 4.7 O sistema de controle O termo sistema é usado para descrever uma série de componentes que interagem em torno de uma condição limite imaginária, e somente a entrada e a saída são de interesse, ou 22 seja, não há a necessidade de explorar as interações detalhadas entre os componentes, segundo Bolton (1995). Em resumo, o aspecto importante é a relação entre entrada e saída no sistema envolvido. Estes sistemas podem tomar a forma de diversos mecanismos, como por exemplo, o controle de temperatura de um ar condicionado em uma sala, um motor elétrico, o nível em um reservatório. Uma representação viável para os sistemas é utilizar blocos demonstrando o sistema e suas respectivas entradas e saídas. A Figura 4.10 exemplifica um sistema por blocos. Entrada Combustível Saída Maçarico Calor Figura 4.10: Sistema: um maçarico. Para um sistema de controle, a saída é controlada para se ter um valor específico ou variar de forma determinada pela entrada do sistema. (BOLTON, 1995). 4.7.1 Modelo matemático Modelo pode ser um meio de transferir alguma relação de sua forma real para outra forma. Muito utilizado, para simplificar e facilitar a análise de sistemas complexos. A Figura 4.10, é um exemplo de modelo para um maçarico. Outros exemplos podem surgir como um modelo de um navio, o qual está representado em sua forma reduzida, mas deve conter todos as relações de entrada e saída, da forma real. Outras relações podem ser transferidas para o modelo, são as relações de interesse, não apenas as relações de entrada e saída. O que não pode ser confundido é que o modelo seja realmente o sistema real. Modelar matematicamente um sistema é torná-lo representativo em números. Esta apresentação pode variar de um mesmo modelo e, para cada tipo de análise, exigir um modelo matemático diferente, mas com a mesma representação para, posteriormente, ser 23 utilizado com várias ferramentas analíticas ou computacionais para efeito de análise e síntese. 4.7.2 Sistema em malha aberta e fechada Existem duas formas básicas de sistemas de controle; sistemas em malha aberta e sistemas em malha fechada. Para um sistema de malha aberta, a entrada é escolhida com bases na experiência, de tal forma que o sistema dê o valor desejado. A saída, entretanto, não é modificada de forma a seguir as alterações nas condições de operação. Em um sistema em malha fechada, um sinal é realimentado da saída para a entrada e usado para modificar a entrada, em função de uma saída constante, mesmo em condições de operação. Este tipo de sistema, é o utilizado neste trabalho, onde o controlador atua sobre os motores das válvulas e a sonda lambda realimenta o sinal de entrada em função da queima dos gases no maçarico. A Figura 4.11, mostra um diagrama de blocos de um sistema de controle em malha fechada. Entrada Aquecedor Temperatura desejada Saída Temperatura Medição de Temperatura Figura 4.11: Exemplo de um sistema de controle em malha fechada. Os elementos básicos para o sistema de malha fechada, segundo Bolton (1995), são: 24 → Elemento de comparação: Compara o valor desejado, ou de referência, da variável controlada com o valor medido e determina o sinal de erro que indica quanto o valor da saída está desviado do valor desejado. → Elemento de controle: Decide qual ação tomar quando recebe um sinal de erro. → Elemento de correção: é utilizado para provocar uma mudança no processo de forma a corrigir o erro e é freqüentemente chamado de atuador. → Processo: o processo ou planta é o sistema no qual uma variável está sendo controlada. → Elemento de medida: Gera um sinal relacionado com a condição da variável que está sendo controlada e fornece o sinal realimentado para o elemento de comparação, para que ele determine o erro que existe. Uma característica necessária de um sistema de malha fechada é a realimentação. Existem dois modos de realimentação, uma positiva e a outra negativa. Chamada de negativa, quando o sinal realimentado é subtraído do valor de referência, isto é: Sinal de erro = Valor de referência – sinal realimentado (4.2) A realimentação positiva, é quando o sinal realimentado é somado do valor de referência, isto é: Sinal de erro = Valor de referência + sinal realimentado (4.3) 4.7.3 As estratégias de controle Segundo Bolton (1995), o elemento de controle tem como entrada um sinal de erro e como saída um sinal que se torna a entrada da unidade de correção, tal que uma ação possa ser iniciada para eliminar o erro. Para um sistema em malha fechada os controles são do tipo on-off (duas posições), controle proporcional, ou controle proporcional combinado com integrativo ou derivativo. 25 O controle PID é o tipo de controle mais completo, A combinação das ações proporcionais, integrais e derivativas com a finalidade de gerar um só sinal de controle, dá origem ao que chamamos de controlador proporcional-integral-derivativo ou simplesmente PID. O objetivo é aproveitar as características particulares de cada uma destas ações a fim de se obter uma melhora significativa do comportamento transitório e em regime permanente do sistema controlado. O sinal de controle gerado pelo controlador PID é assim genericamente dado como: (4.4) Desta forma tem-se três parâmetros de sintonia no controlador: o ganho proporcional K(ação proporcional), o tempo integral Ti (ação integral) e o tempo derivativo Td (ação derivativa). Apesar de termos a disponibilidade das três ações básicas, dependendo da aplicação, não é necessária a utilização de uma ou mais destas ações. Basicamente temos 4 configurações possíveis de controladores a partir de uma estrutura PID: 1. proporcional (P) 2. proporcional-integral (PI) 3. proporcional-derivativo (PD) 4. proporcional-integral-derivativo (PID) Para este trabalho, estudou-se o controle, para após a aplicação na bancada, ser aplicado a sintonia, esta por sua vez não aconteceu devido ao teste final na bancada não se realizar. 5. MATERIAIS E MÉTODOS Para o desenvolvimento deste trabalho, uma bancada didática para o ensaio de tratamento térmico de têmpera superficial por chama, foi construída. 26 Ao idealizar os componentes necessários para a montagem da bancada de têmpera superficial, pode-se perceber a necessidade de automação da mesma. A bancada é composta por: - uma estrutura em alumínio; - maçarico circular com misturador para dois gases; - coifa para coleta dos gases provenientes da queima no maçarico e suporte para sonda Lambda, com ajuste de altura; - Duas válvulas reguladoras de fluxo com motores acoplados para possibilitar a abertura e fechamento das válvulas; - Solenóides, para os gases – Ar comprimido e GLP – também para o acionamento da água de resfriamento; - Sistema hidráulico com tubulação, bomba e reservatório para bombeamento da água do resfriamento; - Sistema pneumático para movimentação da amostra; - Sistema elétrico-eletrônico, para o controle da bancada (placa protótipo). A bancada foi construída com materiais existentes nos laboratórios da Engenharia Mecânica da Universidade São Francisco, com a estrutura; dimensionado a partir do estudo de espaço do laboratório de Sistemas Térmicos e do tamanho real do maçarico, reservatório de água, bomba d´água, entre outros. O maçarico utilizado é do tipo circular, contém 8 bicos ajustáveis em posição e vazão, e pode operar com pressões de até 10 bar. É construído em aço inox, e nele se encontra o misturador de gás (combustível e oxigênio). As válvulas simples solenóide, são as mesmas utilizadas nas aulas de Circuitos Hidráulicos e Pneumáticos da graduação em engenharia Mecânica, marca Festo. Estas foram utilizadas na segurança para os gases, e uma outra, do tipo controladora para o posicionamento do cilindro pneumático. Outro sistema adaptado com meios existentes, foi o sistema hidráulico para o resfriamento. Posicionou-se o reservatório com volume de 50L (disponível), alojou-se a bomba d´água para ser ativada afogada, na elevação da bomba a tubulação ganhou um solenóide do tipo diafragma, que controla a saída da água para o esguicho do resfriamento. 27 Uma construção de destaque, foi a de uma válvula proporcional, que é utilizada para a liberação dos gases GLP e Ar comprimido. Utilizou-se uma válvula reguladora de fluxo, um motor de passo e um conjunto de engrenagens. O acoplamento se deu devido a uma junta metálica, entre as peças já mencionadas. Com estes sistemas montados sobre a bancada de têmpera superficial, iniciou-se testes que demonstraram o funcionamento individual de cada elemento aqui comentado. Testes realizados: • Acionamento do maçarico: Consistiu em conectar os gases GLP e Ar comprimido nas entradas do maçarico, centelhar para que o mesmo iniciasse a combustão. Neste ensaio, definiram-se alguns parâmetros, como vazão dos gases, temperatura da chama, tipo de chama para se trabalhar com o aço ABNT 1045. Observação importante quanto à segurança: O acionamento do maçarico exige que alguns cuidados sejam tomados, sendo de ordem técnica, para se trabalhar com segurança. Antes de acender o maçarico devese: - Observar a NÃO obstrução de não nenhum queimador; - Verificar se há vazamentos na linha; - Se as pressões dos gases estão em níveis adequados ao trabalho; - Trabalhar com o local ventilado, porém sem correntes de ar na direção do maçarico; - Manter distância segura do local no momento de acender o maçarico; - Usar EPI’s necessários à atividade, luvas e óculos de proteção. • Acionamento do sistema de resfriamento. Teste da tubulação, bomba d´água, altura do reservatório (volume de água), solenóide com diafragma e esguicho de resfriamento. • Acionamento do sistema pneumático. 28 Testou-se atuação da válvula de controle sobre o cilindro pneumático, e as válvulas simples solenóides, verificando o sistema construído. Com a parte mecânica concluída parcialmente, pois faltavam as interações dos sistemas e os devidos ajustes, a parte eletroeletrônica teve a sua construção iniciada. Uma medida tomada quanto à execução dos trabalhos em função dos circuitos eletrônicos foi, de testar o circuito fora do ambiente do microcontrolador e se certificar dos sinais e valores encontrados, antes de incorporar este circuito ao circuito principal. Pesquisa sobre circuitos e lógicas foram muito utilizadas, neste período. Em paralelo a este acontecimento, o microcontrolador era preparado na placa protótipo e recebia os circuitos à medida que os mesmos eram estudados e aprovados. Um drive de grande importância, foi o gravador para o microcontrolador, via in-circuit, é um sistema de gravação do PIC que não é necessário a retirada do microcontrolador do circuito do qual está montado para receber o arquivo de programa, ele é gravado no próprio circuito, se o mesmo tiver alguns pinos ligados de maneira a permitir esta ação. O drive e o circuito foram montados para agilizar o processo de teste de programa, durante o desenvolvimento do código-fonte. A programação do PIC foi muito trabalhosa, devido estar aprendendo a utilizar o software e a linguagem Assembly. Montavam-se as rotinas necessárias para o funcionamento de uma função, realizava a compilação e, posteriormente, gravava-se no PIC, por meio do gravador in-circuit. Após este procedimento, o programa estava rodando dentro do microcontrolador e poderia ser testado na placa protótipo. Estes passos foram executados até a conclusão final do circuito e do arquivo-fonte. Um meio eficaz de visualizar o que estava acontecendo com o programa dentro do PIC nas simulações, foi a colocação de leds em algumas saídas, simbolizando o acionamento correto do pino pelo PIC, também a estruturação de algumas frases no display. 6. RESULTADOS 29 A montagem da bancada fez parte deste projeto, pois foi a partir desta montagem que surgiu a idéia de se controlar a chama e todos os elementos da bancada utilizando um microcontrolador. Os resultados obtidos são divididos em algumas etapas, conforme descrito no item 5 deste trabalho. Os resultados aqui apresentados, são os considerados os mais relevantes, visto que, poderiam ser detalhados em vários pontos do projeto, e estes poderiam ser constituídos outros trabalhos, dada a amplitude deste trabalho. Visando abordagem à automação com um microcontrolador, este trabalho é um apanhado de informações básicas para o seu desenvolvimento. A bancada montada conforme a última atualização, com as válvulas de controle, com o sistema de resfriamento, sonda lambda, mas sem funcionar integralmente, devido à não implementação nesta bancada do programa, pode ser visualizada na Figura 6.1, a qual demonstra a bancada e seus elementos de automação. Válvulas simples solenóide, para os gases. Tubulação para o resfriamen Válvula direcional para controlar o cilindro Válvula solenóide tipo diafragma Válvulas regulador as de fluxo e os Maçarico e a coifa com a sonda Porta amostr Bomba centrifuga e 30 Figura 6.1: Construção final da Bancada Didática de Têmpera Superficial por Chama. 6.1 Os testes práticos O maçarico e os gases Um teste prático realizado com o maçarico no laboratório de Sistemas Térmicos da Universidade São Francisco, onde a bancada foi implantada revelou que a mistura de oxigênio e GLP, se mostrou ideal para aplicação na bancada de têmpera superficial. A Tabela 6.1, demonstra os resultados obtidos no ensaio: Tabela 6.1: resultado do ensaio com os gases Oxigênio e GLP. 31 Gases Pressão em Vazão Temperatura a 200 mm da KPa (l/min) chama. 9800 0,015 2,7 0,02 Oxigênio GLP ≈1400ºC Um segundo teste foi realizado com a troca do gás oxigênio pelo ar comprimido, e este foi satisfatório, demonstrando a viabilidade de não se utilizar o gás oxigênio neste aquecimento. O principal motivo de trocar os gases, foi a disponibilidade dos gases GLP e Ar comprimido no laboratório de Sistemas Térmicos, como o oxigênio não há esta disponibilidade, pois o mesmo é envazado em garrafa e disponibilizado em outro laboratório, visto que isto resultaria em uma troca freqüente deste gás. A Tabela 6.2, demonstra os resultados obtidos no ensaio: Tabela 6.2: resultado do ensaio com os gases Ar comprimido e GLP. Gases Ar comprimido GLP Pressão em Vazão Temperatura a 200 mm KPa (l/min) da chama. 500 0,035 2,7 0,02 ≈1250ºC Neste ensaio, comprovou-se o deslocamento necessário, do manípulo da válvula reguladora de fluxo, para a automação. O circuito pneumático e do gás GLP, para esta aplicação está no Apêndice 3. Válvula de controle de vazão. Com a montagem da válvula, pode-se colocar em prática os conhecimentos adquiridos com o acionamento de motor de passo. Testou-se a operação e obteve-se 32 resultados satisfatórios. A montagem e os testes foram realizados respectivamente na Oficina Mecânica e no Laboratório de Elétrica da Universidade São Francisco. O acoplamento se deu com o ajuste de um conjunto de engrenagens de nylon, sendo, uma coroa e um pinhão. A coroa tem 67 dentes e o pinhão tem 14 dentes. Sendo Z2 e Z1 os números de dentes das engrenagens e se considerarmos Z2= 67 dentes e Z1= 14 dentes, pode-se aplicar a relação de transmissão de engrenagens, onde: t= Z Z 2 Onde : 1 (6.1) t = relação de transmissão entre engrenagens. A relação de transmissão entre engrenagens obtida é de 4,78, representa que praticamente todos os esforços, força, velocidade e torque serão multiplicados por esta relação na saída do motor, ou seja o motor com este acoplamento de engrenagens vai fornecer 4,78 vezes o torque que produz. Esta válvula foi desenvolvida para o controle de ar comprimido na chama do maçarico. A Figura 6.2 mostra a montagem da válvula de controle de vazão e seu teste de funcionamento. A válvula do gás GLP mantém a mesma característica construtiva. Um drive de importância, é o SAA 1027, que controla motores de passo e facilita a programação. Este circuito integrado, possui todos os componentes internamente para se controlar os motores de passo. Apenas é necessário: alimentação, um clock, e os sinais de parar, sentido de giro. E a saída para o motor é chaveada por ele. 33 Motor de passo Circuito com o SAA 1027 Conjunto de engrenagens Válvula reguladora de vazão. Figura 6.2: Válvula de controle de vazão, e teste de movimento e torque. Em seqüência à montagem da bancada, foi desenvolvido o código-fonte, que é a base de controle, juntamente à placa protótipo. A Figura do Apêndice 2 mostra o esquema elétrico da bancada de Têmpera Superficial por Chama. Este circuito foi desenvolvido por um longo período, onde todos os testes de montagem, foram realizados em separado. E também é um circuito adaptado para receber a programação in-circuit, que facilitou muito o trabalho de programação. A placa propriamente, é mostrada na Figura 6.3, que traz uma foto da placa sobre uma bancada e pode-se visualizar, o display LCD, botões, leds, o sistema de gravação incircuit e todos os componentes do circuito elétrico e ao centro, o microcontrolador. Nesta placa foi possível simular o programa da bancada, sem estar conectado a ela, os leds colocados são as representações dos relês e válvulas, o potenciômetro representa a sonda lambda, que simula um sinal de 0 à 1,0v e está conectado ao pino RA0, que foi configurado como analógico. 34 Display LCD Drive SAA1027 para motor de passo. Botões Microcontrolador PIC 16F877 Drive gravador in-circuit Led simbolizando as saídas. Potenciômetro e o CI amplificador operacional Figura 6.3: Placa protótipo e o gravador de PIC. Conforme a simulação ocorria, verificava-se o fluxograma. Este serviu de base para que o programa tomasse a forma atual. O programa ou código-fonte pode ser visto no Apêndice 4. O controle da bancada não pôde ser implantado, visto deveria ser realizado um teste prático e assim realizaria também a sintonia. A implementação de um algoritmo capaz de realizar o controle PID no PIC foi estudado, mas sem implementação. 7. CONCLUSÃO E PROPOSTAS FUTURAS Na conclusão deste trabalho, pode-se dizer que se atingiu o objetivo, apesar de não utilizar o controle proposto na bancada. 35 Como resultado concreto obteve-se a bancada didática construída e devidamente testada. Chegou-se a uma placa protótipo com os elementos necessários para adaptação na bancada, com a simulação funcionando e, apenas faltando o teste final, ou seja um teste prático do sistema utilizando a placa protótipo junto a bancada. Fica aqui, a sugestão para a continuidade deste trabalho. E outras idéias surgirão, como implementar um termopar para leitura da temperatura da amostra, utilizar o canal serial para comunicação com um PC, re-programar para uma gama de materiais, aumentando o range de utilização do equipamento. Um problema encontrado foi a estratégia adotada, poderia ter começado a programar o microcontrolador antes do sistema montado, e após montar o sistema. Isto talvez tenha prejudicado o andamento do projeto. Porém pensou-se em obter o sistema para depois controlá-lo. O trabalho demonstrou que há viabilidade de se utilizar microcontroladores para pequenas automações e é uma implementação que exige habilidades como de eletrônica, mecânica e de programação. O projeto deixou uma peculiaridade importante, de ser amplo o suficiente para resgatar várias disciplinas do curso, portanto podê-se colocar em prática um leque ampliado de conhecimentos. E apresentar algo concreto de utilidade para os alunos que poderão vir 36 8. REFERÊNCIA BIBLIOGRÁFICA BRAGA, Newton C. Controlando Motores de passo. Revista Saber Eletrônica nº 314 Fevereiro de 1999. pág. 49-57. BRASIMET Comércio e Indústria S.A. , Terminologia Utilizada Nos Tratamentos Térmicos. Disponível em : http://www.brasimet.com.br/ttermico/termin.shtml Acessado em: 15 de setembro 2003 BOLTON,W., Engenharia de Controle, tradução Valcere Vieira Rocha e Silva; revisão técnica Antonio Pertence Júnior – São Paulo: Makron Books, 1995. CHIAVERINI, Vicente. Aços e ferros fundidos. 7. ed. São Paulo: Associação Brasileira de Metais, 1996. 599 p. CHIAVERINI, Vicente. Tratamentos térmicos das ligas ferrosas. 2. ed. São Paulo: Associação Brasileira de Metais, 1987. 232 p. CHIAVERINI, Vicente. Tecnologia mecânica: processos de fabricação e tratamento. 2. ed. São Paulo : McGraw-Hill, 1986. 3 v. DATA SHEET, PIC16F87XA, 28/40/44-Pin Enhanced Flash Microcontrollers, Microchip 2003. Ultragas SA. Disponível em: www.ultragas.com.br, acessado em: 08/08/2004. 37 SILVA, André Luiz da Costa e; MEI, Paulo Roberto. Aços e ligas especiais. 2. ed. Sumaré: Eletrometal, 1988. 528 p. SOUZA, Davi José de, Desbravando o PIC: ampliado e atualizado para o 16F628A. 6 ed. São Paulo: Érica, 2003. WAINER, Emilio; BRANDI, Sergio Duarte; MELLO, Fabio Decourt Homem de. Soldagem: processos e metalurgia. São Paulo: Edgard Blucher, 1995-2004. 494 p. ISBN 85-212-0238-5. Apêndice 1: Fluxograma do programa do microcontrolador. INICIAR MICROCONTROLADOR MENSAGEM “PROCESSO” NÃO B_ENTER PRESSIONADO INCREMEN DECREMEN SIM B_INC PRESSIONADO MENSAGEM “TEMPO CHAMA” B_DEC PRESSIONADO SIM Incrementa valor de memória, solicitado. B_ENTER PRESSIONADO SIM INCREMEN DECREMEN B_ENTER PRESSIONADO Decrementa valor de memória, NÃO B_ENTER PRESSIONADO SIM SIM RETORNA SIM MENSAGEM “TEMPO RESFRIAMENTO” RETORNA 38 INCREMEN DECREMEN B_ENTER PRESSIONADO NÃO SIM MENSAGEM “EXECUTA” NÃO NÃO B_ENTER PRESSIONADO SIM Continua na próxima página B_DESL PRESSIONADO SIM 39 Lê sonda Frase CENTELHA / Libera relê Centelha. Compara o valor da sonda com Frase GASES / Libera relê Gases. SE valor Gira motor GLP (1 SE valor Atualiza o valor para comparação RETORNA SE valor Lê sonda Gira motor AR (1 Lê sonda NÃO Valor sonda OK? SIM Gira motor GLP para fechar (1volta) / Abrir Atualiza o valor para comparação Lê sonda RETORNA Frase CHAMA OK / Libera relê bomba Aciona relê válvula de Decrementa o tempo de Desaciona o relê válvula de Aciona relê solenóide SE valor Decrementa o tempo de Gira motor GLP para abrir (1volta) / Fecha Atualiza o valor para comparação Lê sonda Desaciona relê solenóide água Desaciona relê faísca Desaciona relê gases PROCESSO EXECUTADO RETORNA REINICIA R SIM INICIO NÃO DESLIG 40 41 Apêndice 2: Circuito elétrico. 35 42 Apêndice 3: Circuito pneumático e do gás GLP. Circuito pneumático e do gás GLP. 43 Apêndice 4: Código-fonte do microcontrolador em assembly. ;************************************************************************** ; ; Programa para acionamento do maçarico da têmpera superficial. ; ; Projeto TCC- TÊMPERA SUPERFICIAL ; ; data 26/11/2005 PAULO FERNANDO MADIUTO ; ;*************************************************************************** ; LIST p=16F877 ; PIC16F877 is the target processor ; #INCLUDE "P16F877.INC" ; Include header file __CONFIG _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_OFF ;******************************************************************** ; PINOS UTILIZADOS ;******************************************************************** ;RA0 - SONDA LAMBDA - S_LAMBDA ;RA1 - SENSOR MOTOR 1 - S_CONT1 ;RA2 - SENSOR MOTOR 2 - S_CONT2 ;RA3 - RELÊ SOLENOIDE ÁGUA - RL_SAGUA ;RA4 - RELÊ BOMBA D´ÁGUA - RL_BOMBA ;RA5 - RELÊ VÁLVULA DE CONTROLE - RL_VC ;RB0 - VAZIO ;RB1 - VAZIO ;RB2 - VAZIO ;RB3 - GIRA MOTOR AR COMPR.(SAA 1027) PINO 3 - MAR_GIRO ;RB4 - PÁRA MOTOR AR COMPR.(SAA 1027) PINO 2 - MAR_STOP ;RB5 - GIRA MOTOR GLP (SAA 1027) PINO 3 - MGLP_GIRO ;RB6 - PÁRA MOTOR GLP (SAA 1027) PINO 2 - MGLP_STOP ;RB7 - TRANSISTOR PARA ONDA QUADRADA (555) - TR_MOTOR ;RC0 - BOTÃO ENTER - B_ENTER ;RC1 - BOTÃO DESLIGA/RESET - B_DESL ;RC2 - BOTÃO INCREMENTA - B_INC ;RC3 - BOTÃO DECREMENTA - B_DEC ;RC4 - RELÊ DA CENTELHA - RL_FAISCA ;RC5 - RELÊ DO SOLENOIDE DOS GASES (GLP/AR) - RL_GASES ;RC6 - VAZIO ;RC7 - VAZIO ;RD0 - DADOS PARA DISPLAY ;RD1 - DADOS PARA DISPLAY ;RD2 - DADOS PARA DISPLAY ;RD3 - DADOS PARA DISPLAY ;RD4 - DADOS PARA DISPLAY ;RD5 - DADOS PARA DISPLAY ;RD6 - DADOS PARA DISPLAY ;RD7 - DADOS PARA DISPLAY ;RE0 - ENABLE - E ;RE1 - VAZIO ;RE2 - MODO COMANDO - RS ;******************************************************************** ; CONSTANTES ;******************************************************************** LCD_CNTL equ PORTE ;PORT DE CONTROLE PARA O DISPLAY LCD_DATA equ PORTD ;PORT DE DADOS PARA O DISPLAY E equ 0 ;CONTROLADORES DO DISPLAY RW equ 1 ;PORT C RS equ 2 T_FILTRO EQU B'11001000' UM equ B'00000001' DOIS equ B'00000010' TRES equ B'00000011' ;******************************************************************** ; VARIAVEIS ;******************************************************************** ; MEMÓRIA ;******************************************************************** 44 CBLOCK 0x20 DELAY1 DELAY2 DELAY3 NUMLCD FILTRO1 FILTRO2 FILTRO3 FILTRO4 FRASES FLAGS CONTADOR CONT_GLP CONT_AR T1 T2 T3 ACCaHI res 1 ACCaLO res 1 ACCbHI res 1 ACCbLO res 1 ACCcHI res 1 ACCcLO res 1 ACCdHI res 1 ACCdLO res 1 temp res 1 H_byte L_byte res 1 res 1 ; guarda intervalo na rotina ; contador de caracter na mensagem ; filtros do botão ainda não utilizado res 1 res res 1 1 ;variaveis para temporizaçao ; ; ;acumulador "a" de 16 bits usado ;na rotina de divisão ;acumulador "b" de 16 bits usado ;na rotina de divisão ;acumulador "c" de 16 bits usado ;na rotina de divisão ;acumulador "d" de 16 bits usado ;na rotina de divisão ;contador temporário usado ;na rotina de divisão ;acumulador de 16 bits usado ;para retornar o valor da rotina ;de multiplicação ;operador p/ rotina de multiplicação ;operador p/ rotina de multiplicação ;registrador de uso geral ;armazena valor na unidade da tensão ;armazena valor na dezena1 da tensão ;armazena valor na dezena2 da tensão mulplr res 1 mulcnd res 1 AUX res 1 UNIDADE res 1 DEZENA1 res 1 DEZENA2 res 1 ENDC ;**************************************************************************** ; FLAGS ;**************************************************************************** #DEFINE #DEFINE ST_ENTER FLAGS,0 ;STAUS BOTAO ENTER ST_DESL FLAGS,1 ;STAUS BOTAO DESL ;**************************************************************************** ; ENTRADAS ;**************************************************************************** #DEFINE S_CONT1 PORTA,1 #DEFINE S_CONT2 PORTA,2 #DEFINE B_ENTER PORTC,0 #DEFINE B_DESL PORTC,1 #DEFINE B_INC PORTC,2 #DEFINE B_DEC PORTC,3 ;**************************************************************************** ; SAÍDAS ;**************************************************************************** #DEFINE RL_FAISCA PORTC,4 ; centelha #DEFINE RL_GASES PORTC,5 #DEFINE RL_SAGUA PORTA,3 #DEFINE RL_BOMBA PORTA,4 #DEFINE RL_VC PORTA,5 ;válvula de controle pneumático #DEFINE TR_MOTOR PORTB,7 ;TRANSISTOR #DEFINE MGLP_STOP PORTB,6 ; PÁRA EM NIVEL ALTO #DEFINE MGLP_GIRO PORTB,5 ; SENTIDO HORÁRIO NIVEL ALTO, ANTI-HORARIO BAIXO #DEFINE MAR_STOP PORTB,4 ; PÁRA EM NIVEL ALTO #DEFINE MAR_GIRO PORTB,3 ; SENTIDO HORÁRIO NIVEL ALTO, ANTI-HORARIO BAIXO ;===================================== inicio do programa ==================== ;************************************************************** ; VETOR DE RESET ;************************************************************** org 0 clrf PCLATH goto main ;************************************************************** ; INICIO DA INTERRUPÇÃO ;************************************************************** ; setup para reset e interrupções org nop goto PICRES inicio ;inicio do programa na ROM ;não operando ;desvia para inicio do programa 45 org PICINT retfie ; setup para display e outros setadisp: call t250ms call t250ms call DISPLAY_INIT call DISPLAY_MSG ;endereço para interrupçoes ;retorna da interrução ;aguarda display inicializar ;0,5 segundos ;inicializa display ;envia mensagem ;************************************************************** ; INICIALIZA O DISPLAY ;************************************************************** ; DISPLAY_INIT: MOVLW 0x038 ; Comando para interface 8-bits call SEND_CMD MOVLW 0x00E CALL SEND_CMD ; liga display ; MOVLW 0x006 ; incrementa display CALL SEND_CMD ; MOVLW 0x001 ; apaga display CALL SEND_CMD ; retlw 0x00 ; volta ; setup para display e outros setadisp: call t250ms ;aguarda display inicializar call t250ms ;0,5 segundos call DISPLAY_INIT ;inicializa display call DISPLAY_MSG ;envia mensagem ;************************************************** ;* Rotinas para temporização sem usar o TIMER ;* da PIC - espera ocupada ;************************************************** ; ;******************************************************************* ; Temporizador para 1s em 4MHZ ; Faz 4 vezes 250ms ; t1000ms: movlw 0x04 movwf T3 t1000msa: call t250ms decfsz T3,1 goto t1000msa retlw 0x00 ; ;******************************************************************* ; Temporizador para 250ms em 4MHZ ; t250ms: movlw 0xFA ;250 decimal movwf T1 t250msa: movlw 0xF8 ;248 decimal movwf T2 t250msb: nop decfsz T2,1 goto t250msb decfsz T1,1 goto t250msa retlw 0x00 ;******************************************************************** ; Atraso ;******************************************************************** Atraso movlw B'11001000'; movwf DELAY1 ; l1 decfsz DELAY1,F ; decrementa, se diferente goto l1 ; executa goto .. return ;******************************************************************** ; INICIA AS PORTAS ; SETA AS PORTAS COMO SAIDA OU ENTRADAS ;******************************************************************** ; 46 InitPort clrf clrw CLRF CLRF CLRF CLRF CLRF bcf bsf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf bcf return STATUS ; limpa registrador de status ; PORTA PORTB PORTC PORTD PORTE STATUS,RP1 ; seleciona STATUS,RP0 ; pagina 1 0x07 TRISA ; seta o portA como 0,1,2 como entrada e 3,4,5 como saída 0x00 TRISB ; seta o portB como saída 0x0F ; TRISC ;seta pinos 4 5 6 7 port C saida 0x00 ; TRISD ; porta D como saída 0X00 ; TRISE ; coloca PORTA E como I/O saida 0x0E ADCON1 ; coloca portE em i/o digital - e só ra0 como analogico STATUS,RP0 ; volta a pagina 0 ;************************************************************** ; main principal NOVA ;************************************************************** main call InitPort ; inicializa porta I/O call DISPLAY_INIT call MgInicLcd ; mens iniciando... call LongDly_1 MOVLW B'00000001' MOVWF FRASES ; MOVLW T_FILTRO ; MOVWF FILTRO1 ; MOVWF FILTRO2 IMAGEM CALL PROC_INICIO CALL TEMPO_CHAMA CALL TEMPO_RESFRIA CALL EXECUTAR CALL MgInicLcd1 BSF RL_FAISCA CALL LongDly_1 CALL MgInicLcd2 BSF RL_GASES CALL LongDly CALL MgInicLcd3 CALL MOTOR_GLP_ABRE CALL MOTOR_AR_ABRE CALL LOOP: CALL MgInicLcd4 GOTO RESET LOOP: bsf ADCON0, GO_DONE ;colhe dado do canal analógico espera_ad: btfsc goto ADCON0, GO_DONE ;testa para ver se dado pronto espera_ad ;dado ainda não pronto, continua teste movf movwf ADRESH,W mulplr ;carrega valor da conversão em "W" ;carrega mulplr com conteúdo de "W" movlw movwf .250 mulcnd ;carrega com 250 decimal mulcnd ;para adaptar a leitura (fundo de escala 25V) call mpy_F ;chama rotina de multiplicação movf movwf movf movwf H_byte,W ACCbHI L_byte,W ACCbLO clrf movlw movwf ACCaHI .255 ACCaLO ;carrega ACCa com 255 decimal (fundo de ;escala do conversor A/D ;(Conversão em 8 bits) call D_divF ;chama rotina de divisão movf ACCbLO,W call AJUSTE_DECIMAL ;salva resutado da multiplicação ;em ACCb para ser usado na ;rotina de divisão ;pega resultado da divisão ;faz ajuste decimal 47 movlw call 0XC9 SEND_CMD ;comando para posicionar o cursor ;na linha 2, coluna 9 movf addlw call DEZENA2,W 0X30 SEND_CHAR ;converte BCD da DEZENA2 em ASCII ;envia para LCD movf addlw call DEZENA1,W 0X30 SEND_CHAR ;converte BCD da DEZENA1 em ASCII ;envia para LCD movlw call ',' SEND_CHAR ;escreve uma virgula no LCD ;envia para LCD movf addlw call UNIDADE,W 0X30 SEND_CHAR ;converte BCD da INIDADE em ASCII ;envia para LCD movlw CALL 'V' SEND_CHAR ;escreve "V" no LCD ;envia para LCD goto loop ;faz eternamente ;********************************************************************** ;* Ajuste decimal ;* W [HEX] = dezena [DEC] ; unidade [DEC] ;* Conforme indicado no livro - "Conectando o PIC - Recursos avançados ;* Autores Nicolás César Lavinia e David José de Souza ;* ;* Alterada por Márcio José Soares para uso com números com duas dezenas e uma unidade ;* ;* Esta rotina recebe um argumento passado pelo acumulador "W" e retorna nas variáveis ;* DEZENA1, DEZENA2 e UNIDADE o número BCD correspondente ao parâmetro passado. AJUSTE_DECIMAL: movwf clrf clrf clrf AUX UNIDADE DEZENA1 DEZENA2 movf btfsc return AUX,F STATUS,Z ;valor a converter = 0 ? ini_ajuste: incf ;salva valor a converter em AUX ;limpa unidade ;limpa dezena1 ;limpa dezena2 ;sim - retorna UNIDADE,F ;Não - incrementa unidade movf xorlw btfss goto UNIDADE,W ;carrega W com valor em unidade 0X0A STATUS,Z ;unidade = 10 decimal ? fim_ajuste ;não clrf UNIDADE ;sim, limpa unidade UNIDADE movf xorlw btfss goto clrf incf goto DEZENA1,W 0x09 STATUS,Z ; incDez1 DEZENA1 DEZENA2,F fim_ajuste ;desvia ;carrega W com valor em dezena1 ;compara com nove DEZENA1,F ;Incrementa dezena1 incDez1: incf fim_ajuste: decfsz goto return AUX,F ini_ajuste ;não, valor menor que 9. Incrementa dezena 1 ;limpa dezena1 ;sim, incrementa dezena2 ;Fim da conversão ? ;Não - volta para continuar ;sim, final da conversão ;************************************** ;* ROTINA DE DIVISÃO by Microchip - AN544 * ;************************************** ;**************************************************************************** ; Double Precision Division ;**************************************************************************** ; Division : ACCb(16 bits) / ACCa(16 bits) -> ACCb(16 bits) with ; Remainder in ACCc (16 bits) ; (a) Load the Denominator in location ACCaHI & ACCaLO ( 16 bits ) ; (b) Load the Numerator in location ACCbHI & ACCbLO ( 16 bits ) ; (c) CALL D_divF 48 ; (d) The 16 bit result is in location ACCbHI & ACCbLO ; (e) The 16 bit Remainder is in locations ACCcHI & ACCcLO ;**************************************************************************** D_divF MOVLW MOVWF .16 temp ;carrega contador para divisão MOVF MOVWF MOVF MOVWF ACCbHI,W ACCdHI ACCbLO,W ACCdLO ;salva ACCb em ACCd CLRF CLRF ACCbHI ACCbLO ;limpa ACCb CLRF CLRF ACCcHI ACCcLO ;limpa ACCc DIV BCF RLF RLF RLF RLF MOVF SUBWF BTFSS GOTO MOVF SUBWF NOCHK BTFSS GOTO MOVF SUBWF BTFSS DECF MOVF SUBWF BSF NOGO RLF RLF DECFSZ GOTO STATUS,C ACCdLO,F ACCdHI,F ACCcLO,F ACCcHI,F ACCaHI,W ACCcHI,W STATUS,Z NOCHK ACCaLO,W ACCcLO,W ;verifica se a>c ;se bit msb igual, então verifica lsb STATUS,C NOGO ACCaLO,W ACCcLO,F STATUS,C ACCcHI,F ACCaHI,W ACCcHI,F ;carry setado se c>a ;c-a. Resposta em c STATUS,C ;shift de 1. Resultado em b ACCbLO,F ACCbHI,F temp,F DIV ;fim da divisão ? ;não - volta para DIV RETURN ;sim, então retorna ;************************************** ;* ROTINA DE MULTIPLICAÇÃO by Microchip - AN544 * ;************************************** ;**************************************************************************** ; 8x8 Software Multiplier ; ( Fast Version : Straight Line Code ) ;**************************************************************************** ; ; The 16 bit result is stored in 2 bytes ; Before calling the subroutine " mpy ", the multiplier should ; be loaded in location " mulplr ", and the multiplicand in ; " mulcnd " . The 16 bit result is stored in locations ; H_byte & L_byte. ; Performance : ; Program Memory : 37 locations ; # of cycles : 38 ; Scratch RAM : 0 locations ;******************************************************************* ; ******************************************** ; Define a macro for adding & right shifting ; ******************************************** mult MACRO bit BTFSC ADDWF RRF RRF ENDM ;Inicio da macro mult mulplr,bit H_byte,F H_byte,F L_byte,F ;fim da macro 49 ; ***************************** ; Begin Multiplier Routine ; ***************************** mpy_F CLRF CLRF MOVF BCF mult mult mult mult mult mult mult mult H_byte L_byte mulcnd,W STATUS,C ; move the multiplicand to W reg. ; Clear carry bit in the status Reg. 0 1 2 3 4 5 6 7 RETURN ; RETORNA ;**************************************************************** ;SEND_CMD: envia comando contido no registro W para LCD * ;* esta rotina insere o dados completo no PORT * ;* o dado eh transmitido pelo pinos do PORT<7:0> * ;************************************************************** SEND_CMD BCF LCD_CNTL, RW ; seta o LCD em modo escrita BCF LCD_CNTL, RS ; seta o LCD em modo comando BCF LCD_CNTL, E ; inverte E para LCD MOVWF LCD_DATA ; envie o dado para o LCD BSF LCD_CNTL, E ; inverte E para LCD NOP BCF LCD_CNTL, E CALL LongDly return ; ;******************************************************************** ; LongDly_1 ;********************************************************************* LongDly_1 movlw .10 ; atraso de 32 loop: alterou para 20h movwf DELAY3 a20 movlw .255 ; atraso de 32 loop: alterou para 20h movwf DELAY2 ; salva na RAM l6 movlw .255 movwf DELAY1 ; l7 decfsz DELAY1,F ; decrementa, se diferente goto l7 ; executa goto .. decfsz DELAY2,F ; goto l6 decfsz DELAY3,F GOTO a20 return ;******************************************************************** ; LongDly ;********************************************************************* LongDly movlw 0xA1 ; atraso de 32 loop: alterou para 20h movwf DELAY2 ; salva na RAM l2 movlw 0xF1 movwf DELAY1 ; l3 decfsz DELAY1,F ; decrementa, se diferente goto l3 ; executa goto .. decfsz DELAY2,F ; goto l2 return ;***************************************************************** ;* SEND_CHAR - envia caracter que esta no registro W para o LCD * ;* Esta rotina envia todo caracter pelo port * ;* O dado eh trasmitido pelo PORTB<7:0> pins * ;***************************************************************** ; SEND_CHAR BCF LCD_CNTL, RW ; seta o LCD em modelo escrita BSF LCD_CNTL, RS ; seta o LCD em modo dados BCF LCD_CNTL, E ; inverte E para LCD MOVWF LCD_DATA ; envie o dado para o LCD BSF LCD_CNTL, E ; inverte E para LCD 50 NOP BCF LCD_CNTL, E CALL LongDly return ;*********************************************************************** ; MgInicLcd "rotina para enviar frase inteira ao LCD" ;************************************************************************ MgInicLcd movlw 0x80 call SEND_CMD movlw 0 ; LL movwf NUMLCD ; zera contador de dados enviados call tabinic ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto LL ; continua até chegar ao fim da mensagem tabinic addwf PCL,F mens dt "Iniciando...",0 return ;*************************************************************** ; Mensagem para Processo ?? ;*************************************************************** MgInicLcd1 movlw 0x01 call SEND_CMD movlw 0xC2 call SEND_CMD movlw 0 ; A13 movwf NUMLCD ; zera contador de dados enviados call tabinic1 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto A13 ; continua até chegar ao fim da mensagem tabinic1 addwf PCL,F mens1 dt " Processo ? ",0 RETURN ;*************************************************************** ; Mensagem para Tempo Chama ;*************************************************************** MgInicLcd2 movlw 0x01 call SEND_CMD movlw 0x83 call SEND_CMD movlw 0 ; L2x movwf NUMLCD ; zera contador de dados enviados call tabinic2 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto L2x ; continua até chegar ao fim da mensagem tabinic2 addwf PCL,F mens2 dt "Tempo Chama",0 RETURN ;*************************************************************** ; Mensagem para tempo RESFRIAMENTO ;*************************************************************** MgInicLcd3 movlw 0x01 call SEND_CMD movlw 0x80 call SEND_CMD movlw 0 ; L3x movwf NUMLCD ; zera contador de dados enviados call tabinic3 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto L3x ; continua até chegar ao fim da mensagem 51 tabinic3 addwf PCL,F mens3 dt " Tempo Tempera",0 RETURN ;*************************************************************** ; Mensagem para executar o processo ;*************************************************************** MgInicLcd4 movlw 0x01 call SEND_CMD movlw 0xC3 call SEND_CMD movlw 0 ; L4x movwf NUMLCD ; zera contador de dados enviados call tabinic4 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto L4x ; continua até chegar ao fim da mensagem tabinic4 addwf PCL,F mens4 dt "EXECUTAR ?",0 RETURN ;*************************************************************** ; Mensagem Centelha ;*************************************************************** MgInicLcd5 movlw 0x01 call SEND_CMD movlw 0xC3 call SEND_CMD movlw 0 ; L5x movwf NUMLCD ; zera contador de dados enviados call tabinic5 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto L5x ; continua até chegar ao fim da mensagem tabinic5 addwf PCL,F mens5 dt "CENTELHA",0 RETURN ;*************************************************************** ; Mensagem Liberar os Gases ;*************************************************************** MgLcd6 movlw 0x01 call SEND_CMD movlw 0x80 call SEND_CMD movlw 0 ; A6 movwf NUMLCD ; zera contador de dados enviados call tab6 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados goto A6 ; continua até chegar ao fim da mensagem tab6 addwf PCL,F mens6 dt "Libera os Gases",0 RETURN ;*************************************************************** ; Mensagem Liberar os Gases ;*************************************************************** MgLcd7 movlw 0x01 call SEND_CMD movlw 0xC0 call SEND_CMD movlw 0 ; A7 movwf NUMLCD ; zera contador de dados enviados call tab7 ; aponta para inicio da tabela andlw 0ffh ; esta rotina retorna o dado da tabela btfsc STATUS,Z ; se for igual a zero e por que chegou return ; ao fim call SEND_CHAR ; que esta em w movf NUMLCD,W ; addlw 1 ; incrementa contador de dados 52 goto A7 ; continua até chegar ao fim da mensagem tab7 addwf PCL,F mens7 dt "Motor 1 GLP",0 RETURN ;*************************************************************** ; Rotina para teste dos botões: B_ENTER ^ B_DESL ;*************************************************************** B_ENTER_DESL BTFSS B_ENTER ; O BOTÃO ENTER ESTA PRESSIONADO? GOTO B_ENTER_DESL RETURN ;*************************************************************** ; Rotina RESET, SEMPRE VOLTA PARA INICIO ;*************************************************************** RESET BTFSS B_DESL ; O BOTÃO ENTER ESTA PRESSIONADO? GOTO RESET ;VAI FAZER A contagem do botão ENTER e pular de frase em frase. BCF RL_FAISCA BCF RL_GASES BCF RL_SAGUA GOTO IMAGEM ;volta o programa na primeira frase Porcesso? ;TESTE2 ; BSF ST_DESL ; BCF RL_FAISCA ; BCF RL_GASES ; BCF RL_SAGUA ; GOTO IMAGEM ;*************************************************************** ; Rotina FRASE PROCESSO E MARCAR O INICIO DO PROGRAMA ;*************************************************************** PROC_INICIO CALL MgInicLcd1 CALL B_ENTER_DESL RETURN ; call TEMPO_CHAMA ;*************************************************************** ; Rotina para chamar o tempo Chama ;*************************************************************** TEMPO_CHAMA CALL MgInicLcd2 CALL B_ENTER_DESL RETURN ; call TEMPO_RESFRIA ;*************************************************************** ; Rotina para chamar o Tempo Resfriamento ;*************************************************************** TEMPO_RESFRIA CALL MgInicLcd3 CALL B_ENTER_DESL RETURN ; call EXECUTAR ;*************************************************************** ; Rotina para chamar o Tempo Resfriamento ;*************************************************************** EXECUTAR CALL MgInicLcd4 CALL B_ENTER_DESL RETURN ; GOTO PP ;*************************************************************** ; Rotina para Decrementar ;*************************************************************** DEC BSF MOVF XORLW ;AÇÃO DE DECREMENTAR ;MARCA BOTÃO 1 COMO JÁ PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MIN ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SERÁ ZERO BTFSC STATUS,Z ;RESULTOU EM ZERO? GOTO MAIN ;SIM, RETORNA SEM AFETAR CONT. ;NÃO DECF CONTADOR,F ;DECREMENTA O CONTADOR GOTO ATUALIZA;ATUALIZA O DISPLAY ;***************************************************************** ;Ação de incrementar ;***************************************************************** INC ;AÇÃO DE INCREMENTAR B_DEC CONTADOR,W MIN 53 BSF MOVF XORLW BTFSC GOTO INCF GOTO B_INC CONTADOR,W MAX ;MARCA BOTÃO 2 COMO JÁ PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MAX ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SERÁ ZERO STATUS,Z ;RESULTOU EM ZERO? MAIN ;SIM, RETORN SEM AFETAR CONT. ;NÃO CONTADOR,F ;INCREMENTA O CONTADOR ATUALIZA;ATUALIZA O DISPLAY ;************************************************************** ; GIRA MOTOR DO GLP PARA ABRIR ;************************************************************** MOTOR_GLP_ABRE BSF BSF BSF CALL HOR GOTO BCF CALL ; BCF ; BTFSS ; GOTO BTFSS GOTO MOVLW MGLP_STOP MGLP_GIRO TR_MOTOR LongDly BTFSS HOR B_ENTER MGLP_STOP CONT_MOT_GLP MGLP_GIRO B_DESL $+1 B_DEC $+1 VALOR_A/D BSF BCF RETURN MGLP_STOP TR_MOTOR ;************************************************************** ; Contador para volta do motor 1 GLP ;************************************************************** CONT_MOT_GLP CONT1 BTFSS GOTO CLRF INCF MOVLW XORLW BTFSS GOTO RETURN B_INC CONT1 CONT_GLP CONT_GLP,F UM CONT_GLP STATUS,Z CONT2 CONT2 BTFSS GOTO INCF MOVLW XORLW BTFSS GOTO RETURN B_INC CONT2 CONT_GLP,F DOIS CONT_GLP STATUS,Z CONT3 CONT3 BTFSS GOTO B_INC CONT3 RETURN ;************************************************************** ; GIRA MOTOR DE AR PARA ABRIR ;************************************************************** MOTOR_AR_ABRE BSF MAR_STOP BSF MAR_GIRO BSF TR_MOTOR CALL LongDly HOAR BTFSS B_ENTER GOTO HOAR BCF MAR_STOP CALL CONT_MOT_AR ; BCF MGLP_GIRO ; BTFSS B_DESL ; GOTO $+1 BSF MAR_STOP BCF TR_MOTOR RETURN ;************************************************************** ; Contador para volta do motor 1 AR 54 ;************************************************************** CONT_MOT_AR CONTA1 BTFSS GOTO CLRF INCF MOVLW XORLW BTFSS GOTO RETURN B_INC CONTA1 CONT_AR CONT_AR,F UM CONT_AR STATUS,Z CONTA2 CONTA2 BTFSS GOTO INCF MOVLW XORLW BTFSS GOTO RETURN B_INC CONTA2 CONT_AR,F DOIS CONT_AR STATUS,Z CONTA3 CONTA3 BTFSS GOTO B_INC CONTA3 RETURN ;****************************************************************************** ; FIM DO PROGRAMA ;****************************************************************************** END