Monitor de batimentos cardÃacos_parte 1

Propaganda
Um m onitor de batimenttos cardíaacos com o
o Arduino
o Um Monit
M
tor d
de
atim
mento
os
ba
ca
ardía
acos
s
Hardw
ware
Nosso pro
otótipo foi m
montado num
ma
pequena placa
p
perfurrada de 3,5 x 5,5 cm
para ser en
ncaixada soobre o Ardu
uino como
um shield
d. Veja a figuura 1. Os
componen
ntes são inteerligados co
om
pequenos fios no ladoo da solda da
d placa.
co
om o Ard
duin
no
Parrte 1: “Ve
endo” os
s pulsos
João
o Alexand
dre da Silv
veira
A Eletronica nos permite crriar aparelhhos
e
de
d nossos
que ssão de fato extensões
sentiidos, como aqueles
a
quee são capazees de
captaar certos sinnais fisiológ
gicos que
norm
malmente soomos incapaazes de sentíí-los.
Umaa vez captaddos por algu
um tipo de
sensoor esses sinaais podem ser
s amplificcados
e diggitalizados, depois
d
podeem ser alterrados
e até mesmo conntrolados co
om alguma
form
ma de feedbaack. Um dessses sinais
fisiollógicos é o número de batimentos do
nossoo coração. Emoções
E
fo
ortes como rraiva
e exccitação caussam um aum
mento da taxxa de
batim
mentos do coração hum
mano. Outrass
emoçções como tristeza
t
e peesar fazem eessa
taxa diminuir. Meditação,
M
contemplaçã
c
ão e
outroos estados mentais
m
tamb
bem mexem
m
com essa taxa. Com
C
a ajudaa do Arduinno e
um aamplificadorr de alto gan
nho com seensor
óticoo podemos monitorar
m
nossa taxa dee
batim
mentos carddíacos na tela do nosso PC.
Fica fácil assim montar um
m instrumentto
que ppode ser usaado para exp
periências ccom
contrrole de stresss, respiraçãão, relaxam
mento
e biof
ofeedback.
Figura 1: monitor de batime
entos
Nesse pro
ojeto utilizam
mos o par de
d
amplificad
dores operaacionais den
ntro do LM-358N. O circuito com
mpleto está na figura
3, e é um projeto por nós adaptado para o
Arduino a partir de um circuito
originalmente publicaado pela rev
vista
t
inglesa Ellektor em 20008, sob o título
“Stress-O-Meter”. Essse tipo de monitor
m
de
batimento
os cardíacoss é uma variiante de um
aparelho médico-hosp
m
pitalar cham
mado
pletismóg
grafo, que sserve para medir
m
(e
registrar) variações nno volume de
d um
orgão com
mo resultadoo de flutuaçções
rítmicas da
d circulaçãoo do sanguee pelo
corpo hum
mano. Norm
malmente neesse tipo de
aparelho essas
e
flutuaçções são captadas por
um sensorr ótico posiccionado em
m um lado
do lóbulo de uma oreelha, ou um lado da
ponta de um
u dos dedoos, e com a fonte de
1
1 Um m onitor de batimenttos cardíaacos com o
o Arduino
o luz aalinhada no lado oposto
o.
Diferrentemente,, nosso aparrelho mede as
pulsaações no fluuxo de sangu
ue na pontaa do
dedoo de uma das mãos do experimenta
e
ador
com o sensor e a fonte de lu
uz colocadoos
num mesmo plaano e montados numa ccaixa
V a figurra 2
separrada do ampplificador. Veja
abaixxo. Em nossso protótipo
o usamos coomo
sensoor de pulsaçções um LD
DR comum ccom
uma resistencia de 1 Mohm
m sem nenhuuma
luz inncidente, e 400 ohms com
c
incidenncia
de luuz natural diireta.
contrações do múscuulo cardíaco. Essa
informaçãão vai moduular a resistêência do
LDR.
Figura 3:
3 montado
o no Arduino
Figu
ura 2: sens
sor na caiixa
tor o resistorr R1 limita
No circuitto do monito
a correntee direta atravves de LED
D1 em cerca
de 20 mA
A. O LDR e o resistor R2
R formam
um circuitto divisor de tensão cujja saída
pulsante será
s função da resistênccia do LDR
R
que é funçção da luz re
refletida pelo dedo do
experimen
ntador.
Com
mo fonte de luz
l para o seensor usam
mos
um L
LED vermellho comum de 3 mm. O
experimentador deve posiciionar o ladoo
oposto à unha dee seu dedo indicador
i
soobre
o LD
DR, e a dobrra entre a po
onta e o meiio do
dedoo sobre o LE
ED. A luz qu
ue é emitidaa
pelo LED atraveessa a pele da
d dobra e é
reflettida pelo ossso sobre um
ma pequenaa
concentração dee artérias bem em cima do
LDR
R. O volumee de sangue nesse grupoo de
artériias pulsa em
m sintonia com
c
as
Figura 4
2
2 Um m onitor de batimenttos cardíaacos com o
o Arduino
o Esses pulsos de muito baixaa frequenciaa,
entree 1 e 2 hertzz, seguem paara um filtroo
passaa-altas form
mado por C1
1 e R3 e é
ampllificado peloo primeiro opAmp
o
do L
LM358N
N na configuuração não--inversor coom
ganhho de 120. C2
C e R5 form
mam um filttro
passaa-baixas cenntrado em 1,5 Hz. Essaa
frequuencia correesponde a 90 pulsos poor
minuuto, que é a metade da frequencia
f
maxiima do coraação humano. O
potennciometro P1,
P que é a resistencia
r
dde
cargaa do primeirro amplificaador, controola a
entraada do segunndo opAmp
p tambem nãão-
inversor com
c ganho dde 560. Aqu
ui o sinal
modulado
o com os battimentos do
o coração
do experim
mentador poode ser entrregue para
tratamento
o ao Arduinno no pino digital
d
2. O
LED2 será programaado para pisccar com os
batimento
os cardíacoss.
Sugerimos ao leitor pprimeiro mo
ontar o
conjunto fonte
f
de luzz/sensor. Parra o nosso
protótipo montamos eesse conjun
nto em uma
c
plásticca de 3x4x1 cm, como
pequena caixa
na figura 2.
2 Nessa cai
aixa foi mon
ntada a
pequena placa
p
perfurrada com o LED
L
ura 3: circ
cuito do monitor de batimenttos cardíacos
Figu
Lista
a de compon
nentes – mo
onitor de
batim
mentos card
diacos com o Arduino
R1 e R10
Re
esistor 270 ohms
o
x 1/8W
W
R2
Re
esistor 39K ohms
o
x 1/8W
W
R3 e R6
Re
esistor 68K ohms
o
x 1/8W
W
R4
Re
esistor 8K2 ohms
o
x 1/8W
W
R5
Re
esistor 1M ohms x 1/8W
W
Re
esistor 560K
K ohms x 1/8
8W
R7
R8
Re
esistor 1K ohms x 1/8W
W
Re
esistor 1K8 ohms
o
x 1/8W
W
R9
P1
Po
otenciometro 10K linea r
Led vermelho 3 mm
LED1
1e
LED2
2
LDR
LD
DR
S1
Ch
have miniatu
ura 1/0
C1 e C3
Ca
apacitor 1uF
F x 25V
C2 e C4
Ca
apacitor 100
0nF
CI1
LM
M-358N dual opamp
os
Pla
aca CI perfu
uração padrrão
Outro
Bo
orne 3 pinos
s parafuso
vermelho de 3 mm e seu resistorr de 270
ohms e o LDR
L
e seu rresistor de 39
3 Kohms.
A distanciia entre os ccentros do LED
L
e do
LDR é cerrca de 1,0 ccm. Da caixa saem tres
fios: o de +5 volts, o de saída do
o divisor de
tensão e o comum a eesses dois, o terra. O
fio de saíd
da do divisoor de tensão
o vai para o
capacitor C1 na entraada do prim
meiro
amplificad
dor pelo borrne B1.
3
3 Um monitor de batimentos cardíacos com o Arduino Software
Depois de conferir mais de uma vez toda a
fiação, encaixe o shield no seu Arduino,
conecte o sensor e depois o cabo USB no
seu PC. Para ver os batimentos cardíacos
de uma pessoa carregue no seu Arduino o
sketch da listagem 1.
Listagem 1 / monitor batimentos cardíacos
int pinLed = 3;
volatile int state = 0;
void setup(){
pinMode(pinLed, OUTPUT);
attachInterrupt(0, pulse, CHANGE);
}
void loop(){
digitalWrite(pinLed, state);
}
void pulse(){
state = !state;
}
Esse sketch configura o pino digital 3
como saída para LED2 no circuito, e o
pino digital 2 como entrada de interrupção
para a função attachInterrupt( ) que chama
a função pulse( ) toda vez que uma
interrupção externa ocorrer nesse pino. A
função attachInterrupt( ) requer tres
parâmetros e sua sintaxe é a seguinte:
attachInterrupt(pino, função, modo);
O primeiro parametro é pino e deverá ser 0
para o pino digital 2, ou 1 para o pino
digital 3 do Arduino; o segundo é função e
se refere à função que será chamada
quando a interrupção ocorrer; o último
parâmetro modo define o momento em
relação ao sinal no pino digital
especificado em que a interrupção
ocorrerá, que poderá ser de quatro modos:
CHANGE, na mudança do nível no pino;
LOW, quando o pino for baixo; RISING,
quando o pino mudar de baixo para alto;
ou FALLING, quando o pino mudar de alto
para baixo.
Nesse sketch toda vez que o nível lógico
no pino digital 2 mudar, a função pulse( )
será chamada, e esta vai somente
complementar (mudar o estado da) a
variável state. A variável state vai mudar
de acordo com os batimentos do coração
do experimentador e fazer o LED2 acender
ou apagar conforme seu estado na função
digitalWrite( )
Para testar o circuito basta você repousar a
ponta de seu dedo indicador sobre o sensor
e girar o cursor do potenciometro P1 para o
mínimo ganho até o LED no pino 3 apagar.
Depois vá aumentando o ganho até que o
LED comece a piscar com os batimentos
do seu coração. Depois de algum treino
pressionando mais ou menos o dedo sobre
o sensor é possível achar o ponto ótimo
para ver o LED piscar regularmente. O
ajuste fino é feito com o potenciometro.
Podemos enviar nossos batimentos
cardíacos pela porta serial para o PC e ver
no terminal do Windows ou do Arduino sua
forma digital como uma combinação de
traços horizontais com caracteres ASCII 95
e 45. Para isso acrescente ao sketch acima
uma linha para iniciar a porta serial em
9600 bps e os comandos if que testam a
variável state; se esta for falsa o caracter
45 será enviado para o terminal serial com
a função Serial.write( ); se state for
verdadeira o caracter 95 será enviado. Veja
a listagem 2 e a forma dos pulsos na figura
5 abaixo. As pausas de 10 ms entre as
4 Um m onitor de batimenttos cardíaacos com o
o Arduino
o transsmissões eviitam a sobreecarga do bbuffer
da poorta serial.
e muito paarecida com
m a do Ardu
uino, a
linguagem
m Processing
ng.
Listag
gem 2 / monitor batimenttos cardíacoss
int pinLed = 3;
volatile int state = 0;
void setup(){
pin
nMode(pinLed
d, OUTPUT);
atttachInterrupt(0
0, pulse, CHAN
NGE);
erial.begin(960
00);
Se
}
d loop(){
void
digitalWrite(pinLe
ed, state);
write(45);
if(!sstate) Serial.w
dela
ay(10);
if(sttate)Serial.wriite(95);
dela
ay(10);
}
void
d pulse(){
statte = !state;
}
Figu
ura 5: os pulsos
p
do batimento
o
card
díaco
Na seegunda partte desse artiigo vamos
visuaalizar melhoor esses pulsos cardíacoos
agoraa digitalizaddos numa in
nterface grááfica
na teela do seu PC
C usando allguns poucoos
comaandos de um
ma linguageem open souurce
5
5 
Download