Monografia ECG Ampop

108
CENTRO UNIVERSITÁRIO FEEVALE MARTIN NÄHR AQUISIÇÃO DE ELETROCARDIOGRAMA COM PROCESSADOR DIGITAL DE SINAIS Novo Hamburgo, dezembro de 2007.

description

Monografia ECG Ampop

Transcript of Monografia ECG Ampop

Page 1: Monografia ECG Ampop

CENTRO UNIVERSITÁRIO FEEVALE

MARTIN NÄHR

AQUISIÇÃO DE ELETROCARDIOGRAMA COM PROCESSADOR DIGITAL DE SINAIS

Novo Hamburgo, dezembro de 2007.

Page 2: Monografia ECG Ampop

MARTIN NÄHR

AQUISIÇÃO DE ELETROCARDIOGRAMA COM PROCESSADOR DIGITAL DE SINAIS

CENTRO UNIVERSITÁRIO FEEVALE Intituto de Ciências Exatas e Tecnológicas

Bacharelado em Engenharia Eletrônica Trabalho de Conclusão de Curso

Professor Orientador: Delfim Luis Torok

Novo Hamburgo, dezembro de 2007.

Page 3: Monografia ECG Ampop
Page 4: Monografia ECG Ampop

Dedico este trabalho a minha amada esposa Caroline.

Page 5: Monografia ECG Ampop

5

AGRADECIMENTO

Neste momento de conclusão de curso e entrega do trabalho final, gostaria de

agradecer as pessoas que me apoiaram e foram fundamentais para a realização deste trabalho.

Ao professor Delfim Torok, meu agradecimento pelo apoio e direcionamento para a

realização deste trabalho. Pessoa que demonstrou coragem e dedicação mesmo em momentos

difíceis.

À Sonia Rezende Nähr, meu agradecimento pelo investimento e confiança sem os

quais não seria possível realizar a minha formação.

Aos meus pais, pelo carinho e dedicação destinados à minha criação.

Aos professores e colegas da Feevale, pelas trocas de vivência e conhecimentos

adquiridos durante o período de formação.

A Deus por ter conseguido chegar até aqui.

Page 6: Monografia ECG Ampop

6

RESUMO

Este trabalho visa o desenvolvimento e implementação de um protótipo para

aquisição de eletrocardiograma com processador digital de sinais. Este dispositivo tem a

função de captar o sinal biomédico do tipo ECG através de eletrodos colados á pele, processar

o sinal e enviar para um computador pessoal. Os dados poderão ser visualizados em

computador pessoal utilizando softwares específicos como ferramentas de apoio abordadas no

projeto.

A aquisição do sinal representa a captação de biopotenciais provenientes da atividade

elétrica cardíaca. O sinal captado, com o uso de eletrodos, é amplificado e tratado com a

utilização de amplificador de instrumentação e filtros analógicos. Na saída do circuito de

aquisição, o sinal pré-tratado analogicamente é digitalizado com um Processador Digital de

Sinais (DSP) dsPIC30F2010 da empresa Microchip1, que sendo programado em Linguagem

C através do software de desenvolvimento MPLAB versão 7.60. O sinal digitalizado é

processado no DSP e então transmitido de forma serial para o computador.

1 Microchip Tecnologia Inc. é uma empresa, sediada em Chandler, Arizona. Fábrica de semicondutores, microcontroladores e dispositivos analógicos, para o desenvolvimento de produtos de baixo custo para diversas aplicações.

Page 7: Monografia ECG Ampop

7

ABSTRACT

This project focuses the development and implementation of an electrocardiogram

acquisition prototype using a digital signals processor. This device has the task of capturing

the biomedical signal of the type ECG through electrodes glued to skin, to process and send

the signal to a personal computer. The data will be visualized and saved on a personal

computer using a tools of specific software also mentioned on this project.

The acquisition of the signal is the capture of biopotetials from cardiac electrical

activity. The signal received, with the use of electrodes, is amplified and processed with the

use of the instrumentation amplifier and analog filters. The output of the circuit of acquisition,

the signal pre-treated with analog form is digitalized with a Digital Signal Processor (DSP)

DsPIC30F2010 Company’s Microchip, which is programmed in C language through software

development MPLAB version 7.60. The digital signal is processed in the DSP and then sent

to a serial port for the computer.

Page 8: Monografia ECG Ampop

8

LISTA DE FIGURAS

Figura 1.1 – Anatomia Cardíaca...............................................................................................17 Figura 1.2 – O nodo sinusal e o sistema de Purkinje................................................................18 Figura 1.3 – Ação do nodo sinusal versus fibra muscular ventricular. ....................................19 Figura 1.4 – Gráfico de um ECG Normal. ...............................................................................20 Figura 1.5 – Despolarização e repolarização do coração. ........................................................21 Figura 1.6 – Impressão padrão do ECG. ..................................................................................22 Figura 1.7 – Fluxo da corrente no tórax. ..................................................................................23 Figura 1.8 – Triangulo de Einthoven........................................................................................25 Figura 1.9 – Circuito Equivalente do AMPOP Ideal................................................................26 Figura 1.10 – Amplificador Inversor........................................................................................27 Figura 1.11 – Amplificador Operacional em uma configuração não-inversora. ......................28 Figura 1.12 – Circuito amplificador diferencial. ......................................................................29 Figura 1.13 – Amplificador de instrumentação. .......................................................................30 Figura 1.14 – Resposta em freqüência de quatro principais filtros. .........................................31 Figura 1.15 – Filtro Passa Baixo de primeira ordem na configuração inversora. ....................32 Figura 1.16 – Filtro passa-altas na configuração inversora. .....................................................33 Figura 1.17 – Diagrama de pinos do dsPic30F2010.................................................................35 Figura 1.18 – Circuito de entrada do clock para o dsPic30F2010............................................35 Figura 1.19 – Circuito de controle das portas I/O. ...................................................................40 Figura 1.20 – Diagrama de blocos do Timer tipo 1..................................................................41 Figura 1.21 – Comunicação Serial. ..........................................................................................42 Figura 1.22 – Circuito interno para transmissão dos dados pelo módulo UART.....................44 Figura 1.23 – Circuito interno para recepção dos dados pelo módulo UART. ........................45 Figura 1.24 – Circuito interno do módulo de conversão A/D. .................................................48 Figura 1.25 – Programador e Depurador MPLAB V7.6. .........................................................49 Figura 1.26 – Kit gravador e depurador in circuit ICD2BR. .....................................................51 Figura 2.1 – Diagrama em Blocos do Protótipo. ......................................................................52 Figura 2.2 – Eletrodo para ECG da 3M....................................................................................53 Figura 2.3 – Cabo usado para aquisição de ECG. ....................................................................54 Figura 2.4 – Circuito interno do INA118 .................................................................................56 Figura 2.5 – Circuito do amplificador de instrumentação. .......................................................57 Figura 2.6 – Filtro Passa-Altas. ................................................................................................58 Figura 2.7 – Diagrama de Bode da resposta do Filtro Passa-Altas. .........................................58 Figura 2.8 – Filtro Passa-Baixas...............................................................................................59 Figura 2.9 – Diagrama de Bode do Filtro Passa-Baixas...........................................................60 Figura 2.10 – Circuito de ajuste nível DC. ...............................................................................61

Page 9: Monografia ECG Ampop

9

Figura 2.11 – Fluxograma da rotina principal do programa.....................................................63 Figura 3.1 – Onda ECG gerada com 5Vpp...............................................................................69 Figura 3.2 – Período de transmissão dos bits. ..........................................................................69 Figura 3.3 – Período da transmissão serial. ..............................................................................70 Figura 3.4 – Sinal de ECG real.................................................................................................70

Page 10: Monografia ECG Ampop

10

LISTA DE TABELAS

Tabela 1 – Portas de entrada do dsPIC. ....................................................................................39

Page 11: Monografia ECG Ampop

LISTA DE ABREVIATURAS E SIGLAS

AMPOP – Amplificador Operacional ADC – Analog-to-Digital Converter AMPOP – Amplificador Operacional BD – Braço Direito BE – Braço Esquerdo bps – Bits por segundo CC – Corrente Contínua CISC – Complex Instruction Set Computer CMR – Rejeição de Modo Comum CPU – Central Processing Unit dB – Decibel DSP – Digital Signal Processing ECG – Eletrocardiograma EMG – Eletromiografia fc – Freqüência de corte Hz – Hertz mm – milímetro mV – milivolt PE – Perna Esquerda RISC – Reduced Instruction Set Computer s – segundos sps – samples per second TAD – Período de Conversão A/D TI – Texas Instruments UART – Universal Asynchronous Receiver Transmitter V – Volt VB – Visual Basic

Page 12: Monografia ECG Ampop

12

SUMÁRIO

LISTA DE FIGURAS...............................................................................................................8

INTRODUÇÃO ......................................................................................................................14

1 FUNDAMENTOS TEÓRICOS.....................................................................................16

Introdução.............................................................................................................................16 1.1 Coração.....................................................................................................................16

1.1.1 Excitação Rítmica do Coração .........................................................................18 1.1.2 Tensão Normal no Eletrocardiograma..............................................................19 1.1.3 Eletrocardiograma ............................................................................................20 1.1.4 Fluxo das correntes elétricas no coração ..........................................................22 1.1.5 Derivações eletrocardiográficas .......................................................................23

1.2 Amplificador Operacional ........................................................................................25 1.2.1 Representação de um Amplificador Operacional.............................................26 1.2.2 Configuração básica inversora..........................................................................27 1.2.3 Configuração básica não inversora...................................................................28 1.2.4 Amplificador de diferenças ..............................................................................29 1.2.5 Amplificador de Instrumentação ......................................................................29

1.3 Filtros Ativos ............................................................................................................30 1.3.1 Filtro Passa-Baixas de Primeira Ordem ...........................................................31 1.3.2 Filtro Passa-Altas de Primeira Ordem..............................................................32

1.4 Processador Digital de Sinais ...................................................................................33 1.4.1 Microcontrolador dsPIC30F2010.....................................................................34 1.4.2 Arquitetura da CPU ..........................................................................................36 1.4.3 Organização da Memória..................................................................................37 1.4.4 Interrupções ......................................................................................................38 1.4.5 Entradas e Saídas Digitais ................................................................................39 1.4.6 Timers...............................................................................................................40 1.4.7 Módulo UART..................................................................................................42 1.4.8 Módulo de Conversão A/D...............................................................................45

1.5 Ferramentas para Desenvolvimento e Depuração ....................................................48 1.5.1 Gravador e Depurador in Circuit ICD2BR.........................................................50

2 DESENVOLVIMENTO DO PROTÓTIPO.................................................................52

2.1 Eletrodos e cabos ......................................................................................................53 2.2 Etapa analógica.........................................................................................................54

2.2.1 Amplificador de instrumentação ......................................................................55 2.2.2 Desenvolvimento do Filtro Passa-Altas ...........................................................57 2.2.3 Desenvolvimento do Filtro Passa-Baixas .........................................................59 2.2.4 Ajuste de nível de tensão DC ...........................................................................60

2.3 Etapa digital..............................................................................................................61 2.3.1 Programação do dsPIC: ....................................................................................62

2.3.1.1 Rotina principal do programa .......................................................................62

Page 13: Monografia ECG Ampop

13

2.3.1.2 Rotina principal e Looping Infinito ..............................................................63 2.3.1.3 Interrupção da UART ...................................................................................64 2.3.1.4 Interrupção ADC ..........................................................................................65 2.3.1.5 Interrupção do Timer 1 .................................................................................66 2.3.1.6 Interrupção do Timer 2 .................................................................................66

2.3.2 Montagem da placa do protótipo......................................................................66

3 TESTES E VALIDAÇÃO DO PROTÓTIPO..............................................................68

CONSIDERAÇÕES FINAIS.................................................................................................72

REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................74

ANEXOS .................................................................................................................................77

ANEXO A - DIAGRAMA DE BLOCOS DO DSPIC30F2010...........................................78

ANEXO B – MAPA DA ORGANIZAÇÃO DAS MEMÓRIAS NO DSPIC30F2010 ......80

ANEXO C – TABELA DE INTERRUPÇÕES DO DSPIC30F2010..................................82

