ECG simples feito em casa


introdução

Que tal fazermos um projeto um pouco diferente e montarmos um dispositivo que talvez você já tenha usado ou visto em algum hospital? Estou falando do eletrocardiograma (ECG), um aparelho essencial para a medicina moderna. Hoje, vamos conhecer ele melhor.

Para que serve o ECG?

O ECG é um exame não invasivo e indolor e tem a finalidade de monitoração cardíaca para detecção de eventuais doenças cardíacas como arritmias. O exame é super simples e rápido, com o paciente geralmente deitado na maca, sendo posicionado alguns eletrodos no peito e feita a leitura, não demorando mais de 10 minutos.

Exame de ECG sendo feito. Fonte: medipics1066 / CC BY 2.0.
como funciona o ecg?

O Eletrocardiograma, como o próprio nome diz, é um exame que utiliza sinais elétricos. Por meio de eletrodos colados no paciente são captados os pequenos sinais (campos elétricos) que o coração emite ao se contrair. Essas ondas são amplificadas pelo equipamento, quer dizer, são aumentadas e filtradas, para que sejam retiradas qualquer tipo de interferência externa, e depois disso um microcontrolador processa a onda e esta é exibida em um monitor.

Exame de ECG. Fonte:  Popfossa / CC BY-NC 2.0.

O exame nos retorna uma ou várias ondas que representam os campos elétricos emitidos pelo coração durante o ciclo cardíaco. Essas ondas podem ser interpretadas por um profissional treinado e podem ser identificados vários tipos de doenças cardíacas a depender do formato e distancia entre as ondas.

O vídeo a seguir explica cada movimentação do coração e o que cada uma representa na onda final.

como fazer um ecg em casa?

O funcionamento de um ECG é relativamente simples, e podemos montar um com componentes baratos que podem ser comprados facilmente. Então vamos à receita…

Materiais

Capacitores e Amplificadores

  • 1 amplificador LM741
  • 1 amplificador de instrumentação INA128
  • 1 capacitor de 10µF

Resistores

  • 2 resistores de 3, 3kΩ ou 4, 7kΩ
  • 1 resistor de 220Ω
  • 2 resistores de 100kΩ

Diversos:

  • 2 baterias 9V com conectores
  • protoboard(s) com jumpers
  • 3 eletrodos descartáveis
  • 3 cabos jacaré
  • 1 arduino Uno R3

PROTOBOARD

Como todo projeto de testes em eletrônica, vamos montá-lo sobre uma protoboard, que é nada mais, nada menos que uma placa para protótipos e testes com componentes eletrônicos.

Protoboard.

Uma protoboard é uma placa com vários furinhos para colocar componentes, e a sacada que nos ajuda na hora de montar os circuito está ai, as linhas centrais são interligadas verticalmente enquanto as linhas das bordas são ligadas horizontalmente, então quando queremos conectar um componente no outro, podemos ligar os dois em uma linha interligada.

Esquema de ligação interno de uma protoboard completa.

Para montar, vamos dividir o ECG em partes. Antes de conectar os componentes na protoboard, podemos preparar os eletrodos. Primeiro, se seus conectores jacaré estão soltos, pegue dois fios e solde os conectores jacaré com solda nas duas pontas. Para utilizar os eletrodos, conecte os conectores jacaré a eles. Caso não seja possível utilizar eletrodos, uma solução é usar diretamente um fio elétrico. O sinal não vai ser tão bom quanto o obtido usando eletrodos, mas provavelmente você conseguirá ver alguma coisa. Para isso, decape aproximadamente 10cm de fio e prenda com fita junto ao seu corpo. Neste teste, vamos usar um eletrodo no braço direto, um no braço esquerdo, e um na perda direita.

Amplificadores

No circuito do ECG vamos usar dois tipos de amplificadores, um amplificador de instrumentação (INA128) e um amplificador operacional comum (LM741). Um amplificador operacional é um componente muito utilizado em circuitos, e que tem diversos usos, como somar tensões, inverter sinais, filtrar ondas e amplificar sinais. Já um amplificador de instrumentação (INA128) é usado geralmente para amplificar (aumentar) um sinal com um ganho conhecido e é, na verdade, formado internamente por 3 amplificadores operacionais, de modo que conseguimos controlar facilmente o ganho na saída, que pode ser de 1 (sai um sinal com o mesmo valor que entra) até de dezenas de milhares de vezes, e assim podemos enxergar sinais muito pequenos, como o do ECG.

Para alimentar esses componentes, vamos precisar neste circuito de uma fonte simétrica, ou seja, uma fonte não apenas com dois terminais (um positivo e um negativo, como uma pilha ou uma bateria), mas uma fonte com três terminais (um positivo, um negativo e um terra).

