implementação de um oxímetro de pulso

Transcrição

implementação de um oxímetro de pulso
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
IMPLEMENTAÇÃO DE UM OXÍMETRO DE PULSO
LUÍS AUGUSTO SPRANGER
BLUMENAU
2004
2004/1-26
LUÍS AUGUSTO SPRANGER
IMPLEMENTAÇÃO DE UM OXÍMETRO DE PULSO
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso II do curso de Ciências
da Computação — Bacharelado.
Prof. Antonio Carlos Tavares
BLUMENAU
2004
2004/1-26
IMPLEMENTAÇÃO DE UM OXÍMETRO DE PULSO
Por
LUÍS AUGUSTO SPRANGER
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso II, pela banca examinadora formada
por:
Presidente:
______________________________________________________
Prof. Antonio Carlos Tavares, FURB
Membro:
______________________________________________________
Prof. Miguel Alexandre Wisintainer, FURB
Membro:
______________________________________________________
Prof. Francisco Adell Péricas, FURB
Blumenau, dia de mês de 2004
AGRADECIMENTOS
A Deus, pelo seu imenso amor e graça.
À minha família e amigos, pelo apoio.
Ao meu orientador, Antônio Carlos Tavares, por ter acreditado na conclusão deste
trabalho e pelas inúmeras dicas e idéias.
A Lúcio Bareta Todorov por me apresentar as tecnologias desenvolvidas na área
médica e por me fornecer todo o material (componentes, módulos e livros) para o
desenvolvimento do trabalho.
RESUMO
Este trabalho descreve como é feita a medição da saturação de oxigênio no sangue arterial, a
oxímetria (SpO2). Descreve também o desenvolvimento do hardware e software de um
protótipo de oxímetro de pulso. O trabalho mostra o diagrama em blocos e esquema elétrico
do hardware que foi desenvolvido utilizando um módulo de oxímetria de pulso, um
microcontrolador com arquitetura RISC e mostrador gráfico. No software do protótipo foi
implementado um escalonador de tarefas que faz o controle da velocidade de apresentação
dos dados no mostrador. São descritas ainda rotinas para geração de caracteres, comunicação
serial com o módulo de oxímetria de pulso. Por fim são expostos os resultados obtidos com o
protótipo.
Palavras chaves: Microcontrolador; Equipamentos de Monitorização; Oxímetria.
ABSTRACT
This work describes how is determined the oxygen´s saturation in the arterial blood, the
oximetry (SpO2). Describes the development of hardware and software of a pulse oximeter
prototype. This work shows the block diagram and hardware´s schematic, using a RISC
microcontroller and a graphic display. In the software´s prototype was programmed a task
manager, this controls the speed of the data that is plot in the display. Other software routines
are also described like character generator and serial communication with the pulse oximeter
module.
Key Words: Microcontroller; Monitoring Equipment; Oximetry.
LISTA DE ILUSTRAÇÕES
Figura 1 - Curva de absorção da HbO2 e Hb ............................................................................ 13
Figura 2 - Características de absorção da luz nos diversos componentes do sistema ..............14
Figura 3 - Oxímetria de pulso por sensor de transmissão ........................................................ 14
Figura 4 - Oxímetria de pulso por sensor de refletância........................................................... 15
Figura 5 - Forma de onda pletismográfica normal ................................................................... 15
Figura 6 - Diferentes tipos de probe......................................................................................... 18
Figura 7 - Pinos de conexão com o módulo de oxímetria de pulso.......................................... 19
Figura 8 - Pinagem do microcontrolador AT90S8515 com encapsulamento PLCC ............... 22
Figura 9 - Janela do compilador BASCOM-AVR.................................................................... 23
Figura 10 - Janela do PONYPROG.......................................................................................... 24
Figura 11 - Janela do EAGLE com o diagrama elétrico do protótipo......................................25
Figura 12 - Monitor 8100 do fabricante Criticare ....................................................................26
Figura 13 - Biomonitor 7 do fabricante BESE .........................................................................26
Figura 14 - Diagrama em blocos do hardware do protótipo .................................................... 29
Figura 15 - Esquema elétrico do protótipo ...............................................................................30
Figura 16 - Placa principal do protótipo...................................................................................31
Figura 17 - Fluxograma do escalonador ................................................................................... 32
Figura 18 - Interpretação dos dados fornecidos pelo módulo .................................................. 34
Figura 19 - Escrever leituras ou mensagens de erro.................................................................35
Figura 20 - Desenha a curva do pletismograma ....................................................................... 36
Figura 21 - Mapa de bits armazenado na EEPROM do microcontrolador...............................37
Figura 22 - Tela inicial do protótipo.........................................................................................38
Figura 23 - Tela de medição com mensagem de erro............................................................... 39
Figura 24 - Tela de medição mostrando os valores lidos ......................................................... 40
Figura 25 – Foto do protótipo realizando medição................................................................... 40
Quadro 1- Equação para o cálculo de SpO2 ............................................................................. 13
Quadro 2 - Protocolo do módulo de oxímetria de pulso........................................................... 20
Quadro 3 - Alguns microcontroladores AVR e suas características ........................................ 21
Quadro 4 – Código do escalonador de tarefas.......................................................................... 37
SUMÁRIO
1 INTRODUÇÃO....................................................................................................................9
1.1 OBJETIVOS DO TRABALHO ........................................................................................11
1.2 ESTRUTURA DO TRABALHO ......................................................................................11
2 FUNDAMENTAÇÃO TEÓRICA ....................................................................................12
2.1 OXÍMETRIA..................................................................................................................... 12
2.1.1 Motivos para o uso da oxímetria de pulso ...................................................................... 12
2.1.2 Princípios de funcionamento........................................................................................... 13
2.1.3 Interferências e fatores que prejudicam a leitura da oxímetria de pulso......................... 15
2.1.4 Condições fisiológicas .................................................................................................... 16
2.1.5 Condições técnicas .......................................................................................................... 17
2.1.6 Tipos de probe ................................................................................................................ 18
2.2 MÓDULO DE OXÍMETRIA DE PULSO MEDLAB EG 00302..................................... 19
2.2.1 Protocolo de comunicação .............................................................................................. 20
2.3 MICROCONTROLADOR AVR ......................................................................................20
2.3.1 Característica do microcontrolador AT90S8515 ............................................................ 21
2.3.2 Pinagem do microcontrolador AT90S8515 .................................................................... 21
2.4 FERRAMENTAS.............................................................................................................. 22
2.4.1 BASCOM-AVR ..............................................................................................................22
2.4.2 PONYPROG ................................................................................................................... 23
2.4.3 EAGLE............................................................................................................................ 24
2.5 TRABALHOS CORRELATOS E OXÍMETROS DE PULSO EXISTENTES NO
MERCADO ....................................................................................................................... 25
3 DESENVOLVIMENTO DO TRABALHO .....................................................................28
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO....................... 28
3.2 ESPECIFICAÇÃO DO HARDWARE ............................................................................... 28
3.2.1 DIAGRAMA EM BLOCOS E ESQUEMA ELÉTRICO DO HARDWARE.................. 28
3.3 IMPLEMENTAÇÃO DO HARDWARE ........................................................................... 30
3.4 ESPECIFICAÇÃO DO SOFTWARE ................................................................................ 31
3.4.1 Especificação do escalonador de tarefas ......................................................................... 32
3.4.2 As tarefas......................................................................................................................... 33
3.5 IMPLEMENTAÇÃO DO SOFTWARE ............................................................................ 36
3.5.1 Implementação do escalonador de tarefas....................................................................... 36
3.5.2 Implementação das tarefas .............................................................................................. 37
3.5.3 Geração de caracteres no mostrador gráfico ...................................................................37
3.6 OPERACIONALIDADE DA IMPLEMENTAÇÃO ........................................................ 38
3.7 RESULTADOS E DISCUSSÃO ......................................................................................41
4 CONCLUSÕES.................................................................................................................. 42
4.1 EXTENSÕES .................................................................................................................... 42
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................44
APÊNDICE A – Software do protótipo elaborado no BASCOM-AVR .................................. 45
9
1 INTRODUÇÃO
O diagnóstico inicial do estado de saúde de um paciente determina os procedimentos
que serão adotados para o seu atendimento. Estes procedimentos em casos mais críticos pode
ser a internação do paciente na Unidade de Tratamento Intensivo (UTI) ou até levar a uma
intervenção cirúrgica.
Para o corpo clínico, estes locais devem apresentar condições necessárias ao bom
desempenho de seu trabalho, ou seja, conforto, tranqüilidade e recursos materiais. Dentre
estes recursos, os equipamentos de monitorização estão destinados a acompanhar
constantemente a condição clínica do paciente (PAZ, 1996).
De acordo com PAZ (1996), o uso desses equipamentos é muito comum, entre os quais
se destacam: o oxímetro de pulso que monitora a saturação do sangue arterial periférico; o
capnógrafo que faz a leitura do CO2 nos gases expirados durante o ciclo respiratório; o
monitor cardíaco que mostra a atividade elétrica do músculo do coração; o monitor de pressão
que faz a medida da pressão arterial; entre outros. A precisão e estabilidade do equipamento
são de vital importância para evitar diagnósticos imprecisos da condição clínica do paciente.
No mercado nacional, o oxímetro de pulso é um equipamento de monitorização com
um custo muito elevado, existem poucos fabricantes e grande parte dos equipamentos
vendidos é de origem estrangeira.
Um fator que torna a construção de um equipamento de monitorização muito difícil
são os sensores, necessários para converter os sinais vitais em grandezas elétricas. Este
problema pode ser solucionado usando-se módulos no sistema OEM (Original Equipment
Manufacturer). Estes módulos são compostos dos sensores e também de uma interface que
converte os valores adquiridos nos sensores para uma forma numérica com sinais digitais, os
quais podem ser interpretados por computadores ou microcontroladores.
Grande parte dos equipamentos de monitorização como oxímetros de pulso e
capnógrafos fazem uso de módulos, chamados de monitores multiparâmetros modulares,
junto com plataformas bem conhecidas no mercado, como o hardware de um IBM-PC e um
software desenvolvido para sistemas operacionais MS-Windows ou DOS. Isso faz com que
esses equipamentos tenham um custo muitas vezes elevado e possam apresentar problemas de
estabilidade no seu funcionamento devido ao uso de um hardware que é inadequado para essa
aplicação.
10
Com a evolução tecnológica e redução no custo de fabricação de componentes
eletrônicos, surgiram no mercado microcontroladores dos mais diversos fabricantes e com
vários recursos. Pode-se comparar o desempenho de alguns microcontroladores com os
microcomputadores usados há alguns anos atrás. A utilização destes microcontroladores em
circuitos é muito vantajosa, pois podem ser programados para realizar várias tarefas
específicas de acordo com a necessidade.
Esses microcontroladores podem substituir o hardware do IBM-PC usado nos
capnógrafos e outros equipamentos de monitorização existentes no mercado, fazendo com que
o seu custo tenha uma redução considerável e que o software seja específico para a aplicação.
No software do microcontrolador pode ser programado um sistema que permite que o
microcontrolador execute mais do que um programa, nesse caso denominado tarefa ou
processo. Este sistema, também chamado de núcleo, faz o gerenciamento destas tarefas
dividindo o tempo de processamento do microcontrolador entre as tarefas que devem ser
executadas, este tipo de processamento é denominado de multitarefa.
As vantagens de microcontroladores com esse núcleo são evidentes considerando uma
aplicação do mundo real. Dificilmente uma aplicação deste tipo consiste de apenas uma tarefa
que é realizada dentro de um programa monolítico. Inclusive em aplicações pequenas,
existem pelo menos duas ou mais tarefas que são processadas separadamente (BASIC, 2001).
Se o conceito de multitarefa é usado em um programa, o risco de problemas com
paradas indevidas pode ser reduzido e as rotinas de avaliação de processos e a interface com
usuário podem ser separadas em diferentes tarefas (BASIC, 2001).
Para implementar um protótipo de um equipamento de monitorização como um
oxímetro de pulso, algumas tarefas podem ser identificadas como, por exemplo, leitura do
módulo de oxímetria de pulso, e apresentação dos valores fornecidos pelo módulo para o
usuário.
Estas tarefas podem ser implementadas em um microcontrolador e este
microcontrolador pode ser à base do hardware do equipamento de monitorização. O
hardware em questão, juntamente com um software específico é uma solução para o
problema de custo, plataforma de construção e estabilidade, sendo assim possível à
construção de um equipamento de monitorização com microcontrolador multitarefa.
11
1.1
OBJETIVOS DO TRABALHO
O objetivo deste trabalho é desenvolver o hardware e o software de um equipamento
de monitorização, que faça a leitura da oxímetria de pulso, fazendo uso de um
microcontrolador.
Os objetivos específicos do trabalho são:
a) fazer a leitura do módulo de oxímetria de pulso;
b) descrever o protocolo utilizado na comunicação módulo/microcontrolador;
c) apresentar os valores obtidos para o usuário;
d) apresentar um protótipo incorporando hardware e software;
e) realizar comparações com o protótipo apresentado e os oxímetros oferecidos no
mercado.
1.2
ESTRUTURA DO TRABALHO
Este trabalho apresenta um estudo da oxímetria de pulso e o desenvolvimento de um
protótipo microcontrolado, onde foram desenvolvidos hardware e software.
O trabalho está dividido em quatro capítulos, no primeiro capítulo é apresentada uma
introdução sobre os assuntos que serão abordados.
O segundo capítulo mostra o funcionamento e a utilidade da oxímetria de pulso na área
médica. Ainda no segundo capítulo são mostrados assuntos referentes ao protótipo, como o
módulo de oxímetria de pulso utilizado para o desenvolvimento, o seu protocolo de
comunicação e características técnicas. Um estudo sobre o microcontrolador também é
apresentado. Após isto alguns comentários sobre ferramentas que foram utilizadas no
desenvolvimento do protótipo. Finalizando o segundo capítulo são apresentados alguns outros
modelos de oxímetros de pulso existentes no mercado.
O terceiro capítulo mostra o desenvolvimento do hardware do protótipo, o diagrama
em blocos e circuito elétrico do protótipo, logo após a especificação e desenvolvimento do
software. Uma demonstração do uso do equipamento também é apresentada no terceiro
capítulo.
No quarto e ultimo capítulo são apresentadas às conclusões, limitações e dificuldades
encontradas, bem como as sugestões para trabalhos futuros.
12
2 FUNDAMENTAÇÃO TEÓRICA
2.1
OXÍMETRIA
De acordo com PAZ (1996), o oxímetro de pulso é o equipamento eletromédico que
monitora a saturação de oxigênio no sangue arterial (SpO2) de forma contínua, não invasíva e
em tempo real. A oxímetria de pulso consiste em um probe (compartimento que contém o
sensor) no corpo do paciente e este sensor está ligado a uma unidade computadorizada que
informa os valores obtidos (FEARNLEY, 1995).
Segundo FEARNLEY (1995) em pacientes normais, a leitura de SpO2 é superior a
95% e em pacientes com problemas respiratórios ou cardíacos este valor pode ser um pouco
inferior.
2.1.1
Motivos para o uso da oxímetria de pulso
“Não há dúvida que o oxímetro de pulso e um dos maiores avanços na monitoração de
pacientes, e se espera que o seu uso se torne rotineiro durante anestesias e cirurgias no mundo
inteiro” (FEARNLEY, 1995).
Sua aplicação compreende:
a) procedimento anestésico: indispensável para detecção de hipoxemia (diminuição
do teor de oxigênio no sangue), que é a causa mais comum de acidentes fatais em
anestesia;
b) unidade de tratamento intensivo: onde condições clínicas podem levar a uma
diminuição repentina no nível de oxigênio no sangue arterial, como por exemplo a
hemorragia pulmonar;
c) transporte de pacientes: ambulância, procedimentos de emergência e outros.
De acordo com FEARNLEY (1995), oxímetros de pulso não informam o nível de CO2
que é expirado no ciclo respiratório, por isso não conseguem indicar os motivos de falha da
respiração em pacientes que estão retendo CO2. Nesses casos é indicado o uso do oxímetro de
pulso juntamente com um capnógrafo.
13
2.1.2
Princípios de funcionamento
O princípio de funcionamento está baseado na medição do oxigênio (O2) associado a
hemoglobina (Hb), encontrado em grande quantidade no sangue arterial.
A porcentagem de SpO2 é dada pela equação apresentada no Quadro 1 (PAZ, 1996).
Quadro 1- Equação para o cálculo de SpO2
A medição dos fatores da equação do Quadro 1 pode ser feita através da técnica da
espectrometria. A hemoglobina saturada e a hemoglobina reduzida tem diferentes
características de absorção nos comprimentos de onda da luz vermelha e luz infravermelha,
como é mostrado na figura 1.
Figura 1 - Curva de absorção da HbO2 e Hb
Diodos emissores de luz (LED) produzem o vermelho (660nm), o infravermelho
(940nm) e um fotodiodo recebe o sinal. A luz é transmitida através de um leito vascular
14
pulsátil, parte dessa luz é absorvida por cada constituinte do tecido. O único componente que
possui absorção variável, é devido à pulsação arterial, o que pode ser visto na figura 2 (PAZ,
1996).
Figura 2 - Características de absorção da luz nos diversos componentes do sistema
Dois tipos de sensores são usados, o de transmissão e o de refletância. No de
transmissão os dois diodos emissores ficam em oposição ao fotodiodo, como na figura 3
(PAZ, 1996).
Figura 3 - Oxímetria de pulso por sensor de transmissão
No de refletância os componentes óticos são posicionados lado a lado, sobre uma
superfície plana que tenha um bom suprimento arterial, como a testa ou a têmpora.
A luz emitida pelos LEDs passa pela região vascular e difundem-se dentro dela. O
fotodetector recebe a quantidade de luz que retorna a superfície.
15
Figura 4 - Oxímetria de pulso por sensor de refletância
O sensor de refletância e o de transmissão tem uso em locais específicos, dependendo
da aplicação. O primeiro é posicionado na testa ou têmpora, e o segundo, nas mãos, pés, nariz
ou orelha.
O fotodetector recebe o sinal dos sensores, este sinal é filtrado e condicionado a
níveis de tensão adequados e então convertidos da forma analógica para forma digital por um
conversor A/D. O sinal digital é processado e então é apresentado em um visor.
No leito vascular durante a sístole, como o pulso do sangue alcança o sensor, o
vaso tem uma maior quantidade de volume sangüíneo, portanto, uma maior quantidade de luz
será absorvida. Durante a diástole tem um menor volume sangüíneo, tendo assim uma menor
quantidade de luz absorvida (PAZ, 1996).
Estas variações de luz absorvidas têm uma forma de onda características que é
chamada de forma de onda pletismográfica, conforme a figura 5 (PAZ, 1996).
Figura 5 - Forma de onda pletismográfica normal
2.1.3
Interferências e fatores que prejudicam a leitura da oxímetria de pulso
O oxímetro de pulso foi projetado para medir sinais de luz de baixa intensidade
transmitidos através da pele, os fotodetectores nos sensores podem também ser afetados por
16
outras fontes de luz, tais como lâmpadas cirúrgicas, fluorescentes, incandescentes e luz do sol.
No oxímetro de pulso, para minimizar o efeito da luz ambiente, o sistema de leitura e medição
lê o nível de luz ambiente para depois ler o vermelho e o infravermelho, fazendo assim a
compensação (PAZ, 1996).
A prevenção de interferência de luz externa pode ser realizada envolvendo o probe
com tecido escuro ou outro material opaco (PAZ, 1996).
Os campos magnéticos dos equipamentos de Imagem por Ressonância Magnética
(MRI), podem afetar a exatidão do oxímetro de pulso, e também a freqüência eletrônica do
oxímetro de pulso pode interferir com a imagem do equipamento de MRI. Queimaduras têm
sido relatadas no local do uso da probe no paciente, durante o uso de MRI, provavelmente
resultante de altas correntes induzidas geradas pela unidade de MRI no cabo da probe (PAZ,
1996). Para evitar interferência a probe de oxímetro deve ficar o mais longe possível dos
equipamentos eletrocirúrgicos.
2.1.4
Condições fisiológicas
Anemia e pele levemente pigmentada podem complicar a detecção do sinal. Os
fabricantes para prevenir este problema, usam luz suficientemente intensa, que atinja o
fotodetector de maneira a se obter resultados mais exatos. Recomenda-se verificar o nível de
hemoglobina e usar outros métodos de determinação do nível de oxigenação, como a
gasometria.
Em relação à baixa perfusão, o oxímetro de pulso necessita de um sinal de pulso
adequado para fornecer a leitura de saturação e pulso. Muitos pacientes, que necessitam ser
monitorizados, não têm bom fluxo sangüíneo em suas extremidades devido à doença vascular
periférica, hipovolemia (redução do volume de sangue) ou hipotermia (temperatura do corpo
abaixo do normal). Nestas situações, o oxímetro fornecerá informação intermitente ou não
fornecerá nenhuma informação. Algumas alternativas são sugeridas para minimizar este
efeito:
a) assegurar que o pulso do paciente no local do sensor seja significativo para a
exatidão do oxímetro. Isso pode ser realizado por testes em diversos locais do
paciente até conseguir um pulso aceitável;
b) escolha da probe correta, quando um pulso adequado não está presente nos pés ou
nas mãos, pode-se colocar em uma região mais central do corpo, como nariz ou
17
orelha ou usar a oxímetria por refletância, colocando a probe na testa ou na
têmpora;
c) aquecer o local do sensor, em pacientes hipotérmicos principalmente, pode ser útil
aplicar um tecido morno no local do sensor, antes da aplicação do mesmo, caso não
haja contra-indicação clínica.
2.1.5
Condições técnicas
Para melhorar a exatidão, variedades de probes têm sido desenvolvidas, para uso em
diferentes locais do paciente e também em tamanho adulto pediátrico e neonatal.
Os oxímetros de pulso têm um alto potencial de errar em baixas saturações (menor de
80%), uma vez que os fabricantes não podem induzir hipoxias severas, repetidamente em
voluntários para calibrar seu equipamento (PAZ, 1996).
Carboxihemoglobina (HbCO) e Metahemoglobina (MetHb) absorvem o vermelho e o
infravermelho dos LEDs, como estas hemoglobinas não são computadas pelo equipamento,
afetam a exatidão da medida.
Quanto às interferências geradas devido ao movimento do paciente em relação à probe,
os oxímetros de pulso foram inicialmente planejados para salas cirúrgicas onde os pacientes
estão anestesiados. Atualmente também são usados em pacientes ativos e vários setores do
hospital. A atividade do paciente principalmente no local da probe, cria dificuldade para
monitorização. A interferência gerada pelo movimento pode aparecer na forma de onda
pletismográfica, resultado em uma leitura de SpO2 inexata. Para minimizar o efeito gerado
pelo movimento deve-se observar:
a) aplicar o sensor em um local minimamente ativo do paciente;
b) usar sensor apropriado, confortavelmente e de baixa massa. Por exemplo, uma
probe adesiva permanece mais seguramente posicionada do que uma probe tipo
clip.
Unhas pintadas, artificiais ou não, podem causar inexatidão na leitura. As cores mais
críticas são o azul, o verde, o marrom e o preto. No intuito de minimizar este problema deve
ser removida a pintura ou escolhido outro local (PAZ, 1996).
Inspecionar o local do paciente onde está colocado a probe, que pode causar irritação
na pele. Se detectada, trocar a probe de local. Realizar inspeções periódicas.
18
A utilização do oxímetro de pulso com a medição de pressão não invasíva, deve ser
realizada com a colocação da probe no dedo oposto ao lado usado para a medida de pressão
arterial.
Se o sinal é fraco ou erro de luz insuficiente ocorre, deve-se observar:
a) limpe a probe e o local do paciente com álcool;
b) reposicione a probe até que a luz dos LEDs esteja diretamente em oposição com o
fotodetector;
c) remova a pintura das unhas ou remova as unhas artificiais;
d) tente um lugar diferente;
e) tente uma probe diferente ou um tipo de probe diferente.
2.1.6
Tipos de probe
Existem vários tipos de probe, alguns exemplos podem ser vistos na figura 6
(MEDLAB, 1998).
Figura 6 - Diferentes tipos de probe
19
2.2
MÓDULO DE OXÍMETRIA DE PULSO MEDLAB EG 00302
Segundo MEDLAB (1998), o módulo de oxímetria de pulso EG 00302 utiliza um
algoritmo chamado “onda de pulso cheio”. Isto significa que a cada pulso reconhecido, um
valor de SpO2 é calculado e então processado. A cada pulso os valores da leitura são
enviados ao host.
O módulo é conectado ao host por uma interface serial padrão RS-232, mais detalhes
sobre este padrão podem ser encontrados em AXELSON (1998).
O módulo é capaz de ler de 30% até 100% de SpO2 e de 30 até 250 batimentos
cardíacos por minuto (pulso) (MEDLAB, 1998).
De acordo com MEDLAB (1998), a precisão do módulo depende da leitura do valor de
SpO2, quanto mais alto o valor de SpO2, menor é o erro:
a) valor de SpO2 variando de 90% até 100%: erro na leitura de 1%;
b) valor de SpO2 variando de 80% até 89%: erro na leitura de 2%;
c) valor de SpO2 variando de 65% até 79%: erro na leitura de 3%;
d) valor de SpO2 abaixo de 65%: erro não especificado.
Os pinos para conexão com o módulo podem ser vistos na figura 7. São conectados
apenas os pinos de alimentação e o pino TX, pois o módulo apenas envia dados, os outros sete
pinos ficam sem conexão.
Figura 7 - Pinos de conexão com o módulo de oxímetria de pulso
20
2.2.1
Protocolo de comunicação
O módulo apenas envia dados para o host, a velocidade da comunicação é de 9600 bps
com 8 bits de dados e 1 bit de parada. Os valores para o desenho da curva pletismográfica são
enviados constantemente variando de 50 a 100 bytes por segundo. Estes valores variam de 0 a
127, isto significa que o bit mais significativo está em zero. Valores maiores que 127 são
usados para bytes de marcação, conforme o quadro 2.
Quadro 2 - Protocolo do módulo de oxímetria de pulso
A cada pulso identificado no paciente o módulo manda uma seqüência com os bytes de
marcação, informado o valor de SpO2, pulso, informações do módulo e qualidade do sinal,
conforme o quadro 2. Enquanto o pulso do paciente não é detectado o módulo envia dados
para o desenho da curva pletismográfica.
Como pode ser visto no quadro 2, após o byte de marcação 248 todos os bytes
seguintes se referem ao desenho da curva, quando o módulo envia o byte 249, o byte seguinte
é o valor de SpO2, então se o módulo envia o byte 97, isto significa que o valor de SpO2 é de
97%, e esta regra se repete para os outros bytes de marcação, que são 250, 251 e 252.
2.3
MICROCONTROLADOR AVR
De acordo com ATMEL (2004), a família AVR de microcontroladores foi criada em
1993, são microcontroladores RISC de 8 bits com memória flash de programa. A família
21
AVR é composta de vários modelos de microcontroladores variando de tamanho da memória,
pinos de entrada e saída, periféricos e velocidade de funcionamento.
No quadro 3 são apresentados alguns modelos de microcontroladores da família AVR
com suas características, inclusive o microcontrolador AT90S8515 que é utilizado na
montagem do protótipo.
Flash EEPROM SRAM Pinos F.Max
Timers de Timers de
Microcontrolador (Kbytes) (Kbytes) (bytes) I/O (MHz) Vcc (V) 16-bits
8-bits UART
AT90S1200
1
0.0625
15
12 2.7-6.0
0
1
0
AT90S2313
2
0.125
128
15
10 2.7-6.0
1
1
1
8
0.5
512
32
8
4.5-5.5
1
1
1
AT90S8515
ATmega162
16
0.5
1024
35
16 4.5-5.5
2
2
2
ATmega32
32
1
2048
32
16 4.0-5.5
1
2
1
ATmega48
4
0.256
512
23
20 1.8-5.5
1
2
1
ATmega128
128
4
4096
53
16 4.5-5.5
2
2
2
Quadro 3 - Alguns microcontroladores AVR e suas características
2.3.1
Característica do microcontrolador AT90S8515
Entre as características mais relevantes citadas na folha de dados do microcontrolador
(AT90S8515, 2004) tem-se:
a) utiliza arquitetura RISC;
b) 118 instruções (a maioria executada em um ciclo de clock);
c) 32 registradores de 8 bits para uso geral;
d) velocidade de 8 MIPS (milhões de instruções por segundo) com clock de 8 MHz;
e) 8 Kb de memória FLASH para programa;
f) 512 bytes de memória RAM e 512 bytes de memória EEPROM;
g) 1 contador de 8 bits e 1 contador de 16 bits;
h) UART para comunicação serial;
i) 32 portas de entrada e saída;
j) baixo consumo (3mA em modo ativo a 8 MHz com alimentação de 3V).
2.3.2
Pinagem do microcontrolador AT90S8515
O microcontrolador AT90S8515 está disponível em vários tipos de encapsulamento, o
encapsulamento escolhido para o desenvolvimento do protótipo foi o PLCC, pois algumas
22
peças deste microcontrolador com este encapsulamento já estavam disponíveis pelo autor do
TCC.
Na figura 8 podem ser vistos os pinos do microcontrolador, entre eles temos os pinos
das portas (PA, PB, PC e PD), os pinos de ligação com o cristal oscilador (XTAL1 e XTAL2),
pinos de alimentação, reset e entre outros.
Figura 8 - Pinagem do microcontrolador AT90S8515 com encapsulamento PLCC
2.4
FERRAMENTAS
Varias ferramentas foram utilizadas para o desenvolvimento do trabalho, entre as
principais temos o compilador BASCOM-AVR (MCS, 2004) para desenvolver o software do
microcontrolador, o PONYPROG (LANCONELLI, 2004) para programar a memória FLASH
e EEPROM do microcontrolador e o editor de diagramas e circuitos EAGLE (CADSOFT,
2004).
2.4.1
BASCOM-AVR
O software do protótipo foi desenvolvido com o compilador BASCOM-AVR, que é
um software de utilização simplificada, a interface é bem dinâmica e as instruções BASIC
23
facilitam muito a programação. O compilador gera arquivos no formato HEX para serem
gravado diretamente no microcontrolador.
Na figura 9 é apresentada a tela principal do BASCOM-AVR, na parte superior botões
para ativar a simulação, compilação e outras funções. No centro da janela é escrito o
programa em BASIC.
Figura 9 - Janela do compilador BASCOM-AVR
2.4.2
PONYPROG
O software PONYPROG é capaz de gravar grande parte de dispositivos que possuem
memória serial como: microcontroladores, memórias, cartões de memória entre outros. O
PONYPROG já abre o arquivo HEX que é gerado pelo BASCOM-AVR permitindo a
gravação do programa direto no microcontrolador com um hardware específico. O projeto do
hardware pra a gravação do microcontrolador está disponível em LANCONELLI (2004). A
janela do programa PONYPROG pode ser vista na figura 10.
24
Figura 10 - Janela do PONYPROG
2.4.3
EAGLE
O editor de diagramas EAGLE permite desenhar tanto o diagrama elétrico do circuito
como também a própria placa de circuito impresso que é gerada automaticamente a partir do
diagrama elétrico que foi desenhado. O EAGLE possui uma vasta biblioteca de componentes,
inclusive todos os componentes que foram utilizados para montagem do protótipo. Na figura
11 é apresentada a janela do EAGLE, no lado esquerdo temos ferramentas que ajudam no
desenho e na parte superior botões para controle de tamanho, opções de arquivo entre outras
funções.
25
Figura 11 - Janela do EAGLE com o diagrama elétrico do protótipo
2.5
TRABALHOS CORRELATOS E OXÍMETROS DE PULSO EXISTENTES NO
MERCADO
Para o desenvolvimento do protótipo deste trabalho foram utilizados como referência
outros dois equipamentos. Estes equipamentos são: o Monitor 8100, fabricado pela Criticare
Systems Inc. (CRITICARE, 2000) que é visto na figura 12 e o Biomonitor 7 fabricado pela
BESE (CHIESA, 2000) na figura 13.
26
Figura 12 - Monitor 8100 do fabricante Criticare
O Biomonitor 7 apresentado na figura 13 já não é mais fabricado pois a empresa que o
fabrica já não atua mais no mercado, por isto não foi possível encontrar um manual técnico
com mais informações.
Figura 13 - Biomonitor 7 do fabricante BESE
Tanto o Monitor 8100 e o Biomonitor 7 são monitores multiparâmetros, medem a
oxímetria de pulso e outros sinais vitais em um único equipamento. Os sinais vitais que o
27
Monitor 8100 fornece são: oxímetria de pulso, ECG (eletrocardiograma ou EKG), NIBP
(pressão arterial não invasíva), capnografia (medição de CO2) e monitorização de O2
(CRITICARE, 2000). E os sinais vitais que o Biomonitor 7 fornece são: oxímetria de pulso,
ECG, NIPB, temperatura, pressão invasíva, débito cardíaco e capnografia.
De acordo com CRITICARE (2000) o Monitor 8100 utiliza um método que suprime
circuitos analógicos para fazer o tratamento do sinal da oxímetria de pulso, todo o
processamento é feito de forma digital, este método resulta na redução de ruídos gerados
pelos componentes do circuito. Este método também permite obter um sinal mais nítido e um
melhor desempenho em sinal de baixa perfusão.
Os dois monitores foram utilizados como referência, no que diz respeito à velocidade
com que o pletismograma é desenhado, também foram utilizados para os testes finais, onde os
resultados obtidos com o protótipo foram comparados com os resultados mo apresentados
pelos monitores.
Não foram encontrados trabalhos sobre desenvolvimento ou implementação de
equipamentos de monitorização utilizando microcontroladores, apenas trabalhos alguns
trabalhos descrevendo o processo de medição dos sinais vitais.
28
3 DESENVOLVIMENTO DO TRABALHO
De acordo com o que foi apresentado na introdução e objetivos do trabalho, foi
desenvolvido o hardware e software de um protótipo de oxímetro de pulso. O presente
capítulo trata da especificação e implementação deste protótipo.
3.1
REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO
Deve-se fazer a comunicação com o módulo de oxímetria de pulso e o tratamento
destes dados de acordo com o protocolo de comunicação apresentado. A medição da
oxímetria de pulso deve ser apresentada de forma gráfica para facilitar a visualização e
detectar possíveis problemas com o paciente.
Os valores numéricos também devem ser apresentados ao usuário do protótipo.
Possíveis falhas no módulo ou na utilização, como falta do sensor, ou mal posicionamento do
probe também devem ser apresentados ao usuário do protótipo. Como o módulo informa a
qualidade do sinal que está sendo processado, esta informação também deve ser apresentada
no mostrador do protótipo.
Cada ponto da curva deve ser desenhado em uma velocidade constante, não
importando se o sinal é inválido, ou se existe alguma falha com o sensor, ou falha no probe.
Se o sinal é inválido a curva do pletismograma é desenhada de forma incorreta, isso facilita a
visualização de algum erro que deve ser rapidamente corrigido, por isto mesmo sinais
inválidos também são desenhados.
3.2
ESPECIFICAÇÃO DO HARDWARE
O propósito deste protótipo é apresentar a medição da oxímetria de pulso graficamente
em um mostrador de cristal líquido, utilizando um módulo de oxímetria de pulso e um
microcontrolador para reduzir o tamanho físico e o custo do equipamento.
Foram desenhados um diagrama em blocos e o esquema elétrico do hardware. O
software foi especificado com fluxogramas e diagramas de transição de estados.
3.2.1
DIAGRAMA EM BLOCOS E ESQUEMA ELÉTRICO DO HARDWARE
O hardware do protótipo é baseado no microcontrolador AT90S8515 do fabricante
ATMEL. O diagrama em blocos é apresentado na figura 14. No diagrama podem ser vistos os
29
principais blocos que compõem o circuito, entre eles: o módulo de oxímetria de pulso, a
interface serial utilizando o microcontrolador, o mostrador gráfico e a fonte de alimentação
que fornece –18V para o funcionamento do mostrador gráfico e +5V também para o
mostrador e para o restante do circuito.
Figura 14 - Diagrama em blocos do hardware do protótipo
O circuito elétrico é mostrado na figura 15, nele podemos observar as conexões do
microcontrolador ao mostrador gráfico, a interface serial utilizando o circuito MAX232 para
condicionamento dos níveis elétricos deste tipo de interface, o conector com o módulo de
oxímetria de pulso e ainda quatro LEDs que foram colocados para o acompanhamento da
execução do programa pelo microcontrolador.
30
Figura 15 - Esquema elétrico do protótipo
3.3
IMPLEMENTAÇÃO DO HARDWARE
O hardware do protótipo foi montado em uma placa universal, podendo ser vista na
figura 16. O módulo de oxímetria de pulso é conectado a placa por três fios, como descrito no
esquema elétrico. Na placa principal foram montados o microcontrolador e a interface serial,
bem como os pinos para conexão com o mostrador e alimentação do circuito.
Como pode ser visto na figura 16, na placa do protótipo existem ainda alguns outros
soquetes para circuitos integrados que foram utilizados em testes com o microcontrolador no
inicio do desenvolvimento do protótipo. Posteriormente estes circuitos integrados não foram
mais utilizados para o desenvolvimento do protótipo.
31
Figura 16 - Placa principal do protótipo
3.4
ESPECIFICAÇÃO DO SOFTWARE
O protótipo deve apresentar os valores da medição da oxímetria no mostrador gráfico,
bem como a curva pletismográfica. Esta curva deve ser desenhada de forma constante, não
importando a qualidade do sinal ou possíveis falhas com o probe ou desconexão do probe do
circuito. As eventuais falhas devem ser indicadas na parte superior do mostrador gráfico.
Como a curva deve ser desenhada de forma constante, e nem sempre o módulo envia
os dados de forma constante, optou-se por dividir as atividades que devem ser realizadas em
três pequenas tarefas, estas três tarefas são:
a) interpretar os dados do módulo de oxímetria de pulso;
b) escrever os valores lidos ou apresentar mensagens de erro;
c) desenhar a curva pletismográfica.
32
3.4.1
Especificação do escalonador de tarefas
Como o protótipo irá executar três tarefas, foi feita a especificação de um escalonador
de tarefas, para que ele seja chamado em tempos regulares, este escalonado é chamado a cada
interrupção por estouro do TIMER no microcontrolador.
Verificando a folha de dados do microcontrolador, constatou-se que, utilizando o
prescaler em 1 no TIMER, a curva seria desenhada de forma muito rápida, não sendo possível
a visualização da mesma. Por isto foi especificado que o escalonador que a cada duas
chamadas de interrupção a tarefa de desenhar a curva é acionada (aprox. 65ms). Como a
apresentação da situação de erro ou os valores de SpO2, pulso e qualidade de sinal não
precisam ser apresentados no mostrador na mesma velocidade com que a curva é desenhada,
estas rotinas são acionadas a cada 10 chamadas do escalonador (aprox. 330ms).
O fluxograma do escalonador de tarefas é apresentado na figura 17, utiliza uma
variável, chamada de “Contaescalonador” para fazer o controle de chamas de tarefas.
Inicio
Contaescalonador = Contaescalonador + 1
(resto da divisão de
Contaescalonador por 2) = 0
Sim
Chama tarefa DesenhaCurva
Não
(resto da divisão de
Contaescalonador por 10) = 0
Sim
Chama tarefa Escreve Leitura
Não
Fim
Figura 17 - Fluxograma do escalonador
33
3.4.2
As tarefas
A principal tarefa que deve ser executada é a interpretação dos dados do módulo, o
fluxograma para esta tarefa é mostrado na figura 18. Constantemente é chamada uma rotina
que aguarda um novo byte, quando algum byte está disponível na entrada serial ela é
armazenada em uma variável chamada de “DadoSerial”.
A especificação desta rotina segue a descrição do protocolo de comunicação descrito
na seção 2.2.1. Os valores obtidos são armazenados em variáveis públicas, são elas:
“LeituraSpO2”, “LeituraPulso”, “LeituraInfo”, “LeituraQualidade” e “LeituraGrafico”, estas
variáveis são posteriormente utilizadas pelas outras tarefas.
A tarefa de interpretação do protocolo do módulo é a única tarefa que não é chamada a
partir do escalonador de tarefas, pois a sua execução não depende do tempo e sim dos dados
disponibilizados pelo módulo.
O fluxograma da tarefa que escreve os valores no mostrador, é apresentado na figura
19. Esta tarefa faz uso das variáveis públicas que são definidas pela tarefa de interpretar os
dados do módulo. O valor de “LeituraInfo” é analisado se ele for zero, ou seja o sinal esta sem
erros, são apresentados na parte superior do mostrador os valores de SpO2, pulso e qualidade
do sinal, caso o valor de “LeituraInfo” não seja zero, o erro correspondente é apresentado no
mostrador.
A última tarefa é a tarefa que é chamada com mais freqüência, é a tarefa que desenha a
curva pletismográfica, o fluxograma é encontrado na figura 20. Esta tarefa faz o controle de
uma variável que indica que posição do eixo X será desenhada a nova linha do
pletismograma, se este valor for superior a 128 ele é zerado pois o mostrador só tem
capacidade para 128 pontos no sentido horizontal. O valor para o desenho da linha do gráfico
está em “LeituraGrafico”, este valor também é atualizado pela tarefa de interpretação dos
dados do módulo.
34
Inicio
Aguarda um byte da porta serial
e armazena em DadoSerial
DadoSerial = 248
Sim Aguarda um byte da porta serial
e armazena em DadoSerial
Não
Não
DadoSerial < 240
Sim
Armazena DadoSerial em LeituraGrafico
Aguarda um byte da porta serial
e armazena em DadoSerial
DadoSerial = 249
Sim Aguarda um byte da porta serial
e armazena em DadoSerial
Armazena DadoSerial em LeituraSpo2
Não
DadoSerial = 250
Sim Aguarda um byte da porta serial
e armazena em DadoSerial
Armazena DadoSerial em LeituraPulso
Não
DadoSerial = 251
Sim Aguarda um byte da porta serial
e armazena em DadoSerial
Armazena DadoSerial em LeituraInfo
Não
DadoSerial = 252
Sim Aguarda um byte da porta serial
e armazena em DadoSerial
Armazena DadoSerial em LeituraQualidade
Não
Figura 18 - Interpretação dos dados fornecidos pelo módulo
35
Inicio
LeituraInfo = 0
Sim
Escreve LeituraSpO2
Não
Escreve LeituraPulso
Escreve Qualidade 0
LeituraQualidade > 6
Sim
Escreve Qualidade 0
Não
LeituraQualidade > 4
Sim
Escreve Qualidade 1
Não
LeituraQualidade > 2
Sim
Escreve Qualidade 2
Não
LeituraQualidade > 1
Sim
Escreve Qualidade 3
Não
Escreve Qualidade 4
LeituraInfo = 1
Sim
Escreve "SENSOR DESCONECTADO"
Não
LeituraInfo = 2
Sim
Escreve "PACIENTE DESCONECTADO"
Não
LeituraInfo = 3
Sim
Escreve "BAIXA PERFUSAO"
Nâo
Fim
Figura 19 - Escrever leituras ou mensagens de erro
36
Inicio
PosicaoAtual = Posicao Atual + 1
PosicaoAtual > 128
Sim
PosicaoAtual =0
Não
Preenche os bytes na
de acordo com o
valor de LeituraGrafico
Fim
Figura 20 - Desenha a curva do pletismograma
3.5
IMPLEMENTAÇÃO DO SOFTWARE
O software do protótipo foi desenvolvido em linguagem BASIC e compilado no
compilador BASCOM-AVR, mais detalhes na seção 2.4.1. A memória FLASH e EEPROM
do microcontrolador foram programadas utilizando o PONYPROG, mais detalhes na seção
2.4.2.
3.5.1
Implementação do escalonador de tarefas
Como especificado na seção 3.4.1, foi desenvolvido um escalonador de tarefas, que é
chamado em tempos regulares, através da interrupção por estouro do TIMER do
microcontrolador.
A implementação da rotina do escalonador pode ser encontrada no quadro 4.
37
Quadro 4 – Código do escalonador de tarefas
3.5.2
Implementação das tarefas
Todas as tarefas foram implementadas conforme descritas na especificação, que pode
ser vista na seção 3.4.2. A implementação das tarefas pode ser encontrada no Apêndice.
3.5.3
Geração de caracteres no mostrador gráfico
Como o mostrador gráfico utilizado no desenvolvimento do protótipo não possui
gerador de caracteres próprio, foram escritas rotinas de geração de caracteres. Para isso fez se
necessário à criação de uma tabela de caracteres. Esta tabela foi desenhada em um programa
de edição gráfica e gravada na EEPROM do microcontrolador e pode ser vista na figura 21.
Figura 21 - Mapa de bits armazenado na EEPROM do microcontrolador
Esta tabela é baseada na tabela ASCII, sendo que começa com o caractere “espaço”,
que é representado pelo byte 32 e vai até o byte 90 que representa a letra Z, ainda foi
adicionado mais um caractere que está na última posição e não é do padrão ASCII, que é a
cedilha “Ç”.
Cada caractere ocupa 5 bytes, ou seja o caractere tem 5 pontos de largura por 8 pontos
de altura, como a tabela do protótipo tem 60 caracteres, a tabela ocupa 300 bytes da memória
EEPROM do microcontrolador. Quando ocorre a chamada a rotina de escrever algum
38
caractere, este caractere é convertido em um numero correspondente da tabela ASCII, deste
número é subtraído o valor 32, posteriormente o número é multiplicado por 5, com isto tem-se
a posição exata no mapa de bits do caractere que será desenhado. Com isto os próximos 5
bytes são apenas copiados da memória EEPROM para a memória do mostrador gráfico. A
rotina pode ser encontrada no Apêndice A, onde está descrito o software desenvolvido para o
protótipo.
3.6
OPERACIONALIDADE DA IMPLEMENTAÇÃO
A utilização do protótipo é simples, basta alimentar o circuito e o protótipo está pronto
para o uso. Ao ligar o protótipo, é mostrada uma tela de apresentação como na figura 22.
Figura 22 - Tela inicial do protótipo
A tela da figura 22 á apresentada por aproximadamente 2 segundos, após este período
é apresentada a tela de leituras. Caso exista algum erro, este erro é apresentado na parte
superior do mostrador, figura 23, nesta mesma figura pode-se observar que a curva do
pletismograma toma uma forma reta da metade até o lado direito indicando falha na leitura.
39
Figura 23 - Tela de medição com mensagem de erro
Caso não existam erros os valores de leitura são apresentados juntamente com a curva
pletismográfica, como na figura 24. Nesta figura podemos ver ainda que no canto direito
superior é apresentada a qualidade do sinal, a qualidade é representada de acordo com a
quantidade de caracteres “>”: quatro caracteres “>” representam um sinal ótimo e a ausência
de caracteres “>”, representam um sinal ruim.
40
Figura 24 - Tela de medição mostrando os valores lidos
As leituras de SpO2, pulso e qualidade do sinal são informadas na parte superior do
mostrador, na figura 25 é apresentada uma foto do protótipo em funcionamento, onde os
valores da leitura podem ser vistos na parte superior do mostrador.
Figura 25 – Foto do protótipo realizando medição
41
3.7
RESULTADOS E DISCUSSÃO
O protótipo foi comparado com monitores multiparâmetros, ou seja, medem mais
sinais vitais do que apenas a oxímetria de pulso. Estes monitores foram apresentados na seção
2.5.
Os resultados obtidos com o equipamento foram similares a equipamentos originais,
mesmo porque é o módulo que apresenta os resultados do pletismograma e os valores de SpO2
e pulso, o protótipo apenas faz a comunicação com o módulo.
Em comparação com outros dois equipamentos o protótipo apresentou os mesmos
valores de medição. Junto com a medição da oxímetria de pulso também é importante que
seja feita a medição da capnografia que é a medição da quantidade expirada de CO2 no ciclo
respiratório e o ECG.
Os outros equipamentos também possuem mais recursos, como: alarmes, configuração
dos mesmos, armazenamento em memórias externas e linhas de tendência. Estes recursos não
foram implementados, pois não eram os objetivos deste trabalho. Tanto o Monitor 8100 da
Criticare e o Biomonitor 7 da BESE apresentam ainda uma saída serial para impressora, o que
é muito importante em casos de pacientes mais críticos.
42
4 CONCLUSÕES
A proposta inicial do trabalho, era a construção de um capnógrafo, mas o módulo
OEM de capnografia que estava sendo utilizado apresentou problemas de funcionamento. Por
questões de tempo, o conserto deste módulo ficou inviável, por isso optou-se pela construção
de um monitor de outro sinal vital igualmente importante sob o ponto de vista médico, a
oxímetria de pulso. Como o funcionamento dos dois tipos de equipamento é igual, os
objetivos do trabalho inicial de capnografia ficaram inalterados para o trabalho com oxímetria
de pulso.
Os principais objetivos do trabalho foram alcançados como a leitura do módulo de
oxímetria de pulso, estudo do protocolo de comunicação, a apresentação dos dados obtidos do
módulo para o usuário e a montagem de um protótipo desenvolvendo o seu hardware e
software.
A construção de equipamentos de monitorização com microcontroladores é possível,
como foi demonstrado neste trabalho.
A divisão das atividades em tarefas, utilizando as interrupções do microcontrolador
também apresentou resultados muito satisfatórios em relação a outros tipos de programação.
A principal vantagem do protótipo é o baixo custo do equipamento, considerando que
foi montado com componentes comuns de custo baixo. O tamanho físico reduzido do
protótipo também é uma vantagem, se a alimentação for fornecida por baterias pode ser
montado um equipamento portátil. O software específico para função também se mostrou
bastante estável.
A principal limitação do aparelho deve-se ao fato da falta de integração com a
capnografia e ECG, a falta de recursos especiais como alarmes, gravação de logs, em alguns
casos o tamanho reduzido do mostrador gráfico também pode ser prejudicial, pois o corpo
clínico não consegue ver claramente as informações apresentas a uma distância muito grande.
4.1
EXTENSÕES
A principal sugestão é transformar o protótipo do oxímetro de pulso em um monitor
multiparâmetros, os primeiros sinais que deveriam ser acrescidos seriam os de capnografia e
ECG. Estes sinais também podem ser medidos com módulos OEM.
43
Outra sugestão é a adição de alarmes para utilização do protótipo em situações mais
críticas e por fim a adição de memória externa para fazer a gravação de logs.
Por fim, a troca do mostrador que é monocromático por um mostrador com tons de
cinza ou colorido com dimensões maiores também é interessante.
44
REFERÊNCIAS BIBLIOGRÁFICAS
ATMEL Corporation, AVR 8-Bit RISC Overview. San Jose CA, USA, 2004.
Disponível em: <www.atmel.com/products/AVR/overview.asp>. Acesso em: 19 mar. 2004.
AT90S8515, ATMEL Corporation, Datasheet. San Jose CA, USA, 2004.
Disponível em: <www.atmel.com/dyn/resources/prod_documents/1041S.PDF>. Acesso em:
19 mar. 2004.
AXELSON, Jan, Serial Port Complete. Chicago, USA: Independent Publishers Group, 1998;
BASIC Tiger, Hardware manual. Aachen, Alemanha: Wilke Technology GmbH, 2001.
Disponível em: <www.wilke-tecnology.com>. Acesso em: 20 jun. 2004.
CADSOFT, Home of the EAGLE Layout Editor. Delray Beach FL, USA, 2004. Disponível
em: <www.cadosftusa.com>. Acesso em: 19 mar. 2004.
CHIESA, João Borloth, Biomonitor 7. Rio de Janeiro, 2000. Disponível em:
<www.joao.eng.br/bio7.htm>. Acesso em: 20 jun. 2004.
CRITICARE Systems, Manual do Operador do Modelo 8100, Waukesha WI, USA:
Criticare Systems Inc, 2000.
FEARNLEY, Dr. SJ, Pulse Oximetry. Torquay, Inglaterra: Department of Anaesthetics,
Torbay Hospital, 1995. Disponível em: <www.nda.ox.ac.uk/wfsa/html/u05/u05_003.htm>.
Acesso em: 20 jun. 2004.
MEDLAB GmbH, Pulse Oximeter OEM board EG 00302. Karlsruhe, Alemanha, 1998.
Disponível em: < http://www.medlab-gmbh.de/english/downloads/eg00302.pdf >. Acesso em:
19 mar. 2004.
MCS Electronics, BASCOM AVR. Zaandam, Holanda, 2004. Disponível em:
<www.mcselec.com/bascom-avr.htm >. Acesso em: 19 mar. 2004.
LANCONELLI, Cláudio, Lancos Homepage. Lugo, Itália, 2004. Disponível em:
<www.lancos.com>. Acesso em: 19 mar 2004.
PAZ, Mário Augusto Silva Segurança em equipamentos de monitorização em sala
cirúrgica e UTI oxímetro de pulso, capnógrafo, monitor cardíaco, e monitor de pressão
não invasivo. 1996. 62 f. Monografia (Pós Graduação em Engenharia Elétrica) –
Universidade Federal de Santa Catarina, Florianópolis.
TANENBAUM Andrew S. Sistemas operacionais modernos. Rio de Janeiro: LTC, 1999.
45
APÊNDICE A – Software do protótipo elaborado no BASCOM-AVR
'
'
'
'
'
---------------------------------------------------------------------------Capnografo digital
Autor : Luis Augusto Spranger
BCC-FURB
----------------------------------------------------------------------------
$crystal = 8000000
$baud = 9600
' Define cristal
' Velocidade da porta serial
Config Serialin = Buffered , Size = 255
buffer circular de 255 bytes na memoria RAM
' A UART é buferizada com um
Config Timer1 = Timer , Prescale = 1
On Ovf1 Escalonador
estouro
' Configura escalonador de tarefas
' Quando houver interrupção por
Declare
Declare
Declare
Declare
Sub
Sub
Sub
Sub
Lcdenable
Setlcdcs1
Setlcdcs2
Setlcdon
Dim Endereco As Integer
externa
Dim H As Byte
Dim L As Byte
Dim W As Byte
memoria externa
Dim Mostrastring As String * 25
a funcao Escrevstring
Dim Tempmostrastring As String * 1
Dim Nmostrastring As Byte
escritos por Escrevestring
Dim Tempa As Byte
Dim Tempc As Byte
Escrevestring
Dim Tempe As Byte
Dim Enderecoeeprom As Integer
caracteres
Dim Cx As Byte
caracteres
Dim Cy As Byte
caracteres
Dim C As Byte
mostrador
Dim I As Byte
de caracteres
Dim J As Byte
de caracteres
' Endereco de gravaçao na memoria
' Enderecamento da memoria externa
' Enderecamento da memoria externa
' Byte de escrita ou leitura da
' String que sera apresentada com
' Utilizado na funcao Mostrastring
' Numero de caracteres que sao
' Utilizado na funcao
' Utilizado por Escrevstring
' Endereco de busca do mapa de
' Posicao para escrever os
' Posicao para escrever os
' Caracter que será escrito no
' Controle do mostrador e escrita
' COntrole do mostrador e escrita
Dim Flagdisplay As Bit
de limpeza e escrita no mostrador
' Utilizado para acelerar rotina
Dim Posicaoatual As Byte
mostrador
' Posicao de desenho do grafico no
Dim Leiturapulso As Byte
Dim Leituraspo2 As Byte
Dim Leiturainfo As Byte
Dim Leituraqualidade As Byte
Dim Leituragrafico As Byte
Dim Contaescalonador As Byte
tarefas
Dim DadoSerial As Byte
' Contados para o escalonador de
' Entrada do buffer serial
' ---------------------------------------------------------------------------' Configura portas e inicializa
' ---------------------------------------------------------------------------Rotinainicial:
Posicaoatual = 0
Contaescalonador = 0
Config
Config
Config
Config
Porta
Portb
Portc
Portd
=
=
=
=
Output
Output
Output
Output
46
Led1 Alias Portc.2
das tarefas
Led2 Alias Portc.3
Led3 Alias Portc.4
Led4 Alias Portc.5
' Leds para acompanhar a execução
Glcdrs Alias Portd.2
Glcdrw Alias Portd.3
Glcde Alias Portd.4
Glcdreset Alias Portd.5
Glcdcs1 Alias Portc.0
Glcdcs2 Alias Portc.1
Call Setlcdcs1
Call Setlcdon
Call Setlcdcs2
Call Setlcdon
' ---------------------------------------------------------------------------' Tela de inicialização
' ---------------------------------------------------------------------------Gosub Limpadisplay
Cx = 0
Cy = 2
Nmostrastring = 23
Mostrastring = "PROTOTIPO DE OXIMETRO"
Gosub Escrevestring
Cx = 1
Cy = 4
Nmostrastring = 16
Mostrastring = "DE PULSO DIGITAL"
Gosub Escrevestring
Cx = 3
Cy = 2
Nmostrastring = 21
Mostrastring = "LUIS AUGUSTO SPRANGER"
Gosub Escrevestring
Cx = 5
Cy = 2
Nmostrastring = 21
Mostrastring = "TRABALHO DE CONCLUSAO"
Gosub Escrevestring
Cx = 6
Cy = 4
Nmostrastring = 17
Mostrastring = "DO CURSO BCC-FURB"
Gosub Escrevestring
Cx = 7
Cy = 7
Nmostrastring = 11
Mostrastring = "JUNHO
Gosub Escrevestring
2004"
Wait 2
Gosub Limpadisplay
Enable Timer1
Enable Interrupts
Do
Gosub Esperaentrada
'DADOSERIAL é o proximo byte que dese ver processado
' Byte de controle indicando que os proximos bytes sao do desenho dDadoSerial curva
If DADOSERIAL = 248 Then
Gosub Esperaentrada
47
While DADOSERIAL < 240
Leituragrafico = DADOSERIAL \ 5
Gosub Esperaentrada
Wend
End If
' Byte de controle indicando que o proximo byte é o valor de SpO2
If DADOSERIAL = 249 Then
' AguardDadoSerial novo byte
Gosub Esperaentrada
Leituraspo2 = A
End If
' Byte de controle indicando que o proximo byte é o valor do pulso
If DADOSERIAL = 250 Then
' AguardDadoSerial novo byte
Gosub Esperaentrada
Leiturapulso = A
End If
' Byte de controle indicando que o proximo byte é DadoSerial informação do modulo (ver
tarefDadoSerial 1)
If DADOSERIAL = 251 Then
' AguardDadoSerial novo byte
Gosub Esperaentrada
Leiturainfo = A
End If
' Byte de controle indicando que o proximo byte é DadoSerial qualidade do sinal
If DADOSERIAL = 252 Then
' AguardDadoSerial novo byte
Gosub Esperaentrada
Leituraqualidade = A
End If
Loop
' ---------------------------------------------------------------------------' AguardDadoSerial caracter no buffer de entradDadoSerial serial
' ---------------------------------------------------------------------------Esperaentrada:
'Apenas parDadoSerial Debug
Set Led3
DADOSERIAL = 0
While DADOSERIAL = 0
DADOSERIAL = Ischarwaiting()
Wend
DADOSERIAL = Inkey()
'Apenas Para Debug
Reset Led1
Return
' ---------------------------------------------------------------------------' Escalonador de tarefas
' ---------------------------------------------------------------------------Escalonador:
'Apenas para Debug
Set Led4
Contaescalonador = Contaescalonador + 1
Tempa = Contaescalonador Mod 2
If Tempa = 0 Then
Gosub Tarefa2
End If
Tempa = Contaescalonador Mod 10
If Tempa = 0 Then
Gosub Tarefa1
End If
'Apenas para Debug
48
Reset Led4
Return
' ---------------------------------------------------------------------------' Tarefa 1 - Desenha informações
' ---------------------------------------------------------------------------Tarefa1:
'Apenas para Debug
Set Led1
Cx = 0
Cy = 0
Nmostrastring = 25
If Leiturainfo = 0 Then
Mostrastring = "
% SPO2
Gosub Escrevestring
PULSO
Cx = 0
Cy = 0
Nmostrastring = 3
Mostrastring = Str(leituraspo2) + "
Gosub Escrevestring
"
"
Cx = 0
Cy = 11
Nmostrastring = 3
Mostrastring = Str(leiturapulso) + "
Gosub Escrevestring
"
Nmostrastring = 0
If Leituraqualidade > 6 Then
Nmostrastring = 1
Else
If Leituraqualidade > 2 Then
Nmostrastring = 2
Else
If Leituraqualidade > 1 Then
Nmostrastring = 3
Else
Nmostrastring = 4
End If
End If
End If
Cx = 0
Cy = 21
Mostrastring = ">>>>"
Gosub Escrevestring
End If
If Leiturainfo = 1 Then
Mostrastring = "
SENSOR DESCONECTADO
Gosub Escrevestring
End If
If Leiturainfo = 2 Then
Mostrastring = " PACIENTE DESCONECTADO
Gosub Escrevestring
End If
If Leiturainfo = 3 Then
Mostrastring = "!!!! BAIXA
Gosub Escrevestring
End If
"
"
PERFUSAO !!!!"
'Apenas para Debug
Reset Led1
Return
' ---------------------------------------------------------------------------' Tarefa 2 - Desenha curva
' ---------------------------------------------------------------------------Tarefa2:
'Apenas para Debug
Set Led2
49
Tempc = Leituragrafico
Posicaoatual = Posicaoatual + 1
If Posicaoatual = 128 Then Posicaoatual = 0
I = Posicaoatual
' desenho de baixo da linha 7 para linha 1
For J = 6 To 0 Step -1
' set
J = J
Gosub
Gosub
J = J
a posicao no mostrador
+ 1
Mudax
Muday
- 1
If Tempc >= 8 Then
Portb = 255
Tempc = Tempc - 8
Else
Select Case Tempc
Case 0 : Portb
Case 1 : Portb
Case 2 : Portb
Case 3 : Portb
Case 4 : Portb
Case 5 : Portb
Case 6 : Portb
Case 7 : Portb
End Select
Tempc = 0
End If
=
=
=
=
=
=
=
=
0
128
192
224
240
248
252
254
Set Glcdrs
Call Lcdenable
Next
'Apenas para Debug
Reset Led2
Return
' ---------------------------------------------------------------------------' Rotina para escrever um caracter no mostrador
' ---------------------------------------------------------------------------Writechar:
J = Cx
I = Cy * 5
C = C - 32
Enderecoeeprom = C * 5
For Tempc = 0 To 4
Gosub Mudax
Gosub Muday
Readeeprom W , Enderecoeeprom
Gosub Writebyte
I = I + 1
Enderecoeeprom = Enderecoeeprom + 1
Next
Cy = Cy
If Cy =
Cy =
Cx =
End If
+ 1
25 Then
0
Cx + 1
If Cx = 8 Then
Cx = 0
End If
Return
' ---------------------------------------------------------------------------' Rotinas para display grafico
' ----------------------------------------------------------------------------
50
Mudax:
Dim X As Byte
Reset Glcdrw
Reset Glcdrs
If I <= 63 Then
X = I
Call Setlcdcs1
Else
X = I - 64
Call Setlcdcs2
End If
X = 64 + X
Portb = X
Call Lcdenable
Portb = 192
Call Lcdenable
Return
Muday:
Dim Y As Byte
Reset Glcdrw
Reset Glcdrs
Y = 184 + J
Portb = Y
Call Lcdenable
Return
Writebyte:
Reset Glcdrw
Set Glcdrs
Portb = W
Call Lcdenable
Return
Sub Lcdenable
Set Glcde
For Tempa = 0 To 2
Next
Reset Glcde
End Sub
Sub Setlcdcs1
Reset Glcdcs2
Set Glcdcs1
End Sub
Sub Setlcdcs2
Reset Glcdcs1
Set Glcdcs2
End Sub
Sub Setlcdon
Config Portb = Output
Reset Glcdrw
Reset Glcdrs
Portb = 63
Call Lcdenable
Portb = 184
Call Lcdenable
Portb = 64
Call Lcdenable
Portb = 192
Call Lcdenable
End Sub
' ---------------------------------------------------------------------------' Limpa o mostrador
' ---------------------------------------------------------------------------Limpadisplay:
Flagdisplay = 0
For J = 0 To 7
For I = 0 To 127
51
If I = 0 Then Flagdisplay = 1
If I = 64 Then Flagdisplay = 1
If Flagdisplay = 1 Then
Gosub Mudax
Gosub Muday
Flagdisplay = 0
End If
Portb = 0
Set Glcdrs
Call Lcdenable
Next
Next
Return
' ---------------------------------------------------------------------------' Escreve uma string inteira no mostrador
' ---------------------------------------------------------------------------Escrevestring:
For Tempe = 1 To Nmostrastring
Tempmostrastring = Mid(mostrastring , Tempe , 1)
C = Asc(tempmostrastring)
Gosub Writechar
Next
Return
' ---------------------------------------------------------------------------' Mapa de caracteres gravado na EEPROM cada 5 bytes corresponde a uma letra
' ---------------------------------------------------------------------------$eeprom
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
0 , 0 , 0 , 0 , 0 , 0 , 95 , 0 , 0 , 0
72 , 84 , 84 , 36 , 0 , 120 , 16 , 16 , 120 , 0
152 , 168 , 168 , 120 , 0 , 113 , 24 , 12 , 71 , 0
24 , 24 , 24 , 24 , 0 , 0 , 4 , 3 , 0 , 0
28 , 34 , 65 , 0 , 0 , 65 , 34 , 28 , 0 , 0
42 , 28 , 28 , 42 , 0 , 8 , 28 , 8 , 0 , 0
0 , 128 , 96 , 0 , 0 , 8 , 8 , 8 , 8 , 0
0 , 0 , 64 , 0 , 0 , 0 , 96 , 28 , 3 , 0
62 , 81 , 69 , 62 , 0 , 4 , 2 , 127 , 0 , 0
98 , 81 , 73 , 70 , 0 , 34 , 73 , 73 , 54 , 0
28 , 18 , 127 , 16 , 0 , 39 , 69 , 69 , 57 , 0
62 , 73 , 73 , 50 , 0 , 1 , 97 , 25 , 7 , 0
54 , 73 , 73 , 54 , 0 , 38 , 73 , 73 , 62 , 0
0 , 36 , 0 , 0 , 0 , 0 , 128 , 100 , 0 , 0
8 , 20 , 34 , 65 , 0 , 20 , 20 , 20 , 20 , 0
65 , 34 , 20 , 8 , 0 , 2 , 89 , 9 , 14 , 0
62 , 65 , 89 , 94 , 0 , 126 , 17 , 17 , 126 , 0
127 , 73 , 73 , 54 , 0 , 62 , 65 , 65 , 34 , 0
127 , 65 , 34 , 28 , 0 , 127 , 73 , 73 , 65 , 0
127 , 9 , 9 , 1 , 0 , 62 , 65 , 81 , 50 , 0
127 , 8 , 8 , 127 , 0 , 65 , 127 , 65 , 0 , 0
48 , 64 , 64 , 63 , 0 , 127 , 12 , 18 , 97 , 0
127 , 64 , 64 , 64 , 0 , 127 , 2 , 2 , 127 , 0
127 , 6 , 24 , 127 , 0 , 62 , 65 , 65 , 62 , 0
127 , 9 , 9 , 6 , 0 , 62 , 65 , 33 , 94 , 0
127 , 25 , 41 , 70 , 0 , 70 , 73 , 73 , 49 , 0
1 , 127 , 1 , 0 , 0 , 127 , 64 , 64 , 127 , 0
31 , 96 , 96 , 31 , 0 , 127 , 32 , 32 , 127 , 0
115 , 12 , 12 , 115 , 0 , 7 , 120 , 120 , 7 , 0
113 , 73 , 69 , 67 , 0 , 62 , 193 , 97 , 34 , 0

Documentos relacionados