ANEXO D – MAPA DE REGISTRO DAS PORTS............................................................84

ANEXO E – AMPLIFICADOR OPERACIONAL INA128...............................................86

ANEXO F – AMPLIFICADOR OPERACIONAL CA3140 ..............................................92

ANEXO G – CÓDIGO FONTE DO PROGRAMA DO DSPIC ........................................97

ANEXO H – CIRCUITO DO PROTÓTIPO .....................................................................104

ANEXO I – LAYOUT DA PLACA DO PROTÓTIPO ....................................................106

Page 14: Monografia ECG Ampop

14

INTRODUÇÃO

A união de dispositivos eletrônicos com a medicina proporciona novas pesquisas da

Engenharia Biomédica. Pesquisas estas, na área de sensoriamento remoto e em sistemas

biomédicos, tais com instrumentação analógica/digital e processamento de sinais elétricos

inerentes do ser humano.

O Eletrocardiograma (ECG) constitui atualmente um dos mais utilizados métodos

não invasivos para diagnóstico de cardiopatias. O ECG pode ser obtido em consultórios

médicos, durante um exame de rotina com o paciente em repouso ou em atividade. O coração

gera sinais elétricos durante seu funcionamento, os quais se projetam até a superfície corporal.

O ECG funciona como um registro das variações do potencial elétrico do meio extracelular

decorrente da atividade cardíaca.

Utilizando os conhecimentos adquiridos durante a graduação, surgiu o interesse em

desenvolver um instrumento que integrasse a captação e processamento de sinais biomédicos

em nível digital, transmissão e visualização dos resultados.

O projeto em questão tem como objetivo construir um protótipo de eletrocardiógrafo

de monitoração. Os sinais biomédicos provenientes da superfície corporal são enviados até a

Page 15: Monografia ECG Ampop

15

placa de captura. Em seguida, passa por etapas de amplificação e por filtros analógicos ativos.

Na etapa final, o sinal é inserido no microcontrolador para ser tratado e enviado à porta serial

onde a informação é transmitida ao computador e visualizada por um software aplicativo, em

Linguagem Visual Basic (VB), desenvolvido somente para teste.

A estrutura deste trabalho é dividida em três partes principais. O Capítulo 1 o

envolve pesquisa e estudo sobre funcionamento cardíaco, amplificadores operacionais, filtros

e microcontrolador. No Capítulo 2 é apresentado o desenvolvimento do protótipo e

juntamente abordada a aplicação teórica. No Capítulo 3 são realizados os testes para a

validação do protótipo e apresentados os resultados obtidos. Nas Considerações Finais são

abordados os resultados obtidos no trabalho e citados os objetivos futuros para transformar o

protótipo em um produto final.

Page 16: Monografia ECG Ampop

16

1 FUNDAMENTOS TEÓRICOS

Introdução

Os fundamentos teóricos estão divididos em cinco partes. Na seção 1.1 será

apresentado o estudo sobre o coração e particularidades do sinal de ECG. Na seção 1.2 serão

apresentados os fundamentos básicos sobre os amplificadores operacionais utilizados neste

projeto. Na seção 1.3 é feito uma introdução aos filtros analógicos. Na seção 1.4 é

apresentado o processador digital de sinais e algumas estruturas internas do microcontrolador.

Enfim a seção 1.5 apresenta as ferramentas para desenvolvimento e gravação do

microcontrolador.

1.1 Coração

O coração é uma bomba pulsátil de quatro câmaras composto de dois átrios2 e dois

ventrículos3. Os átrios funcionam, principalmente, como vias de acesso aos ventrículos, mas

também bombeiam fracamente para ajudar na mobilização do sangue para os ventrículos.

2 Átrios - são câmaras cardíacas, localizada na metade superior direita e esquerda do coração. 3 Ventrículos – são as câmaras cardíacas inferiores, se divide em ventrículo esquerdo e ventrículo direito.

Page 17: Monografia ECG Ampop

17

Os ventrículos fornecem a principal força que impulsiona o sangue através dos

pulmões e do sistema circulatório periférico. A Figura 1.1 mostra as principais estruturas do

coração como os átrios e ventrículos (GUYTON & HALL, 2006).

Figura 1.1 – Anatomia Cardíaca. Fonte – SHIRLEY,2005.

O coração localiza-se na cavidade torácica, no mediastino. Dois terços do seu

volume estão situados à esquerda da linha sagital mediana. Esta posição, chamada de

levocárdica, é a mais freqüente. A forma do coração é aproximadamente cônica, com a base

voltada para trás e para a direita, e o ápice para a frente e para a esquerda (GUYTON &

HALL, 2006).

Page 18: Monografia ECG Ampop

18

1.1.1 Excitação Rítmica do Coração

O coração é dotado de um sistema próprio de geração de impulsos. Também tem

regulação pelo Sistema Nervoso Autônomo, que não será abordado neste trabalho, pois o

eletrocardiograma norteia-se pela regulação própria do coração.

Esse sistema próprio do coração inicia a geração de impulsos elétricos pelo nodo

sinusal (nodo S-A). O impulso elétrico é conduzido pelas vias internodais até o nodo

atrioventricular, onde o impulso é retardado para os ventrículos. O feixe atrioventricular é que

conduz o impulso até os ventrículos e as fibras de Purkinje (ramos direito e esquerdo)

conduzem o impulso para todas as outras áreas dos ventrículos. A Figura 1.2 demonstra o

nodo sinusal e o sistema de Purkinje do coração, mostrando ainda o nodo A-V, as vias atriais

internodais e os ramos ventriculares (GUYTON & HALL, 2006).

Figura 1.2 – O nodo sinusal e o sistema de Purkinje. Fonte – GUYTON & HALL, 2006.

Page 19: Monografia ECG Ampop

19

1.1.2 Tensão Normal no Eletrocardiograma

A tensão dos impulsos cardíacos é variável e pode-se observar dois níveis mais

importantes de tensão cardíaca: a tensão da fibra sinusal e a tensão do músculo cardíaco, no

sentido de comparar com os sinais captados na superfície corporal. Na fibra sinusal, o

potencial de repouso é de -55 a -60 milivolts e na fibra muscular este potencial é de -85 a -90

milivolts. A Figura 1.3 ilustra a descarga rítmica da fibra do nodo sinusal em relação de fibra

muscular ventricular. Essa diferença de tensão entre os tecidos cardíacos ocorre porque as

fibras sinusais são mais permeáveis aos canais de cálcio, o que torna a carga dessas fibras

menos negativas do que no músculo cardíaco.

Figura 1.3 – Ação do nodo sinusal versus fibra muscular ventricular. Fonte – GUYTON & HALL, 2006.

Page 20: Monografia ECG Ampop

20

Na despolarização4 o potencial de membrana pode chegar a 110 milivolts, porém a

tensão captada na superfície corporal é, em média, de 3 a 4 milivolts, dependendo de onde o

eletrodo é posicionado em relação ao coração (GUYTON & HALL, 2006).

1.1.3 Eletrocardiograma

O ECG é o registro das correntes elétricas que atravessam o coração e se propagam

para tecidos adjacentes e atingem a superfície corporal. Um ECG normal consiste em uma

onda P, um complexo de ondas Q, R e S (QRS) e uma onda T, conforme ilustrado na Figura

1.4.

Figura 1.4 – Gráfico de um ECG Normal. Fonte – GUYTON & HALL, 2006.

4 Despolarização - Ativação elétrica da célula ocasionada pelo influxo de sódio. Antecede a contração do músculo cardíaco.

Page 21: Monografia ECG Ampop

21

A onda P é gerada pela despolarização dos átrios e o complexo QRS é gerado pela

despolarização dos ventrículos. A onda T é a repolarização5 dos ventrículos, ou seja, é o

estado que ocorre após a despolarização, quando os ventrículos se recuperam do estado de

despolarização. A repolarização e despolarização podem ser visualizados na Figura 1.5. A

reposição atrial ocorre juntamente com a despolarização ventricular, portanto, o complexo

QRS se sobrepõe a esta onda (GUYTON & HALL, 2006).

Figura 1.5 – Despolarização e repolarização do coração. Fonte – SHIRLEY, 2005.

5 Repolarização - Retorno da célula ao estado de repouso, causado pela reentrada de potássio na célula. Equivale ao relaxamento do músculo cardíaco.

Page 22: Monografia ECG Ampop

22

O eletrocardiograma é visualizado normalmente em uma folha quadriculada, a

impressão respeita uma velocidade padrão de 25 milímetros por segundo, como ilustra a

Figura 1.6. O quadriculado que tem dimensões padronizadas serve para referenciar o nível de

tensão e de tempo. A amplitude de 1 milímetro (mm) corresponde a 0,1 milivolt (mV) e a

largura de 1 mm corresponde a 0,04 segundos (s). Para melhor visualização são destacados

blocos maiores de 5mm2 que correspondem a 0,5mV e 0,20s.

Figura 1.6 – Impressão padrão do ECG. Fonte – SHIRLEY, 2005.

1.1.4 Fluxo das correntes elétricas no coração

O impulso cardíaco chega aos ventrículos através do septo interventricular (Figura

1.1 – Anatomia Cardíaca) e logo após atinge as regiões mais externas. Isso caracteriza

eletronegatividade no interior dos ventrículos e eletropositividade no exterior. É possível

observar também que o fluxo médio de corrente ocorre com negatividade dirigida para a base

Page 23: Monografia ECG Ampop

23

cardíaca, enquanto que a positividade dirigida para o ápice. Sendo assim, a corrente flui da

base para o ápice (GUYTON & HALL, 2006).

Também dentro do tórax as correntes elétricas são conduzidas, pois os pulmões,

mesmo cheios de ar, conduzem a corrente elétrica, até os tecidos mais superficiais. Este fato

possibilita o registro dessas correntes através do ECG. A Figura 1.7 mostra o fluxo da

corrente no tórax ao redor dos ventrículos parcialmente despolarizados. (GUYTON & HALL,

2006).

Figura 1.7 – Fluxo da corrente no tórax. Fonte – GUYTON & HALL, 2006.

1.1.5 Derivações eletrocardiográficas

Para obtenção dos registros eletrocardiográficos é necessário a ligação das três

derivações bipolares dos membros. O termo “bipolar” quer dizer que o ECG é registrado por

dois eletrodos posicionados em lados diferentes do coração, ou seja, nos membros. A

derivação não só é um fio conectado no corpo, mas a combinação de dois fios e seus eletrodos

Page 24: Monografia ECG Ampop

24

para formar um circuito completo entre o corpo e o eletrocardiógrafo. As três derivações

bipolares padrão são:

Derivação I - Para registrar a derivação I o terminal negativo do eletrocardiógrafo é

ligado ao braço direito e o positivo, ao esquerdo. Portanto, quando o ponto do tórax

onde o braço direito é conectado for eletronegativo em relação ao ponto ao qual se

liga o braço esquerdo, o eletrocardiógrafo registrará positividade, isto é, acima da

linha da voltagem zero do eletrocardiograma. Quando ocorre o oposto, o

eletrocardiógrafo registra abaixo da linha de base;

Derivação II - Para registrar a derivação II, o terminal negativo do eletrocardiógrafo

é ligado ao braço direito e o terminal positivo, à perna esquerda. Portanto, quando o

braço direito é negativo em relação à perna esquerda, o eletrocardiógrafo registra

positividade;

Derivação III - Para registrar a derivação III, o terminal negativo do

eletrocardiógrafo é ligado ao braço esquerdo e o terminal positivo, à perna esquerda.

Isto significa que o eletrocardiógrafo registra positividade quando o braço esquerdo é

negativo em relação à perna esquerda.

Triângulo de Einthoven, os dois braços e a perna esquerda formam os ápices de um

triângulo que circunda o coração. Os dois ápices superiores do triângulo representam os

pontos nos quais os dois braços se ligam com os líquidos que circundam o coração, e o ápice

inferior é um ponto em que a perna esquerda se liga a estes líquidos (GUYTON & HALL,

2006).

Page 25: Monografia ECG Ampop

25

A Figura 1.8 mostra a disposição convencional dos eletrodos que formam o triângulo

de Einthoven sobreposto ao tórax como as derivações eletrocardiográficas padrão I II e III,