Fonte Simétrica

A fonte simétrica é a primeira parte a ser montada, já que sem energia o circuito não funciona. Nela, usaremos uma bateria 9V, dois resistores de 4.7KΩ, um amplificador operacional LM741 e jumpers.

A fonte simétrica tem algo de especial: nela, a partir de uma tensão de 9V, são formadas as tensões de +4,5V, -4,5V e 0V (terra).

Um diagrama elétrico simplificado dessa fonte pode ser visto a seguir:

Aqui, vamos usar o amplificador operacional LM741 como um seguidor de tensão, ou seja, o sinal na saída é o mesmo do sinal na sua entrada positiva. Assim, criamos uma tensão que fica na metade da tensão de entrada (com os dois resistores, formando um divisor de tensão), e usamos o amplificador operacional para copiar essa tensão para o resto do circuito. Mas por que fazer isso? Porque, em um terra usado em alimentação, temos corrente elétrica passando, e ao passar essa corrente elétrica em um resistor, a tensão que cai nele se altera. Assim, ao alimentar um circuito, a tensão entre os resistores não ficaria mais na metade da tensão da entrada. Ao usar o amplificador operacional, garantimos que a corrente que entra no amplificador pela entrada IN+ é desprezível, não alterando a tensão nos resistores, e a corrente que passa pelo terra (0V) vem dos pinos de alimentação do amplificador (V+ e V-).

Para montar essa fonte em uma protoboard, temos que fazer as seguintes ligações:

Circuito principal

Agora temos a parte central do nosso ECG, ela é quem vai captar os sinais vindos do coração e amplificá-los de forma que possam ser lidos por um dispositivo que transforme esta onda em um gráfico para análises futuras de um especialista.

Nela, vamos usar o amplificador de instrumentação INA 128P, 1 resistor de 220Ω, eletrodos, fios e jumpers, como mostra o diagrama a seguir:

Em um amplificador de instrumentação INA128, o ganho é controlado pelo resistor ligado aos pinos RG, e é dado pela fórmula G = 1 + 50k/RG. Assim, com um resistor de 220Ω, temos um ganho de G = 1 + 50000/220 = 228 ! Isso quer dizer que, se colocarmos uma diferença de tensão de apenas 1mV entre os pinos IN- e IN+ desse amplificador, teremos na saída OUT uma tensão de 228mV, e assim, conseguimos ler esse sinal com um Arduino. Caso você queria alterar o ganho do circuito, para menos ou para mais, basta alterar o valor desse resistor! Esse circuito é bastante versátil, e, alterando o ganho, podemos usar o mesmo circuito para ver também sinais musculares (como em um EMG) ou até sinais cerebrais (como em um EEG)!

Montar esse circuito do INA128 em uma protoboard é bem simples, e pode ser visto (sem o filtro) a seguir:

Filtro passa alta E ARDUINO

Agora para ver os sinais ECG vamos utilizar um Arduino UNO, dois resistores de 100k e um capacitor de 10µF. Por que isso? Não poderíamos ligar direto no Arduino e ver as informações?

O Arduino, por mais que seja um dispositivo super versátil, não suporta a leitura de tensões negativas, sendo necessário o uso de um filtro passa alta para “centralizar” a tensão que vai ser medida em um determinado valor de forma que não fique negativa. Vamos centralizá-la em 2,5V, para que um sinal que varie de -2,5V a +2,5V passe a variar de 0V a 5V, não tendo assim tensões negativas.

Visualização da curva com um display OLED

Para visualizar as curvas, poderíamos enviar a saída do Arduino para o computador. O problema dessa abordagem é que, ao ligar nosso ECG em qualquer coisa que está ligada a uma tomada, podem aparecer no sinal interferências da rede de alimentação da sua casa (que funciona em 60Hz). Apesar dessa interferência ser bem pequena, como estamos tentando visualizar um sinal muito pequeno também (o sinal elétrico do coração), essa interferência pode ser o suficiente para estragar nosso sinal. Assim, o ideal é não ligar o Arduino no computador, e alimentá-lo com outra bateria 9V. Mas, então, como veremos as curvas?

Uma solução é usar um display OLED (veja aqui o post sobre displays). Assim, o circuito completo montado com o display é visto na figura a seguir.

O Arduino precisa de uma programação para operar da forma que queremos. Assim, faça o upload do programa a seguir (você pode ver o código aqui e baixar o código usando este link):

// Exemplo de coleta de dados de ECG usando a função AnalogRead(),
// e mostrando o sinal medido em um display OLED de 128x64 pixels.
//
// Criado por: Erick Dario León Bueno de Camargo, 2023

