Monografia do Projeto Final do
curso de Engenharia da Computação no
ano de 2003, realizado por Claudio
Karpenko sob a orientação do Prof. Edson
Pedro Ferlin.
Centro Universitário Positivo
Núcleo de Ciências Exatas e Tecnológicas
Curso de Engenharia da Computação
Sistema para Monitoramento de Pressão e Temperatura em
Autoclaves
CURITIBA
2003
2
I
Sumário
LISTA DE FIGURAS.......................................................................................................3
LISTA DE ABREVIATURAS .........................................................................................4
RESUMO ...........................................................................................................................5
ABSTRACT.......................................................................................................................6
1. INTRODUÇÃO .............................................................................................................7
2. CONCEITOS E DEFINIÇÕES...................................................................................8
2.1. ESTERILIZAÇÃO......................................................................................................... 8
3. ESPECIFICAÇÃO DO SISTEMA............................................................................12
3.1. MÓDULO DE AQUISIÇÃO ..........................................................................................13
3.2 MÓDULO D E GERENCIAMENTO..................................................................................18
4. PROJETO....................................................................................................................21
4.1 MÓDULO DE AQUISIÇÃO ...........................................................................................21
4.2 MÓDULO DE GERENCIAMENTO..................................................................................23
4.3 COMUNICAÇÃO INFRAVERMELHO .............................................................................25
5. IMPLEMENTAÇÃO..................................................................................................27
5.1 CONVERSÃO A/D ......................................................................................................27
5.2 ENDEREÇAMENTO .....................................................................................................29
5.3 AQUISIÇÃO ................................................................................................................30
5.4 MICROCONTROLADOR 8031......................................................................................33
5.5 SOFTWARE PARA O COMPUTADOR ............................................................................34
6. TESTES........................................................................................................................36
7. RESULTADOS............................................................................................................38
8. CONCLUSÃO .............................................................................................................40
9. BIBLIOGRAFIA.........................................................................................................42
10. ANEXOS....................................................................................................................43
3
II
Lista de Figuras
Figura 1 – Visão Geral do Sistema .................................................................................................................................. 12 Figura 2 – Corte Vertical do Material do Encapsulamento ....................................................................................... 14 Figura 3 – Visão Geral do Módulo de Aquisição ......................................................................................................... 15 Figura 4 – Bloco de Processamento do Módulo de Aquisição................................................................................... 17 Figura 5 – Aquisição do Módulo de Gerenciamento ................................................................................................... 18 Figura 6 – Layout do Software do Módulo de Gerenciamento do SMTPA ............................................................ 19 Figura 7 – Fluxo dos Sinais no Módulo de Aquisição ................................................................................................ 21 Figura 8 – Fluxograma do Circuito do Módulo de Aquisição ................................................................................... 22 Figura 9 - Fluxograma do Módulo de Gerenciamento ............................................................................................... 23 Figura 10 – Circuito para Comunicação Infravermelho............................................................................................ 24 Figura 11 – Protocolo de Comunicação ......................................................................................................................... 25 Figura 12 – Esquemático do Circuito de Conversão A/D .......................................................................................... 28 Figura 13 Esquemático da lógica de Endereçamento ................................................................................................ 30 Figura 14 – Linearidade do termopar – Tensão x Temperatura ............................................................................... 30 Figura 15 – Circuito para a Aquisição do Sinal ........................................................................................................... 32 Figura 16 – Teste de Aquisição da Temperatura .......................................................................................................... 36 Figura 17 – Linearidade do Termopar............................................................................................................................ 38 Figura 18 – Resultados de Teste....................................................................................................................................... 39
4
III
Lista de Abreviaturas
- A/D – Conversão Analógica para Digital;
- ADC – Analog Digital Conversor;
- atm – Unidade de Medida “Atmosfera”;
- E/S – Entrada e Saída;
- IA-32 – Intel Architeture 32-bits;
- ID – Identificador;
- IV – Infravermelho;
- LPT – Porta Paralela para Impressora;
- MB – Unidade de Medida Mega Byte;
- MHz – Unidade de Medida de freqüência - Mega Hertz;
- mmHg – Unidade de Medida de Pressão – Milímetros de Mercúrio;
- RAM – Randomic Access Memory;
- SMTPA – Sistema para Monitoramento de Temperatura e Pressão em Autoclaves;
- X86 - Família de Processadores da arquitetura IA-32 da Intel;
5
IV
Resumo
A esterilização de materiais se tornou uma das atividades mais importantes em ambientes
onde a contaminação pode ser extremamente perigosa, inclusive podendo colocar em risco a
vida de pessoas, por exemplo, em ambientes hospitalares.
Existem vários métodos para a descontaminação de objetos, um dos mais comuns é o uso
das autoclaves. Autoclaves são equipamentos que utilizam altas temperaturas e pressões para
eliminar bactérias e microorganismos dos mais diversos tipos de objetos. Porém, algumas vezes
os ciclos de esterilização destes equipamentos podem não ser eficazes o suficiente.
Por este motivo surge a idéia do Sistema de Monitoramento de Temperatura e Pressão
em Autoclaves (SMPTA), que com um módulo de aquisição e um de gerenciamento dos dados
adquiridos, faz o monitoramento e a demonstração das variáveis tempo, pressão e temperatura
dos ciclos de esterilização das autoclaves, com o objetivo de verificar se alguma etapa do
processo foi prejudicial a esterilização.
6
V
Abstract
The sterilization of the material has become one of the most important activities in places
where the contamination can be extremally dangerous, including putting people lifes in
dangerous, for example, at hospitals.
There are many methods to descontaminate objects, and one of the most comum is to use
autoclaves. Autoclaves are equipments that use high temperature and pressures to eliminate
bacteries and microorganism from the most different objects. However, some of the sterilization
cycles of this equipments can not be efficient enough.
For this reason it appears the idea of the Supervise the Temperature and Pressure System
in Autoclaves (SSTPA), that will be able to supervise and demonstrate all the variable as time,
pressure and temperature of the autoclaves sterilization cycles, with the purpose to identify if
one the stage of the process is prejudicial to sterilization, using the acquisition module and
management.
7
1. Introdução
Uma das grandes preocupações no ambiente clínico é a questão da esterilização de
materiais. As autoclaves são equipamentos que fazem a esterilização de materiais e utilizam para
isto pressão e temperatura elevadas matando assim os microorganismos.
A esterilização é de extrema importância na área médica, odontológica e afins, pois
materiais que não foram adequadamente esterilizados, ou seja, tiveram uma esterilização falha,
são os grandes causadores de infecções hospitalares, causando até mesmo a morte do paciente.
Além disto, o paciente necessita de um maior tempo de internamento e o aumento na dosagem
de medicamentos para o organismo combater os microorganismos que não foram eliminados na
esterilização.
Muitas vezes o processo de esterilização pode ficar comprometido devido a alguma falha
no funcionamento das autoclaves. Estas falhas podem ser um ciclo não completo, temperatura e
ou pressão falhas para validar o processo, por este motivo é interessante o desenvolvimento de
um sistema que faça o monitoramento e gerenciamento do processo. Para isto será desenvolvido
um sistema composto por um circuito eletrônico que, aquisicionará através de sensores, os dados
para traçar gráficos e parâmetros de comparação da esterilização, transmitindo estes dados ao
computador, para assim, tratá-los adequadamente e mostrar a eficiência, ou não, do
funcionamento da autoclave aumentando a confiabilidade do processo de esterilização.
O projeto engloba o estudo de transdutores de temperatura e pressão, a aquisição das
variáveis (técnicas), sistemas digitais para controles, a transmissão destes dados ao computador e
o tratamento dos dados adquiridos por um software.
Este projeto tem grande aplicabilidade em autoclaves que não possuem um sistema de
monitoramento das variáveis pressão e temperatura, já que as autoclaves com este tipo de
monitoramento possuem um custo financeiro mais elevado em relação às demais autoclaves,
assim, o uso deste sistema tornasse ainda mais atrativo podendo até mesmo ser comercializado.
O desenvolvimento do projeto é iniciado pelo estudo dos processos de esterilização, isto
para um melhor entendimento de como são desempenhados e as características básicas dos
mesmos. Logo após este estudo, com as definições e conclusões a respeito dos processos de
esterilização são estudadas formas de sensoriamento para este tipo de aplicação e, com estas
definições é viabilizado o projeto para posterior implementação do hardware e de um software,
necessários para aquisição e tratamento das informações em um computador.
8
2. Conceitos e Definições
A esterilização é o processo que promove completa eliminação ou destruição de todas as
formas de microorganismos presentes: vírus, bactérias, fungos, protozoários, esporos, para um
aceitável nível de segurança. O processo de esterilização pode ser físico, químico, físico-
químico.
A esterilização é factível somente a objetos, não é possível empregá-la em superfície,
como mesas, pisos e bancadas, porque seria impossível adequá-la aos meios de esterilização
conhecidos.
O estudo microbiológico de esterilização é realizado com esporos bacterianos, que são as
formas mais resistentes aos agentes esterilizantes e capazes de reproduzir-se em laboratório.
Assim a elaboração de qualquer tipo de procedimento de esterilização precisa necessariamente
contemplar a destruição de todos estes esporos bacterianos presentes em um determinado artigo
a ser processado [APECIH - 1998]. A morte microbiana de um organismo foi definida por
Shimidt [SMITH - 2001], em 1954, como sendo a falha do organismo em reproduzir-se. Em
termos práticos, o que se observa é que quando em meio de cultura adequado, não ocorre o
crescimento bacteriano.
2.1. Esterilização
A sobrevivência de microorganismos ao processo de esterilização pode decorrer de falhas
humanas e mecânicas. As principais falhas humanas são: limpeza deficiente do material
submetido à esterilização, emprego de invólucros ou recipientes inadequados ao processo
escolhido, confecção de pacotes demasiadamente grandes ou compactados, posicionamento
incorreto na câmara de esterilização, tempo de exposição ao agente insuficiente para a destruição
de todos os microorganismos presentes no material e outras falhas específicas de cada processo.
Já as falhas mecânicas decorrem de projeto incorreto ou falta de manutenção dos
equipamentos. Monitoramento regular do processo evita que falhas mecânicas e humanas
venham a interferir na eficácia da esterilização.
Métodos de Monitoramento da Esterilização
9
Para demonstrar a eficiência do processo, deve-se utilizar um programa de controle da
esterilização, incluindo métodos físicos, químicos e biológicos. É no monitoramento físico que
entra a aplicabilidade do Sistema de Monitoramento de Pressão e Temperatura em Autoclaves
(SMPTA).
Uma metodologia deve ser aplicada para assegurar a validade do processo e evitar que
acidentalmente materiais não esterilizados sejam encaminhados para uso. A supervisão de todas
as cargas por um responsável é uma prática obrigatória para que os materiais sejam liberados
com maior segurança.
A seguir são listados alguns métodos para monitoramento de esterilização segundo a
Associação Paulista de Estudos e Controle de Infecção Hospitalar [APECIH - 1998], estes testes
asseguram o processo de esterilização contra possíveis contaminações após a esterilização:
• Testes Físicos
• Testes Químicos
• Testes Biológicos
• Testes de Esterilidade
• Avaliação de Esterilizantes Químicos
• Controle de Esterilização por Radiação Gama
Validação do Processo de Esterilização
A validação é a prova de que um determinado processo faz o que se propõe a fazer. A
validação envolve todas as etapas do processo, desde a limpeza dos artigos até a liberação de
carga para utilização.
Ciclo Básico do Processo de Esterilização
Uma esterilização processa-se em uma seqüência de estágios: Aquecimento (geração de
vapor); pré-vácuo (retirada de todo o ar da câmara interna); aquecimento com vapor da câmara
interna até a temperatura de esterilização; esterilização; secagem (retirada do vapor da câmara
interna e formação de vácuo – 300mmHg); fim do ciclo com a quebra de vácuo da câmara
interna [APECIH - 1998].
No estágio de aquecimento, leva cerca de 40 minutos com a câmara fria, caindo para 20
minutos nos estágios posteriores.
10
Tipos de esterilização
A esterilização pode ocorrer por meios físicos ou químicos. Veremos aqui o que mais
interessa ao projeto, a esterilização por meios Físicos.
A Esterilização por Processo Físico (Vapor Saturado Sob Pressão) é o processo que
oferece maior segurança e economia. Pode ser realizado em autoclave convencional horizontal
ou autoclave a alto vácuo. A autoclave vertical é própria para laboratório, não devendo ser
utilizada para a esterilização de artigos médico-cirúrgicos e odontológicos, pois os pacotes ficam
superpostos dificultando a drenagem do ar, retardando a penetração do vapor e dificultando a
secagem dos artefatos, o que não garante a sua esterilização.
Esterilização por Calor Seco
O calor seco gerado em estufa elétrica (forno de Pasteur) é de uso limitado, pois a
penetração e distribuição de calor dentro da câmara não se fazem de maneira uniforme, além do
que, o processo requer um tempo de exposição mais prolongado a altas temperaturas, o que é
inadequado para certos materiais, tais como tecidos e borrachas. A estufa deve possuir um
termômetro que indica a temperatura atingida no interior e um termostato responsável pela
manutenção da temperatura desejada. Deve-se colocar as caixas maiores nas prateleiras
superiores e as menores nas inferiores, para facilitar a condução de calor, sem encostá-las na
parede da estufa, nem encostar o bulbo do termômetro nas caixas. Não colocar grande
quantidade de material dentro das caixas, nem sobrecarregar o aparelho, seguindo as
recomendações do manual de instruções do fabricante.
Tempo e Temperatura de Esterilização em Autoclaves
Usar exposição por 30 (trinta) minutos a uma temperatura de 121ºC, em autoclaves
convencionais (uma atmosfera de pressão). Usar exposição por 15 (quinze) minutos a uma
temperatura de 132ºC, em autoclaves convencionais (uma atmosfera de pressão). Usar exposição
por 4 (quatro) minutos a uma temperatura de 132ºC, em autoclave de alto vácuo [APECIH -
1998].
Causas de Insucesso do Processo de Esterilização
11
A seguir lista-se uma série de fatores que causam falhas no processo de esterilização:
• Uso de carga maior do que 80% da capacidade da autoclave;
• Volume de água em excesso provocando umidade nas embalagens ou escassez que
causa danos (queima) das embalagens;
• Abertura da autoclave antes do total esfriamento favorecendo a condensação de vapor
d’água umedecendo as embalagens;
• Despressurização da autoclave pelo acionamento da válvula de escape, favorecendo a
condensação de vapor;
• Rompimento de embalagens durante a retirada da autoclave e acondicionamento;
• Queda da energia elétrica durante o ciclo de esterilização;
• Falta de limpeza e manutenção do aparelho;
• Não realização quinzenal de testes biológicos de monitoração com Bacillus
Stearothermopilus para verificar a efetividade da esterilização;
• Embalagens inadequadas para a esterilização em autoclave.
12
3. Especificação do Sistema
O objetivo principal do sistema é aquisicionar, tratar, transmitir e gerenciar dados
coletados de dentro de uma autoclave demonstrando informações úteis ao controle da
esterilização. Logo, com esta configuração podemos modularizar o sistema para que cada parte
dele desempenhe uma destas etapas independente das demais, porém, todas elas se
interconectam em dado momento. Por exemplo, o módulo de aquisição que fica dentro da
autoclave, não precisará necessariamente estar conectado ao módulo de transmissão de dados,
isto porque os dados coletados são armazenados no próprio módulo de aquisição e logo depois
de completo o ciclo de esterilização podem ser enviados, através do módulo de comunicação ao
computador que fará a análise destes dados demonstrando os resultados do processo de
esterilização, dados estes que podem ser demonstrados em gráficos visualizados no software de
gerenciamento. O módulo também envia em tempo real estas informações ao computador para
que o usuário do sistema possa acompanhar o desenvolvimento do processo. O diagrama geral
do sistema pode ser visto na figura 1.
Figura 1 – Visão Geral do Sistema
O sistema SMPTA é composto por dois módulos básicos: Módulo de Aquisição e
Módulo de Gerenciamento.
O Módulo de Aquisição, quando inserido em uma autoclave, aquisicionará e armazenará
os dados da temperatura e pressão e o posterior envio para o Módulo de Gerenciamento, que por
sua vez, receberá os dados enviados pelo Módulo de Aquisição e fará o devido tratamento
13
computacional, como por exemplo, a geração de gráficos para a validação do processo de
esterilização.
Em virtude dos módulos poderem ser separados fisicamente, estuda-se a implementação
de uma interface de comunicação IV (Infra-Vermelho) para a troca de informação entre os
módulos, justamente para que não haja a necessidade de cabos para a conexão.
3.1. Módulo de Aquisição
Neste módulo serão adquiridas, convertidas e processadas as variáveis do ambiente
(temperatura e pressão) que são utilizadas para validar o processo de esterilização nas
autoclaves.
Caixa Protetora do Módulo de Aquisição
Para abranger todos os tipos de autoclaves, a idéia inicial do projeto é a de um módulo de
aquisição independente, um módulo que estaria dentro das autoclaves aquisicionando e
armazenando os dados em uma memória interna para posterior envio ao computador. Devido aos
componentes eletrônicos, em sua maioria, possuírem uma faixa de atuação relativamente estreita
com temperatura, umidade e demais anomalias do ambiente, podendo causar danos aos
componentes ou falha de funcionamento, uma caixa protetora é necessária. O ambiente dentro de
uma autoclave pode facilmente danificar um circuito que estiver pouco protegido. Segundo a SS
– 374 [APECIH - 1998], é recomendado que o tempo e temperatura de esterilização por calor
seco sejam de 1 hora a 170ºC e 2 horas a 160ºC. Por este motivo, uma “caixa” protetora precisa
ser desenvolvida para abrigar o circuito do módulo de aquisição, que deverá ficar dentro da
autoclave.
Devido à recarga das baterias de alimentação, a caixa de aço, que recobrirá todo o
sistema, deve possuir uma forma de ser aberta, também deve existir uma “janela” para a
comunicação por infravermelho.
Contudo, devido às intempéries do interior das autoclaves, deve-se proteger o circuito de
aquisição utilizando materiais que isolem o calor e a pressão do sistema. Para isto, alguns
materiais devem ser testados a fim de verificar se suportam efetivamente as temperaturas
praticadas nas autoclaves.
Um invólucro cerâmico será utilizado para proteger o circuito da temperatura e umidade
que são os principais agentes prejudiciais ao sistema neste caso. Envolvendo este equipamento
14
uma manta cerâmica fará um reforço do isolamento térmico, e recobrindo-a uma caixa de aço
inox, sobre todo o sistema. Este aço inox também é necessário para melhorar a limpeza do
módulo, já que em um ambiente de esterilização, materiais porosos podem ser altamente
infecciosos.
Os materiais que são objetos de estudo para a caixa protetora do circuito de aquisição
nesta fase da implementação são:
• Cerâmica – Utilizada por ser um bom isolante térmico e resistente a grandes variações
térmicas e de pressão, será utilizada para a segundo parte do invólucro do circuito de
aquisição sendo o primeiro a manta de cerâmica;
• Manta de Cerâmica – Este material é muito utilizado em isolamento térmico de fornos
para confecção de material cerâmico, o principal objetivo do uso deste material é o
reforço ao isolamento térmico envolvendo diretamente ao circuito de aquisição;
• Aço Inox – Como o sistema será inserido em um ambiente de esterilização deve-se tomar
cuidado também com a contaminação. A cerâmica poderia ser usada com último
invólucro, porém, sua própria constituição é porosa e isto o torna mais susceptível a
contaminações por esporos bacterianos e demais microorganismos. O aço inox torna o
aparelho mais seguro quanto a esta questão;
• Silicone – Durante o processo de esterilização há muito vapor de água, e para vedar o
sistema completamente é necessário o uso de silicone nos conectores e onde houver
passagem de fios ou interfaces entre a cerâmica e exterior da caixa protetora.
Na figura 2 vemos um corte da seção vertical da parede da caixa protetora, onde se
percebe os materiais a serem empregados para a proteção do circuito, ou seja para o
encapsulamento do circuito.
Figura 2 – Corte Vertical do Material do Encapsulamento
Cobertura de Aço Inóx Manta de Cerâmica
Madeira
Externo
Interno
15
Circuito do Módulo de Aquisição
O Módulo de Aquisição dos sinais, que fica dentro da autoclave, é composto por cinco
blocos funcionais: sensores, circuitos de aquisição do sinal analógico, conversão analógica para
digital (A/D), processamento e comunicação infravermelho (IV).
O sinal será aquisicionado a cada intervalo de tempo, através dos sensores de pressão e
temperatura durante até duas horas, que é o tempo de um ciclo completo do processo de
esterilização em autoclaves.
Figura 3 – Visão Geral do Módulo de Aquisição
Sensores
O bloco do sensor é composto por um sensor de temperatura chamado Termopar do tipo
K que foi escolhido pela sua simplicidade de operação, boa linearidade, fácil aquisição, além de
ser um dos sensores preferidos nas aplicações industriais, seja pela sua robustez, seja pela
simplicidade de operação.
Não se obteve o mesmo sucesso na escolha do sensor de pressão. O mais próximo das
características desejadas foi o PTXX, porém, seu custo é muito elevado e não haveria espaço no
módulo de aquisição para ele. O maior problema quando se trabalha com sensores de pressão é a
falta de linearidade que estes apresentam em meios onde a temperatura varia demasiadamente.
Outras formas de sensoriamento com sensores do tipo extensômetros podem ser
estudados, porém desta forma o projeto torna-se menos abrangente, dependendo de
características de cada tipo de autoclave.
P
T
Processamento
Sensor
Circuito
Analógico de
Aquisição
Conversão
A/D
Microcontrolador
8051
Mem.
Módulo de
Comunicação
Infravermelho
16
Circuito de Aquisição do Sinal Analógico
Os valores adquiridos de pressão e temperatura necessitam de tratamento para que sejam
convertidas posteriormente sem maiores problemas. Este tratamento compreende a filtragem,
amplificação, ou adequação às escalas do conversor ADC0808 que será utilizado por oferecer a
possibilidade de utilização de até oito entradas analógicas para conversão, sendo que no caso
deste projeto serão utilizadas apenas duas entradas. Por este motivo o circuito de aquisição é
necessário ao sistema, para a compatibilização e adequação do sinal aquisicionado.
Conversão Analógica para Digital (A/D)
Os sensores das variáveis pressão e temperatura adquirem e retornam sinais analógicos
ao sistema. Como sabemos, os circuitos digitais necessitam trabalhar com variáveis binárias, ou
seja, para podermos processar o sinal depois de tratado pelo circuito de aquisição, devemos
convertê-lo para um sinal digital, que será processado pelo microcontrolador 8051.
Esta conversão é feita conforme descrição já citada, com a utilização do componente
ADC0808 que possui características desejáveis à implementação do projeto como velocidade de
conversão compatível à velocidade de operação do microcontrolador e quantidade de entradas
suficientes para conversão das variáveis.
17
Processamento dos Dados
Após a conversão, e com o auxílio do microcontrolador 8051, serão processados e
armazenados os dados necessários para depois enviá-los, ao módulo de gerenciamento composto
pelo computador.
Foi escolhido o microcontrolador 8051 por possuir muitas características que podem ser
exploradas para facilitar o trabalho de aquisição, armazenamento e envio, como por exemplo, a
utilização de comunicação serial e armazenamento dos dados em uma memória RAM.
Figura 4 – Bloco de Processamento do Módulo de Aquisição
Inicialmente a comunicação entre o módulo e o computador seria feita com
infravermelho, porém, devido a não mais necessidade em se manter um módulo dentro das
autoclaves optou-se pela alteração do projeto e a utilização de uma comunicação serial.
Neste bloco serão processadas as informações que compreendem o armazenamento e
posterior envio pela interface de comunicação para o computador externo. O processo de
aquisição dos dados e posterior envio para o módulo de gerenciamento será controlado pelo
software do módulo de aquisição que é desenvolvido para o microprocessador 8051, que é o
elemento processador deste módulo.
Comunicação entre o Módulo de Aquisição e Computador
Após a conclusão do processo de esterilização, os dados referentes à pressão e
temperatura, que foram aquisicionados e armazenados pelo módulo são então transmitidos ao
computador mediante uma comunicação serial. A interface de comunicação serial foi escolhida
por ser uma das formas mais simples de conectar os módulos, uma vez que a utilização desta
interface é muito simples tanto no microcontrolador como no computador.
Processamento dos dados
Microcontrolador
8051
Conversão A/D Comunicação Serial
Mem
18
3.2 Módulo de Gerenciamento
O módulo de gerenciamento é composto por dois blocos funcionais: a interface serial e o
computador.
Figura 5 – Aquisição do Módulo de Gerenciamento
Após completo o processo de aquisição e os dados forem transferidos ao computador,
começa a fase de análise e demonstração através do software do SMPTA. Nele os gráficos de
temperatura e pressão demonstrados no domínio do tempo, passarão ao usuário as informações
necessárias à análise do processo.
O Software de Gerenciamento
O software é desenvolvido em linguagem C, com o auxilio da ferramenta C ++ Builder,
como pode ser visto na figura 6, contém gráficos de temperatura e pressão, adquiridos durante o
monitoramento, demonstrando a confiabilidade do processo de esterilização. Possui mecanismos
para configuração do módulo de aquisição, tais como taxa de amostragem e tempo de duração do
processo, além de gerar um arquivo de log com informações do processo de aquisição.
19
Figura 6 – Layout do Software do Módulo de Gerenciamento do SMTPA
Seu funcionamento é bastante simples, após o módulo de aquisição fisicamente conectado
ao computador e carregado o software no computador, através do software de gerenciamento é
possível a conexão entre os módulo através de uma das portas seriais COM1 ou COM2 e assim
enviar as configurações e requisições ao módulo para que o mesmo efetue o monitoramento do
processo de esterilização ou envie os dados já lidos em um processo anterior.
Quando iniciado, verifica se é possível conectar com a porta serial, caso isto não seja
possível alerta ao usuário com um aviso. Quando iniciado corretamente, setando-se os campos
“porta serial”, com a porta de comunicação que se deseja utilizar (COM1 ou COM2) e a
velocidade para 19200bps, para que haja compatibilidade com a velocidade de transmissão
configurada no microcontrolador, o computador estará apto a comunicar-se com o módulo de
aquisição.
Depois de devidamente configurado o módulo de aquisição, com o tempo de
amostragem, e tempo total de aquisição, assim que pressionado o botão “Ler Sensores” o
software envia uma requisição ao microcontrolador que por sua vez, responderá com uma
confirmação do recebimento. Caso o software receba esta confirmação dará o aviso de que o
módulo começou a aquisição dos dados.
Caso o usuário tente enviar qualquer outra requisição ao módulo, depois de iniciado o
processo de aquisição pelo módulo, o software mostrará um aviso de que “Não foi possível a
conexão com módulo”.
20
Quando o tempo total esgotar-se com o final do ciclo de esterilização o módulo acenderá
um LED verde e estará habilitado para enviar os dados coletados.
Para receber os dados do módulo de aquisição o software possui a opção “Receber” que
quando ativada enviará ao módulo de aquisição uma requisição de envio dos dados. Se o
software receber uma confirmação enviada pelo módulo, este enviará todos os dados colhidos
durante o tempo pré-configurado pelo usuário. Então o software plotará estes dados em um
gráfico para observação do usuário e fornecer informações sobre a validação ou não do processo
de esterilização.
21
4. Projeto
O processo de esterilização durará 2 horas e 30 minutos na primeira utilização e 2 horas
para as demais etapas. A Autoclave utilizada para testes e elaboração do equipamento será do
tipo Automática Horizontal AC – 96L com porta automática e com microprocessador, com
capacidade de 96 litros, que está no laboratório de odontologia do UnicenP.
O módulo de aquisição ficará por este período dentro da autoclave, sob influência de
temperatura, pressão e outras intempéries do sistema. Com isto a preocupação maior advém das
indagações de quais sensores utilizar, quais materiais de isolamento serão mais apropriados ou
como se dará a comunicação. Para explanar melhor estas questões dividiremos o projeto em três
grandes tópicos: Módulo de Aquisição, Módulo de Gerenciamento e Comunicação.
4.1 Módulo de Aquisição
A cada minuto, através dos sensores de pressão e temperatura e durante o tempo pré-
configurado, é monitorada a pressão e a temperatura do interior da autoclave. Estes dados
amplificados e filtrados para serem convertidos pelo circuito A/D (figura 7).
Figura 7 – Fluxo dos Sinais no Módulo de Aquisição
Serão armazenados a cada intervalo te tempo dois bytes: um byte para a temperatura e um
byte para a pressão, o fluxograma deste módulo pode ser observado na figura 8, isto porque a
temperatura pode variar de 0ºC a 167ºC, e a pressão pode ser expressa em atm (atmosfera) o que
pode também ser armazenado em apenas um byte de memória. Fazendo uma rápida conta chega-
se ao seguinte resultado:
IV
Circuito Emissor
Infravermelho
Sensor T
Sensor P
ADC
Conversor Analógico
Digital
8051
RAM
Circuito de
Aquisição
22
Duração do processo de esterilização: 120 min utos;
Amostragem: Pelo menos uma a cada minuto;
Quantidade de Bytes por amostra: 2 Bytes (1 Byte para temperatura e 1 para pressão).
Logo, a quantidade de memória necessária é igual à:
Qtde. de Memória = 120 (min) * 1 (amostra/min) * 2 (Bytes/amostra)
Ou seja,
240 Bytes por processo de amostragem da esterilização.
Com isto, chega-se a conclusão de que a melhor opção é a utilização do microcontrolador
8051 (ANEXO 7), devido a possibilidade de uso de uma RAM externa para o armazenamento
das amostragens.
Como conversor analógico/digital (A/D) será utilizado o ADC 0808, ANEXO 1, que
possui uma resolução de 8 bits, com um tempo de 100µs e possibilita a seleção de até 8 fontes de
entrada, o que é necessário para este projeto, pois utilizam-se duas fontes de dados (pressão e
temperatura). Na figura 8 pode ser observado o fluxo da informação do módulo de aquisição.
Figura 8 – Fluxograma do Circuito do Módulo de Aquisição
23
4.2 Módulo de Gerenciamento
O software é desenvolvido em linguagem C, utilizando a ferramenta Borland C++
Builder para se obter maiores recursos gráfico da linguagem. Na figura 9 tem-se o fluxograma
básico do software do módulo de gerenciamento do SMPTA.
Figura 9 - Fluxograma do Módulo de Gerenciamento
O software do módulo de gerenciamento é executado na plataforma Windows 98 e/ou
2000, notando-se o fato de que para o uso em Windows 2000 poderá ser necessário um software
auxiliar, para a utilização da porta paralela via device driver. Isso se deve porque nos sistemas
operacionais Windows 2000/NT e XP a Microsoft, por motivo de segurança, proíbem o acesso
às portas de E/S (Entrada e Saída) no modo usuário. Deixando as portas de E/S abertas para
escrita e leitura se cria uma grande falha de segurança no seu sistema. Devemos ajustar
cuidadosamente os endereços de E/S que desejamos utilizar. Neste caso são de 0x378h a
0x37Ah (os registradores da porta paralela LPT1 mais comum). Para fazer isso podemos
escrever um device driver ou utilizar um de terceiros que faça esse ajuste, utilizaremos neste
projeto a segunda opção, por ser menos trabalhoso e mais eficiente. Este software chamado
“User Port” pode ser encontrado facilmente na Internet sendo freeware [MEC].
24
As configurações mínimas do computador que executará o software do módulo de
gerenciamento, são a de um Pentium 166 MHz com 32MB de memória RAM, porta paralela,
CDROM, teclado, mouse, placa de vídeo 2MB e Windows 98 ou superior.
Para a interconexão do circuito de infravermelho com o computador, será utilizada a
porta paralela, pois, nem a quantidade nem a velocidade dos dados justificam o uso de uma
interface mais veloz, já que a quantidade de informação transferida do módulo de aquisição ao
computador não é muito grande, também por este motivo, não há necessidade de uma maior
velocidade na comunicação.
Um receptor infravermelho ficará conectado a porta paralela do computador. O circuito
infravermelho, como pode ser visto na figura 10, é muito simples de ser implementado, e
segundo testes feitos no laboratório de Ato Desempenho do curso de Engenharia da Computação
do UnicenP, e com alimentação de 5Volts pode operar a até 30 cm de distância sem perdas de
pacotes de dados.
Figura 10 – Circuito para Comunicação Infravermelho
A entrada deste circuito é o pino 2 (TX) da porta de comunicação do microcomputador e
o pino 3 (RX) é conectado à saída. As conexões terra são ligadas ao terra comum da serial
correspondente ao pino 5 (GND). Exatamente as mesmas conexões são feitas na placa do
microcontrolador apenas invertendo-se os pinos RX e TX um pelo outro para que a comunicação
possa ocorrer sem problemas.
B) Receptor A) Emissor
25
4.3 Comunicação Infravermelho
Em virtude das altas temperaturas que podem chegar a 200ºC, deve-se tomar um cuidado
especial na utilização de conectores no aparelho, pois, estes podem facilmente aquecer e
transferir o calor para dentro do circuito. Por este motivo toda comunicação deverá ser realizada
via infravermelho, assim, eliminam-se conectores diminui a transferência de calor para o
circuito.
Por uma pequena janela de vidro seriam transmitidas e recebidas as informações de
configuração assim como os dados adquiridos.
Esta solução pode ser alterada durante o processo de implementação devido à dificuldade
em construir-se uma caixa protetora suficientemente isolante para esta aplicação.
Protocolo de Comunicação
A comunicação entre o módulo de aquisição e o de gerenciamento é feita por meio de
uma interface serial e a transmissão e recepção ocorre utilizando-se um protocolo de
comunicação, como o layout visto na figura 11, e o protocolo composto por dois campos básicos
(Configuração e Dados). Estes campos podem ser visualizados como pacotes de comunicação e
cada um deles com o tamanho de 1 byte.
Figura 11 – Protocolo de Comunicação
Onde :
• Configuração - É a configuração na qual o equipamento deve ser preparado para o
processo de aquisição. Por exemplo, taxa de amostragem, tempo total de aquisição. O
tamanho deste campo é de 1 byte;
• Dados - Todos os dados da amostragem (temperatura e pressão). Neste campo serão
utilizados 2 bytes.
Dados Configuração
26
Esta configuração obedece à comunicação configurada no software e no módulo de
aquisição, sendo a comunicação toda baseada em pacotes de informação (bytes) com esta
configuração, com exceção de quando o módulo envia todos sos dados adquiridos de uma
aquisição, neste caso apenas os dois primeiros bytes da comunicação são configurados desta
forma, o restante são apenas bytes de dados seqüencialmente enviados.
27
5. Implementação
Com o projeto estabelecido, a implementação foi dividida em quatro módulos de
hardware dependentes entre si:
- Primeiramente foi desenvolvido o circuito de conversão dos dados, o primeiro destes
módulos a ser implementado conforme especificado anteriormente;
- Em seguida, foi implementado um circuito que faz o endereçamento para que o 8031
identifique que os dados disponibilizados no barramento são para ele. Estes dados
adquiridos são armazenados pelo microcontrolador 8031 em uma memória RAM
modelo 62256;
- A terceira implementação foi um circuito para dar suporte a aquisição da temperatura
pelo termopar;
- E finalmente, uma fonte para alimentação para todos os módulos que fornece as
tensões de +5V e -5V, uma vez que o circuito de amplificação possui como um de
seus componentes o INA118, que exige alimentação com tensões negativas.
5.1 Conversão A/D
Sendo as grandezas físicas temperatura e pressão adquiridas em modo analógico,
inevitavelmente teremos que converte-las para uma grandeza binária para desta forma fazer o
interfaceamento dos dados com o microcontrolador 8051. Conforme especificado, para a
conversão utilizou-se o componente ADC0808 que pode receber até oito fontes de informação
analógica para a conversão.
Para a conversão A/D utilizando-se o componente ADC0808 é necessária a construção de
um circuito suporte ao componente conforme pode ser observado na figura 12 para ser gerado o
clock de 10KHz.
28
Figura 12 – Esquemático do Circuito de Conversão A/D
Para o funcionamento correto do conversor é necessário aplicar um sinal de clock 10KHz
no pino 10 do ADC0808, este sinal é gerado por um cristal adequadamente arranjado em um
circuito que pode ser visto no canto superior direito da figura 12 .
Neste circuito, o pino EOC (Enable Output Conversion) que habilita a conversão está
diretamente ligado ao START (Inicio da conversão) e ao ALE (Adrees Latch Enable), assim, o
ADC0808 fica sempre convertendo, porém, apenas quando recebe um pulso proveniente da
lógica de endereçamento no pino EO (Enable Output) é que os dados são liberados para o
microcontrolador.
Neste circuito a preocupação com o tempo de duração dos pulsos foi primordial para o
sucesso da aquisição. Devido à isto, muito tempo foi dedicado ao estudo da freqüência do clock
para que o pulso no pino EO fosse suficientemente grande para os dados serem disponibilizados
ao barramento de dados do microcontrolador. Da mesma forma a preocupação com o tempo de
permanência destes dados no próprio barramento de dados do 8031, para isto foi adicionado um
Latch à saída dos dados convertidos pelo ADC. Porém, verificou-se posteriormente que não
havia a necessidade deste componente, pois, os dados possuem um tempo de duração de pulso
suficientemente grande para a “coleta” dos mesmos pelo microcontrolador.
Entradas dos Sensores
Entradas do Sinal de EOC
GND
Saídas do ADC (Dados Convertidos)
Circuito para gerar a frequência
VCC 5V
29
5.2 Endereçamento
Para que haja sincronismo entre o instante em que os dados são disponibilizados no
barramento e o momento em que estes são lidos pelo microcontrolador, foi implementado uma
lógica de endereçamento, que nada mais é que uma espécie de “chave” que quando lê o endereço
especificado do barramento disponibiliza os dados adquiridos nele para armazenamento na
memória RAM.
O barramento de endereçamento do 8051 possui 16 bits, sendo que para este projeto o
endereço escolhido é o de #8000h (em hexadecimal) que é um dos endereços mais adequados
por não possuir nenhum periférico atrelado a ele. Assim utilizou-se, para a lógica de
comparação, dois CIs 74ALS688 que são comparadores de 8 bits cada conforme pode ser
observado na figura 13. Estes comparadores são de fácil utilização, sendo apenas necessário
aterrar os pinos de comparação quando o valor com o qual deseja-se comparar é zero ou colocar
em VCC quando o valor de comparação for 1, por exemplo, se o endereço for #11111111b todas
as saídas de comparação do 74als688 serão colocadas em nível lógico alto e quando as entradas
corresponderem a as saídas, este componente gera um pulso em nível lógico baixo indicando que
o endereço de comparação corresponde ao endereço de entrada.
Desta forma quando o endereço especificado for colocado no barramento de endereços
do microcontrolador através da instrução movx A, @DPTR sendo que em DPTR está o valor do
endereço especificado, a lógica combinacional juntamente com o sinal de read (leitura) então
ativará a liberação dos dados ao barramento por parte do ADC0808, através da saída observada
em destaque na figura 13 conectada ao pino EOC do ADC0808 que quando em baixa habilita os
dados ao barramento.
30
Figura 13 Esquemático da lógica de Endereçamento
5.3 Aquisição
A aquisição é composta de várias etapas que vão desde os circuitos de aquisição já
mencionados até a transmissão dos dados ao computador.
O circuito de aquisição depende de várias características do sensor escolhido, tais como
linearidade, faixa de tensão de operação, entre outras. O termopar tipo k fornece uma boa
linearidade conforme pode ser observado na figura 14, e assim não foram encontradas maiores
dificuldades em sua implementação.
Temperatura x Tensão
0
50
100
150
Vout
0,889
0,990
1,735
1,970
2,025
2,090
2,158
2,222
2,283
2,379
Tensão (V)
Tem
per
atu
ra (
C)
Figura 14 – Linearidade do termopar – Tensão x Temperatura
31
Para chegar à tabela do ANEXO 4, que originou o gráfico acima, foi medida a tensão na
saída do circuito de amplificação correspondente a um aquecimento no Termopar, o circuito de
amplificação pode ser observado na figura 15.
O aquecimento no termopar foi obtido com auxílio de uma estação de solda, um
dissipador de alumínio e pasta térmica. Com uma furadeira com broca para metal foram feitos
dois orifícios no dissipador, um para os dois Termopares acoplados com pasta térmica para uma
melhor distribuição da temperatura e outro para a ponta da estação de solda, já que a mesma
fornecerá a temperatura ao sistema.
Os dois Termopares são necessários, pois, em um deles faz-se a aquisição da tensão e no
outro um comparativo com a temperatura, e desta forma pôde-se relacionar a tensão de saída
com a temperatura. Então a estação de solda aquece o dissipador de alumínio que transfere o
calor aos dois sensores de temperatura ao mesmo tempo, neste caso a pasta térmica ajuda muito
na transmissão do calor do metal aos Termopares. Como a estação de solda possui controle de
temperatura, não foi difícil aumentar esta temperatura de modo gradativo para que fosse possível
a observação da tensão de saída, e assim, relacionando-a com a temperatura medida no segundo
termopar acoplado a um multímetro.
Para o circuito de amplificação utilizou-se o amplificador INA118 por ser de fácil
implementação, pois, não necessita de grandes circuitos de apoio, além de possuir alto ganho e
baixa amplificação de ruído. Nele foi aplicado um ganho de 675 vezes utilizando para isto um
Trimpot de 200 ohms. Este ganho foi calculado a partir das seguintes informações:
Primeiramente foram feitos testes para saber a linearidade e até quantos graus Celsius o
Termopar responderia com uma tensão adequada. Como não foi possível, com a técnica
mencionada acima, atingir mais do que 170 graus Célcius, os seguintes cálculos foram feitos
para chegar a atual escala de fundo:
A temperatura mínima para a qual há uma resposta em tensão é a de 24°C que
corresponde a 0,1mV de tensão na saída do termopar (sem amplificação).
A temperatura máxima que foi possível atingir com o método foi a de 170°C que
correspnde a uma tensão de 7,3mV de tensão de saída do termopar.
Com estes valores chega-se ao seguinte cálculo:
A = 5V / 7,3mV.
32
Então obtemos A = 685, este valor é o ganho “A” que deve ser aplicado ao circuito de
amplificação, é utilizado para adequar uma escala de 0 à 5V. Logo, como os experimentos
indicaram, chegamos a fórmula que resulta em um ganho de 685 vezes. Está amplificação é
necessária para que seja elevada a tensão fornecida pelo Termopar a faixa de conversão pelo
ADC. Considerando-se 5V como sendo a saída máxima da amplificação para que o ADC 0808
que corresponderá a #255d e adequada a esta nova escala será equivalente à temperatura de
175°C. Com a amplificação do sinal de acordo com a tensão mínima e máxima fornecidas pelo
Termopar, e através da medição das temperaturas adquiridas temos a tabela de dados (ver
ANEXO 4).
Segue o cálculo para obtenção do valor do resistor (RG) responsável pelo ganho aplicado
ao INA118:
- Segundo o Datasheet do INA118: A = 1 + 50K?/RG
- Como A (ganho) é igual a 685 temos que: 685 = 1 + 50K?/RG
- Obtendo-se: RG˜ 7 6?
Figura 15 – Circuito para a Aquisição do Sinal
O INA também necessita de uma fonte que forneça +5V e -5V, assim foi construída a
fonte assimétrica que utiliza duas baterias de 9V reguladas com os componentes LM7805 e
LM7905 que nada mais são que reguladores de tensões. A saída Vo então amplificada é
33
conectada ao pino InPut do ADC e assim procede-se a conversão, este circuito pode ser
visualizado no ANEXO 3.
5.4 Microcontrolador 8031
E, finalmente, onde os dados são manipulados e armazenados. O microcontrolador possui
um papel fundamental, pois é ele que controlará desde a aquisição e armazenamento até o envio
dos dados ao computador.
O microcódigo consiste basicamente em um eterno loop que espera a confirmação de
aquisição dos dados e quando processada a coleta envia estes dados ao computador através da
porta serial (com1 ou com2) e espera nova ordem de aquisição, isto pode ser visto no código em
ANEXO 5.
A velocidade de comunicação pela serial setada no microcontrolador é a de 19200 bps.
Esta velocidade é normalmente utilizada por ser de fácil configuração e por não apresentar tantos
erros de compatibilidade de conexão, assim, esta velocidade também deve ser utilizada nos
software de comunicação residente no computador caso contrário não haverá sincronismo entre
os equipamentos. Também para a utilização da comunicação serial é necessário setar algumas
interrupções no microcontrolador, tais interrupções gerenciam taxas de transmissão (timer 0 no
modo 1) e temporização (timer 1). O timer 1 é utilizado para gerar a interrupção para a contagem
do tempo.
O código do programa do módulo de aquisição, feito em assembly, inicia setando as
interrupções comentadas acima, logo depois, entra em um modo de espera onde aguarda uma
interrupção da serial para continuar. Esta interrupção é a chegada de um byte pela serial, quando
este chega, o código verifica se ele é #FFh ou #AAh.
Caso o dado que chegou for #FFh indica que o microcontrolador deve enviar os dados
aquisicionados que foram armazenados na RAM, para isto o envia #4Bh e pula para o label
“enviaram” que envia as 255 posições de memória e logo em seguida volta ao label “espera”
para receber novas instruções. O valor #4Bh foi escolhido por ser equivalente a letra “J” em
código ASCII , desta forma é mais fácil trata-lo imprimi-lo no software de gerenciamento.
Caso o dado que chegou seja #AAh o programa pula para o label “next” onde envia o
valor #4Ah (equivalente a letra “J” em código ASCII) para o computador, indicando que o dado
foi realmente lido e o código prossegue. Logo em seguida fica a espera do tempo total de
aquisição que logo que é recebido é armazenado na posição #24h da memória interna do
microcontrolador e logo em seguida reenviado ao computador para que o usuário possa
34
conformar este valor. Então o código aguarda o tempo de amostragem que quando recebido é
armazenado na posição #25h da memória interna do microcontrolador e reenviado para que o
usuário confirme este valor também. Depois desta configuração o microcontrolador começa a
aquisição dos sensores respeitando os valores dos tempos armazenados nas posições #24h e
#25h da memória do microcontrolador.
A comunicação com o computador foi feita com um cabo seria l, pois houve muitos
problemas com a implementação do circuito infravermelho não sendo possível implementá-lo a
tempo da entrega do projeto. Este circuito, apesar de bastante simples, funcionou apenas na
protoboard e quando colocado na porta de comunicação do computador ou do microcontrolador
não transmite as informações adequadamente.
Os testes para a verificação do funcionamento do circuito IV foram feitos na protoboard ,
colocando-se, com o auxílio de um gerador de função, um pulso de clock na entrada do circuito
(ver figura 10) e analisando com um osciloscópio a resposta no circuito de recepção.
Na protoboard a recepção do sinal emitido pelo circuito de emissão mostrou-se perfeita a
até uma distância de 30cm podendo esta distância ser aumentada se a tensão de alimentação dos
circuitos de emissão e recepção for aumentada que nestes testes foram de 5Volts, pois é a
alimentação padrão do sistema, porém, a alimentação adequada e recomendada para este circuito
é de 9Volts.
5.5 Software para o Computador
O software para o computador é simples e direto, sem muitas interfaces gráficas ou
recursos avançados, o código fonte pode ser observado no ANEXO 6.
Quando iniciado, verifica se é possível conectar com a porta serial, caso isto não seja
possível alerta ao usuário com um aviso. Quando iniciado corretamente, setando-se os campos
“porta serial” com a porta de comunicação que se deseja utilizar (Com1 ou Com2) e a
velocidade para 19200bps, para que haja compatibilidade com a velocidade de transmissão
configurada no microcontrolador, o computador estará apto a comunicar-se com o módulo de
aquisição.
Quando pressionado o botão “Ler Sensores” o software envia uma requisição #AAh ao
microcontrolador que responderá com o número #74d (decimal) que aparecerá na tela do
software como a letra “J” que é o caractere correspondente na tabela ASCII, caso o software
receba esta confirmação dará o aviso de que o módulo começou a aquisição dos dados.
35
Caso o usuário tente enviar qualquer outra requisição ao módulo, depois de iniciado o
processo de aquisição pelo módulo, não obterá resposta e o software mostrará um aviso de que
“Não foi possível conectar-se ao módulo”.
Quando pressionado o botão “Receber” o software enviará uma requisição #FFh ao
módulo e se receber #75d, que corresponde à letra “K” em ASCII, lerá os próximos 10 bytes de
dados da serial.
36
6. Testes
Durante a implementação, vários testes foram sendo realizados para assegurar que os
módulos estavam sendo implementados corretamente. Principalmente na comunicação serial é
necessária uma metodologia bem definida para implementação, mas todas as etapas forma sendo
implementadas e testadas para averiguar-se sua real funcionalidade.
Nos testes da utilização da serial com o microcontrolador foi utilizado o HiperTerminal,
pois, este programa já está consolidado e sabe-se que funciona sob quaisquer circunstâncias, não
havendo o risco de algum problema no software ser o causador de uma eventual falha na
configuração do microcontrolador para a utilização da serial. Com este programa e as
configurações do código do microcontrolador setadas, foi possível ler os valores adquiridos pelo
módulo de aquisição e imprimi-los na tela do HyperTerminal. Assim, foi possível verificar a
estabilidade, linearidade e muitas outras variantes às quais o sistema dependia.
Nos testes para validar se a temperatura amostrada no computador são equivalentes as
temperaturas reais medidas, foram utilizados dois sensores de temperatura, um para o módulo de
aquisição e outro para um termômetro digital, este teste pode ser observado na figura 16 . Um
destes sensores apenas lê a temperatura ambiente e mostra no display do multímetro. O outro lê
a temperatura ambiente para ser mostrada no software de gerenciamento, deste modo, foi
comparado se o valor da temperatura lida do multímetro é equivalente ao valor demonstrado no
computador.
Figura 16 – Teste de Aquisição da Temperatura
Verificou-se que os dados são equivalentes, com uma variância de 3 graus, para mais ou
para menos, porém, esta diferença não influenciaria no resultado, pois as variações da
temperatura não são tão bruscas a ponto de ser necessário uma faixa de operação tão sensível.
37
Para saber se a conversão do sensor de pressão se daria de forma coerente, foi utilizado
um potenciômetro na segunda entrada do conversor ADC0808 e com este potenciômetro pôde-se
observar e simular a resposta de um sensor de pressão adequadamente arranjado nas escalas de
0V a 5V.
38
7. Resultados
Os gráficos amostrados e dados obtidos pelo software devem ser analisados pelo próprio
usuário, que pode comparar as informações adquiridas de um processo de esterilização qualquer
com as de um monitoramento de um processo de esterilização validado, assim, podem ser tiradas
conclusões a respeito da esterilização.
Os objetivos de adquirir, tratar e amostrar dados dos sensores foram alcançados. O
módulo de aquisição lê os sensores, grava em uma memória interna e transfere estas informações
ao computador com segurança.
A escolha do sensor de pressão é muito delicada e deve ser realizado um estudo a parte
para sua implementação, pois depende de fatores como tipo de autoclave e acesso físico aos
locais onde podem ser inseridos. Assim, a implementação deste módulo ficou pendente já que
muitas características necessárias ao sensor não puderam ser analisadas.
Já o sensor de temperatura foi implementado com sucesso. Apesar de o ganho aplicado
ao sinal de resposta do sensor ser muito alto, foi possível a implementação com bons resultados
de linearidade, como pode ser observado na figura 17 , onde é demonstrada a tensão de resposta
do sensor enquanto a temperatura varia.
Temperatura x Tensão
0
20
40
60
80
100
120
140
160
Vout
0,889
0,990
1,735
1,970
2,025
2,090
2,158
2,222
2,283
2,379
Tensão (V)
Tem
per
atu
ra (C
)
Figura 17 – Linearidade do Termopar
Também se observou que o sensor responde com tensões negativas para temperaturas
abaixo de 20°C. Como esta faixa de temperatura não é de grande importância ao sistema, não foi
39
implementado nenhum circuito adicional para o tratamento deste detalhe. Para a amplificação do
sinal para que o mesmo pudesse ser utilizado pelo ADC0808 foi utilizado um amplificador
operacional, o INA118, que configurado adequadamente aplica um ganho de 687 vezes à entrada
do sinal e com isto foi possível utilizar o sinal digitalmente contornando o problema.
Como se pode observar na figura 18 os resultados dos dados adquiridos podem ser
plotados em tempo real nos gráficos de temperatura e presão.
Figura 18 – Resultados de Teste
40
8. Conclusão
A idéia do projeto é empolgante, porém, alguns elementos não são possíveis de
implementação, ao menos não em um ambiente universitário, pois dependem de outros tipos de
recursos tecnológicos. A caixa protetora é um destes casos não sendo possível sua
implementação. Por isto, o projeto foi alterado para poder ter sua implementação finalizada.
Nestas alterações o módulo agora fica fora da autoclave e os sensores na periferia externa da
cuba da autoclave, que é onde os materiais que serão esterilizados são depositados. Neste caso
existem muitas variantes para a escolha do sensor de pressão, pois cada tipo de cuba é fabricada
de acordo com as técnicas de cada fabricante, onde o formato e os materiais utilizados podem ser
diferentes causando grandes alterações na forma de sensoriamento, já que a idéia é medir a
deformação das paredes da cuba para podermos assim estabelecer a pressão interna da autoclave.
No sensor de temperatura não há esta preocupação, já que o mesmo é capaz de
aquisicionar sem estas preocupações, sendo apenas necessário um isolamento do termopar para
que não entre em contato com partes metálicas.
Como se identificou à comunicação por infravermelho como não sendo primordial para o
funcionamento do projeto, esta foi substituída pela comunicação através de um cabo serial,
alcançando os mesmos objetivos. Apesar desta alteração, foram feitos testes em protoboard com
o circuito do infra-vermelho, estes testes demonstraram que o circuito possui funcionamento
satisfatório, porém, na implementação em conjunto com o computador e o microcontrolador não
se obteve o mesmo sucesso. Assim, o módulo de comunicação por infravermelho não foi
concluído ficando a comunicação do módulo de aquisição com o computador por cabo serial.
Desde o projeto até a implementação, foram adquiridas informações para que o projeto
pusesse atingir seus objetivos que eram aquisicionar, tratar, e amostrar dados relevantes aos
processos de esterilização. Foi necessário o estudo dos processos de esterilização, de materiais
para isolamento, de sensores e técnicas para a aquisição e tratamento dos sinais, para se
implementar um sistema capaz de fazer, adequadamente, as tarefas a que se propunha fazer. Os
resultados obtidos satisfazem as necessidades da implementação, o sistema pode adquirir, tratar
e amostrar dados referentes aos processos. Porém, ainda não é um sistema completo e precisa de
muito estudo e implementações para se tornar um produto verdadeiramente comercial.
O equipamento proposto é inovador e não possui similares nos mercados aos quais se
pretende atingir (médico-hospitalares). Isto torna o desenvolvimento deste sistema muito
interessante, pois, com um custo muito baixo é possível desenvolver um dispositivo capaz de
41
satisfazer as necessidades de um mercado ainda não totalmente explorado alcançando um
objetivo ainda maior que é a comercialização do SMPTA como um produto.
Este projeto tem grande aplicabilidade em autoclaves que não possuem um sistema de
monitoramento das variáveis pressão e temperatura, normalmente os modelos mais antigos e de
menor custo.
42
9. Bibliografia
[Smith - 2001] Smith, H. W. Treated Spices Reduce Spoilage. Food Ind., New
York, v.12, p. 50-72, 2001.
[APECIH - 1998] Associação Paulista de Estudos e Controle de Infecção Hospitalar
– APECIH, 1998;
[Dabi - 2003] Dabi Atlante, http://www.dabiatlante.com.br/
frameset.asp?principal=produtos/ produtos, 2003;
[CIH - 2003] CIH – Controle de Infecções Hospitalares, http://www.cih.com.br/
esterilizacao.htm, 14 de maio de 2003;
[RSB - 2003] RS do Brasil, http://www.rsdobrasil.com.br/ 10 de março de 2003;
[MEC - 2003] Mecatônica Fácil,
http://www.editorasaber.com.br/mecatronicafacil/ downloads.html,
14 de maio de 2003.
[Nicolsoi - 2000] Nicolosi, Denys Emilio Campion, Microcontrolador 8051
detalhado, São Paulo, Editora Érica, 2000.
[Silva - 2000] Silva Junior, Vidal Pereira da, Aplicações práticas do
microcontrolador 8051, São Paulo, Érica, 2000.
43
10. Anexos
Anexo 1 – Datasheet do ADC 0808;
Anexo 2 – Datasheet do INA 118;
Anexo 3 – Circuito do Conversor AD e Amplificador;
Anexo 4 – Tabela de valores para o Termopar;
Anexo 5 – Código do Programa do Módulo de Aquisição em Assembly;
Anexo 6 – Código do Software de Gerenciamento;
Anexo 7 – Esquemático do 8051;
Anexo 8 – Artigo;
Anexo 9 – Manual de Serviço;
Anexo 10 – Manual do Usuário.
44
Anexo 1 - Datasheet do ADC0808
45
Anexo 2 - Datasheet do INA 118
46
Anexo 3 – Circuito do Conversor AD e Amplificador
47
48
Anexo 4 – Tabela de valores do Termopar
49
Temperatura x Tensão
Temper
atura (°C)
Tens
ão (Volts)
Tempe
ratura (°C)
Tensão (Volts) Tempe
ratura (°C)
Tensão (Volts)
30 0,859 70 1,999 110 2,263
31 0,865 71 2 111 2,27
32 0,871 72 2,005 112 2,28
33 0,877 73 2,01 113 2,283
34 0,883 74 2,015 114 2,286
35 0,889 75 2,025 115 2,283
36 0,895 76 2,035 116 2,298
37 0,901 77 2,04 117 2,3
38 0,907 78 2,045 118 2,308
39 0,913 79 2,05 119 2,315
40 0,919 80 2,056 120 2,32
41 0,925 81 2,062 121 2,39
42 0,931 82 2,065 122 2,34
43 0,95 83 2,07 123 2,36
44 0,96 84 2,08 124 2,37
45 0,99 85 2,09 125 2,379
46 1,01 86 2,097 126 2,388
47 1,02 87 2,107 127 2,398
48 1,05 88 2,109 128 2,407
49,8 1,07 89 2,115 129 2,417
50 1,4 90 2,12 130 2,426
51 1,57 91 2,133 131 2,436
52 1,65 92 2,146 132 2,445
53 1,68 93 2,146 133 2,455
54 1,712 94 2,115 134 2,464
55 1,735 95 2,158 135 2,474
56 1,76 96 2,165
57 1,772 97 2,17
58 1,805 98 2,18
59 1,82 99 2,185
60 1,846 100 2,19
61 1,9 101 2,195
62 1,93 102 2,2
63 1,96 103 2,22
64 1,994 104 2,216
65 1,97 105 2,222
66 1,975 106 2,23
67 1,98 107 2,235
68 1,982 108 2,24
69 1,995 109 2,25
50
Anexo 5 – Código do programa do Módulo de
Aquisição em Assembly
51
;///////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////
;//Este prog faz a comunicação e aquisições de temperatura e pressão //
;//qdo recebe FF pela serial descarregar os dados adquiridos //
;//qdo recebe AA pela serial vai para o loop de aquisiçao //
;//P1.0 eh o sinal que ira´ habilitar o sensor que será lido temperatura/presão; //
;//P1.1 eh o sinal que ira ́habilitar o led verde //
;//P1.2 eh o sinal que ira´ habilitar o led vermelho //
;///////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////
org 00h
sjmp inicio
org 0bh
clr TR0
mov TH0,#3Ch ;seta o valor inicial dos regs do Timer0 com 55535
mov TL0,#B3h
setb TR0
call conta ;interrupçao para a contagem do tempo
reti
org 23h
call rotser ;rotina de recepáo serial
Reti
org 30h
conta:
inc 20h ;incrementa a contagem dos segundos
mov R2,20h
CJNE R2,#20d,ret ;verifica se a contagem chegou a 100
mov 20h,#00h ;se chegou limpa a contagem e
inc 21h ;incrementa o segundo
mov R2,21h
CJNE R2,#60d,ret ;verifica se o segundo chegou a 60
mov 21h,#00h ;se chegou limpa os segundos e
inc 23h ;incrementa contador q verificará se já deu o tempo de amostragem
inc 22h ;incrementa o minuto
mov R2,22h
mov A,22h
mov B,25h ;verifica se deu o tempo de amostragem
div AB
mov A,B
jnz ret
mov 22h,#00h ;se chegou limpa o minuto e
mov R5,#00h ;anula a espera de 1 minutos no retorno
ret:
ret
52
rotser: ;move 00h para R0 para ver se está recebendo algo ou continua esperando
mov A, #00h
mov A, SBUF
mov R3, #00h
mov R3, A ; salvando o valor recebido A em R3
mov R0, #00h
clr ri
clr c
ret
inicio:
mov 24h, #00h ;zera tempo total e tempo de amostragem
mov 25h, #00h
espera:
mov 20h, #00h ;zera seg, min, hora
mov 21h, #00h
mov 22h, #00h
mov 23h, #00h
mov R1, #00h ;zera posição inicial da temperatura e presão
mov TMOD,#00100000b ;setando valores para uma taxa de 19200bps
mov TH1,#0FDh
mov TL1,#0FDh
mov SCON,#01010000b
mov pcon,#10000000b
setb tcon.6
mov IE,#10010000b
mov P1,#00000000b ;P1.0 será resetada
clr P1.2 ;apaga led de ocupado
setb P1.1 ;acende led verde indicando que o módulo está habilitado para receber
requisição
mov r0, #01h
cjne r0, #00h, $ ;entra em modo de espera até receber algo
mov R2, #FFh ;compara se o valor lido é FF se nao for pula para next
subb A, R2
cjne A, #00h, next
mov A, #4Bh ;envia #75d para confirmação de recebimento
;call envia
clr ti
mov SBUF,A
jnb ti,$
clr ti
ljmp enviaram
53
tespera: ;pulo temporário pois CJNE não é um "large jump"
ljmp espera
next:
mov A, R3 ;coloca novamente o SBUF em A para comparar
cjne A, #AAh, nexti ;se A == AAh começa aquisição
mov A, #4Ah ;envia 4Ah para a confirmação de recebimento
clr ti
mov SBUF,A
jnb ti,$
clr ti
nop
nop
nop
mov r0, #01h
cjne r0, #00h, $ ;entra em modo de espera até receber algo
mov 24h, #00h
mov 24h, R3 ;armazena na posição #24h da mem interna o
mov A, 24h ;tempo total de aquisição
clr ti
mov SBUF,A
jnb ti,$
clr ti
nop
mov r0, #01h
cjne r0, #00h, $ ;entra em modo de espera até receber algo
mov 25h, #00h
mov 25h, R3 ;armazena na posição #25h em minutos da mem interna o
mov A, 25h ;tempo parcial de aquisição
clr ti
mov SBUF,A
jnb ti,$
clr ti
mov A, #00h ;grava na posição 26 a qtde de dados que serão envidos da RAM
mov B, #00h
mov A, 24h ;qtde de dados = (#24h/#25h)*2
mov B, 25h
div AB
clr C
mov B, #2d
mul AB
clr C
mov 26h, A
ljmp espera
nexti:
54
mov A, R3 ;coloca novamente o SBUF em A para comparar
cjne A, #BBh, tespera ;se A == AAh começa aquisição
mov A, #4Ch ;envia 4Ch para a confirmação de recebimento
clr ti
mov SBUF,A
jnb ti,$
clr ti
mov r0, #01h
cjne r0, #00h, $ ;entra em modo de espera até receber algo
;ljmp espera ;para testes // parar durante alguns milisegundos
nop
loop: ;entrando em loop para verificar temp e pre alternadamente
setb P1.2 ;acende led indicando que está ocupado aquisicionando
clr p1.1 ;apaga led livre
clr P1.0
tpo: mov R1, #25d ;espera um tempo para que a aquisição seja realizada
inc R2
cjne R2, R1, tpo
mov A, #00h ;limpa o registrador A
mov DPTR, #8000h ;este endereço será o lido
movx A, @DPTR ;move o valor endereçado
;call envia ;para teste
call setram ;vai para a rotina de armazenamento na RAM
setb P1.0
tpo: mov R1, #25d ;espera um tempo para que a aquisição seja realizada
inc R2
cjne R2, R1, tpo
mov A, #00h ;limpa o registrador A
mov DPTR, #8000h
movx A, @DPTR
;call envia
call setram
mov 20h,#00h
call espera5 ;espera tempo das amostragens
mov A, #00h
mov A, 23h ;faz o loop até o tempo total se esgotar
CJNE A, 24h,loop ;verifica se o minuto chegou a tempo total
mov R5, #00h ;anula as interrupções
55
ljmp espera ;se der tempo armazenado em 24h pára tudo e vai para a rotina de espera
envia:
clr ti
mov SBUF,A
jnb ti,$
clr ti
ret
espera5:
;20 --> endereco da contagem para atingir 1 segundo, tem q contar ateh 100
;21 --> endereco dos segundos
;22 --> endereco dos minutos
clr ES ;desabilita interrupcoes da serial
mov TH0,#3Ch ;seta o valor inicial dos regs do Timer0 com 55535
mov TL0,#B3h
anl TMOD,#11110000b ;limpa as configuracoes do timer0
orl TMOD,#00000001b ;inicia o timer como temporizador de 16 bits controlado por software
setb ET0 ;habilita a interrupcao do timer0
setb TR0 ;inicia a contagem do timer 0
mov R5,#01h ;faz com que ocorra uma pausa de 5 minutos
CJNE R5,#00h,$ ;para qualquer acao
clr TR0 ;se a pausa de 5 minutos jah aconteceu espera a funcao ser chamada de volta
;para iniciar novo ciclo
ret
setram: ;armazena dados na RAM
clr P2.0 ;grava 0 nas posições que não serão utilizadas p o
clr P2.1 ;enderçamento da RAM externa, pois os endereços são formados
clr P2.2 ;por R1+P2 para dar 16 bits
clr P2.3
clr P2.4
clr P2.5
clr P2.6
clr P2.7
movx @R1, A ;coloca no endereço apontado por R1+P2 o dado lido do adc
movx A, @R1
call envia
inc R1 ;incrementa R1 para a nova posição a ser gravada na RAM
ret
enviaram: ;rotina para envio dos dados adquiridos
mov DPTR, #00h ;seta posição inicial da ram
clr p1.1 ;apaga led verde
setb P1.2 ;acende led vermelho indicando que o módulo está enviando dados
lram:
mov A, #00h
movx A,@DPTR ;le dado para envio
;envia serialmente
56
call envia
inc DPTR ;incrementa para nova posição
mov A,DPTR
cjne A, 26h, lram ;se não chegou ao total de dados adquiridos repete a função
ljmp espera
END
57
Anexo 6 – Código do Software de Gerenciamento
58
////////////////////////////////////////////////////////////Programa do software gerenciador do
sistema/////////////////////////////////////////////////////////
TFrmTransmite *FrmTransmite;
cPortController * pc;
int cont = 1;
int iCont2 = 0; //contador para descartar o primeiro dados enviado pelo uC
int Envia = -1; /* Variavel GLOBAL declarada */
string sTTotal, sTParcial; //variáveis para aqusiçcão e envio do Edit
//---------------------------------------------------------------------------
__fastcall TFrmTransmite::TFrmTransmite(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::btConectarClick(TObject *Sender)
{
//pc = new cPortController("COM1",19200);
if((CBoxPortaSerial->Text.Length())&& ((CBoxVelocidade->Text.Length()))){
//obj = new Port("COM1",1200);
pc = new cPortController((CBoxPortaSerial->Items->Strings[CBoxPortaSerial->ItemIndex]).c_str(),
StrToInt(CBoxVelocidade->Items->Strings[CBoxVelocidade->ItemIndex]));
if (pc->Ret_erro()==0){
LabStatus->Caption = "INICIOU NORMAL";
btConectar->Enabled = false;
Memo1->SetFocus();
}
else if (pc->Ret_erro()==1)
LabStatus->Caption = "NÃO CONSEGUIU INICIAR O HANDLE";
else if (pc->Ret_erro()==2)
LabStatus->Caption = "NÃO CONSEGUIU PEGAR OS VALORES DO DCB";
else if (pc->Ret_erro()==3)
LabStatus->Caption = "NÃO CONSEGUIU COLOCAR VALORES PARA O DCB";
else if (pc->Ret_erro()==4)
LabStatus->Caption = "NÃO CONSEGUIU INICIAR O TEMPO CORRETAMENTE";
}else{
LabStatus->Caption = "SELECIONE UM ENDEREÇO OU VELOCIDADE DA TRANSMISSÃO";
}
59
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::btEnviarClick(TObject *Sender)
{
Envia = 1;
TimerRecebe->Enabled = !TimerRecebe->Enabled;
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::BtFecharClick(TObject *Sender)
{
delete pc;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::TimerRecebeTimer(TObject *Sender)
{
AnsiString strTmp;
fstream *dados;
static int iCont = 0;
string sSerial;
if (Envia == 1)
{
if( pc->QueueSize() >0 )
{
if(iCont2!=0)
{
sSerial = pc->ReceiveData(pc->QueueSize()).c_str();
Memo1->Text = "";
if(sSerial.size()>255)
sSerial = sSerial.substr(1,255);
Memo1->Text = Memo1->Text + " " +IntToStr((int)abs(sSerial.at(0)));
Memo1->Text = Memo1->Text + " " + "" +IntToStr((int)abs(sSerial.at(1)));
if (iCont == 100){
iCont = 0;
Chart->Series[0]->Clear(); //plota em tempo real a curva da temperatura
Chart->Series[0]->RefreshSeries();
Chart->Series[0]->Repaint();
Chart->Series[1]->Clear(); //plota em tempo real a curva da Pressão
Chart->Series[1]->RefreshSeries();
60
Chart->Series[1]->Repaint();
}
else{
iCont++;
}
int iTmp, iTmpP;
if (sSerial.at(0) < 0) //se o valor do byte convertido
iTmp = sSerial.at(0) + 255; //for negativo soma-se 255 a ele
else
iTmp = sSerial.at(0);
if (sSerial.at(1) < 0)
iTmpP = sSerial.at(1) + 255;
else
iTmpP = sSerial.at(1);
iTmp = ((iTmp * 75)/26)+10; //equação para a escala da temperatura lida
//iTmpP = xxx //equação para a escala da Pressão lida
Edit3->Text = IntToStr(iTmp);
Edit4->Text = IntToStr(iTmpP);
Chart->Series[0]->AddY(iTmp,"",clRed);
Chart->Series[1]->AddY(iTmpP,"",clBlue);
}
else{
iCont2=1;
sSerial = pc->ReceiveData(pc->QueueSize()).c_str();
Memo1->Text = "";
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::btRecebeClick(TObject *Sender)
{
iCont2=0;
int iTmpT=0; //temporário para temperatura
int iTmpP=0; //temporário para pressão
//envia FFh (255d) pela serial e se receber 75d de volta
//recebe os dados aquisicionados
ChartTempo->BottomAxis->Maximum = StrToInt(EditTotal->Text);
string abc;
61
fstream *dados;
dados = new fstream ("dados.txt");
AnsiString aux = IntToStr(abc[0]);
AnsiString auxP = IntToStr(abc[1]);
abc = 255; // 0xFF;
pc->SendData(abc);
Sleep(5);
abc = pc->ReceiveData(1);
int iValor = (EditTotal->Text.ToInt()/EditAmostra->Text.ToInt())* 2; //Tempo total dividido pelo tempo de
amostra vezes 2
//(1 amostra de temperatura e uma para
presssão)
if (abc[0] == 'K') //se recebeu 75d indica que irá receber
dados da ram
{
Memo1->Text = "";
while(pc->QueueSize() != 0)
{
if(iCont2!=0)
{
abc = pc->ReceiveData(1);
if(abc.at(0) < 0) //se o valor do byte convertido
iTmpT = abc.at(0) + 255; //for negativo soma-se 255 a ele
else
iTmpT = abc.at(0);
iTmpT = ((iTmpT * 75)/26)+10;
//Memo1->Lines->Add(IntToStr((iTmpT<0)?iTm pT+255:iTmpT));
Memo1->Lines->Add(IntToStr(iTmpT));
ChartTempo->Series[0]->AddY(iTmpT,"",clRed);
dados->write((IntToStr(iTmpT)).c_str(),3); //escreve temperatura em arquivo
dados->write("\r\n", 2);
abc = pc->ReceiveData(1);
if (abc.at(0) < 0)
iTmpP = abc.at(0) + 255;
else
iTmpP = abc.at(0);
//Memo1->Lines->Add(IntToStr((abc[0]<0)?abc[0]+255:abc[0]));
62
Memo1->Lines->Add(IntToStr(iTmpP));
ChartPressao->Series[0]->AddY(iTmpP,"",clBlue);
dados->write((IntToStr(iTmpP)).c_str(),3); //escreve Pressão em arquivo
dados->write("\r\n",2);
}
else{
iCont2=1;
abc = pc->ReceiveData(1);
abc = pc->ReceiveData(1);
}
}
dados->close();
ShowMessage ("Recebeu os dados do Módulo de Aquisição!");
Button1->Enabled = true;
}
else
ShowMessage ("O Módulo de Aquisição não respondeu, tente novamente!");
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::BitBtn1Click(TObject *Sender)
{
//envia AAh (170d) pela serial e se receber 74d de volta
//começa aquisição
string abc;
string t;
abc = 170; // 0xFF;
pc->SendData(abc);
Sleep(5);
abc = pc->ReceiveData(1);
if(abc[0] == 'J')
{
Memo1->Lines->Add(abc[0]);
//----------------------------------------
63
abc = EditTotal->Text.ToInt();
pc->SendData(abc);
Sleep(1);
t = pc->ReceiveData(1);
while(pc->QueueSize() != 0 || t !=abc)
{
t = pc->ReceiveData(1);
}
Memo1->Lines->Add(IntToStr((abc[0]<0)?abc[0]+255:abc[0]));
//------------------------------------------
abc = EditAmostra->Text.ToInt();
pc->SendData(abc);
Sleep(1);
t = pc->ReceiveData(1);
while(pc->QueueSize() != 0 || t != abc)
{
t = pc->ReceiveData(1);
}
Memo1->Lines->Add(IntToStr((abc[0]<0)?abc[0]+255:abc[0]));
//Memo1->Lines->Add(abc.at(0));
}
//----------------------------------------
else ShowMessage ("O Módulo de Aquisição não respondeu, tente novamente!");
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::Button1Click(TObject *Sender)
{
//envia BBh (187d) pela serial e se receber 74d de volta
//começa aquisição
this->DTHoraInicial = Now();
string abc;
string t;
abc = 187; // 0xFF;
pc->SendData(abc);
Sleep(1);
abc = pc->ReceiveData(1);
64
while(pc->QueueSize() != 0 || 'L' != abc[0]){
abc = pc->ReceiveData(1);
}
Memo1->Lines->Add(abc.at(0));
ShowMessage ("Começou a aquisição. Aguarde o tempo configurado!");
pc->SendData(abc);
Envia=1;
iCont2 = 0;
TimerRecebe->Enabled = !TimerRecebe->Enabled;
Timer1->Enabled = !Timer1->Enabled;
Button1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TFrmTransmite::Timer1Timer(TObject *Sender)
{
LabelTimer->Caption = TimeToStr(Now() - DTHoraInicial);
}
////////////////////////////////////////////////////////////////Classe PortControler para a utilização da
serila\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#include "PortController.h"
cPortController::~cPortController()
{
CloseHandle(hComm);
}
cPortController::cPortController(string sPort, int iSpeed)
{
this->iErro = 0;
COMMTIMEOUTS Timeouts;
// Tenta abrir a porta de comunicação...
try
{
hComm = CreateFile(sPort.c_str(),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
// Se houve um erro, vê o que aconteceu...
65
if(hComm == INVALID_HANDLE_VALUE){
iErro=1;
}
GetCommState(hComm, &dcbStatus);
dcbStatus.BaudRate = iSpeed;
dcbStatus.ByteSize = 8;
dcbStatus.Parity = NOPARITY;
dcbStatus.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcbStatus);
bool fSucesso = SetCommTimeouts(hComm, &Timeouts);
if(!fSucesso){
CloseHandle(hComm); // fecha a porta de comunicação...
iErro = 3;
return;
}
if(!fSucesso){
CloseHandle(hComm); // fecha a porta de comunicação...
iErro = 4;
return;
}
} catch(...) {
throw;
}
}
void cPortController::SendData(string sData)
{
DWORD lChars = 0;
try {
WriteFile(hComm,
sData.c_str(),
sData.size(),
&lChars,
NULL);
} catch(...) {
throw;
}
}
int cPortController::QueueSize()
{
66
COMSTAT ComStat ;
DWORD dwErrorFlags;
try
{
ClearCommError(hComm, &dwErrorFlags, &ComStat ) ;
return ComStat.cbInQue;
} catch(...) {
throw;
}
}
string cPortController::ReceiveData(int iBytesToRead=1)
{
COMSTAT ComStat ;
DWORD dwErrorFlags;
unsigned long iBytesRead=0;
char *sBuffer;
string sRead;
try
{
sBuffer = new char[iBytesToRead];
ClearCommError(hComm, &dwErrorFlags, &ComStat ) ;
if (ComStat.cbInQue > 0)
{
ReadFile( hComm, sBuffer, iBytesToRead, &iBytesRead, NULL) ;
for(int i=0;i<iBytesToRead;i++)
{
if(sBuffer[i] != 0)
sRead += sBuffer[i];
else
sRead += 1;
}
}
return sRead;
}catch(...) {
throw;
}
}
67
int cPortController::Ret_erro(){
return this->iErro;
}
68
Anexo 7 – Esquemáticodo 8031
69
70
Anexo 8 – Artigo
71
Anexo 9 – Manual do Usuário
72
Anexo 10 – Manual de Serviço