identificados com: Braço Esquerdo (BE); Braço Direito (BD) e Perna Esquerda (PE).

Figura 1.8 – Triangulo de Einthoven. Fonte – SHIRLEY, 2005.

1.2 Amplificador Operacional

O Amplificador Operacional (AMPOP) foi projetado originalmente para executar

operações matemáticas como adição, subtração, derivação, integração, multiplicação,

resolução de equações diferenciais, daí porque foi chamado OPERACIONAL.

Atualmente, os amplificadores operacionais têm outras aplicações, decorrentes da

sua versatilidade em efetuar operações com tensões elétricas: são utilizados no processamento

e na geração de sinais; em instrumentação e controle; como comparador, regulador,

integrador, diferenciador, somador, filtro ativo, oscilador, entre outras aplicações

(JUNIOR,2001).

Page 26: Monografia ECG Ampop

26

1.2.1 Representação de um Amplificador Operacional

Um Ampop pode ser entendido como um circuito amplificador de alto ganho, onde a

entrada é representada por uma resistência de alto valor e a saída por uma fonte de tensão

controlada e uma resistência em série. A representação gráfica do amplificador ideal é

mostrada na Figura 1.9, onde A representa o ganho em malha aberta; i1 e i2 representam as

correntes de entrada do Ampop.

Figura 1.9 – Circuito Equivalente do AMPOP Ideal. Fonte – SEDRA, 2000.

O Ampop responde apenas à diferença de sinal (v2 – v1) e, portanto, ignora qualquer

sinal comum entre as entradas. Por exemplo, se tiver 1 Volt (V) nas duas entradas,

teoricamente a saída será nula. Esta propriedade é chamada de Rejeição de Modo Comum

(CMRR), em Ampop ideais a CMRR tende a infinito (MALVINO, 1995).

Page 27: Monografia ECG Ampop

27

1.2.2 Configuração básica inversora

Nos circuitos de malha fechada, uma amostra do sinal de saída é retornada para o

circuito com intenção de controle. Quando ligado na entrada inversora, o sinal de retorno se

opõe ao sinal da entrada, ocorrendo inversão de 180 graus. A Figura 1.10 mostra a ligação

básica do amplificador inversor (GIACOMIN, 2000).

Figura 1.10 – Amplificador Inversor. Fonte – SEDRA, 2000.

O resistor R2 fornece a realimentação do circuito e R1 a impedância de entrada, o

resultado pode ser visto na Equação 1.1.

ViRRVo

RR

ViVo

⋅−=⇒−=12

12 (1.1)

Page 28: Monografia ECG Ampop

28

1.2.3 Configuração básica não inversora

Nesta configuração o sinal é conectado diretamente na entrada não inversora, e o

resistor R1 está aterrado. Como a entrada inversora apresenta curto virtual, a entrada não

inversora apresenta alta impedância. O circuito não inversor está representado na Figura 1.11

e o cálculo do ganho é apresentado na Equação 1.2 (SEDRA, 2000).

Figura 1.11 – Amplificador Operacional em uma configuração não-inversora. Fonte – SEDRA, 2000.

121

RR

ViVo

+= (1.2)

Page 29: Monografia ECG Ampop

29

1.2.4 Amplificador de diferenças

Utilizando as montagens inversora e não inversora permite realizar um circuito que

implemente a amplificação da diferença entre dois sinais. Este circuito está representado na

Figura 1.12 e sua simplificação na Equação 1.3 (SEDRA, 2000).

Figura 1.12 – Circuito amplificador diferencial. Fonte – SEDRA, 2000.

( )1212

II VVRRVo −⋅= (1.3)

1.2.5 Amplificador de Instrumentação

O amplificador de instrumentação é basicamente um amplificador diferencial com

dois estágios de entrada. Cada sinal de entrada é conectado diretamente ao terminal não-

inversor de um Ampop, de modo que tenha alta impedância de entrada. São utilizados

dispositivos de alta qualidade e casamento rigoroso de impedâncias, apresenta CMR muito

Page 30: Monografia ECG Ampop

30

alta. Um circuito básico de amplificador de instrumentação é mostrado na Figura 1.13 e o

cálculo de Vo na Equação 1.4 (SEDRA, 2000).

Figura 1.13 – Amplificador de instrumentação. Fonte – SEDRA, 2000.

( )12321

34

II VVRR

RRVo −⋅⎟

⎠⎞

⎜⎝⎛ +⋅= (1.4)

1.3 Filtros Ativos

Um filtro é um dispositivo que permite que sinais com determinadas freqüências

passem por ele enquanto que outros sinais são atenuados. O filtro ideal tem um ganho

constante em todas as freqüências de sua faixa de passagem, ou banda passante, e ganho zero

em todas as freqüências fora da faixa de passagem. A Figura 1.14 mostra a resposta em

freqüência ideal e real dos quatro principais filtros usados em circuitos eletrônicos: passa-

baixas e passa-altas. As freqüências de corte são mostradas onde a resposta é 3 Decibels (dB)

abaixo de seu valor máximo na banda passante (BOGART, 2001).

Page 31: Monografia ECG Ampop

31

Figura 1.14 – Resposta em freqüência de quatro principais filtros. Fonte – BOGART, 2001.

Os filtros são usados para isolar componentes desejáveis da freqüência de sinais

complexos e/ou removerem componentes indesejáveis, tais como ruídos e harmônicas. Os

filtros passivos são aqueles constituídos de resistores, capacitores e indutores, já os filtros

ativos são montados com componentes ativos como amplificadores operacionais e transistores

junto com capacitores e resistores (BOGART, 2001).

1.3.1 Filtro Passa-Baixas de Primeira Ordem

Os Filtros Ativos de Primeira Ordem, ou de um pólo, a resposta em freqüência

apresenta uma atenuação de 20dB/década. A Figura 1.15 mostra o circuito de um filtro passa-

Page 32: Monografia ECG Ampop

32

baixas de primeira ordem, o cálculo do ganho e da Freqüência de corte (fc) estão identificados

na Equação 1.5 (MALVINO, 1995).

Figura 1.15 – Filtro Passa Baixo de primeira ordem na configuração inversora. Fonte – BOGART, 2001.

CRf

RRGanho

c ⋅⋅⋅=

−=

221

12

π

(1.5)

1.3.2 Filtro Passa-Altas de Primeira Ordem

No filtro passa-altas é removido o circuito de desvio e adicionado um circuito de

acoplamento com R1 e C. Este tipo de acoplamento faz com que as freqüências altas passem e

as freqüências baixas sejam atenuadas sendo que, abaixo da freqüência de corte, a tensão de

saída é atenuada 20dB/década. O circuito do filtro passa-altas é mostrado na Figura 1.16 e os

cálculos na Equação 1.6 (MALVINO, 1995).

Page 33: Monografia ECG Ampop

33

Figura 1.16 – Filtro passa-altas na configuração inversora.

CRf

RRGanho

c ⋅⋅⋅=

−=

121

12

π

(1.6)

1.4 Processador Digital de Sinais

Vindo do termo em inglês Digital Signal Processing (DSP), ou seja, processamento

digital de sinais, trabalha com sinais analógicos que foram previamente amostrados em

intervalos de tempo e quantizados na forma digital. Possibilita um alto desempenho para

aplicações numéricas em tempo real, as quais seriam impossíveis de serem realizadas por

circuitos analógicos. É projetado para executar rapidamente diversas manipulações e

transformações matemáticas em números extraídos dos circuitos analógicos rapidamente

(OLIVEIRA, 2006).

Page 34: Monografia ECG Ampop

34

Os DSPs possuem algumas características particulares projetadas para desempenhar

tarefas repetitivas de alta performance. Uma destas tarefas que se destaca é a habilidade de

realizar uma operação de multiplicação e acumulação em um único ciclo de instrução. Esta

operação é largamente usada em processos de tempo real. Outra característica dos DSPs é a

capacidade de realocar o espaço não utilizado da memória de programa para uma extensão de

memória de dados, possibilitando uma otimização das memórias do processador.

(OLIVEIRA, 2006).

1.4.1 Microcontrolador dsPIC30F2010

O dsPIC30F2010 possui barramento de dados de 16 bits e de instruções de 24 bits

em uma arquitetura Harvard com algumas modificações. A combinação das vantagens de um

microcontrolador de 16 bits com as de um DSP torna este dispositivo uma solução completa

para aplicações como controle de motores (principal aplicação da família 30F), conversão de

potência, sensores de alta velocidade, processamento de sinais de áudio e voz, conectividade,

como também aplicações automotivas e em telecomunicações (MICROCHIP, 2005, apud

FÜHR, 2006).

Na Figura 1.17 pode ser observada a disposição dos pinos do dsPIC30F2010 com as

nomenclaturas e o encapsulamento SDIP de 28 pinos utilizado no protótipo. Os pinos de VDD

e VSS são utilizados para fornecer a alimentação elétrica para o componente, sendo VSS o

pino de zero volt e VDD a alimentação positiva, neste protótipo foi utilizado 5V

(MICROCHIP, 2005, apud FÜHR, 2006).

Page 35: Monografia ECG Ampop

35

Figura 1.17 – Diagrama de pinos do dsPic30F2010. Fonte – MICROCHIP, 2005.

O pino MCLR é responsável pelo reset do dsPIC sempre que recebe um sinal em

nível baixo, limpando os registradores utilizados pelo componente e reiniciando o seu

programa. Já os pinos OSC1 (9) e OSC2 (10) recebem o sinal referente ao clock6 fornecido ao

dsPIC, que é gerado pelo circuito oscilador a cristal exibido na Figura 1.18. O valor da

freqüência de oscilação do circuito a cristal utilizado no protótipo é de 20MHz (Microchip,

2005).

Figura 1.18 – Circuito de entrada do clock para o dsPic30F2010. Fonte – MICROCHIP, 2005.

6 O clock fornece a sensibilidade de tempo para o processador, é um sinal de onda quadrada e a cada nível alto uma instrução no mínimo é executada. Um ciclo de clock consiste na diferença de tempo entre dois níveis altos dessa onda do oscilador.

Page 36: Monografia ECG Ampop

36

A maioria dos pinos do componente possui mais de uma função, que podem ser

configuradas conforme a necessidade através da programação do dsPIC30F2010. Estas

funções e configurações dos demais pinos são abordadas conforme a necessidade durante o

desenvolvimento do protótipo (OLIVEIRA, 2006).

O módulo Transmissor e Receptor Assíncrono Universal, do inglês Universal

Asynchronous Receiver Transmitter (UART), que o dsPIC possui internamente é configurado

para comunicar serialmente com um computador, onde está instalado o Software Supervisório

para plotar o eletrocardiograma, programado em Linguagem Visual Basic7 (VB) A

comunicação serial utilizada no projeto segue o padrão RS232 (MICROCHIP, 2005, apud

FÜHR, 2006).

1.4.2 Arquitetura da CPU

O dsPIC possui uma tecnologia de processamento RISC com algumas modificações

adaptadas para a realidade deste DSP. A tecnologia RISC possui instruções simplificadas,

com formato fixo, sendo executadas em apenas um ciclo de instrução. No dsPIC cada

instrução leva 4 ciclos de clock para ser executada, sendo que alguns comandos podem

necessitar de mais de 4 períodos de instrução. Desta forma não há o risco de um conjunto de

instruções ser tão extenso que comprometa o desempenho do dsPIC, o que não poderia ser

garantido se o mesmo utilizasse a tecnologia CISC para processamento dos dados, onde o

conjunto de instruções é mais complexo e não possui largura fixa. O diagrama em blocos da

7 O Visual Basic é uma linguagem de programação de autoria da empresa Microsoft, que é parte integrante do pacote Microsoft Visual Studio.

Page 37: Monografia ECG Ampop

37

arquitetura interna do dsPIC30F2010 pode ser verificado no ANEXO A (MICROCHIP, 2005,

apud FÜHR, 2006).

1.4.3 Organização da Memória

A área da memória de programa ocupa 4M words (palavras) de instruções e é

endereçável por 24 bits ou pelo PC (Program Counter) por 23 bits. Conforme mostrado na

tabela do ANEXO B, referente ao mapa de espaço de memória de programa do

dsPIC30F2010, os endereços entre 000000h e 0000FEh pertencem à tabela de vetores de

Traps8 e Interrupções. Os endereços entre 000100h e 001FFEh são reservados para a memória

de programa Flash, onde o usuário grava o programa fonte do dsPIC. Os endereços entre

002000h e 7FFBFEh são reservados para funções internas do componente (MICROCHIP,

2005, apud FÜHR, 2006).

A memória EEPROM9 ocupa os endereços entre 7FFC00h e 7FFFFEh, podendo ser

utilizada para gravar parâmetros necessários para o correto funcionamento do programa fonte

sem que os mesmos sejam perdidos quando a alimentação elétrica do componente for

desligada. A área de endereço de programa é incrementada a cada 2 words (palavras de 16

bits) do programa, para fornecer compatibilidade com endereçamento da área de dados

(MICROCHIP, 2005, apud FÜHR, 2006).

O dispositivo tem duas áreas de memórias de dados. As áreas de dados podem ser

consideradas independentes para a maioria das instruções do DSP, ou como uma área linear

8 Traps: são interrupções não mascaráveis que indicam erro de software ou hardware relacionado a uma prioridade pré definida (MICROCHIP, 2005). 9 EEPROM – electrically erasable programmable read-only memory.

Page 38: Monografia ECG Ampop

38

unificada de endereços para instruções da classe MAC. As áreas de dados são acessadas

usando duas Unidades Geradoras de Endereço (AGUs) e caminhos de dados separados

(MICROCHIP, 2005, apud FÜHR, 2006).

1.4.4 Interrupções

Uma interrupção tem como objetivo parar a execução normal do programa do dsPIC

para executar um bloco de comandos específicos a fim de atender a uma solicitação do

sistema. Esta interrupção pode ser causada por um dispositivo interno ou externo. Os módulos

internos do dsPIC30F2010 possuem uma ordem de prioridade de interrupções: caso não seja

orientada é assumida uma tabela com as prioridades padrão do dsPIC, como pode ser

visualizado no ANEXO C.

Sempre que ocorre uma interrupção devido à ocorrência de algum evento, o seu

endereço é armazenado na pilha interna do processador, fazendo com que sejam executados

os comandos referentes à rotina desta interrupção. Ao finalizar esta tarefa, o processador volta

à execução normal do programa na posição seguinte a qual havia parado. Para que as

interrupções ocorram, é necessário que sejam habilitadas e configuradas conforme a

necessidade. A configuração de cada uma delas determina o exato momento que a mesma

deve ocorrer, podendo ocorrer no início ou final de um determinado processo, dependendo da

rotina programada (MICROCHIP, 2005, apud FÜHR, 2006).

Page 39: Monografia ECG Ampop

39

1.4.5 Entradas e Saídas Digitais

Os pinos utilizados como entradas e saídas digitais são selecionados via software, ou

seja, através da programação do dsPIC é possível configurar cada pino individualmente como

entrada ou saída digital. Estes pinos formam grupos chamados de PORTs, sendo que a

quantidade de pinos de cada PORT é variável, conforme demonstrado na Tabela 1. No

ANEXO D é mostrado em detalhe o mapa de registro das portas.

Tabela 1 – Portas de entrada do dsPIC.

Registrador Entrada/Saída

Registrador de

Configuração

Número de pinos de Entrada/Saída

PORTB TRISB 6 PORTC TRISC 3 PORTD TRISD 2 PORTE TRISE 7 PORTF TRISF 2

Fonte – MICROCHIP, 2005.

A configuração é possível através dos registradores TRISX, onde o “X” corresponde

à letra do PORTX (B, C, D, E , F) a ser configurado. Quando um bit do registrador TRISX é

configurado para nível alto (1), o pino do PORTX correspondente passa a atuar como entrada

de dados digital (Input Data), e quando ajustado para nível baixo (0), o pino passa a atuar

como saída de dados digital (Output Data). Todos os pinos de I/O possuem um buffer Schmitt

Trigger 10para obter imunidade a ruído. A Figura 1.19 mostra o circuito de controle das portas

de entrada e saída.

10 Schmitt Trigger - é um circuito comparador incorporado de realimentação positiva.

Page 40: Monografia ECG Ampop

40

Figura 1.19 – Circuito de controle das portas I/O. Fonte – MICROCHIP, 2005.

Os registradores que configuram as saídas ou entradas dos módulos PWM, UART e

ADC sobrepõem os ajustes dos ports configurados como entradas ou saídas digitais nos

registradores TRISA, TRISB, TRISC, TRISD, TRISE e TRISF através do Módulo Periférico

(Peripheral Module) (MICROCHIP, 2005, apud FÜHR, 2006).

1.4.6 Timers

Os Timers são utilizados para fornecer uma interrupção no programa sempre que um

determinado tempo de execução for atingido, criando uma linha de tempo de alta definição

para o programa. Podem ser utilizados para determinar o período de amostragem de um

Page 41: Monografia ECG Ampop

41

sistema discreto, coletando e processando os dados a cada interrupção do Timer, gerando uma

seqüência de amostragem de um determinado sinal, por exemplo, a aquisição no A/D do sinal

de ECG (OLIVEIRA, 2006).

O dsPIC30F2010 possui três Timers internos com contadores de 16 bits, fornecendo

uma contagem de até 216 ou 65535. Existe a possibilidade de juntar dois Timers, gerando um

contador de 32 bits aumentando a contagem para 232 ou 4.294.967.295. O diagrama em blocos

do módulo do Timer 1 pode ser visualizado na Figura 1.20.

Figura 1.20 – Diagrama de blocos do Timer tipo 1. Fonte – MICROCHIP, 2005.

Quando existe a necessidade de um período de contagem de tempo maior, existe

internamente no componente um sistema chamado prescaler. Ele se baseia em um contador

separado, capaz de manter a contagem a cada clock (1:1) ou aumentar a relação de contagem

Page 42: Monografia ECG Ampop

42

de ciclos de clock do timer em 8 (1:8), 64 (1:64) ou 256 (1:256) vezes, aumentando o range de

tempo configurável para cada timer (MICROCHIP, 2005, apud FÜHR, 2006).

1.4.7 Módulo UART

O módulo transmissor e receptor assíncrono universal do dsPIC30F2010 é utilizado

para a transmissão bidirecional simultânea, ou seja, com dois canais de comunicação

independentes que podem operar ao mesmo tempo, com 8 ou 9 bits de comunicação de dados

seriais. A comunicação assíncrona exige que os dois pontos independentes sejam

sincronizados previamente, havendo a necessidade de possuírem a mesma taxa de

transferência e mesmo tamanho dos dados (OLIVEIRA, 2006).

A taxa de transferência dos dados é denominada Baud Rate, cuja unidade de medida

é bits por segundo (bps). O que determina o início e o fim de um dado são os bits de início

(start bit) e parada (stop bit) do byte transmitido, como podemos verificar na Figura 1.21

(OLIVEIRA, 2006).

Figura 1.21 – Comunicação Serial. Fonte – OLIVEIRA, 2006.

As configurações de comunicação do módulo UART definem as características de

comunicação serial do dsPIC30F2010. A comunicação pode ser com 8 ou 9 bits de dados, 1

Page 43: Monografia ECG Ampop

43

ou 2 stop bits e controle de paridade par, ímpar ou sem controle de paridade. O Baud Rate11 é

ajustado no registrador U1BRG, que é calculado para receber o valor correto. O cálculo segue

a fórmula da Equação 1.7, onde a freqüência do ciclo obedece à fórmula da Equação 1.8.

(MICROCHIP, 2005, apud FÜHR, 2006).

( )( ) 1

_161 −

⋅=

bpsRateBaudHzFCYBRGU (1.7)

( )4

____ CristaldoFreqüênciaFCYciclodoFreqüência = (1.8)

No protótipo, é usado o pino de comunicação U1TX (17) para o envio de dados via

porta serial RS232 e o pino (18) U1RX recebe os dados. Internamente o dsPIC30F2010

possui 4 buffers12 de 16 bits para a recepção de dados via serial e outros 4 buffers para a

transmissão de dados. É possível configurar a interrupção de recepção para que ela ocorra

quando os 4 Buffers estiverem ocupados, quando 3 Buffers estiverem ocupados ou para cada

recepção de um dado novo. A interrupção de transmissão ocorre quando um dado é

armazenado no registrador de transmissão, podendo ser selecionado se a interrupção ocorrerá

somente quando os Buffers estiverem vazios ou quando eles ainda estiverem com dados

armazenados (MICROCHIP, 2005, apud FÜHR, 2006).

11 O termo Baud Rate é utilizado como medida de velocidade de transmissão de informação entre computadores através de linhas telefônicas. Baud Rate é frequentemente utilizado como sinônimo de bits por segundo (bps), apesar de não ser tecnicamente verdadeiro. O nome Baud vem de J. M. Baudot, inventor do código telegráfico Baudot. 12 Pequena quantidade de memória para armazenamento de dados temporários, auxiliando a CPU e os módulos internos na execução de suas tarefas e compensando diferentes taxas de transferência de dados.

Page 44: Monografia ECG Ampop

44

O circuito interno de transmissão de dados pelo módulo UART é visualizado na

Figura 1.22. O barramento de dados da CPU é conectado diretamente aos buffers de

transmissão, onde são armazenados os dados que serão transmitidos serialmente. O byte do

buffer é armazenado no Registrador de Deslocamento (Transmit Shift Register), que, após ser

transmitido o start bit, desloca serialmente os bits do dado para a saída U1TX, procedendo

com a comunicação. Ao finalizar a transmissão de todo o byte é enviado o stop bit. O circuito

gerador de baud rate determina a velocidade de transmissão, neste caso 38400bps. Além de

controlar estes dispositivos, o Controle de Transmissão (Transmit Control) também é

responsável por gerar os bits de status e a interrupção do módulo transmissor (MICROCHIP,

2005, apud FÜHR, 2006).

Figura 1.22 – Circuito interno para transmissão dos dados pelo módulo UART. Fonte – MICROCHIP, 2005.

O circuito interno de recepção de dados pelo módulo UART é visualizado na Figura

1.23. Os dados são coletados através do pino U1RX. Ao receber o start bit, o byte é deslocado

Page 45: Monografia ECG Ampop

45

serialmente para o Registrador de Deslocamento (Receive Shift Register). Ao receber o stop

bit, indicando que a recepção do byte está completa, ele é transferido para os buffers. A

velocidade que ocorre esta seqüência de ações depende do gerador de baud rate. O Controle

de Recepção (Receive Buffer Control) é responsável por controlar estes dispositivos, gerar os

sinais de status e a interrupção do módulo (MICROCHIP, 2005, apud FÜHR, 2006).

Figura 1.23 – Circuito interno para recepção dos dados pelo módulo UART. Fonte – MIROCHIP, 2006.

1.4.8 Módulo de Conversão A/D

Qualquer sinal encontrado no mundo real é analógico, mas pode ser amostrado de

forma discreta e quantizado para torná-lo digital, conseqüentemente, passível de ser

Page 46: Monografia ECG Ampop

46

manipulado por sistemas de controle digitais como microcontroladores, computadores ou

processadores digitais de sinais. A conversão analógico-digital (A/D) permite que sinais

analógicos sejam quantizados em valores digitais através de curtos períodos de amostragens.

A velocidade que é feita a conversão é chamada de freqüência de amostragem ou taxa de

conversão (OLIVEIRA, 2006, apud FÜHR, 2006).

O dsPIC30F2010 possui implementado internamente um conversor A/D capaz de

converter um sinal analógico em um sinal digital de 10 bits. Estão disponíveis internamente

seis canais de conversores A/D, podendo ser multiplexados com o conversor conforme a

necessidade do programador. Neste protótipo, para aquisição do sinal ECG é usado apenas um

canal do A/D (MICROCHIP,2004 , apud FÜHR, 2006).

O conversor A/D necessita de uma tensão de alimentação de seu circuito interno

separada, pois deve ser muito bem estabilizada e sem ruídos para que a conversão seja a mais

precisa possível. Esta alimentação ocorre entre os pinos AVdd (28) e AVss (8 e 27). A tensão

de referência do conversor A/D é utilizada para determinar os valores máximos e mínimos da

entrada analógica, e pode ser configurada pelo programa do dsPIC30F2010 para assumir a

própria alimentação AVdd e AVss ou assumir os valores ajustados pelos pinos Vref+ (2) e

Vref- (3), que são valores intermediários a AVdd e AVss (MICROCHIP, 2004, apud FÜHR,

2006).

O dsPIC30F2010 utiliza o método de conversão por aproximação sucessiva na

transformação dos sinais analógicos em digitais. Este método é muito utilizado em conversões

A/D por possuir uma alta velocidade de convergência, necessitando de no máximo 10 ciclos

de clock para converter um sinal contínuo em um sinal discreto de 10 bits, chegando a

Page 47: Monografia ECG Ampop

47

velocidades de até 500ksps (50.000 amostragens por segundo) no dsPIC30F2010

(MICROCHIP, 2005, apud FÜHR, 2006).

O funcionamento deste método de conversão é baseado na comparação entre o valor

de entrada analógico com um valor padrão para cada bit de conversão. O bit mais

significativo será a comparação entre a entrada e a metade da tensão de referência (AVdd / 2),

resultando em nível lógico alto se a entrada for igual ou maior a tensão de comparação, e

nível lógico baixo caso for menor (MITRA, 2001, apud FÜHR, 2006).

Caso o resultado do primeiro bit de conversão tenha ficado em nível alto, o valor de

comparação utilizado para a conversão do segundo bit mais significativo será o valor de

comparação anterior somado a um quarto do valor de referência (AVdd / 2 + AVdd / 4 =

3AVdd / 4). Se a conversão do bit anterior ficou em nível baixo, a tensão de comparação será

subtraída de um quarto do valor de referência (AVdd / 2 - AVdd / 4 = AVdd / 4). Novamente

o resultado desta comparação definirá o nível lógico do bit, sendo repetido o mesmo processo

para cada um dos demais bits (MITRA, 2001, apud FÜHR, 2006).

O módulo de conversão A/D possui 16 buffers de 16 bits para acumular os resultados

da conversão até que os mesmos sejam coletados para a utilização no programa. A leitura do

resultado é feita diretamente nos Buffers do conversor, não podendo ser feita a leitura

diretamente na saída do conversor. Outra vantagem deste módulo é que ele atua independente

da CPU estar em modo Idle (repouso) ou em modo Sleep (hibernando), podendo continuar em

funcionamento se for necessário. A interrupção do módulo A/D pode ser configurada para

ocorrer sempre que um determinado buffer esteja cheio, podendo ocorrer de 1 a 16 conversões

até que a interrupção ocorra (MICROCHIP, 2005, apud FÜHR, 2006).

Page 48: Monografia ECG Ampop

48

O circuito interno do módulo de conversão de sinais analógicos para digitais (A/D) é

visualizado na Figura 1.24 onde estão representados as seis portas analógicas (MICROCHIP,

2004).

Figura 1.24 – Circuito interno do módulo de conversão A/D. Fonte – MICROCHIP, 2005.

1.5 Ferramentas para Desenvolvimento e Depuração

Para o desenvolvimento, implementação, depuração e compilação do programa em

Linguagem C e Asembly e da gravação do dsPIC30F2010 são utilizadas algumas ferramentas

fornecidas pelo fabricante do componente. O software responsável pelo desenvolvimento e

depuração do programa chama-se MPLAB. Neste trabalho foi instalada a versão 7.60

Page 49: Monografia ECG Ampop

49

fornecida no site do fabricante (http://microchip.com). A Figura 1.25 mostra a tela principal

do MPLAB.

Figura 1.25 – Programador e Depurador MPLAB V7.6. Fonte – MICROCHIP, 2007.

O compilador MPLAB C30 possui a função de converter o programa implementado

em Linguagem C para a Linguagem de Máquina, permitindo a correta interpretação do

programa por parte do dsPIC30F2010. O processo de compilação do compilador avalia se há

problemas de sintaxe nos comandos do programa, gerando o arquivo com extensão "hex" se

nenhum erro for detectado, ou seja, um arquivo com dados em linguagem de máquina e

pronto para ser gravado no dsPIC. O erro de sintaxe ocorre quando um comando não está

escrito conforme determina a estrutura da linguagem de programação utilizada. Porém, o

compilador não detecta erros de semântica, ou seja, erros causados devido a uma lógica

incorreta, não executando a ação desejada pelo programador (OLIVEIRA, 2006).

Page 50: Monografia ECG Ampop

50

Uma vantagem do Compilador C30 é a possibilidade de utilizar comandos em

Linguagem C e Assembly no mesmo programa, podendo haver uma mistura de comandos

diferentes caso seja necessário (OLIVEIRA, 2006).

1.5.1 Gravador e Depurador in Circuit ICD2BR

Para gravar o programa fonte no dsPIC30F2010 é utilizado um kit gravador e

depurador ICD2BR, fabricado pela Labtools13, que permite que o dsPIC seja programado in

circuit (no circuito), ou seja, não é necessário remover o chip processador do circuito de teste

para fazer a gravação do programa na sua memória flash.

Na Figura 1.26 é visualizado o Kit do Gravador e Depurador ICD2BR original. Ele é

composto da placa ICD2BR e seus respectivos cabos de conexão com o computador e com a

placa soquete para a conexão do PIC. O protótipo do eletrocardiógrafo possui junto ao

processador a ligação dos pinos necessários para gravação do dsPIC junto ao kit gravador

através do conector RJ-12 . Também acompanha um CD com o software MPLAB versão 7.21

e o manual de operação (novas versões do MPLAB podem ser baixadas do site da

MICROCHIP, HTTP://www.microchip.com).

13 Labtools Mosaico Didactic Division é uma empresa situada em São Paulo que comercializa produtos eletrônicos e ministra cursos sobre microcontroladores fabricados pela Microchip.

Page 51: Monografia ECG Ampop

51

Figura 1.26 – Kit gravador e depurador in circuit ICD2BR. Fonte – Site da Labtools: http://www.labtools.com.br.

A gravação do componente ocorre através dos pinos 17 e 18, referentes às

entradas/saídas RF2 e RF3 e há a necessidade de atuar no pino MCLR.

Page 52: Monografia ECG Ampop

52

2 DESENVOLVIMENTO DO PROTÓTIPO

O desenvolvimento do protótipo para aquisição de ECG é dividido em quatro etapas

principais. A Figura 2.1 ilustra o diagrama principal do projeto. Na primeira é apresentado o

sensor utilizado na captura do sinal biomédico. Na segunda etapa, denominada de etapa

analógica, é apresentado o filtro analógico e amplificação do sinal. Na terceira etapa,

denominada digital, é mostrada a aplicação do microcontrolador, o conversor analógico

digital e a interface de comunicação serial. Por fim, a última etapa mostra a ferramenta em

VB vizualizando o gráfico proveniente do microcontrolador.

Etapa Analógica

Etapa Digital

Figura 2.1 – Diagrama em Blocos do Protótipo.

Page 53: Monografia ECG Ampop

53

2.1 Eletrodos e cabos

Para aquisição dos sinais de ECG foi escolhido o eletrodo para monitorização

cardíaca modelo 2223 da 3M14. Este consiste em eletrodo descartável não invasivo composto

de: espuma de polietileno, polivinilálcool coberto com adesivo acrílico, polietileno coberto

com silicone, polímero sintético hidrofílico, pino metálico e contra pino de Ag/AgCl

(prata/cloreto de prata).

No projeto são utilizados três eletrodos e estes podem ficar colados no tórax de um

ser humano por um prazo máximo de 48 horas. Após este período os eletrodos podem

oferecer irritações na pele. A Figura 2.2 mostra o eletrodo da 3M.

Figura 2.2 – Eletrodo para ECG da 3M. Fonte – 3M do Brasil.

Este tipo de eletrodo é mais usado, pois possui potencial de meia célula, ou seja,

forma um potencial de Corrente Contínua (CC) pequeno em contato com a pele, reduzindo a

variação da linha de base.

Os cabos dos eletrodos são coaxiais e a malha externa é conectada ao terra do

circuito de modo a reduzir a interferência eletromagnética existente no ambiente. O fio do

14 3M do Brasil Ltda – Produtos Médico-Hospitalares, Link: WWW.3M.com.br

Page 54: Monografia ECG Ampop

54

núcleo do cabo deve ser ligado ao eletrodo através de garra do tipo jacaré ou botão de contato

específico. Existe no mercado cabos específicos desenvolvidos para conectar com eletrodos

de ECG, contudo foi utilizado no protótipo um cabo confeccionado com garra do tipo jacaré.

A Figura 2.3 mostra o cabo montado para o protótipo com conector para ligação na placa de

circuito impresso.

Figura 2.3 – Cabo usado para aquisição de ECG.

2.2 Etapa analógica

Nesta etapa o projeto do circuito eletrônico para aquisição de sinais de ECG tem os

seguintes requisitos: adquirir o sinal analógico de baixa amplitude, amplificar, filtrar e

eliminar níveis de tensão negativa, permitindo assim a ligação ao conversor A/D interno do

dsPIC.

A banda de freqüências útil de um sinal de ECG varia de acordo com a aplicação de

0,5 Hz a 50Hz para unidades de monitoramento (banda selecionada para este protótipo) e

acima de 1kHz para medidas de potencial tardio (detecção de marca-passo). Um ECG clínico

padrão tem largura de banda de 0,05Hz a 100Hz (TOMPKINS, 2000).

Page 55: Monografia ECG Ampop

55

O sinal de ECG pode ser perturbado por diversos tipos de fontes de ruidos. Os

principais são:

Interferência da rede elétrica: 60Hz e harmônicas de ordem superior.

Contato dos eletrodos: a variação do contato do eletrodo com a pele causa um

deslocamento da linha de base do sinal, que é uma variação de tensão proveniente do

contato do eletrodo-pele.

Contração muscular: os sinais típicos de Eletromiografia (EMG) são gerados e

misturados aos sinais de ECG.

Respiração: a respiração causa o deslocamento da linha de base do sinal.

Interferência eletromagnética: outros dispositivos elétricos e eletrônicos podem

causar interferência com os fios ligados aos eletrodos atuando como antenas.

2.2.1 Amplificador de instrumentação

O sinal do ECG captado pelo eletrodo varia entre 0 a 5mV. O amplificador de

instrumentação será responsável por amplificar cerca de 10 vezes este sinal, removendo parte

dos ruídos durante a captura, pois este tipo de amplificador só amplifica as diferenças de

sinais.

Page 56: Monografia ECG Ampop

56

O amplificador operacional escolhido para esta etapa foi o INA128 da Texas

Instruments15 (TI) por possuir algumas características: ganho ajustável através de resistor

externo, rejeição de modo comum superior a 120dB e alimentação entre +/-2,25V a +/-18V,

conforme Anexo E. A Figura 2.4 mostra o diagrama interno do INA128 e a equação de ganho.

Figura 2.4 – Circuito interno do INA118 Fonte – INA118 Datasheet, 2005

O cálculo do ganho projetado para esta etapa do circuito é mostrado na Equação 2.1.

O circuito montado com o amplificador de instrumentação é mostrado na Figura 2.5.

15 Texas Instruments - A Texas Instruments é uma empresa americana atuante na área de semicondutores, especialmente no mercado de DSPs, microcontroladores e conversores (ADCs e DACs) e amplificadores operacionais. A TI está sediada em Dallas, no estado do Texas. Link: http://www.ti.com/sc/brasil/index.htm

Page 57: Monografia ECG Ampop

57

Figura 2.5 – Circuito do amplificador de instrumentação.

92,96.5

501501 =ΩΩ

+→Ω

+=kk

RkGG

(2.1)

2.2.2 Desenvolvimento do Filtro Passa-Altas

O filtro passa-altas foi calculado para a freqüência de corte de 0,5 Hz e permite

passar somente sinais com freqüência superior a fc , barrando inclusive os sinais contínuos

que são provenientes da atividade dos músculos.

Foi selecionado um filtro ativo RC de primeira ordem montado em um amplificador

inversor. O amplificador operacional utilizado é o CA3140, este sendo de tecnologia BiMos

operando com alimentação simétrica de +/- 9V. O circuito do filtro é ilustrado na Figura 2.6 e

o cálculo do filtro é demonstrado na Equação 2.2 onde R1 é arbritado em 2,2MΩ.

Esta equação resulta em uma capacitância de 144nF. Foi utilizado o capacitor de

poliéster com valor comercial de 150nF. O ganho para esta etapa foi de 10V/V e a Equação

2.3 mostra o cálculo do ganho.

Page 58: Monografia ECG Ampop

58

Figura 2.6 – Filtro Passa-Altas.

nFCCMCR

fc 144112.22

15,0112

1=→

⋅Ω⋅⋅=→

⋅⋅⋅=

ππ (2.2)

Ω=→Ω

=→−= kRRM

RRG 2202

22.210

21 (2.3)

O diagrama de Bode do filtro é mostrado na Figura 2.7: o eixo vertical (magnitude)

está em dB, enquanto o eixo horizontal (freqüência) está em Hz.

Figura 2.7 – Diagrama de Bode da resposta do Filtro Passa-Altas.

Page 59: Monografia ECG Ampop

59

2.2.3 Desenvolvimento do Filtro Passa-Baixas

O filtro foi calculado para a freqüência de corte de 50 Hz. Permite passar somente

sinais com freqüência inferior a fc e com isso remove parte do ruído de 60Hz proveniente da

rede elétrica.

Foi selecionado um filtro ativo RC de primeira ordem montado em um amplificador

inversor. O circuito do filtro é ilustrado na Figura 2.8 e o cálculo do filtro é demonstrado na

Equação 2.4, onde R1 é arbritado em 100kΩ.

Esta equação resulta em uma capacitância de 31,8nF. Foi utilizado um capacitor

cerâmico com valor comercial de 33nF. O ganho para esta etapa foi de 10 e a Equação 2.5

mostra o cálculo do ganho.

Figura 2.8 – Filtro Passa-Baixas.

Page 60: Monografia ECG Ampop

60

nFCCkCR

fc 33111002

150112

1=→

⋅Ω⋅⋅=→

⋅⋅⋅=

ππ (2.4)

Ω=→Ω

=→−= kRR

kRRG 102

210010

21 (2.5)

O diagrama de Bode do filtro passa-baixas é mostrado na Figura 2.9 onde mostra a fc

em 50Hz (correspondendo a -3dB/dec).

Figura 2.9 – Diagrama de Bode do Filtro Passa-Baixas.

2.2.4 Ajuste de nível de tensão DC

A entrada do conversor analógico/digital do dsPIC está programada para receber

níveis de tensão positivas de 0 a 5V. Como o sinal que é amplificado do ECG possui parcela

negativa foi necessário implementar um ajuste de nível DC. A Figura 2.10 mostra o circuito

implementado.

Page 61: Monografia ECG Ampop

61

O circuito compõe um amplificador não inversor de ganho unitário. A entrada

inversora possui realimentação de ganho unitário que está ligada ao pino central do

potenciômetro de 100kΩ. Este potenciômetro esta com suas extremidades ligadas a -9V e 9V

e o seu ajuste desloca a referência do amplificador, eliminando os níveis de tensão negativa

do sinal de ECG.

Figura 2.10 – Circuito de ajuste nível DC.

2.3 Etapa digital

A etapa digital do projeto constitui a interligação da etapa analógica ao

microcontrolador. Esta etapa é feita com a elaboração de uma placa de circuito impresso onde

são montadas as duas etapas, possibilitando a programação in circuit do protótipo. Após,

segue a programação do dsPIC que inclui inicialização de portas, conversor A/D, porta de

comunicação serial e desenvolvimento da rotina principal do programa.

Page 62: Monografia ECG Ampop

62

2.3.1 Programação do dsPIC:

A programação do controlador digital de sinais dsPIC30F2010 foi implementada

utilizando-se a Linguagem C através do software de desenvolvimento e depuração MPLAB.

O programa completo e comentado do protótipo pode ser visualizado no ANEXO G. Foram

utilizadas as interrupções internas do dsPIC para interromper o programa principal e executar

rotinas específicas sempre que alguma ocorrência necessitasse de um tratamento adequado

por parte do programa. A interrupção dos circuitos de transmissão de dados via UART, leitura

da conversão A/D e estouro dos tempos dos timers 1 e 2 são utilizadas no programa de

aquisição de ECG com microcontrolador (MICROCHIP, 2004).

Na programação do dsPIC30F2010 foram incluídas algumas bibliotecas fornecidas

de forma gratuita pela empresa Microchip com a intenção de facilitar a programação. Elas

possuem sub-rotinas desenvolvidas especialmente para a execução de determinadas tarefas e

definições para valores dos registradores responsáveis pela configuração das funções dos

dispositivos internos do dsPIC. A biblioteca principal obrigatória na programação em

Linguagem C deste componente, possui o nome p30f2010.h, onde estão declarados os

endereços referentes a cada bit dos registradores do dsPIC30F2010, além de definir os valores

iniciais dos mesmos. As demais bibliotecas utilizam as definições da p30f2010.h como base

para as suas sub-rotinas e definições (MICROCHIP, 2004).

2.3.1.1 Rotina principal do programa

A rotina principal do programa do dsPIC30F2010 possui a função de ajustar a

inicialização do componente com os valores corretos dos registradores e as configurações dos

Page 63: Monografia ECG Ampop

63

módulos utilizados no programa. Em seguida, a rotina principal entra em um looping16

infinito, sendo interrompido pelos módulos internos quando há necessidade de executar

alguma função. A Figura 2.11mostra o diagrama em blocos da rotina principal do programa

fonte do protótipo de aquisição de ECG.

Figura 2.11 – Fluxograma da rotina principal do programa.

2.3.1.2 Rotina principal e Looping Infinito

Esta etapa do programa tem como função setar variáveis, habilitar portas e inicializar

as estruturas internas utilizadas, tais como UART, Timer1, Timer2 e A/D. Entrando em modo

de looping, o programa fica aguardando as interrupções dos módulos. Havendo interrupção, o

looping é interrompido e a instrução do módulo é executada, ao término da instrução o

16 Looping – do inglês, é algo que da voltas, referência a um circuito fechado.

Page 64: Monografia ECG Ampop

64

programa volta para o looping e aguarda a próxima interrupção. Estas estruturas internas são

apresentadas nos próximos tópicos.

2.3.1.3 Interrupção da UART

O módulo UART utilizado para comunicar serialmente com aplicativo, em

Linguagem Visual Basic (VB), para visualizar o ECG. Para habilitar o módulo UART é

necessário setar o bit UARTEN no Registrador de Função Especial, U1MODE. Após

habilitado, os pinos dos registradores U1TX e U1RX (pinos 17 e 18) são configurados para

saída e entrada respectivamente (MICROCHIP, 2004).

O baud rate que determina a velocidade da comunicação serial é ajustado através do

valor armazenado no registrador U1BRG. O cálculo deste valor segue na Equação 2.6 e a

velocidade escolhida é de 38400bps pois nesta velocidade é possível transmitir a variável

analógica sem perdas. A variável U1BRG calculada ficou em 7, resultando um erro de 1,72%.

( )

%72,138400

3840039062

390621716

5000000__

713,713840016

50000001_16

1

38400_

54

200000004

__

=−

=

=+⋅

=

→=−⋅

=−⋅

=

=

===

Erro

calculadorateBaud

rateBaudFCYBRGU

bpsrateBaud

MHzcristaldofreqüênciaFCY

(2.6)

Page 65: Monografia ECG Ampop

65

2.3.1.4 Interrupção ADC

O conversor A/D é ajustado para converter apenas o sinal proveniente da entrada

analógica zero (AN0), as demais portas não são inicializadas. O sinal digital resultante possui

10 bits. Os bits VCFG definem os pinos AVDD (28) e AVSS (8 e 27) como responsáveis por

fornecer a tensão de referência utilizada pelo módulo, no projeto foi fixado em 5V. O período

entre as conversões A/D (TAD) é calculado conforme descrito na Equação 2.7, onde o

registrador ADCS armazena o valor que determina a freqüência deste clock (MICROCHIP,

2004).

( )( )

12

15.0

−⋅=

+⋅⋅=

TCYTADADCS

ADCSTCYTAD

(2.7)

Com ADCS armazenando o valor 7, o período entre conversões A/D (TAD) fica

determinado em 800ns, gerando uma freqüência do clock de 1,25MHz. Como cada conversão

exige 12 períodos de clock do A/D (TAD), a freqüência de conversão fica ajustada em 104KHz

(MICROCHIP, 2004).

Na rotina de conversão do A/D foi incorporada a transmissão da variável analógica,

assim que os 16 buffers da conversão forem preenchidos uma amostra é guardada na variável

(Val_Ana1) e esta é transmitida no UART. Isto resulta num intervalo fixo de transmissão

determinado pelo ciclo do conversor A/D.

Page 66: Monografia ECG Ampop

66

2.3.1.5 Interrupção do Timer 1

A rotina de interrupção do Timer 1 serve para ligar e desligar o LED de status da

placa de aquisição e é uma ferramenta simples para diagnosticar se o processador esta

funcionando. Já que durante o projeto são efetuadas várias programações, se uma dessas

rotinas do programa não funcionar, o LED de status não vai piscar.

2.3.1.6 Interrupção do Timer 2

Este timer é responsável por setar a freqüência de amostragem do conversor A/D. A

freqüência de amostragem foi calculada em 1627 kHz conforme é descrito na Equação 2.8.

kHzfa

FTFreq CY 6.16512

5000000_ 2 =⋅

== (2.8)

2.3.2 Montagem da placa do protótipo

O circuito final desenvolvido apresentado no Anexo H foi elaborado no sotware

Multisim da EWB17 em seguida foi exportado para o Ultiboard. No Ultiboard foi criado o

layout da placa. Devido a quantidade de ligações e de componentes foi necessário utilizar uma

placa de fenolite 10X10cm e dupla face de cobre.

17 EWB – Electronic Workbench.

Page 67: Monografia ECG Ampop

67

O layout criado da máscara de componentes, máscara de solda e visualização em três

dimensões são apresentadas no Anexo I.

Page 68: Monografia ECG Ampop

68

3 TESTES E VALIDAÇÃO DO PROTÓTIPO

Os testes realizados com o protótipo foram basicamente dois: o primeiro foi captura

de sinal ECG padrão obtido no gerador de sinais e o segundo foi a captura de sinal real

utilizando eletrodos aderidos ao tórax.

Utilizando o gerador de sinais da Agilent (modelo 33220A) para gerar uma onda

ECG padrão foi possível verificar o funcionamento do protótipo. O sinal padrão foi

configurado na freqüência de 1,2Hz, que corresponde a um intervalo TR-R de 833ms,

resultando 72 bpm18. O cálculo para determinar o número de batimentos por minuto é

mostrado na Equação 3.1.

O sinal foi gerado com amplitude de 5Vpp, isto para verificar se toda a faixa de

captura de tensão entre 0 e 5V seria mostrada adequadamente no programa em VB.

( )( )sTsbpm

RR−

=60 (3.1)

18 Bpm – batimento por minuto.

Page 69: Monografia ECG Ampop

69

A Figura 3.1 mostra o sinal ECG visualizado na ferramenta em VB desenvolvida

pelo Professor Delfim Luiz Torok para auxílio no projeto.

Figura 3.1 – Onda ECG gerada com 5Vpp.

O período entre transmissões dos bits convertidos pelo A/D foi de aproximadamente

2,39ms. Isto resulta em 418 amostras por segundo, sendo suficiente para visualizar o sinal

ECG regenerado no modo de monitorização. A Figura 3.2 mostra sinal de ECG no canal 1 e

os períodos de transmissão dos bits gerados na captura do A/D na transmissão serial.

Figura 3.2 – Período de transmissão dos bits.

Page 70: Monografia ECG Ampop

70

A transmissão dos bits pela porta serial é mostrada na Figura 3.3. O período de

transmissão do start bit, 8 bits de dados e stop bit foi de 26µs, resultando em uma transmissão

de 38462bps e um erro de 0,6% entre a transmissão setada de 38400bps.

Figura 3.3 – Período da transmissão serial.

Nesta última etapa, o protótipo foi ligado a uma pessoa por meio dos três eletrodos

fixados no tórax (Figura 1.8 - Disposição convencional dos eletrodos para o registro das

derivações eletrocardiográficas padrão). Neste ensaio a pessoa estava sentada próxima a placa

de captura e esta ligada a um computador.

O sinal real capturado apresentou a presença de algumas anomalias: ruído de 60Hz,

ruído de linha de base e ruído muscular, como pode ser visto na Figura 3.4.

Figura 3.4 – Sinal de ECG real.

Page 71: Monografia ECG Ampop

71

A banda de freqüências da placa de captura é de 0.5 à 50Hz. Com isso o ruído de

60Hz apresentado não veio em sua totalidade da etapa analógica, mas foi proveniente das

interferências atuantes na placa do protótipo. Como não foi implementado um filtro rejeita

banda específico para ruídos da rede elétrica, este poderá ser implementado como filtro digital

em trabalhos futuros.

Verificou-se a importância da conexão dos eletrodos no paciente. Um eletrodo mal

colocado gera potencial de meia-célula, que causa alteração na linha de base do sinal de ECG.

O ruído de linha de base apresentado não prejudica a avaliação do sinal de ECG, já que

variações deste tipo não alteram significativamente a visualização para monitoramento do

ECG.

O ruído de espasmo muscular visualizado no ECG, quando exercido algum esforço,

pode ser eliminado com um filtro rejeita banda de 35Hz. Isto pode ser implementado

futuramente através de um filtro digital no dsPIC (MELCO, 2006).

Page 72: Monografia ECG Ampop

72

CONSIDERAÇÕES FINAIS

O referencial teórico forneceu uma base importante para o desenvolvimento deste

trabalho e pode servir como material de pesquisa, para que outros acadêmicos possam

proceder com trabalhos adicionais nesta área de conhecimento.

De maneira geral a funcionalidade do protótipo projetado foi satisfatória, todos os

módulos apresentados no protótipo funcionaram. A etapa analógica conseguiu estabelecer a

função de tratamento inicial do sinal de ECG e enviar o sinal tratado para o conversor A/D.

Na etapa digital todos os módulos funcionaram mostrando um bom desempenho do dsPIC. O

conversor A/D funcionou corretamente conseguindo gerar uma boa taxa de amostragem. O

módulo de comunicação UART teve bom desempenho na transmissão em 38,4 kbps, não

necessitando de Cyclic Redundancy Check (CRC).

Considera-se que o objetivo inicial básico foi alcançado a contento, contudo observa-

se, que muitos outros desenvolvimentos futuros são necessários, de forma que o protótipo

possa a vir tornar-se um eletrocardiógrafo de boa qualidade para uso em diagnósticos de

cardiopatias.

Pode ser destacada uma série de desenvolvimentos futuros a curto e médio prazo

para melhorar e dar seqüência ao trabalho aqui realizado. Entre estes, citam-se: utilização de

Page 73: Monografia ECG Ampop

73

cabos específicos para conexão aos eletrodos; melhorar a eficiência dos filtros, aumentando a

sua ordem; implementar filtro digital e/ou adaptativos para auxiliar o processo captura e

correções do sinal ECG, bem como a miniaturização da placa utilizando componentes com

encapsulamento menor.

Finalmente concluir o protótipo, transformando-o em um produto final de qualidade

e competitivo, acrescentando recursos de transmissão sem fio e/ou comunicação via USB,

bem como utilizando cartão de memória para gravar os sinais obtidos em um intervalo de

tempo maior.

Page 74: Monografia ECG Ampop

REFERÊNCIAS BIBLIOGRÁFICAS

BOGART Jr, Theodore F.. Dispositivos e Circuitos Eletrônicos. 3.ed. São Paulo: Makron

Books, 2001. 463p.

FILHO, Adalberto Ayjara Dornelles. Fundamentos de Linguagem C. 2.ed. Caxias do Sul:

SENAI RS, 1998. 111p.

FÜHR, Thiago Henrique. Desenvolvimento e implementação de um protótipo para

validação de sistemas de controle para motor dc por meio de modulação por largura de

pulso utilizando um processador digital de sinais. Novo Hamburgo: 2006. 173p. Trabalho

de Conclusão (Bacharel em Engenharia Eletrônica) - FEEVALE, ASPEUR, 2006.

GIACOMIN, João C.. Eletrônica Básica: Amplificadores Operacionais. São Paulo:

Universidade Federal de Lavras, 2000. 31p.

GUYTON & HALL, Arthur C.. Textbook of Medical Physiology. 11.ed. Philadelphia,

Pennsylvania - USA: Elsevier Inc., 2006. 1152p.

JUNIOR, Antonio Pertence. Amplificadores Operacionais. 3.ed. São Paulo: Makron Books,

2001. 245p.

Page 75: Monografia ECG Ampop

75

LABTOOLS, Mosaico Didatic Division. Guia do Usuário ICD2BR in Circuit Debugger.

3.ed. São Paulo: Mosaico, 2005. 39p. Disponível em:

<http://www.labtools.com.br/arquivos/ICD2-BR-set.2005_rev._03.pdf>. Acesso em: 25 nov.

2007.

MALVINO, Albert Paul. Eletrônica: Volume II. 4.ed. São Paulo: Makron Books, 1995.

558p.

MELCO, Tito Coutinho. Estudo do Eletrocardiograma sob uma Abordagem Matemática.

São Paulo: 2006. 100p. Tese (Mestrado em Engenharias) - Engenharia Mecatrônica e de

Sistemas Mecânicos, Escola Politécnica da Universidade de São Paulo, 2006.

MITRA, Sanjit K.. Digital Signal Processing: a computer-based approach. 2.ed. New York:

McGraw-Hill, 2001. 866p.

OLIVEIRA, André Schneider de. Sistemas Embarcados: Hardware e Firmware na Prática.

1.ed. São Paulo: Érica, 2006. 316p.

PRODANOV, Cléber Cristiano. Manual de Metodologia Científica. 1.ed. Novo Hamburgo:

Feevale, 1997. 66p.

SEDRA, Adel S.. Microeletrônica. 4.ed. São Paulo: Makron Books, 2000. 1270p.

SHIRLEY, A. Jones. ECG Notes: Interpretation and Management Guide. 1.ed. Philadelphia

USA: F. A. Davis Company, 2005. 207p.

Page 76: Monografia ECG Ampop

76

TOMPKINS, Willis J.. Biomedical Digital Signal Processing: C-Language Examples and

Laboratory Experiments for the IBM PC. 1.ed. New Jersey: Prentice Hall, 2000. 361p.

Page 77: Monografia ECG Ampop

77

77

ANEXOS

Page 78: Monografia ECG Ampop

78

ANEXO A - DIAGRAMA DE BLOCOS DO DSPIC30F2010

Page 79: Monografia ECG Ampop

79

Fonte – Datasheet dsPIC30F2010, 2004.

Page 80: Monografia ECG Ampop

80

ANEXO B – MAPA DA ORGANIZAÇÃO DAS MEMÓRIAS NO DSPIC30F2010

Page 81: Monografia ECG Ampop

81

Fonte – Datasheet dsPIC30F2010, 2004.

Page 82: Monografia ECG Ampop

82

ANEXO C – TABELA DE INTERRUPÇÕES DO DSPIC30F2010

Page 83: Monografia ECG Ampop

83

Fonte – Datasheet dsPIC30F2010, 2004.

Page 84: Monografia ECG Ampop

84

ANEXO D – MAPA DE REGISTRO DAS PORTS

Page 85: Monografia ECG Ampop

85

Fonte – Datasheet dsPIC30F2010, 2004.

Page 86: Monografia ECG Ampop

86

ANEXO E – AMPLIFICADOR OPERACIONAL INA128

Page 87: Monografia ECG Ampop

87

Fonte – Datasheet INA128, Texas Instruments.

Page 88: Monografia ECG Ampop

88

Fonte – Datasheet INA128, Texas Instruments.

Page 89: Monografia ECG Ampop

89

Fonte – Datasheet INA128, Texas Instruments.

Page 90: Monografia ECG Ampop

90

Fonte – Datasheet INA128, Texas Instruments.

Page 91: Monografia ECG Ampop

91

Fonte – Datasheet INA128, Texas Instruments.

Page 92: Monografia ECG Ampop

92

ANEXO F – AMPLIFICADOR OPERACIONAL CA3140

Page 93: Monografia ECG Ampop

93

Fonte – Datasheet CA3140, INTERSIL 2005.

Page 94: Monografia ECG Ampop

94

Fonte – Datasheet CA3140, INTERSIL 2005.

Page 95: Monografia ECG Ampop

95

Fonte – Datasheet CA3140, INTERSIL 2005.

Page 96: Monografia ECG Ampop

96

Fonte – Datasheet CA3140, INTERSIL 2005.

Page 97: Monografia ECG Ampop

97

ANEXO G – CÓDIGO FONTE DO PROGRAMA DO DSPIC

Page 98: Monografia ECG Ampop

98

/* Autor: Martin Nähr Data: 05/12/2007 Titulo: Ecg_DataLog */ //************************************************************************************************ //***** Bibliotecas Utilizadas ******************************************************************* #include<p30f2010.h> //Biblioteca do dsPIC30F2010 #include<uart.h> //Biblioteca UART.h #include<reset.h> //Biblioteca reset.h #include<dsp.h> //Biblioteca de DSP //******************************************************************************************************************************************** //************************************************ Fuses ************************************************************************************ _FOSC(CSW_FSCM_OFF & HS); // Oscilador externo sem tratamento de erro _FWDT(WDT_OFF); // WatchDog disabilitado _FBORPOR(MCLR_EN & PBOR_OFF & PWRT_OFF); // Desabilita MCLR, PBOR e PWRT _FGS(CODE_PROT_OFF); // Sem protecao de codigo - é possível a leitura // posterior a gravação do chip. //******************************************************************************************************************************************** //**************************************** Define Valores Padrões para o Programa **************************************************** #define Fcy 5000000 //Freqüência do ciclo=freqüência do oscilador/4 //dsPIC necessita de 4 ciclos de clock para executar //um ciclo de instrução #define Freq_T1 (Fcy / 1024) //freqüência do Timer 1 para piscar Led => 1024=0,5s #define Freq_T2 (Fcy / (512*6)) //freqüência do Timer 2 para habilitar conv.A/D = 1.6KHz #define Tad (7) //Tempo para conversão A/D a 104Ksps para Fcy=5.000.000 //******************************************************************************************************************************************** //************************************************ Declarando as variáveis *************************************************************** unsigned int Par1; //define a variável inteira sem sinal Par1 //Parâmetro 1 transmitido via UART unsigned int Par2; //define a variável inteira sem sinal Par2 //Parâmetro 2 transmitido via UART unsigned int Par; //define a variável inteira sem sinal Par //Parâmetro utilizado pelo comando int Val_Ana1; //define a variável inteira Val_Ana1 unsigned int ADResult[16]; //define a matriz de variáveis inteiras sem sinal ADResult //recebe o resultado da conversão A/D numa matriz de tamanho 16 volatile unsigned int *ptr; //define a variável ponteiro inteira sem sinal ptr //ponteiro para indicar o resultado da conversão A/D nos buffers unsigned int a; //define a variável a para a Interrupção da recebimento de dados unsigned int count;

Page 99: Monografia ECG Ampop

99

//******************************************************************************************************************************************** //****************************************************** Funções Utilizadas**************************************************************** void inicia_UART(void); //declara a função para iniciar a UART void _ISR _U1TXInterrupt(void); //declara a função de tratamento da interrupção //de transmissão de dados void _ISR _U1RXInterrupt(void); //declara a função de tratamento da interrupção //de recepção de dados void TransPac (void); //declara a função para transmitir um pacote de dados via UART void TransBuf (void); //declara a função para transmitir buffer de dados via UART void inicia_timer2(void); //declara a função para iniciar o timer da conversão A/D void _ISR _T2Interrupt(void); //declara a função de tratamento da interrupção do timer da conversão A/D void inicia_ADC (void); //declara a função para iniciar a conversão A/D void _ISR _ADCInterrupt(void); //declara a função de tratamento da interrupção A/D void inicia_timer1(void); //declara a função para iniciar o timer do LED de estado void _ISR _T1Interrupt(void); //declara a função de tratamento da interrupção do timer do LED de estado //******************************************************************************************************************************************** //******************************************** Rotina Principal do Programa ************************************************************* int main(void){ a=0; //variável a=0 TRISD = 0xfffc; //Seta RD0 e RD1 p/ saídas - 1111 1111 1111 1100 LATDbits.LATD0 = 1; //Led_Status Verde = Desligado LATDbits.LATD1 = 0; //Led_Status Vermelho = Desligado inicia_timer1(); //inicializa o timer do LED de Led_Status Verde inicia_UART(); //Inicializa UART inicia_ADC(); //inicializa a conversão A/D inicia_timer2(); //inicializa o timer da conversão A/D while(1){ //loop principal -> infinito } //fim do while return 0; //devolve zero (0) } //******************************************************************************************************************************************** //******************************************* Inicialização do módulo UART ************************************************************* void inicia_UART() { unsigned int ubrg; //define a variável ubrg unsigned int config1; //define a variável config1 unsigned int config2; //define a variável config2 CloseUART1(); // desabilita a UART1 ubrg = 7; // ubrg=(fcy/(BaudRate*16))-1 // fcy=FCristal/4

Page 100: Monografia ECG Ampop

100

// Neste Caso: Baud Rate=38400 // Freq.Cristal=20MHz // fcy=5MHz, ubrg=7 7,15 calculado ConfigIntUART1(UART_RX_INT_EN & //Função para configuração das interrupções da UART //habilita a interrupção de recepção UART_RX_INT_PR2 & //Define a prioridade da interrupção de recepção=2 UART_TX_INT_EN & //habilita a interrupção de transmissão UART_TX_INT_PR4); //Define a prioridade da interrupção de transmissão=4 config1 = UART_EN & //Define a variável config1 com os seguintes parâmetros //Habilita o módulo UART UART_IDLE_CON & //UART funcionando no modo IDLE UART_RX_TX & //Configura a comunicação através dos pinos padrões //de TX e RX (U1TX e U1RX) UART_DIS_WAKE & //Desabilita o modo "Wake-up" UART_DIS_LOOPBACK & //desabilita o modo "loop back" UART_DIS_ABAUD & //Desabilita o modo "autobaud" UART_NO_PAR_8BIT & //Define a comunicação com 8 bits de dados e //sem bit de paridade UART_1STOPBIT; //Define o Stop Bit=1 config2 = UART_INT_TX_BUF_EMPTY & //Define a variável config2 com os seguintes parâmetros //Ocorre interrupção de transmissão quando buffer de //transmissão for esvaziado UART_TX_PIN_NORMAL & //Define o bit TXBreak como normal UART_TX_ENABLE & //Habilita a transmissão da UART UART_INT_RX_BUF_FUL & //Ativa a interrupção de recepção quando Buffer estiver cheio (4 bytes) UART_ADR_DETECT_DIS & //Desativa o modo de "adress detect" UART_RX_OVERRUN_CLEAR; //Limpa o flag de "overrun" OpenUART1(config1, config2, ubrg); //Habilita a UART1 com os parâmetros de configuração //definidos pelas variáveis Config1, config2 e ubrg } //******************************************************************************************************************************************** //**************************** Rotina de tratamento da Interrupção da transmissão de dados **************************************** void _ISR _U1TXInterrupt(void){ //função da rotina de interrupção de transmissão de dados IFS0bits.U1TXIF=0; //clear no bit de chamada da interrupção de transmissão } //******************************************************************************************************************************************** //********************* Rotina de tratamento da Interrupção da recebimento de dados ********************************************** //******************************************************************************************************************************************** void _ISR _U1RXInterrupt(void){ //função da rotina de interrupção de recepção de dados TMR1=0; //Zera a contagem do Timer 1 if (a==1){ //verifica se a variável a=1 LATDbits.LATD0 = 0; //Liga o LED de status a=0; //variável a=0 } //fim do if else{ //se a variável a é diferente de 1 então executa os seguintes comandos LATDbits.LATD0 = 1; //Desliga o LED de status

Page 101: Monografia ECG Ampop

101

a=1; //variável a=1 } //fim do else //Protocolo de comunicação = byte1:Par2, byte2:Par1 while(BusyUART1()); //retorna o status da transmissão; espera enquanto a UART estiver ocupada Par2=ReadUART1(); //lê o segundo byte do buffer de recepção da UART = Parâmetro 2 Par1=ReadUART1(); //lê o terceiro byte do buffer de recepção da UART = Parâmetro 1 Par=Par2<<8; //Byte mais significativo do Parâmetro=Parâmetro2 recebido via UART Par=Par + Par1; //Byte menos significativo do Parâmetro= Parâmetro1 recebido via UART TransPac(); //Parâmtro 1 e 2 são unidos em uma só variável Parâmetro } //fim do if IFS0bits.U1RXIF=0; //clear no bit de chamada da interrupção de recepção } //fim da interrupção de recepção da UART //******************************************************************************************************************************************** //************************************* Rotina para a inicialização do conversor A/D *************************************************** void inicia_ADC() { ADCON1bits.ADON = 0; //desabilita o módulo de conversão A/D ADCON1bits.ADSIDL = 0; //módulo A/D continua convertendo mesmo com a CPU em modo idle(inativa) ADCON1bits.FORM = 0; //formato da saída da conversão sem sinal ADCON1bits.SSRC = 7; //contador interno termina uma amostragem e já começa a próxima ADCON1bits.ASAM = 0; //amostragem individual ADCON2bits.VCFG = 0; //referencia AVDD e AVSS ADCON2bits.CSCNA = 0; //utiliza apenas um canal para a conversão ADCON2bits.SMPI = 0; //gera uma interrupção a cada conversão - buffer(0) ADCON2bits.BUFM = 0; //buffer de 16 bits ADCON2bits.ALTS = 0; //utiliza sempre o MUX A, não alterna entre MUX A e MUX B ADCON3bits.ADCS = Tad; // Tad equals Min amount of instr cycles Fastest possible //seleciona o clock de conversão ADCON3bits.SAMC = 1; //define o tempo da auto-amostragem em 1 Tad ADCON3bits.ADRC = 0; // derive Tad from system clock // //utiliza o mesmo clock do sistema ADCHS = 0; //configura o conversor AN0 como entrada positiva ADCSSL = 0x0000; //seleciona a entrada AN0 para a conversão ADPCFG = 0xFFFE; //configura apenas o pino AN0 como entrada analógica IFS0bits.ADIF = 0; //clear no bit de chamada da interrupção da conversão A/D IPC2bits.ADIP = 6; //Define a prioridade da interrupção do módulo A/D=6 IEC0bits.ADIE = 1; //habilita a interrupção do módulo A/D ADCON1bits.ADON = 1; //habilita o módulo de conversão A/D } //******************************************************************************************************************************************** //******************************* Rotina de Tratamento da Interrupção do Conversor A/D ********************************************* void __attribute__((__interrupt__)) _ADCInterrupt(void) { int i = 0; //define a variável inteira Pos_Atual ptr = &ADCBUF0; //ponteiro ptr recebe o endereço do buffer0 //de conversão A/D while (i < 16) //executa a leitura da conversão A/D enquanto i<16 {

Page 102: Monografia ECG Ampop

102

ADResult[i++] = *ptr++; //ponteiro ptr é incrementado até i=15 //ADResul recebe os valores da conversão A/D na posição '0' //são feitas 16 leituras para garantir que os 16 buffers da //conversão A/D sejam lidos e automaticamente limpos, //garantindo que o resultado da próxima leitura fique no buffer0 } //fim do while Val_Ana1=ADResult[0]; //Posição atual recebe o resultado da conversão A/D TransBuf(); //transmite apos carregar o valor da (Val_Ana1/4) IFS0bits.ADIF = 0; //clear no bit de chamada da interrupção da conversão A/D } //************************************************************************************************ //****** Rotina de inicialização do timer 2 para conversão A/D *********************************** void inicia_timer2(void) { T2CON = 0; //desabilita a contagem do timer2 TMR2 = 0; //zera a contagem de tempo do timer2 IFS0bits.T2IF = 0; //clear no bit de chamada da interrupção do timer2 PR2 = Freq_T2; //Freq_AD determinando a frequência de conversão do A/D T2CONbits.TCKPS = 1; //Ajusta o prescaler para 1:1 IPC1bits.T2IP = 5; //Define a prioridade da interrupção do timer2=5 IEC0bits.T2IE = 1; //habilita a interrupção do timer2 T2CONbits.TON = 1; //habilita a contagem do timer2 } //******************************************************************************************************************************************* //********************** Rotina de tratamento da interrupção do Timer 2 para conversão A/D ************************************** void _ISR _T2Interrupt(void) { IFS0bits.T2IF = 0; // clear no bit de interrupção do timer 2 ADCON1bits.SAMP = 1; // executa a converssão A/D } //******************************************************************************************************************************************** //************************* Rotina de inicialização do timer 1 para o LED indicador de estado *************************************** void inicia_timer1(void) { T1CON = 0; //desabilita a contagem do timer1 TMR1 = 0; //zera a contagem de tempo do timer1 IFS0bits.T1IF = 0; //clear no bit de chamada da interrupção do timer1 PR1 = Freq_T1; //ajusta o período de tempo do timer1 para o valor da freqüência //do ciclo de instrução Fcy/1024 = 0.5 segundos T1CONbits.TCKPS = 3; //Ajusta o prescaler para 1:256 IPC0bits.T1IP = 7; //Define a prioridade da interrupção do timer1=7 IEC0bits.T1IE = 1; //habilita a interrupção do timer1 T1CONbits.TON = 1; //habilita a contagem do timer1 }

Page 103: Monografia ECG Ampop

103

//******************************************************************************************************************************************** //************************* Rotina de tratamento da interrupção do Timer 1 para o LED de estado ********************************** void _ISR _T1Interrupt(void) { if (a==1){ //verifica se a variável a=1 LATDbits.LATD0 = 0; //Liga o LED de status a=0; //variável a=0 } //fim do if else{ //se a variável a é diferente de 1 então executa os seguintes comandos LATDbits.LATD0 = 1; //Desliga o LED de status a=1; //variável a=1 } //fim do else IFS0bits.T1IF = 0; // clear no bit de interrupção do timer 1 } //******************************************************************************************************************************************** //************************************ Rotina para enviar o pacote de dados via UART ************************************************ void TransPac (void){ //Função que transmite o pacote de dados Par1=Par; //Parâmetro 1 de transmissão recebe byte menos significativo do Parâmetro Par2=Par>>8; //Parâmetro 2 de transmissão recebe byte mais significativo do Parâmetro while(BusyUART1()); //retorna o status da transmissão; espera enquanto a UART estiver ocupada putcUART1(Par2); //transmite via UART o Parâmetro 2 putcUART1(Par1); //transmite via UART o Parâmetro 1 while(BusyUART1()); //espera a UART desocupar //1=UART ocupada, 0=UART desocupada } //******************************************************************************************************************************************** //******************************************************************************************************************************************** //********************************** Rotina para enviar o Buffer de dados via UART *************************************************** void TransBuf (void){ //Função que transmite o pacote de dados int c; while(BusyUART1()); //retorna o status da transmissão; espera enquanto a UART estiver ocupada putcUART1((y[0]/4)); // transmite serialmente o valor do A/D while(BusyUART1()); //espera a UART desocupar } //******************************************************************************************************************************************** //**************************************************** Fim do Programa******************************************************************** //********************************************************************************************************************************************

Page 104: Monografia ECG Ampop

104

ANEXO H – CIRCUITO DO PROTÓTIPO

Page 105: Monografia ECG Ampop

105

Circuito eletrônico do protótipo de aquisição de ECG.

Page 106: Monografia ECG Ampop

106

ANEXO I – LAYOUT DA PLACA DO PROTÓTIPO

Page 107: Monografia ECG Ampop

107

Máscara de solda.

Lado dos componentes.

Page 108: Monografia ECG Ampop

108

Máscara de identificação.

Placa mostrada em 3 dimensões.