#include <Wire.h>                  // Biblioteca para uso da comuicação I2C
#include <Adafruit_GFX.h>          // Biblioteca para construção de gráficos
#include <Adafruit_SSD1306.h>      // Biblioteca para comunicação com o display OLED

// Configuração do display OLED. Parâmetros:
//    - largura_do_display: 128 pixels
//    - altura_do_display: 64 pixels
//    - biblioteca de comunicação I2C utilizada
//    - pino de Reset do display (-1 em caso de não ter)
Adafruit_SSD1306 display(128, 64, &Wire, -1);

#define NRO_MEDIDAS 128

int vetor_medidas[NRO_MEDIDAS];

////////////////////////////////////////////////////////////////////////////////
// Realiza as medidas do ADC, guardando os valores medidos em vetor_medidas[].
void mede_adc(long frequencia){
  long atraso_us = (1000000.0/frequencia)-104.0; // A função analogRead() leva aprox. 104us para rodar
  if (atraso_us<0) atraso_us=0;
  for (int idx = 0; idx < NRO_MEDIDAS; idx++){
    vetor_medidas[idx] = analogRead(A0);
    if (atraso_us < 16000){
      delayMicroseconds(atraso_us);
    }
    else{
      delay(atraso_us/1000);
    }
  }
}

////////////////////////////////////////////////////////////////////////////////
// Esta função só roda uma vez, no início
void setup() {
  Wire.begin();                  // inicia a comunicação I2C
  delay(500);                    // aguarda 500ms
  
  // inicializa a comunicação com o display, no endereço I2C 0x3C
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for(;;);   // Se não conseguiu inicializar o display, fica aqui e não continua o programa
  }
  
  display.setTextSize(1);        // escolhe o tamanho da letra
  display.setTextColor(WHITE);   // escolhe a cor da letra
}

////////////////////////////////////////////////////////////////////////////////
// Esta função se repete indefinidamente
void loop() {
  int maximo=0;
  int minimo=1023;
  // realiza as medidas
  mede_adc(64); // realiza as medidas a 64Hz

  // verifica máximo e mínimo da medida
  for (int idx = 0; idx < NRO_MEDIDAS; idx++){
    if (vetor_medidas[idx]>maximo) maximo = vetor_medidas[idx];
    if (vetor_medidas[idx]<minimo) minimo = vetor_medidas[idx];
  }

  display.clearDisplay();        // limpa o buffer da tela
  display.setCursor(0,0);        // coloca o cursor de texto no canto superior esquerdo do buffer da tela
  display.print((maximo-minimo)*5000.0/1023.0);  // mostra no buffer da tela a amplitude do sinal medido
  display.print("mV");
  display.print("; ");
  display.print(maximo);         // mostra no buffer da tela o valor máximo do sinal medido
  display.print(" a ");
  display.print(minimo);         // mostra no buffer da tela o valor mínimo do sinal medido

  // desenha a curva medida no buffer da tela
  for (int idx=0; idx<127;idx++){
    int y1 = (vetor_medidas[idx]-minimo)*53/(maximo-minimo+1)+10;
    int y2 = (vetor_medidas[idx+1]-minimo)*53/(maximo-minimo+1)+10;
    display.drawLine(idx, y1, idx+1, y2, WHITE);
  }

  display.display();             // atualiza a tela com as informações do buffer
}
Você pode encontrar este e outros códigos do blog no link:
https://github.com/edlbcamargo/embarcasaude

Neste exemplo estamos coletando 128 pontos a 64Hz, ou seja, em 128 pontos temos 2 segundos de medidas. O uso do display OLED é o mesmo apresentado no post sobre displays (mais informações aqui) e a coleta de dados é feita como apresentado no post sobre uso do ADC (mais informações aqui). Também apresentamos, além da curva de 2 segundos de medição, os valores máximo e mínimo lidos a cada 2 segundos, e a amplitude do sinal (sem considerar o ganho do amplificador de instrumentação) em mV. Para saber a amplitude do sinal diretamente nos eletrodos, basta dividir esse valor pelo ganho do seu INA128, que depende do valor do resistor RG que você está usando, como visto anteriormente.

Dois exemplos da saída da curva de ECG no display são vistos a seguir:

Cuidado

Este circuito é apenas para fins didáticos e não deve ser utilizado para diagnósticos médicos.

Problemas cardíacos são sérios, caso tenha suspeitas, procure um médico.


Texto por: Lucas Jácome Cabral e Erick León

Revisão: Erick León


, , , ,

Uma resposta para “ECG simples feito em casa”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *