Você está na página 1de 108

CENTRO UNIVERSITRIO FEEVALE

MARTIN NHR

AQUISIO DE ELETROCARDIOGRAMA COM PROCESSADOR DIGITAL DE


SINAIS

Novo Hamburgo, dezembro de 2007.

MARTIN NHR

AQUISIO DE ELETROCARDIOGRAMA COM PROCESSADOR


DIGITAL DE SINAIS

CENTRO UNIVERSITRIO FEEVALE


Intituto de Cincias Exatas e Tecnolgicas
Bacharelado em Engenharia Eletrnica
Trabalho de Concluso de Curso

Professor Orientador: Delfim Luis Torok

Novo Hamburgo, dezembro de 2007.

Dedico este trabalho a minha amada esposa Caroline.

AGRADECIMENTO

Neste momento de concluso de curso e entrega do trabalho final, gostaria de


agradecer as pessoas que me apoiaram e foram fundamentais para a realizao deste trabalho.

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


realizao deste trabalho. Pessoa que demonstrou coragem e dedicao mesmo em momentos
difceis.

Sonia Rezende Nhr, meu agradecimento pelo investimento e confiana sem os


quais no seria possvel realizar a minha formao.

Aos meus pais, pelo carinho e dedicao destinados minha criao.

Aos professores e colegas da Feevale, pelas trocas de vivncia e conhecimentos


adquiridos durante o perodo de formao.

A Deus por ter conseguido chegar at aqui.

RESUMO

Este trabalho visa o desenvolvimento e implementao de um prottipo para


aquisio de eletrocardiograma com processador digital de sinais. Este dispositivo tem a
funo de captar o sinal biomdico do tipo ECG atravs de eletrodos colados pele, processar
o sinal e enviar para um computador pessoal. Os dados podero ser visualizados em
computador pessoal utilizando softwares especficos como ferramentas de apoio abordadas no
projeto.

A aquisio do sinal representa a captao de biopotenciais provenientes da atividade


eltrica cardaca. O sinal captado, com o uso de eletrodos, amplificado e tratado com a
utilizao de amplificador de instrumentao e filtros analgicos. Na sada do circuito de
aquisio, o sinal pr-tratado analogicamente digitalizado com um Processador Digital de
Sinais (DSP) dsPIC30F2010 da empresa Microchip 1 , que sendo programado em Linguagem
C atravs do software de desenvolvimento MPLAB verso 7.60. O sinal digitalizado
processado no DSP e ento transmitido de forma serial para o computador.

Microchip Tecnologia Inc. uma empresa, sediada em Chandler, Arizona. Fbrica de semicondutores,
microcontroladores e dispositivos analgicos, para o desenvolvimento de produtos de baixo custo para diversas
aplicaes.

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 Companys 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.

LISTA DE FIGURAS

Figura 1.1 Anatomia Cardaca............................................................................................... 17


Figura 1.2 O nodo sinusal e o sistema de Purkinje................................................................ 18
Figura 1.3 Ao do nodo sinusal versus fibra muscular ventricular. .................................... 19
Figura 1.4 Grfico de um ECG Normal. ............................................................................... 20
Figura 1.5 Despolarizao e repolarizao do corao. ........................................................ 21
Figura 1.6 Impresso padro do ECG. .................................................................................. 22
Figura 1.7 Fluxo da corrente no trax. .................................................................................. 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 configurao no-inversora. ...................... 28
Figura 1.12 Circuito amplificador diferencial. ...................................................................... 29
Figura 1.13 Amplificador de instrumentao. ....................................................................... 30
Figura 1.14 Resposta em freqncia de quatro principais filtros. ......................................... 31
Figura 1.15 Filtro Passa Baixo de primeira ordem na configurao inversora. .................... 32
Figura 1.16 Filtro passa-altas na configurao 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 Comunicao Serial. .......................................................................................... 42
Figura 1.22 Circuito interno para transmisso dos dados pelo mdulo UART..................... 44
Figura 1.23 Circuito interno para recepo dos dados pelo mdulo UART. ........................45
Figura 1.24 Circuito interno do mdulo de converso 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 Prottipo. ...................................................................... 52
Figura 2.2 Eletrodo para ECG da 3M.................................................................................... 53
Figura 2.3 Cabo usado para aquisio de ECG. ....................................................................54
Figura 2.4 Circuito interno do INA118 ................................................................................. 56
Figura 2.5 Circuito do amplificador de instrumentao. ....................................................... 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 nvel DC. ............................................................................... 61

Figura 2.11 Fluxograma da rotina principal do programa..................................................... 63


Figura 3.1 Onda ECG gerada com 5Vpp............................................................................... 69
Figura 3.2 Perodo de transmisso dos bits. .......................................................................... 69
Figura 3.3 Perodo da transmisso serial. .............................................................................. 70
Figura 3.4 Sinal de ECG real.................................................................................................70

10

LISTA DE TABELAS

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

LISTA DE ABREVIATURAS E SIGLAS

AMPOP
ADC
AMPOP
BD
BE
bps
CC
CISC
CMR
CPU
dB
DSP
ECG
EMG
fc
Hz
mm
mV
PE
RISC
s
sps
TAD
TI
UART
V
VB

Amplificador Operacional
Analog-to-Digital Converter
Amplificador Operacional
Brao Direito
Brao Esquerdo
Bits por segundo
Corrente Contnua
Complex Instruction Set Computer
Rejeio de Modo Comum
Central Processing Unit
Decibel
Digital Signal Processing
Eletrocardiograma
Eletromiografia
Freqncia de corte
Hertz
milmetro
milivolt
Perna Esquerda
Reduced Instruction Set Computer
segundos
samples per second
Perodo de Converso A/D
Texas Instruments
Universal Asynchronous Receiver Transmitter
Volt
Visual Basic

12

SUMRIO

LISTA DE FIGURAS............................................................................................................... 8
INTRODUO ...................................................................................................................... 14
1

FUNDAMENTOS TERICOS.....................................................................................16
Introduo............................................................................................................................. 16
1.1
Corao..................................................................................................................... 16
1.1.1
Excitao Rtmica do Corao ......................................................................... 18
1.1.2
Tenso Normal no Eletrocardiograma.............................................................. 19
1.1.3
Eletrocardiograma ............................................................................................ 20
1.1.4
Fluxo das correntes eltricas no corao .......................................................... 22
1.1.5
Derivaes eletrocardiogrficas ....................................................................... 23
1.2
Amplificador Operacional ........................................................................................ 25
1.2.1
Representao de um Amplificador Operacional............................................. 26
1.2.2
Configurao bsica inversora.......................................................................... 27
1.2.3
Configurao bsica no inversora................................................................... 28
1.2.4
Amplificador de diferenas .............................................................................. 29
1.2.5
Amplificador de Instrumentao ...................................................................... 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
Organizao da Memria.................................................................................. 37
1.4.4
Interrupes ...................................................................................................... 38
1.4.5
Entradas e Sadas Digitais ................................................................................ 39
1.4.6
Timers............................................................................................................... 40
1.4.7
Mdulo UART.................................................................................................. 42
1.4.8
Mdulo de Converso A/D............................................................................... 45
1.5
Ferramentas para Desenvolvimento e Depurao .................................................... 48
1.5.1
Gravador e Depurador in Circuit ICD2BR......................................................... 50

DESENVOLVIMENTO DO PROTTIPO.................................................................52
2.1
Eletrodos e cabos ...................................................................................................... 53
2.2
Etapa analgica......................................................................................................... 54
2.2.1
Amplificador de instrumentao ...................................................................... 55
2.2.2
Desenvolvimento do Filtro Passa-Altas ........................................................... 57
2.2.3
Desenvolvimento do Filtro Passa-Baixas ......................................................... 59
2.2.4
Ajuste de nvel de tenso DC ........................................................................... 60
2.3
Etapa digital.............................................................................................................. 61
2.3.1
Programao do dsPIC: .................................................................................... 62
2.3.1.1 Rotina principal do programa ....................................................................... 62

13

2.3.1.2 Rotina principal e Looping Infinito .............................................................. 63


2.3.1.3 Interrupo da UART ................................................................................... 64
2.3.1.4 Interrupo ADC .......................................................................................... 65
2.3.1.5 Interrupo do Timer 1 ................................................................................. 66
2.3.1.6 Interrupo do Timer 2 ................................................................................. 66
2.3.2
Montagem da placa do prottipo ...................................................................... 66
3

TESTES E VALIDAO DO PROTTIPO..............................................................68

CONSIDERAES FINAIS.................................................................................................72
REFERNCIAS BIBLIOGRFICAS .................................................................................74
ANEXOS ................................................................................................................................. 77
ANEXO A - DIAGRAMA DE BLOCOS DO DSPIC30F2010...........................................78
ANEXO B MAPA DA ORGANIZAO DAS MEMRIAS NO DSPIC30F2010 ...... 80
ANEXO C TABELA DE INTERRUPES 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 CDIGO FONTE DO PROGRAMA DO DSPIC ........................................97
ANEXO H CIRCUITO DO PROTTIPO ..................................................................... 104
ANEXO I LAYOUT DA PLACA DO PROTTIPO ....................................................106

14

INTRODUO

A unio de dispositivos eletrnicos com a medicina proporciona novas pesquisas da


Engenharia Biomdica. Pesquisas estas, na rea de sensoriamento remoto e em sistemas
biomdicos, tais com instrumentao analgica/digital e processamento de sinais eltricos
inerentes do ser humano.

O Eletrocardiograma (ECG) constitui atualmente um dos mais utilizados mtodos


no invasivos para diagnstico de cardiopatias. O ECG pode ser obtido em consultrios
mdicos, durante um exame de rotina com o paciente em repouso ou em atividade. O corao
gera sinais eltricos durante seu funcionamento, os quais se projetam at a superfcie corporal.
O ECG funciona como um registro das variaes do potencial eltrico do meio extracelular
decorrente da atividade cardaca.

Utilizando os conhecimentos adquiridos durante a graduao, surgiu o interesse em


desenvolver um instrumento que integrasse a captao e processamento de sinais biomdicos
em nvel digital, transmisso e visualizao dos resultados.

O projeto em questo tem como objetivo construir um prottipo de eletrocardigrafo


de monitorao. Os sinais biomdicos provenientes da superfcie corporal so enviados at a

15

placa de captura. Em seguida, passa por etapas de amplificao e por filtros analgicos ativos.
Na etapa final, o sinal inserido no microcontrolador para ser tratado e enviado porta serial
onde a informao transmitida ao computador e visualizada por um software aplicativo, em
Linguagem Visual Basic (VB), desenvolvido somente para teste.

A estrutura deste trabalho dividida em trs partes principais. O Captulo 1 o


envolve pesquisa e estudo sobre funcionamento cardaco, amplificadores operacionais, filtros
e microcontrolador. No Captulo 2 apresentado o desenvolvimento do prottipo e
juntamente abordada a aplicao terica. No Captulo 3 so realizados os testes para a
validao do prottipo e apresentados os resultados obtidos. Nas Consideraes Finais so
abordados os resultados obtidos no trabalho e citados os objetivos futuros para transformar o
prottipo em um produto final.

16

1 FUNDAMENTOS TERICOS

Introduo

Os fundamentos tericos esto divididos em cinco partes. Na seo 1.1 ser


apresentado o estudo sobre o corao e particularidades do sinal de ECG. Na seo 1.2 sero
apresentados os fundamentos bsicos sobre os amplificadores operacionais utilizados neste
projeto. Na seo 1.3 feito uma introduo aos filtros analgicos. Na seo 1.4
apresentado o processador digital de sinais e algumas estruturas internas do microcontrolador.
Enfim a seo 1.5 apresenta as ferramentas para desenvolvimento e gravao do
microcontrolador.

1.1 Corao

O corao uma bomba pulstil de quatro cmaras composto de dois trios 2 e dois
ventrculos 3 . Os trios funcionam, principalmente, como vias de acesso aos ventrculos, mas
tambm bombeiam fracamente para ajudar na mobilizao do sangue para os ventrculos.

2
3

trios - so cmaras cardacas, localizada na metade superior direita e esquerda do corao.


Ventrculos so as cmaras cardacas inferiores, se divide em ventrculo esquerdo e ventrculo direito.

17

Os ventrculos fornecem a principal fora que impulsiona o sangue atravs dos


pulmes e do sistema circulatrio perifrico. A Figura 1.1 mostra as principais estruturas do
corao como os trios e ventrculos (GUYTON & HALL, 2006).

Figura 1.1 Anatomia Cardaca.


Fonte SHIRLEY,2005.

O corao localiza-se na cavidade torcica, no mediastino. Dois teros do seu


volume esto situados esquerda da linha sagital mediana. Esta posio, chamada de
levocrdica, a mais freqente. A forma do corao aproximadamente cnica, com a base
voltada para trs e para a direita, e o pice para a frente e para a esquerda (GUYTON &
HALL, 2006).

18

1.1.1 Excitao Rtmica do Corao

O corao dotado de um sistema prprio de gerao de impulsos. Tambm tem


regulao pelo Sistema Nervoso Autnomo, que no ser abordado neste trabalho, pois o
eletrocardiograma norteia-se pela regulao prpria do corao.

Esse sistema prprio do corao inicia a gerao de impulsos eltricos pelo nodo
sinusal (nodo S-A). O impulso eltrico conduzido pelas vias internodais at o nodo
atrioventricular, onde o impulso retardado para os ventrculos. O feixe atrioventricular que
conduz o impulso at os ventrculos e as fibras de Purkinje (ramos direito e esquerdo)
conduzem o impulso para todas as outras reas dos ventrculos. A Figura 1.2 demonstra o
nodo sinusal e o sistema de Purkinje do corao, 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.

19

1.1.2 Tenso Normal no Eletrocardiograma

A tenso dos impulsos cardacos varivel e pode-se observar dois nveis mais
importantes de tenso cardaca: a tenso da fibra sinusal e a tenso do msculo cardaco, no
sentido de comparar com os sinais captados na superfcie 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 rtmica da fibra do nodo sinusal em relao de fibra
muscular ventricular. Essa diferena de tenso entre os tecidos cardacos ocorre porque as
fibras sinusais so mais permeveis aos canais de clcio, o que torna a carga dessas fibras
menos negativas do que no msculo cardaco.

Figura 1.3 Ao do nodo sinusal versus fibra muscular ventricular.


Fonte GUYTON & HALL, 2006.

20

Na despolarizao 4 o potencial de membrana pode chegar a 110 milivolts, porm a


tenso captada na superfcie corporal , em mdia, de 3 a 4 milivolts, dependendo de onde o
eletrodo posicionado em relao ao corao (GUYTON & HALL, 2006).

1.1.3 Eletrocardiograma

O ECG o registro das correntes eltricas que atravessam o corao e se propagam


para tecidos adjacentes e atingem a superfcie 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 Grfico de um ECG Normal.


Fonte GUYTON & HALL, 2006.

Despolarizao - Ativao eltrica da clula ocasionada pelo influxo de sdio. Antecede a contrao do
msculo cardaco.

21

A onda P gerada pela despolarizao dos trios e o complexo QRS gerado pela
despolarizao dos ventrculos. A onda T a repolarizao 5 dos ventrculos, ou seja, o
estado que ocorre aps a despolarizao, quando os ventrculos se recuperam do estado de
despolarizao. A repolarizao e despolarizao podem ser visualizados na Figura 1.5. A
reposio atrial ocorre juntamente com a despolarizao ventricular, portanto, o complexo
QRS se sobrepe a esta onda (GUYTON & HALL, 2006).

Figura 1.5 Despolarizao e repolarizao do corao.


Fonte SHIRLEY, 2005.

Repolarizao - Retorno da clula ao estado de repouso, causado pela reentrada de potssio na clula. Equivale
ao relaxamento do msculo cardaco.

22

O eletrocardiograma visualizado normalmente em uma folha quadriculada, a


impresso respeita uma velocidade padro de 25 milmetros por segundo, como ilustra a
Figura 1.6. O quadriculado que tem dimenses padronizadas serve para referenciar o nvel de
tenso e de tempo. A amplitude de 1 milmetro (mm) corresponde a 0,1 milivolt (mV) e a
largura de 1 mm corresponde a 0,04 segundos (s). Para melhor visualizao so destacados
blocos maiores de 5mm2 que correspondem a 0,5mV e 0,20s.

Figura 1.6 Impresso padro do ECG.


Fonte SHIRLEY, 2005.

1.1.4 Fluxo das correntes eltricas no corao

O impulso cardaco chega aos ventrculos atravs do septo interventricular (Figura


1.1 Anatomia Cardaca) e logo aps atinge as regies mais externas. Isso caracteriza
eletronegatividade no interior dos ventrculos e eletropositividade no exterior. possvel
observar tambm que o fluxo mdio de corrente ocorre com negatividade dirigida para a base

23

cardaca, enquanto que a positividade dirigida para o pice. Sendo assim, a corrente flui da
base para o pice (GUYTON & HALL, 2006).

Tambm dentro do trax as correntes eltricas so conduzidas, pois os pulmes,


mesmo cheios de ar, conduzem a corrente eltrica, at os tecidos mais superficiais. Este fato
possibilita o registro dessas correntes atravs do ECG. A Figura 1.7 mostra o fluxo da
corrente no trax ao redor dos ventrculos parcialmente despolarizados. (GUYTON & HALL,
2006).

Figura 1.7 Fluxo da corrente no trax.


Fonte GUYTON & HALL, 2006.

1.1.5 Derivaes eletrocardiogrficas

Para obteno dos registros eletrocardiogrficos necessrio a ligao das trs


derivaes bipolares dos membros. O termo bipolar quer dizer que o ECG registrado por
dois eletrodos posicionados em lados diferentes do corao, ou seja, nos membros. A
derivao no s um fio conectado no corpo, mas a combinao de dois fios e seus eletrodos

24

para formar um circuito completo entre o corpo e o eletrocardigrafo. As trs derivaes


bipolares padro so:

Derivao I - Para registrar a derivao I o terminal negativo do eletrocardigrafo


ligado ao brao direito e o positivo, ao esquerdo. Portanto, quando o ponto do trax
onde o brao direito conectado for eletronegativo em relao ao ponto ao qual se
liga o brao esquerdo, o eletrocardigrafo registrar positividade, isto , acima da
linha da voltagem zero do eletrocardiograma. Quando ocorre o oposto, o
eletrocardigrafo registra abaixo da linha de base;

Derivao II - Para registrar a derivao II, o terminal negativo do eletrocardigrafo


ligado ao brao direito e o terminal positivo, perna esquerda. Portanto, quando o
brao direito negativo em relao perna esquerda, o eletrocardigrafo registra
positividade;

Derivao III - Para registrar a derivao III, o terminal negativo do


eletrocardigrafo ligado ao brao esquerdo e o terminal positivo, perna esquerda.
Isto significa que o eletrocardigrafo registra positividade quando o brao esquerdo
negativo em relao perna esquerda.

Tringulo de Einthoven, os dois braos e a perna esquerda formam os pices de um


tringulo que circunda o corao. Os dois pices superiores do tringulo representam os
pontos nos quais os dois braos se ligam com os lquidos que circundam o corao, e o pice
inferior um ponto em que a perna esquerda se liga a estes lquidos (GUYTON & HALL,
2006).

25

A Figura 1.8 mostra a disposio convencional dos eletrodos que formam o tringulo
de Einthoven sobreposto ao trax como as derivaes eletrocardiogrficas padro I II e III,
identificados com: Brao Esquerdo (BE); Brao 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


operaes matemticas como adio, subtrao, derivao, integrao, multiplicao,
resoluo de equaes diferenciais, da porque foi chamado OPERACIONAL.

Atualmente, os amplificadores operacionais tm outras aplicaes, decorrentes da


sua versatilidade em efetuar operaes com tenses eltricas: so utilizados no processamento
e na gerao de sinais; em instrumentao e controle; como comparador, regulador,
integrador, diferenciador, somador, filtro ativo, oscilador, entre outras aplicaes
(JUNIOR,2001).

26

1.2.1 Representao de um Amplificador Operacional

Um Ampop pode ser entendido como um circuito amplificador de alto ganho, onde a
entrada representada por uma resistncia de alto valor e a sada por uma fonte de tenso
controlada e uma resistncia em srie. A representao grfica 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 diferena 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 sada ser nula. Esta propriedade chamada de Rejeio de Modo Comum
(CMRR), em Ampop ideais a CMRR tende a infinito (MALVINO, 1995).

27

1.2.2 Configurao bsica inversora

Nos circuitos de malha fechada, uma amostra do sinal de sada retornada para o
circuito com inteno de controle. Quando ligado na entrada inversora, o sinal de retorno se
ope ao sinal da entrada, ocorrendo inverso de 180 graus. A Figura 1.10 mostra a ligao
bsica do amplificador inversor (GIACOMIN, 2000).

Figura 1.10 Amplificador Inversor.


Fonte SEDRA, 2000.

O resistor R2 fornece a realimentao do circuito e R1 a impedncia de entrada, o


resultado pode ser visto na Equao 1.1.

Vo
R2
R2
=
Vo =
Vi
Vi
R1
R1

(1.1)

28

1.2.3 Configurao bsica no inversora

Nesta configurao o sinal conectado diretamente na entrada no inversora, e o


resistor R1 est aterrado. Como a entrada inversora apresenta curto virtual, a entrada no
inversora apresenta alta impedncia. O circuito no inversor est representado na Figura 1.11
e o clculo do ganho apresentado na Equao 1.2 (SEDRA, 2000).

Figura 1.11 Amplificador Operacional em uma configurao no-inversora.


Fonte SEDRA, 2000.

Vo
R2
= 1+
Vi
R1

(1.2)

29

1.2.4 Amplificador de diferenas

Utilizando as montagens inversora e no inversora permite realizar um circuito que


implemente a amplificao da diferena entre dois sinais. Este circuito est representado na
Figura 1.12 e sua simplificao na Equao 1.3 (SEDRA, 2000).

Figura 1.12 Circuito amplificador diferencial.


Fonte SEDRA, 2000.

Vo =

R2
(VI 2 VI 1 )
R1

(1.3)

1.2.5 Amplificador de Instrumentao

O amplificador de instrumentao basicamente um amplificador diferencial com


dois estgios de entrada. Cada sinal de entrada conectado diretamente ao terminal noinversor de um Ampop, de modo que tenha alta impedncia de entrada. So utilizados
dispositivos de alta qualidade e casamento rigoroso de impedncias, apresenta CMR muito

30

alta. Um circuito bsico de amplificador de instrumentao mostrado na Figura 1.13 e o


clculo de Vo na Equao 1.4 (SEDRA, 2000).

Figura 1.13 Amplificador de instrumentao.


Fonte SEDRA, 2000.

Vo =

R4 R2
1 +
(VI 2 VI 1 )
R3 R3

(1.4)

1.3 Filtros Ativos

Um filtro um dispositivo que permite que sinais com determinadas freqncias


passem por ele enquanto que outros sinais so atenuados. O filtro ideal tem um ganho
constante em todas as freqncias de sua faixa de passagem, ou banda passante, e ganho zero
em todas as freqncias fora da faixa de passagem. A Figura 1.14 mostra a resposta em
freqncia ideal e real dos quatro principais filtros usados em circuitos eletrnicos: passabaixas e passa-altas. As freqncias de corte so mostradas onde a resposta 3 Decibels (dB)
abaixo de seu valor mximo na banda passante (BOGART, 2001).

31

Figura 1.14 Resposta em freqncia de quatro principais filtros.


Fonte BOGART, 2001.
Os filtros so usados para isolar componentes desejveis da freqncia de sinais
complexos e/ou removerem componentes indesejveis, tais como rudos e harmnicas. Os
filtros passivos so aqueles constitudos de resistores, capacitores e indutores, j os filtros
ativos so 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 plo, a resposta em freqncia


apresenta uma atenuao de 20dB/dcada. A Figura 1.15 mostra o circuito de um filtro passa-

32

baixas de primeira ordem, o clculo do ganho e da Freqncia de corte (fc) esto identificados
na Equao 1.5 (MALVINO, 1995).

Figura 1.15 Filtro Passa Baixo de primeira ordem na configurao inversora.


Fonte BOGART, 2001.

Ganho =

R2
R1

1
fc =
2 R2 C

(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 freqncias altas passem e
as freqncias baixas sejam atenuadas sendo que, abaixo da freqncia de corte, a tenso de
sada atenuada 20dB/dcada. O circuito do filtro passa-altas mostrado na Figura 1.16 e os
clculos na Equao 1.6 (MALVINO, 1995).

33

Figura 1.16 Filtro passa-altas na configurao inversora.

Ganho =

R2
R1

1
fc =
2 R1 C

(1.6)

1.4 Processador Digital de Sinais

Vindo do termo em ingls Digital Signal Processing (DSP), ou seja, processamento


digital de sinais, trabalha com sinais analgicos que foram previamente amostrados em
intervalos de tempo e quantizados na forma digital. Possibilita um alto desempenho para
aplicaes numricas em tempo real, as quais seriam impossveis de serem realizadas por
circuitos analgicos. projetado para executar rapidamente diversas manipulaes e
transformaes matemticas em nmeros extrados dos circuitos analgicos rapidamente
(OLIVEIRA, 2006).

34

Os DSPs possuem algumas caractersticas particulares projetadas para desempenhar


tarefas repetitivas de alta performance. Uma destas tarefas que se destaca a habilidade de
realizar uma operao de multiplicao e acumulao em um nico ciclo de instruo. Esta
operao largamente usada em processos de tempo real. Outra caracterstica dos DSPs a
capacidade de realocar o espao no utilizado da memria de programa para uma extenso de
memria de dados, possibilitando uma otimizao das memrias do processador.
(OLIVEIRA, 2006).

1.4.1 Microcontrolador dsPIC30F2010

O dsPIC30F2010 possui barramento de dados de 16 bits e de instrues de 24 bits


em uma arquitetura Harvard com algumas modificaes. A combinao das vantagens de um
microcontrolador de 16 bits com as de um DSP torna este dispositivo uma soluo completa
para aplicaes como controle de motores (principal aplicao da famlia 30F), converso de
potncia, sensores de alta velocidade, processamento de sinais de udio e voz, conectividade,
como tambm aplicaes automotivas e em telecomunicaes (MICROCHIP, 2005, apud
FHR, 2006).

Na Figura 1.17 pode ser observada a disposio dos pinos do dsPIC30F2010 com as
nomenclaturas e o encapsulamento SDIP de 28 pinos utilizado no prottipo. Os pinos de VDD
e VSS so utilizados para fornecer a alimentao eltrica para o componente, sendo VSS o
pino de zero volt e VDD a alimentao positiva, neste prottipo foi utilizado 5V
(MICROCHIP, 2005, apud FHR, 2006).

35

Figura 1.17 Diagrama de pinos do dsPic30F2010.


Fonte MICROCHIP, 2005.
O pino MCLR responsvel pelo reset do dsPIC sempre que recebe um sinal em
nvel 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 clock 6 fornecido ao
dsPIC, que gerado pelo circuito oscilador a cristal exibido na Figura 1.18. O valor da
freqncia de oscilao do circuito a cristal utilizado no prottipo de 20MHz (Microchip,
2005).

Figura 1.18 Circuito de entrada do clock para o dsPic30F2010.


Fonte MICROCHIP, 2005.

O clock fornece a sensibilidade de tempo para o processador, um sinal de onda quadrada e a cada nvel alto
uma instruo no mnimo executada. Um ciclo de clock consiste na diferena de tempo entre dois nveis altos
dessa onda do oscilador.

36

A maioria dos pinos do componente possui mais de uma funo, que podem ser
configuradas conforme a necessidade atravs da programao do dsPIC30F2010. Estas
funes e configuraes dos demais pinos so abordadas conforme a necessidade durante o
desenvolvimento do prottipo (OLIVEIRA, 2006).

O mdulo Transmissor e Receptor Assncrono Universal, do ingls Universal


Asynchronous Receiver Transmitter (UART), que o dsPIC possui internamente configurado
para comunicar serialmente com um computador, onde est instalado o Software Supervisrio
para plotar o eletrocardiograma, programado em Linguagem Visual Basic 7 (VB) A
comunicao serial utilizada no projeto segue o padro RS232 (MICROCHIP, 2005, apud
FHR, 2006).

1.4.2 Arquitetura da CPU

O dsPIC possui uma tecnologia de processamento RISC com algumas modificaes


adaptadas para a realidade deste DSP. A tecnologia RISC possui instrues simplificadas,
com formato fixo, sendo executadas em apenas um ciclo de instruo. No dsPIC cada
instruo leva 4 ciclos de clock para ser executada, sendo que alguns comandos podem
necessitar de mais de 4 perodos de instruo. Desta forma no h o risco de um conjunto de
instrues ser to extenso que comprometa o desempenho do dsPIC, o que no poderia ser
garantido se o mesmo utilizasse a tecnologia CISC para processamento dos dados, onde o
conjunto de instrues mais complexo e no possui largura fixa. O diagrama em blocos da

O Visual Basic uma linguagem de programao de autoria da empresa Microsoft, que parte integrante do
pacote Microsoft Visual Studio.

37

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


apud FHR, 2006).

1.4.3 Organizao da Memria

A rea da memria de programa ocupa 4M words (palavras) de instrues e


enderevel por 24 bits ou pelo PC (Program Counter) por 23 bits. Conforme mostrado na
tabela do ANEXO B, referente ao mapa de espao de memria de programa do
dsPIC30F2010, os endereos entre 000000h e 0000FEh pertencem tabela de vetores de
Traps 8 e Interrupes. Os endereos entre 000100h e 001FFEh so reservados para a memria
de programa Flash, onde o usurio grava o programa fonte do dsPIC. Os endereos entre
002000h e 7FFBFEh so reservados para funes internas do componente (MICROCHIP,
2005, apud FHR, 2006).

A memria EEPROM 9 ocupa os endereos entre 7FFC00h e 7FFFFEh, podendo ser


utilizada para gravar parmetros necessrios para o correto funcionamento do programa fonte
sem que os mesmos sejam perdidos quando a alimentao eltrica do componente for
desligada. A rea de endereo de programa incrementada a cada 2 words (palavras de 16
bits) do programa, para fornecer compatibilidade com endereamento da rea de dados
(MICROCHIP, 2005, apud FHR, 2006).

O dispositivo tem duas reas de memrias de dados. As reas de dados podem ser
consideradas independentes para a maioria das instrues do DSP, ou como uma rea linear

Traps: so interrupes no mascarveis que indicam erro de software ou hardware


relacionado a uma prioridade pr definida (MICROCHIP, 2005).
9
EEPROM electrically erasable programmable read-only memory.

38

unificada de endereos para instrues da classe MAC. As reas de dados so acessadas


usando duas Unidades Geradoras de Endereo (AGUs) e caminhos de dados separados
(MICROCHIP, 2005, apud FHR, 2006).

1.4.4 Interrupes

Uma interrupo tem como objetivo parar a execuo normal do programa do dsPIC
para executar um bloco de comandos especficos a fim de atender a uma solicitao do
sistema. Esta interrupo pode ser causada por um dispositivo interno ou externo. Os mdulos
internos do dsPIC30F2010 possuem uma ordem de prioridade de interrupes: caso no seja
orientada assumida uma tabela com as prioridades padro do dsPIC, como pode ser
visualizado no ANEXO C.

Sempre que ocorre uma interrupo devido ocorrncia de algum evento, o seu
endereo armazenado na pilha interna do processador, fazendo com que sejam executados
os comandos referentes rotina desta interrupo. Ao finalizar esta tarefa, o processador volta
execuo normal do programa na posio seguinte a qual havia parado. Para que as
interrupes ocorram, necessrio que sejam habilitadas e configuradas conforme a
necessidade. A configurao de cada uma delas determina o exato momento que a mesma
deve ocorrer, podendo ocorrer no incio ou final de um determinado processo, dependendo da
rotina programada (MICROCHIP, 2005, apud FHR, 2006).

39

1.4.5 Entradas e Sadas Digitais

Os pinos utilizados como entradas e sadas digitais so selecionados via software, ou


seja, atravs da programao do dsPIC possvel configurar cada pino individualmente como
entrada ou sada digital. Estes pinos formam grupos chamados de PORTs, sendo que a
quantidade de pinos de cada PORT varivel, 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/Sada
PORTB
PORTC
PORTD
PORTE
PORTF

Registrador
de
Configurao
TRISB
TRISC
TRISD
TRISE
TRISF

Nmero de pinos de
Entrada/Sada
6
3
2
7
2

Fonte MICROCHIP, 2005.


A configurao possvel atravs 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 nvel alto (1), o pino do PORTX correspondente passa a atuar como entrada
de dados digital (Input Data), e quando ajustado para nvel baixo (0), o pino passa a atuar
como sada de dados digital (Output Data). Todos os pinos de I/O possuem um buffer Schmitt
Trigger 10 para obter imunidade a rudo. A Figura 1.19 mostra o circuito de controle das portas
de entrada e sada.

10

Schmitt Trigger - um circuito comparador incorporado de realimentao positiva.

40

Figura 1.19 Circuito de controle das portas I/O.


Fonte MICROCHIP, 2005.
Os registradores que configuram as sadas ou entradas dos mdulos PWM, UART e
ADC sobrepem os ajustes dos ports configurados como entradas ou sadas digitais nos
registradores TRISA, TRISB, TRISC, TRISD, TRISE e TRISF atravs do Mdulo Perifrico
(Peripheral Module) (MICROCHIP, 2005, apud FHR, 2006).

1.4.6 Timers

Os Timers so utilizados para fornecer uma interrupo no programa sempre que um


determinado tempo de execuo for atingido, criando uma linha de tempo de alta definio
para o programa. Podem ser utilizados para determinar o perodo de amostragem de um

41

sistema discreto, coletando e processando os dados a cada interrupo do Timer, gerando uma
seqncia de amostragem de um determinado sinal, por exemplo, a aquisio no A/D do sinal
de ECG (OLIVEIRA, 2006).

O dsPIC30F2010 possui trs 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 mdulo 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 perodo 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 relao de contagem

42

de ciclos de clock do timer em 8 (1:8), 64 (1:64) ou 256 (1:256) vezes, aumentando o range de
tempo configurvel para cada timer (MICROCHIP, 2005, apud FHR, 2006).

1.4.7 Mdulo UART

O mdulo transmissor e receptor assncrono universal do dsPIC30F2010 utilizado


para a transmisso bidirecional simultnea, ou seja, com dois canais de comunicao
independentes que podem operar ao mesmo tempo, com 8 ou 9 bits de comunicao de dados
seriais. A comunicao assncrona exige que os dois pontos independentes sejam
sincronizados previamente, havendo a necessidade de possurem a mesma taxa de
transferncia e mesmo tamanho dos dados (OLIVEIRA, 2006).

A taxa de transferncia dos dados denominada Baud Rate, cuja unidade de medida
bits por segundo (bps). O que determina o incio e o fim de um dado so os bits de incio
(start bit) e parada (stop bit) do byte transmitido, como podemos verificar na Figura 1.21
(OLIVEIRA, 2006).

Figura 1.21 Comunicao Serial.


Fonte OLIVEIRA, 2006.
As configuraes de comunicao do mdulo UART definem as caractersticas de
comunicao serial do dsPIC30F2010. A comunicao pode ser com 8 ou 9 bits de dados, 1

43

ou 2 stop bits e controle de paridade par, mpar ou sem controle de paridade. O Baud Rate 11
ajustado no registrador U1BRG, que calculado para receber o valor correto. O clculo segue
a frmula da Equao 1.7, onde a freqncia do ciclo obedece frmula da Equao 1.8.
(MICROCHIP, 2005, apud FHR, 2006).

U 1BRG =

FCY (Hz )
1
16 Baud _ Rate(bps )

Freqncia _ do _ ciclo(FCY ) =

Freqncia _ do _ Cristal
4

(1.7)

(1.8)

No prottipo, usado o pino de comunicao U1TX (17) para o envio de dados via
porta serial RS232 e o pino (18) U1RX recebe os dados. Internamente o dsPIC30F2010
possui 4 buffers 12 de 16 bits para a recepo de dados via serial e outros 4 buffers para a
transmisso de dados. possvel configurar a interrupo de recepo para que ela ocorra
quando os 4 Buffers estiverem ocupados, quando 3 Buffers estiverem ocupados ou para cada
recepo de um dado novo. A interrupo de transmisso ocorre quando um dado
armazenado no registrador de transmisso, podendo ser selecionado se a interrupo ocorrer
somente quando os Buffers estiverem vazios ou quando eles ainda estiverem com dados
armazenados (MICROCHIP, 2005, apud FHR, 2006).

11

O termo Baud Rate utilizado como medida de velocidade de transmisso de informao entre computadores
atravs de linhas telefnicas. Baud Rate frequentemente utilizado como sinnimo de bits por segundo (bps),
apesar de no ser tecnicamente verdadeiro. O nome Baud vem de J. M. Baudot, inventor do cdigo telegrfico
Baudot.
12
Pequena quantidade de memria para armazenamento de dados temporrios, auxiliando a CPU e os mdulos
internos na execuo de suas tarefas e compensando diferentes taxas de transferncia de dados.

44

O circuito interno de transmisso de dados pelo mdulo UART visualizado na


Figura 1.22. O barramento de dados da CPU conectado diretamente aos buffers de
transmisso, onde so armazenados os dados que sero transmitidos serialmente. O byte do
buffer armazenado no Registrador de Deslocamento (Transmit Shift Register), que, aps ser
transmitido o start bit, desloca serialmente os bits do dado para a sada U1TX, procedendo
com a comunicao. Ao finalizar a transmisso de todo o byte enviado o stop bit. O circuito
gerador de baud rate determina a velocidade de transmisso, neste caso 38400bps. Alm de
controlar estes dispositivos, o Controle de Transmisso (Transmit Control) tambm
responsvel por gerar os bits de status e a interrupo do mdulo transmissor (MICROCHIP,
2005, apud FHR, 2006).

Figura 1.22 Circuito interno para transmisso dos dados pelo mdulo UART.
Fonte MICROCHIP, 2005.
O circuito interno de recepo de dados pelo mdulo UART visualizado na Figura
1.23. Os dados so coletados atravs do pino U1RX. Ao receber o start bit, o byte deslocado

45

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


bit, indicando que a recepo do byte est completa, ele transferido para os buffers. A
velocidade que ocorre esta seqncia de aes depende do gerador de baud rate. O Controle
de Recepo (Receive Buffer Control) responsvel por controlar estes dispositivos, gerar os
sinais de status e a interrupo do mdulo (MICROCHIP, 2005, apud FHR, 2006).

Figura 1.23 Circuito interno para recepo dos dados pelo mdulo UART.
Fonte MIROCHIP, 2006.

1.4.8 Mdulo de Converso A/D

Qualquer sinal encontrado no mundo real analgico, mas pode ser amostrado de
forma discreta e quantizado para torn-lo digital, conseqentemente, passvel de ser

46

manipulado por sistemas de controle digitais como microcontroladores, computadores ou


processadores digitais de sinais. A converso analgico-digital (A/D) permite que sinais
analgicos sejam quantizados em valores digitais atravs de curtos perodos de amostragens.
A velocidade que feita a converso chamada de freqncia de amostragem ou taxa de
converso (OLIVEIRA, 2006, apud FHR, 2006).

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


converter um sinal analgico em um sinal digital de 10 bits. Esto disponveis internamente
seis canais de conversores A/D, podendo ser multiplexados com o conversor conforme a
necessidade do programador. Neste prottipo, para aquisio do sinal ECG usado apenas um
canal do A/D (MICROCHIP,2004 , apud FHR, 2006).

O conversor A/D necessita de uma tenso de alimentao de seu circuito interno


separada, pois deve ser muito bem estabilizada e sem rudos para que a converso seja a mais
precisa possvel. Esta alimentao ocorre entre os pinos AVdd (28) e AVss (8 e 27). A tenso
de referncia do conversor A/D utilizada para determinar os valores mximos e mnimos da
entrada analgica, e pode ser configurada pelo programa do dsPIC30F2010 para assumir a
prpria alimentao AVdd e AVss ou assumir os valores ajustados pelos pinos Vref+ (2) e
Vref- (3), que so valores intermedirios a AVdd e AVss (MICROCHIP, 2004, apud FHR,
2006).

O dsPIC30F2010 utiliza o mtodo de converso por aproximao sucessiva na


transformao dos sinais analgicos em digitais. Este mtodo muito utilizado em converses
A/D por possuir uma alta velocidade de convergncia, necessitando de no mximo 10 ciclos
de clock para converter um sinal contnuo em um sinal discreto de 10 bits, chegando a

47

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


(MICROCHIP, 2005, apud FHR, 2006).

O funcionamento deste mtodo de converso baseado na comparao entre o valor


de entrada analgico com um valor padro para cada bit de converso. O bit mais
significativo ser a comparao entre a entrada e a metade da tenso de referncia (AVdd / 2),
resultando em nvel lgico alto se a entrada for igual ou maior a tenso de comparao, e
nvel lgico baixo caso for menor (MITRA, 2001, apud FHR, 2006).

Caso o resultado do primeiro bit de converso tenha ficado em nvel alto, o valor de
comparao utilizado para a converso do segundo bit mais significativo ser o valor de
comparao anterior somado a um quarto do valor de referncia (AVdd / 2 + AVdd / 4 =
3AVdd / 4). Se a converso do bit anterior ficou em nvel baixo, a tenso de comparao ser
subtrada de um quarto do valor de referncia (AVdd / 2 - AVdd / 4 = AVdd / 4). Novamente
o resultado desta comparao definir o nvel lgico do bit, sendo repetido o mesmo processo
para cada um dos demais bits (MITRA, 2001, apud FHR, 2006).

O mdulo de converso A/D possui 16 buffers de 16 bits para acumular os resultados


da converso at que os mesmos sejam coletados para a utilizao no programa. A leitura do
resultado feita diretamente nos Buffers do conversor, no podendo ser feita a leitura
diretamente na sada do conversor. Outra vantagem deste mdulo que ele atua independente
da CPU estar em modo Idle (repouso) ou em modo Sleep (hibernando), podendo continuar em
funcionamento se for necessrio. A interrupo do mdulo A/D pode ser configurada para
ocorrer sempre que um determinado buffer esteja cheio, podendo ocorrer de 1 a 16 converses
at que a interrupo ocorra (MICROCHIP, 2005, apud FHR, 2006).

48

O circuito interno do mdulo de converso de sinais analgicos para digitais (A/D)


visualizado na Figura 1.24 onde esto representados as seis portas analgicas (MICROCHIP,
2004).

Figura 1.24 Circuito interno do mdulo de converso A/D.


Fonte MICROCHIP, 2005.

1.5 Ferramentas para Desenvolvimento e Depurao

Para o desenvolvimento, implementao, depurao e compilao do programa em


Linguagem C e Asembly e da gravao do dsPIC30F2010 so utilizadas algumas ferramentas
fornecidas pelo fabricante do componente. O software responsvel pelo desenvolvimento e
depurao do programa chama-se MPLAB. Neste trabalho foi instalada a verso 7.60

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 funo de converter o programa implementado
em Linguagem C para a Linguagem de Mquina, permitindo a correta interpretao do
programa por parte do dsPIC30F2010. O processo de compilao do compilador avalia se h
problemas de sintaxe nos comandos do programa, gerando o arquivo com extenso "hex" se
nenhum erro for detectado, ou seja, um arquivo com dados em linguagem de mquina e
pronto para ser gravado no dsPIC. O erro de sintaxe ocorre quando um comando no est
escrito conforme determina a estrutura da linguagem de programao utilizada. Porm, o
compilador no detecta erros de semntica, ou seja, erros causados devido a uma lgica
incorreta, no executando a ao desejada pelo programador (OLIVEIRA, 2006).

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 necessrio (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 Labtools 13 , que permite que o dsPIC seja programado in
circuit (no circuito), ou seja, no necessrio remover o chip processador do circuito de teste
para fazer a gravao do programa na sua memria flash.

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


composto da placa ICD2BR e seus respectivos cabos de conexo com o computador e com a
placa soquete para a conexo do PIC. O prottipo do eletrocardigrafo possui junto ao
processador a ligao dos pinos necessrios para gravao do dsPIC junto ao kit gravador
atravs do conector RJ-12 . Tambm acompanha um CD com o software MPLAB verso 7.21
e o manual de operao (novas verses do MPLAB podem ser baixadas do site da
MICROCHIP, HTTP://www.microchip.com).

13

Labtools Mosaico Didactic Division uma empresa situada em So Paulo que comercializa produtos
eletrnicos e ministra cursos sobre microcontroladores fabricados pela Microchip.

51

Figura 1.26 Kit gravador e depurador in circuit ICD2BR.


Fonte Site da Labtools: http://www.labtools.com.br.
A gravao do componente ocorre atravs dos pinos 17 e 18, referentes s
entradas/sadas RF2 e RF3 e h a necessidade de atuar no pino MCLR.

52

2 DESENVOLVIMENTO DO PROTTIPO

O desenvolvimento do prottipo para aquisio 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 biomdico. Na segunda etapa, denominada de etapa
analgica, apresentado o filtro analgico e amplificao do sinal. Na terceira etapa,
denominada digital, mostrada a aplicao do microcontrolador, o conversor analgico
digital e a interface de comunicao serial. Por fim, a ltima etapa mostra a ferramenta em
VB vizualizando o grfico proveniente do microcontrolador.

Etapa Analgica

Etapa Digital

Figura 2.1 Diagrama em Blocos do Prottipo.

53

2.1 Eletrodos e cabos

Para aquisio dos sinais de ECG foi escolhido o eletrodo para monitorizao
cardaca modelo 2223 da 3M 14 . Este consiste em eletrodo descartvel no invasivo composto
de: espuma de polietileno, polivinillcool coberto com adesivo acrlico, polietileno coberto
com silicone, polmero sinttico hidroflico, pino metlico e contra pino de Ag/AgCl
(prata/cloreto de prata).

No projeto so utilizados trs eletrodos e estes podem ficar colados no trax de um


ser humano por um prazo mximo de 48 horas. Aps este perodo os eletrodos podem
oferecer irritaes 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 clula, ou seja,
forma um potencial de Corrente Contnua (CC) pequeno em contato com a pele, reduzindo a
variao da linha de base.

Os cabos dos eletrodos so coaxiais e a malha externa conectada ao terra do


circuito de modo a reduzir a interferncia eletromagntica existente no ambiente. O fio do

14

3M do Brasil Ltda Produtos Mdico-Hospitalares, Link: WWW.3M.com.br

54

ncleo do cabo deve ser ligado ao eletrodo atravs de garra do tipo jacar ou boto de contato
especfico. Existe no mercado cabos especficos desenvolvidos para conectar com eletrodos
de ECG, contudo foi utilizado no prottipo um cabo confeccionado com garra do tipo jacar.
A Figura 2.3 mostra o cabo montado para o prottipo com conector para ligao na placa de
circuito impresso.

Figura 2.3 Cabo usado para aquisio de ECG.

2.2 Etapa analgica

Nesta etapa o projeto do circuito eletrnico para aquisio de sinais de ECG tem os
seguintes requisitos: adquirir o sinal analgico de baixa amplitude, amplificar, filtrar e
eliminar nveis de tenso negativa, permitindo assim a ligao ao conversor A/D interno do
dsPIC.

A banda de freqncias til de um sinal de ECG varia de acordo com a aplicao de


0,5 Hz a 50Hz para unidades de monitoramento (banda selecionada para este prottipo) e
acima de 1kHz para medidas de potencial tardio (deteco de marca-passo). Um ECG clnico
padro tem largura de banda de 0,05Hz a 100Hz (TOMPKINS, 2000).

55

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

Interferncia da rede eltrica: 60Hz e harmnicas de ordem superior.

Contato dos eletrodos: a variao do contato do eletrodo com a pele causa um

deslocamento da linha de base do sinal, que uma variao de tenso proveniente do


contato do eletrodo-pele.

Contrao muscular: os sinais tpicos de Eletromiografia (EMG) so gerados e

misturados aos sinais de ECG.

Respirao: a respirao causa o deslocamento da linha de base do sinal.

Interferncia eletromagntica: outros dispositivos eltricos e eletrnicos podem

causar interferncia com os fios ligados aos eletrodos atuando como antenas.

2.2.1 Amplificador de instrumentao

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


instrumentao ser responsvel por amplificar cerca de 10 vezes este sinal, removendo parte
dos rudos durante a captura, pois este tipo de amplificador s amplifica as diferenas de
sinais.

56

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


Instruments 15 (TI) por possuir algumas caractersticas: ganho ajustvel atravs de resistor
externo, rejeio de modo comum superior a 120dB e alimentao entre +/-2,25V a +/-18V,
conforme Anexo E. A Figura 2.4 mostra o diagrama interno do INA128 e a equao de ganho.

Figura 2.4 Circuito interno do INA118


Fonte INA118 Datasheet, 2005
O clculo do ganho projetado para esta etapa do circuito mostrado na Equao 2.1.
O circuito montado com o amplificador de instrumentao 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

57

Figura 2.5 Circuito do amplificador de instrumentao.

G = 1+

50k
50k
= 9,92
1+
RG
5.6k

(2.1)

2.2.2 Desenvolvimento do Filtro Passa-Altas

O filtro passa-altas foi calculado para a freqncia de corte de 0,5 Hz e permite


passar somente sinais com freqncia superior a fc , barrando inclusive os sinais contnuos
que so provenientes da atividade dos msculos.

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 alimentao simtrica de +/- 9V. O circuito do filtro ilustrado na Figura 2.6 e
o clculo do filtro demonstrado na Equao 2.2 onde R1 arbritado em 2,2M.

Esta equao resulta em uma capacitncia de 144nF. Foi utilizado o capacitor de


polister com valor comercial de 150nF. O ganho para esta etapa foi de 10V/V e a Equao
2.3 mostra o clculo do ganho.

58

Figura 2.6 Filtro Passa-Altas.

fc =

1
1
0,5 =
C1 = 144nF
2 R1 C1
2 2.2M C1

G=

2.2M
R1
10 =
R 2 = 220k
R2
R2

(2.2)

(2.3)

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


est em dB, enquanto o eixo horizontal (freqncia) est em Hz.

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

59

2.2.3 Desenvolvimento do Filtro Passa-Baixas

O filtro foi calculado para a freqncia de corte de 50 Hz. Permite passar somente
sinais com freqncia inferior a fc e com isso remove parte do rudo de 60Hz proveniente da
rede eltrica.

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 clculo do filtro demonstrado na
Equao 2.4, onde R1 arbritado em 100k.

Esta equao resulta em uma capacitncia de 31,8nF. Foi utilizado um capacitor


cermico com valor comercial de 33nF. O ganho para esta etapa foi de 10 e a Equao 2.5
mostra o clculo do ganho.

Figura 2.8 Filtro Passa-Baixas.

60

fc =

1
1
50 =
C1 = 33nF
2 R1 C1
2 100k C1

G=

100k
R1
10 =
R 2 = 10k
R2
R2

(2.4)

(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 nvel de tenso DC

A entrada do conversor analgico/digital do dsPIC est programada para receber


nveis de tenso positivas de 0 a 5V. Como o sinal que amplificado do ECG possui parcela
negativa foi necessrio implementar um ajuste de nvel DC. A Figura 2.10 mostra o circuito
implementado.

61

O circuito compe um amplificador no inversor de ganho unitrio. A entrada


inversora possui realimentao de ganho unitrio que est ligada ao pino central do
potencimetro de 100k. Este potencimetro esta com suas extremidades ligadas a -9V e 9V
e o seu ajuste desloca a referncia do amplificador, eliminando os nveis de tenso negativa
do sinal de ECG.

Figura 2.10 Circuito de ajuste nvel DC.

2.3 Etapa digital

A etapa digital do projeto constitui a interligao da etapa analgica ao


microcontrolador. Esta etapa feita com a elaborao de uma placa de circuito impresso onde
so montadas as duas etapas, possibilitando a programao in circuit do prottipo. Aps,
segue a programao do dsPIC que inclui inicializao de portas, conversor A/D, porta de
comunicao serial e desenvolvimento da rotina principal do programa.

62

2.3.1 Programao do dsPIC:

A programao do controlador digital de sinais dsPIC30F2010 foi implementada


utilizando-se a Linguagem C atravs do software de desenvolvimento e depurao MPLAB.
O programa completo e comentado do prottipo pode ser visualizado no ANEXO G. Foram
utilizadas as interrupes internas do dsPIC para interromper o programa principal e executar
rotinas especficas sempre que alguma ocorrncia necessitasse de um tratamento adequado
por parte do programa. A interrupo dos circuitos de transmisso de dados via UART, leitura
da converso A/D e estouro dos tempos dos timers 1 e 2 so utilizadas no programa de
aquisio de ECG com microcontrolador (MICROCHIP, 2004).

Na programao do dsPIC30F2010 foram includas algumas bibliotecas fornecidas


de forma gratuita pela empresa Microchip com a inteno de facilitar a programao. Elas
possuem sub-rotinas desenvolvidas especialmente para a execuo de determinadas tarefas e
definies para valores dos registradores responsveis pela configurao das funes dos
dispositivos internos do dsPIC. A biblioteca principal obrigatria na programao em
Linguagem C deste componente, possui o nome p30f2010.h, onde esto declarados os
endereos referentes a cada bit dos registradores do dsPIC30F2010, alm de definir os valores
iniciais dos mesmos. As demais bibliotecas utilizam as definies da p30f2010.h como base
para as suas sub-rotinas e definies (MICROCHIP, 2004).

2.3.1.1 Rotina principal do programa

A rotina principal do programa do dsPIC30F2010 possui a funo de ajustar a


inicializao do componente com os valores corretos dos registradores e as configuraes dos

63

mdulos utilizados no programa. Em seguida, a rotina principal entra em um looping16


infinito, sendo interrompido pelos mdulos internos quando h necessidade de executar
alguma funo. A Figura 2.11mostra o diagrama em blocos da rotina principal do programa
fonte do prottipo de aquisio 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 funo setar variveis, 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 interrupes dos mdulos. Havendo interrupo, o
looping interrompido e a instruo do mdulo executada, ao trmino da instruo o

16

Looping do ingls, algo que da voltas, referncia a um circuito fechado.

64

programa volta para o looping e aguarda a prxima interrupo. Estas estruturas internas so
apresentadas nos prximos tpicos.

2.3.1.3 Interrupo da UART

O mdulo UART utilizado para comunicar serialmente com aplicativo, em


Linguagem Visual Basic (VB), para visualizar o ECG. Para habilitar o mdulo UART
necessrio setar o bit UARTEN no Registrador de Funo Especial, U1MODE. Aps
habilitado, os pinos dos registradores U1TX e U1RX (pinos 17 e 18) so configurados para
sada e entrada respectivamente (MICROCHIP, 2004).

O baud rate que determina a velocidade da comunicao serial ajustado atravs do


valor armazenado no registrador U1BRG. O clculo deste valor segue na Equao 2.6 e a
velocidade escolhida de 38400bps pois nesta velocidade possvel transmitir a varivel
analgica sem perdas. A varivel U1BRG calculada ficou em 7, resultando um erro de 1,72%.

freqncia _ do _ cristal 20000000


=
= 5MHz
4
4
Baud _ rate = 38400bps
FCY
5000000
1 =
1 = 7,13 7
U 1BRG =
16 Baud _ rate
16 38400
5000000
= 39062
Baud _ rate _ calculado =
16 (7 + 1)
39062 38400
= 1,72%
Erro =
38400
FCY =

(2.6)

65

2.3.1.4 Interrupo ADC

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


analgica zero (AN0), as demais portas no so inicializadas. O sinal digital resultante possui
10 bits. Os bits VCFG definem os pinos AVDD (28) e AVSS (8 e 27) como responsveis por
fornecer a tenso de referncia utilizada pelo mdulo, no projeto foi fixado em 5V. O perodo
entre as converses A/D (TAD) calculado conforme descrito na Equao 2.7, onde o
registrador ADCS armazena o valor que determina a freqncia deste clock (MICROCHIP,
2004).

TAD = TCY (0.5 ( ADCS + 1))


ADCS = 2

TAD
1
TCY

(2.7)

Com ADCS armazenando o valor 7, o perodo entre converses A/D (TAD) fica
determinado em 800ns, gerando uma freqncia do clock de 1,25MHz. Como cada converso
exige 12 perodos de clock do A/D (TAD), a freqncia de converso fica ajustada em 104KHz
(MICROCHIP, 2004).

Na rotina de converso do A/D foi incorporada a transmisso da varivel analgica,


assim que os 16 buffers da converso forem preenchidos uma amostra guardada na varivel
(Val_Ana1) e esta transmitida no UART. Isto resulta num intervalo fixo de transmisso
determinado pelo ciclo do conversor A/D.

66

2.3.1.5 Interrupo do Timer 1

A rotina de interrupo do Timer 1 serve para ligar e desligar o LED de status da


placa de aquisio e uma ferramenta simples para diagnosticar se o processador esta
funcionando. J que durante o projeto so efetuadas vrias programaes, se uma dessas
rotinas do programa no funcionar, o LED de status no vai piscar.

2.3.1.6 Interrupo do Timer 2

Este timer responsvel por setar a freqncia de amostragem do conversor A/D. A


freqncia de amostragem foi calculada em 1627 kHz conforme descrito na Equao 2.8.

Freq _ T2 =

FCY 5000000
=
= 1.6kHz
fa
512 6

(2.8)

2.3.2 Montagem da placa do prottipo

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


Multisim da EWB 17 em seguida foi exportado para o Ultiboard. No Ultiboard foi criado o
layout da placa. Devido a quantidade de ligaes e de componentes foi necessrio utilizar uma
placa de fenolite 10X10cm e dupla face de cobre.

17

EWB Electronic Workbench.

67

O layout criado da mscara de componentes, mscara de solda e visualizao em trs


dimenses so apresentadas no Anexo I.

68

3 TESTES E VALIDAO DO PROTTIPO

Os testes realizados com o prottipo foram basicamente dois: o primeiro foi captura
de sinal ECG padro obtido no gerador de sinais e o segundo foi a captura de sinal real
utilizando eletrodos aderidos ao trax.

Utilizando o gerador de sinais da Agilent (modelo 33220A) para gerar uma onda
ECG padro foi possvel verificar o funcionamento do prottipo. O sinal padro foi
configurado na freqncia de 1,2Hz, que corresponde a um intervalo TR-R de 833ms,
resultando 72 bpm 18 . O clculo para determinar o nmero de batimentos por minuto
mostrado na Equao 3.1.

O sinal foi gerado com amplitude de 5Vpp, isto para verificar se toda a faixa de
captura de tenso entre 0 e 5V seria mostrada adequadamente no programa em VB.

bpm =

18

Bpm batimento por minuto.

60(s )
TR R (s )

(3.1)

69

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


pelo Professor Delfim Luiz Torok para auxlio no projeto.

Figura 3.1 Onda ECG gerada com 5Vpp.


O perodo entre transmisses 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 monitorizao. A Figura 3.2 mostra sinal de ECG no canal 1 e
os perodos de transmisso dos bits gerados na captura do A/D na transmisso serial.

Figura 3.2 Perodo de transmisso dos bits.

70

A transmisso dos bits pela porta serial mostrada na Figura 3.3. O perodo de
transmisso do start bit, 8 bits de dados e stop bit foi de 26s, resultando em uma transmisso
de 38462bps e um erro de 0,6% entre a transmisso setada de 38400bps.

Figura 3.3 Perodo da transmisso serial.


Nesta ltima etapa, o prottipo foi ligado a uma pessoa por meio dos trs eletrodos
fixados no trax (Figura 1.8 - Disposio convencional dos eletrodos para o registro das
derivaes eletrocardiogrficas padro). Neste ensaio a pessoa estava sentada prxima a placa
de captura e esta ligada a um computador.

O sinal real capturado apresentou a presena de algumas anomalias: rudo de 60Hz,


rudo de linha de base e rudo muscular, como pode ser visto na Figura 3.4.

Figura 3.4 Sinal de ECG real.

71

A banda de freqncias da placa de captura de 0.5 50Hz. Com isso o rudo de


60Hz apresentado no veio em sua totalidade da etapa analgica, mas foi proveniente das
interferncias atuantes na placa do prottipo. Como no foi implementado um filtro rejeita
banda especfico para rudos da rede eltrica, este poder ser implementado como filtro digital
em trabalhos futuros.

Verificou-se a importncia da conexo dos eletrodos no paciente. Um eletrodo mal


colocado gera potencial de meia-clula, que causa alterao na linha de base do sinal de ECG.
O rudo de linha de base apresentado no prejudica a avaliao do sinal de ECG, j que
variaes deste tipo no alteram significativamente a visualizao para monitoramento do
ECG.

O rudo de espasmo muscular visualizado no ECG, quando exercido algum esforo,


pode ser eliminado com um filtro rejeita banda de 35Hz. Isto pode ser implementado
futuramente atravs de um filtro digital no dsPIC (MELCO, 2006).

72

CONSIDERAES FINAIS

O referencial terico forneceu uma base importante para o desenvolvimento deste


trabalho e pode servir como material de pesquisa, para que outros acadmicos possam
proceder com trabalhos adicionais nesta rea de conhecimento.

De maneira geral a funcionalidade do prottipo projetado foi satisfatria, todos os


mdulos apresentados no prottipo funcionaram. A etapa analgica conseguiu estabelecer a
funo de tratamento inicial do sinal de ECG e enviar o sinal tratado para o conversor A/D.
Na etapa digital todos os mdulos funcionaram mostrando um bom desempenho do dsPIC. O
conversor A/D funcionou corretamente conseguindo gerar uma boa taxa de amostragem. O
mdulo de comunicao UART teve bom desempenho na transmisso em 38,4 kbps, no
necessitando de Cyclic Redundancy Check (CRC).

Considera-se que o objetivo inicial bsico foi alcanado a contento, contudo observase, que muitos outros desenvolvimentos futuros so necessrios, de forma que o prottipo
possa a vir tornar-se um eletrocardigrafo de boa qualidade para uso em diagnsticos de
cardiopatias.

Pode ser destacada uma srie de desenvolvimentos futuros a curto e mdio prazo
para melhorar e dar seqncia ao trabalho aqui realizado. Entre estes, citam-se: utilizao de

73

cabos especficos para conexo aos eletrodos; melhorar a eficincia dos filtros, aumentando a
sua ordem; implementar filtro digital e/ou adaptativos para auxiliar o processo captura e
correes do sinal ECG, bem como a miniaturizao da placa utilizando componentes com
encapsulamento menor.

Finalmente concluir o prottipo, transformando-o em um produto final de qualidade


e competitivo, acrescentando recursos de transmisso sem fio e/ou comunicao via USB,
bem como utilizando carto de memria para gravar os sinais obtidos em um intervalo de
tempo maior.

REFERNCIAS BIBLIOGRFICAS

BOGART Jr, Theodore F.. Dispositivos e Circuitos Eletrnicos. 3.ed. So Paulo: Makron
Books, 2001. 463p.

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


SENAI RS, 1998. 111p.

FHR, Thiago Henrique. Desenvolvimento e implementao de um prottipo para


validao de sistemas de controle para motor dc por meio de modulao por largura de
pulso utilizando um processador digital de sinais. Novo Hamburgo: 2006. 173p. Trabalho

de Concluso (Bacharel em Engenharia Eletrnica) - FEEVALE, ASPEUR, 2006.

GIACOMIN, Joo C.. Eletrnica Bsica: Amplificadores Operacionais. So 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. So Paulo: Makron Books,


2001. 245p.

75

LABTOOLS, Mosaico Didatic Division. Guia do Usurio ICD2BR in Circuit Debugger.


3.ed. So Paulo: Mosaico, 2005. 39p. Disponvel em:
<http://www.labtools.com.br/arquivos/ICD2-BR-set.2005_rev._03.pdf>. Acesso em: 25 nov.
2007.

MALVINO, Albert Paul. Eletrnica: Volume II. 4.ed. So Paulo: Makron Books, 1995.
558p.

MELCO, Tito Coutinho. Estudo do Eletrocardiograma sob uma Abordagem Matemtica.


So Paulo: 2006. 100p. Tese (Mestrado em Engenharias) - Engenharia Mecatrnica e de
Sistemas Mecnicos, Escola Politcnica da Universidade de So 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 Prtica.


1.ed. So Paulo: rica, 2006. 316p.

PRODANOV, Clber Cristiano. Manual de Metodologia Cientfica. 1.ed. Novo Hamburgo:


Feevale, 1997. 66p.

SEDRA, Adel S.. Microeletrnica. 4.ed. So Paulo: Makron Books, 2000. 1270p.

SHIRLEY, A. Jones. ECG Notes: Interpretation and Management Guide. 1.ed. Philadelphia
USA: F. A. Davis Company, 2005. 207p.

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.

77

ANEXOS

78

ANEXO A - DIAGRAMA DE BLOCOS DO DSPIC30F2010

79

Fonte Datasheet dsPIC30F2010, 2004.

80

ANEXO B MAPA DA ORGANIZAO DAS MEMRIAS NO


DSPIC30F2010

81

Fonte Datasheet dsPIC30F2010, 2004.

82

ANEXO C TABELA DE INTERRUPES DO DSPIC30F2010

83

Fonte Datasheet dsPIC30F2010, 2004.

84

ANEXO D MAPA DE REGISTRO DAS PORTS

85

Fonte Datasheet dsPIC30F2010, 2004.

86

ANEXO E AMPLIFICADOR OPERACIONAL INA128

87

Fonte Datasheet INA128, Texas Instruments.

88

Fonte Datasheet INA128, Texas Instruments.

89

Fonte Datasheet INA128, Texas Instruments.

90

Fonte Datasheet INA128, Texas Instruments.

91

Fonte Datasheet INA128, Texas Instruments.

92

ANEXO F AMPLIFICADOR OPERACIONAL CA3140

93

Fonte Datasheet CA3140, INTERSIL 2005.

94

Fonte Datasheet CA3140, INTERSIL 2005.

95

Fonte Datasheet CA3140, INTERSIL 2005.

96

Fonte Datasheet CA3140, INTERSIL 2005.

97

ANEXO G CDIGO FONTE DO PROGRAMA DO DSPIC

98

/*
Autor: Martin Nhr
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);
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWRT_OFF);
_FGS(CODE_PROT_OFF);

// Oscilador externo sem tratamento de erro


// WatchDog disabilitado
// Desabilita MCLR, PBOR e PWRT
// Sem protecao de codigo - possvel a leitura
// posterior a gravao do chip.

//********************************************************************************************************************************************
//**************************************** Define Valores Padres para o Programa ****************************************************
#define Fcy 5000000

//Freqncia do ciclo=freqncia do oscilador/4


//dsPIC necessita de 4 ciclos de clock para executar
//um ciclo de instruo

#define Freq_T1 (Fcy / 1024)


#define Freq_T2 (Fcy / (512*6))
#define Tad (7)

//freqncia do Timer 1 para piscar Led => 1024=0,5s


//freqncia do Timer 2 para habilitar conv.A/D = 1.6KHz
//Tempo para converso A/D a 104Ksps para Fcy=5.000.000

//********************************************************************************************************************************************
//************************************************ Declarando as variveis ***************************************************************
unsigned int Par1;
unsigned int Par2;

//define a varivel inteira sem sinal Par1


//Parmetro 1 transmitido via UART
//define a varivel inteira sem sinal Par2
//Parmetro 2 transmitido via UART

unsigned int Par;

//define a varivel inteira sem sinal Par


//Parmetro utilizado pelo comando

int Val_Ana1;

//define a varivel inteira Val_Ana1

unsigned int ADResult[16];

//define a matriz de variveis inteiras sem sinal ADResult


//recebe o resultado da converso A/D numa matriz de tamanho 16

volatile unsigned int *ptr;

//define a varivel ponteiro inteira sem sinal ptr


//ponteiro para indicar o resultado da converso A/D nos buffers

unsigned int a;
unsigned int count;

//define a varivel a para a Interrupo da recebimento de dados

99

//********************************************************************************************************************************************
//****************************************************** Funes Utilizadas****************************************************************
void inicia_UART(void);

//declara a funo para iniciar a UART

void _ISR _U1TXInterrupt(void);

//declara a funo de tratamento da interrupo


//de transmisso de dados

void _ISR _U1RXInterrupt(void);

//declara a funo de tratamento da interrupo


//de recepo de dados

void TransPac (void);

//declara a funo para transmitir um pacote de dados via UART

void TransBuf (void);

//declara a funo para transmitir buffer de dados via UART

void inicia_timer2(void);

//declara a funo para iniciar o timer da converso A/D

void _ISR _T2Interrupt(void);

//declara a funo de tratamento da interrupo do timer da converso A/D

void inicia_ADC (void);

//declara a funo para iniciar a converso A/D

void _ISR _ADCInterrupt(void);

//declara a funo de tratamento da interrupo A/D

void inicia_timer1(void);

//declara a funo para iniciar o timer do LED de estado

void _ISR _T1Interrupt(void);

//declara a funo de tratamento da interrupo do timer do LED de estado

//********************************************************************************************************************************************
//******************************************** Rotina Principal do Programa *************************************************************
int main(void){
a=0;
TRISD = 0xfffc;
LATDbits.LATD0 = 1;
LATDbits.LATD1 = 0;

//varivel a=0
//Seta RD0 e RD1 p/ sadas - 1111 1111 1111 1100
//Led_Status Verde = Desligado
//Led_Status Vermelho = Desligado

inicia_timer1();
inicia_UART();
inicia_ADC();
inicia_timer2();

//inicializa o timer do LED de Led_Status Verde


//Inicializa UART
//inicializa a converso A/D
//inicializa o timer da converso A/D

while(1){
}

//loop principal -> infinito


//fim do while

return 0;

//devolve zero (0)

//********************************************************************************************************************************************
//******************************************* Inicializao do mdulo UART *************************************************************
void inicia_UART()
{
unsigned int ubrg;
unsigned int config1;
unsigned int config2;
CloseUART1();
ubrg = 7;

//define a varivel ubrg


//define a varivel config1
//define a varivel config2
// desabilita a UART1
// ubrg=(fcy/(BaudRate*16))-1
// fcy=FCristal/4

100

// Neste Caso: Baud

Rate=38400

// Freq.Cristal=20MHz
// fcy=5MHz, ubrg=7 7,15

calculado
ConfigIntUART1(UART_RX_INT_EN &

config1 = UART_EN &

padres

//Funo para configurao das interrupes da UART


//habilita a interrupo de recepo
UART_RX_INT_PR2 &
//Define a prioridade da interrupo de recepo=2
UART_TX_INT_EN &
//habilita a interrupo de transmisso
UART_TX_INT_PR4);
//Define a prioridade da interrupo de transmisso=4
//Define a varivel config1 com os seguintes parmetros
//Habilita o mdulo UART
UART_IDLE_CON &
//UART funcionando no modo IDLE
UART_RX_TX &
//Configura a comunicao atravs dos pinos
UART_DIS_WAKE &
UART_DIS_LOOPBACK &
UART_DIS_ABAUD &
UART_NO_PAR_8BIT &

config2 =

UART_1STOPBIT;
UART_INT_TX_BUF_EMPTY &

parmetros
buffer de

//de TX e RX (U1TX e U1RX)


//Desabilita o modo "Wake-up"
//desabilita o modo "loop back"
//Desabilita o modo "autobaud"
//Define a comunicao com 8 bits de dados e
//sem bit de paridade
//Define o Stop Bit=1
//Define a varivel config2 com os seguintes
//Ocorre interrupo de transmisso quando

//transmisso for esvaziado


UART_TX_PIN_NORMAL & //Define o bit TXBreak como normal
UART_TX_ENABLE &
//Habilita a transmisso da UART
UART_INT_RX_BUF_FUL &
//Ativa a interrupo de recepo 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 parmetros de configurao
//definidos pelas variveis Config1, config2 e ubrg

//********************************************************************************************************************************************
//**************************** Rotina de tratamento da Interrupo da transmisso de dados ****************************************
void _ISR _U1TXInterrupt(void){
IFS0bits.U1TXIF=0;
}

//funo da rotina de interrupo de transmisso de dados


//clear no bit de chamada da interrupo de transmisso

//********************************************************************************************************************************************
//********************* Rotina de tratamento da Interrupo da recebimento de dados **********************************************
//********************************************************************************************************************************************
void _ISR _U1RXInterrupt(void){
TMR1=0;
if (a==1){
LATDbits.LATD0 = 0;
a=0;
}
else{
LATDbits.LATD0 = 1;

//funo da rotina de interrupo de recepo de dados


//Zera a contagem do Timer 1
//verifica se a varivel a=1
//Liga o LED de status
//varivel a=0
//fim do if
//se a varivel a diferente de 1 ento executa os seguintes comandos
//Desliga o LED de status

101

a=1;

while(BusyUART1());
Par2=ReadUART1();
Par1=ReadUART1();
Par=Par2<<8;
Par=Par + Par1;
TransPac();

}
IFS0bits.U1RXIF=0;

//varivel a=1
//fim do else
//Protocolo de comunicao = byte1:Par2, byte2:Par1
//retorna o status da transmisso; espera enquanto a UART estiver ocupada
//l o segundo byte do buffer de recepo da UART = Parmetro 2
//l o terceiro byte do buffer de recepo da UART = Parmetro 1
//Byte mais significativo do Parmetro=Parmetro2 recebido via UART
//Byte menos significativo do Parmetro= Parmetro1 recebido via UART
//Parmtro 1 e 2 so unidos em uma s varivel Parmetro
//fim do if
//clear no bit de chamada da interrupo de recepo
//fim da interrupo de recepo da UART

//********************************************************************************************************************************************
//************************************* Rotina para a inicializao do conversor A/D ***************************************************
void inicia_ADC()
{
ADCON1bits.ADON = 0;
ADCON1bits.ADSIDL = 0;
idle(inativa)
ADCON1bits.FORM = 0;
ADCON1bits.SSRC = 7;
ADCON1bits.ASAM = 0;
ADCON2bits.VCFG = 0;
ADCON2bits.CSCNA = 0;
ADCON2bits.SMPI = 0;
ADCON2bits.BUFM = 0;
ADCON2bits.ALTS = 0;
ADCON3bits.ADCS = Tad;
ADCON3bits.SAMC = 1;
ADCON3bits.ADRC = 0;

ADCHS = 0;
ADCSSL = 0x0000;
ADPCFG = 0xFFFE;
IFS0bits.ADIF = 0;
IPC2bits.ADIP = 6;
IEC0bits.ADIE = 1;
ADCON1bits.ADON = 1;

//desabilita o mdulo de converso A/D


//mdulo A/D continua convertendo mesmo com a CPU em modo
//formato da sada da converso sem sinal
//contador interno termina uma amostragem e j comea a prxima
//amostragem individual
//referencia AVDD e AVSS
//utiliza apenas um canal para a converso
//gera uma interrupo a cada converso - buffer(0)
//buffer de 16 bits
//utiliza sempre o MUX A, no alterna entre MUX A e MUX B
// Tad equals Min amount of instr cycles Fastest possible
//seleciona o clock de converso
//define o tempo da auto-amostragem em 1 Tad
// derive Tad from system clock //
//utiliza o mesmo clock do sistema
//configura o conversor AN0 como entrada positiva
//seleciona a entrada AN0 para a converso
//configura apenas o pino AN0 como entrada analgica
//clear no bit de chamada da interrupo da converso A/D
//Define a prioridade da interrupo do mdulo A/D=6
//habilita a interrupo do mdulo A/D
//habilita o mdulo de converso A/D

//********************************************************************************************************************************************
//******************************* Rotina de Tratamento da Interrupo do Conversor A/D *********************************************
void __attribute__((__interrupt__)) _ADCInterrupt(void)
{
int i = 0;
ptr = &ADCBUF0;
while (i < 16)
{

//define a varivel inteira Pos_Atual


//ponteiro ptr recebe o endereo do buffer0
//de converso A/D
//executa a leitura da converso A/D enquanto i<16

102

ADResult[i++] = *ptr++;

}
Val_Ana1=ADResult[0];

//ponteiro ptr incrementado at i=15


//ADResul recebe os valores da converso A/D na posio '0'
//so feitas 16 leituras para garantir que os 16 buffers da
//converso A/D sejam lidos e automaticamente limpos,
//garantindo que o resultado da prxima leitura fique no buffer0
//fim do while
//Posio atual recebe o resultado da converso A/D

TransBuf();

//transmite apos carregar o valor da (Val_Ana1/4)

IFS0bits.ADIF = 0;

//clear no bit de chamada da interrupo da converso A/D

//************************************************************************************************
//****** Rotina de inicializao do timer 2 para converso A/D ***********************************
void inicia_timer2(void)
{
T2CON = 0;
TMR2 = 0;
IFS0bits.T2IF = 0;
PR2 = Freq_T2;
T2CONbits.TCKPS = 1;
IPC1bits.T2IP = 5;
IEC0bits.T2IE = 1;
T2CONbits.TON = 1;
}

//desabilita a contagem do timer2


//zera a contagem de tempo do timer2
//clear no bit de chamada da interrupo do timer2
//Freq_AD determinando a frequncia de converso do A/D
//Ajusta o prescaler para 1:1
//Define a prioridade da interrupo do timer2=5
//habilita a interrupo do timer2
//habilita a contagem do timer2

//*******************************************************************************************************************************************
//********************** Rotina de tratamento da interrupo do Timer 2 para converso A/D **************************************
void _ISR _T2Interrupt(void)
{
IFS0bits.T2IF = 0;
ADCON1bits.SAMP = 1;
}

// clear no bit de interrupo do timer 2


// executa a conversso A/D

//********************************************************************************************************************************************
//************************* Rotina de inicializao do timer 1 para o LED indicador de estado ***************************************
void inicia_timer1(void)
{
T1CON = 0;
TMR1 = 0;
IFS0bits.T1IF = 0;
PR1 = Freq_T1;

T1CONbits.TCKPS = 3;
IPC0bits.T1IP = 7;
IEC0bits.T1IE = 1;
T1CONbits.TON = 1;

//desabilita a contagem do timer1


//zera a contagem de tempo do timer1
//clear no bit de chamada da interrupo do timer1
//ajusta o perodo de tempo do timer1 para o valor da freqncia
//do ciclo de instruo Fcy/1024 = 0.5 segundos
//Ajusta o prescaler para 1:256
//Define a prioridade da interrupo do timer1=7
//habilita a interrupo do timer1
//habilita a contagem do timer1

103

//********************************************************************************************************************************************
//************************* Rotina de tratamento da interrupo do Timer 1 para o LED de estado **********************************
void _ISR _T1Interrupt(void)
{
if (a==1){
LATDbits.LATD0 = 0;
a=0;
}
else{

LATDbits.LATD0 = 1;
a=1;

}
IFS0bits.T1IF = 0;

//verifica se a varivel a=1


//Liga o LED de status
//varivel a=0
//fim do if
//se a varivel a diferente de 1 ento executa os seguintes comandos
//Desliga o LED de status
//varivel a=1
//fim do else
// clear no bit de interrupo do timer 1

//********************************************************************************************************************************************
//************************************ Rotina para enviar o pacote de dados via UART ************************************************
void TransPac (void){
Par1=Par;
Par2=Par>>8;
while(BusyUART1());
putcUART1(Par2);
putcUART1(Par1);
while(BusyUART1());

//Funo que transmite o pacote de dados


//Parmetro 1 de transmisso recebe byte menos significativo do Parmetro
//Parmetro 2 de transmisso recebe byte mais significativo do Parmetro
//retorna o status da transmisso; espera enquanto a UART estiver ocupada
//transmite via UART o Parmetro 2
//transmite via UART o Parmetro 1
//espera a UART desocupar
//1=UART ocupada, 0=UART desocupada

}
//********************************************************************************************************************************************
//********************************************************************************************************************************************
//********************************** Rotina para enviar o Buffer de dados via UART ***************************************************
void TransBuf (void){
int c;

//Funo que transmite o pacote de dados

while(BusyUART1());

//retorna o status da transmisso; espera enquanto a UART estiver ocupada

putcUART1((y[0]/4));
while(BusyUART1());

// transmite serialmente o valor do A/D


//espera a UART desocupar

}
//********************************************************************************************************************************************
//**************************************************** Fim do Programa********************************************************************
//********************************************************************************************************************************************

104

ANEXO H CIRCUITO DO PROTTIPO

105

Circuito eletrnico do prottipo de aquisio de ECG.

106

ANEXO I LAYOUT DA PLACA DO PROTTIPO

107

Mscara de solda.

Lado dos componentes.

108

Mscara de identificao.

Placa mostrada em 3 dimenses.