Medidor de frequência cardíaca KY039 com datalogger

Sensor de batimentos cardiacos

Sensor de batimentos cardiacos

Neste artigo vamos aprender a usar o sensor de batimentos cardíacos e montar um circuito com datalogger para armazenar séries históricas de frequência cardíaca. O datalogger foi assunto deste post, e no texto a seguir vamos focar no sensor e na medição da frequência cardíaca.

O sensor KY-039 não é o mais preciso e estável do mercado. Pode ser desafiador montar um medidor com ele que seja fiável. Neste artigo mostramos como ele funciona e um exemplo de como interfaceá-lo com Arduino e um datalogger. Outros sensores podem ser usados no lugar do KY-039 para salvar os dados no datalogger com pequenas alterações no código.

Atenção: Este artigo é para fins didáticos apenas. Para aplicações reais, deve ser utilizar um medidor homologado e certificado. O presente post tem por objetivo explicar o funcionamento e mostrar um exemplo de como esse tipo de sensor pode ser interfaceado com o Arduino, mas não se trata de um projeto para aplicações reais.

 

Introdução

 

O sensor de frequência cardíaca é baseado em um emissor e um receptor de infravermelho. O princípio de funcionamento é o seguinte: Quando o coração bate, a pressão sanguínea e, consequentemente o volume de sangue nas veias, aumenta momentaneamente. A cada batida, é como se uma pequena variação de volume e pressão acontecesse. O sensor funciona emitindo um feixe infravermelho que atravessa o dedo do usuário. Quando a pressão do sangue aumenta, a quantidade de luz infravermelha que chega ao receptor(fototransistor) atravessando o dedo é diferente de quando a pressão/volume do sangue está mais baixa. Essa diferença é traduzida em variações no sinal de saída do fototransistor.

O sensor é mostrado na figura abaixo:

Medidor de batimentos cardíacos com arduino

Medidor de batimentos cardíacos com arduino

Especificações:

  • Tensão de trabalho: 5V;
  • Dimensões: 25mm x 22mm x 17mm;
  • Tipo de sensor: Reflexivo infravermelho (IR)

Uma observação importante é não deixar luz artificial (de lâmpadas incandescentes ou fluorescentes) incidir diretamente sobre o sensor, pois a oscilação (No Brasil 60Hz) pode interferir no valor lido pelo receptor infravermelho.

Nos projetos disponíveis na internet, em geral os desenvolvedores tiveram dificuldades para trabalhar com esse sensor, devido à variação de saída ser muito pequena e instável(sujeita a variações nas condições ambientes, no posicionamento do sensor/receptor e na forma com que o dedo segura o sensor).

Como firmware e montagem base em questão, é possível medir as variações na saída do sensor, mas ter uma medição precisa pode ser desafiador. Ao final do artigo, damos algumas dicas para que você incremente e possa melhorar o projeto. Damos também indicações de outros sensores que podem ser avaliados para se obter maior precisão.

Datalogger para armazenar os dados

 

Vamos usar um cartão microSD para armazenar os dados de frequência cardíaca durante o tempo em que o sistema estiver ligado. Assim, mesmo após desligarmos, teremos uma base dados que pode ser usada para plotar gráficos e fazer análises. O datalogger já foi tema aqui do blog, caso você tenha perdido, acesse aqui o artigo original e aprende a como gravar e ler dados de um cartão microSD com arduino.

Recapitulando bem resumidamente, vamos utilizar um módulo microSD que possui uma entrada para cartões Micro SD e 6 pinos de interface disponibilizados para comunicação com Arduino. A inteface utilizada pelo módulo é o protocolo SPI(protocolo de comunicação usado para ler e escrever dados na memória Flash do cartão). Assim, podemos ligar o Arduino e enviar informações para serem armazenadas e também é possível fazer procedimentos de leitura para apresentar os dados gravados em mostradores como displays ou na interface serial.

 

Aplicações

 

Basicamente, o medidor de frequência é usada para construir pequenos dispositivos para medir a frequência cardíaca. Dependendo de como você implementar, pode ser um equipamento para usar durante caminhadas/corridas, por exemplo, ou qualquer outro tipo de variação.

 

Descrição do projeto

 

Nesse projeto, vamos perseguir o seguinte objetivo:

Desenvolver e montar um medidor de frequência cardíaca que salva o histórico de frequência cardíaca em um log no cartão SD.

 

Aspectos de Hardware

 

Como dito no início, nosso circuito consiste em duas partes: O circuito para o datalogger e o circuito para o sensor de frequência cardíaca em si. O circuito do datalogger está bem apresentado e estudado neste artigo. No diagrama abaixo, mostramos o datalogger integrado com o sensor de frequência cardíaca:

Medidor de frequencia cardiaca com KY039

Medidor de frequência cardiaca com KY039

Chamamos a atenção para os três divisores de tensão que são necessários para conectar  os pinos do cartão SD com o Arduino(um conversor de nível lógico também pode ser usado).

As ligações do sensor Ky039 são bem simples. Os pinos de alimentação podem ser ligados no 5V e GND do Arduino. O pino S, deve ser ligado no A0, que será usado em nosso programa para fazer as leituras.

A lista de materiais é a seguinte:

Uma dica importante. Para funcionamento efetivo, é preciso que o raio infravermelho esteja bem alinhado com o receptor, como mostrado na figura abaixo:

Posicionamento do KY039

Posicionamento do KY039. Créditos: uttereducation.com

Aspectos de Software

 

O nosso software será o seguinte:

 

#include <SPI.h>
#include <SD.h>
#include <stdlib.h>

//Variaveis para cartao SD
const int CS = 4;
char dataString[7];
int sensorPin = 0;
int period = 200;

int HearHate_porSegundo=0;
int HearHate_porMin = 0;
int count = 0;
int countBeat=0;
const int Calibration_Value = 10;

float oldValue = 0;
float rawValue = 0;

File meuArquivo;

void setup()
{
 
  pinMode(CS, OUTPUT);
  Serial.begin(9600);
  delay(100);
  
  Serial.print("Inicializando cartao SD...");
  if (!SD.begin(CS)) 
  {
    Serial.println("Falha na Inicializacao!");
    return;
  }
  Serial.println("Inicializacao terminada");
  delay(100);
  
}


void loop()
{
   rawValue = analogRead (sensorPin);

   if( abs(rawValue - oldValue) >= Calibration_Value)
   {
      countBeat++;
   }
   count++;

   //cada 1 segundo faz essa conta
   if(count == 10)
   {
      HearHate_porSegundo = countBeat;
      HearHate_porMin =60*countBeat;
      Serial.print("HearHate_porSegundo");
      Serial.println(HearHate_porSegundo);
      Serial.print("HearHate_porMin");
      Serial.println(HearHate_porMin);
      count=0;
      countBeat=0;
      salvaDadosLogger(HearHate_porMin);
   }
   
  oldValue = rawValue;
  delay(period);
}

bool salvaDadosLogger(int HearHate_porMin)
{
  dtostrf(HearHate_porMin,5,2,dataString);
  
  if (meuArquivo = SD.open("log.txt",FILE_WRITE)) 
  {
    
    //Escreve no cartao SD por meio do objeto meuArquivo 
    meuArquivo.println(dataString);
    meuArquivo.close();
  } 
  else 
  {
    // se o arquivo nao abrir, mostra msg de erro
    Serial.println("Erro ao abrir log.txt");
  }
}

Na função void Setup() nós inicializamos o cartão SD e a porta serial. O código consiste nas funções void loop(), em que constantemente lemos o valor de saída do sensor e tentamos identificar variações. Experimentalmente observamos que cada batimento cardíaco provoca uma variação em torno de 10 no valor lido na porta analógica. Esse foi o valor considerado como limiar para identificar que houve um batimento ou não.

A cada segundo, chamamos a função salvaDadosLogger(HearHate_porMin), passando como parâmetro o valor calculado de frequência por minuto. Essa função salvo a informação no cartão SD e o software volta ao void Loop para continuar a identificar variações na frequência de batimentos.

Essa simples montagem e firmware identifica as variações do sensor e salva os dados no SD, mas para conseguir medições estáveis e mais precisa, melhorias são necessárias. Em geral, outros projetos na internet também apresentam medições com muitas variações. Caso você realmente decida por usar esse sensor, algumas possibilidades são:

  • Usar um amplificador para aumentar o sinal de saída do sensor;
  • Implementar uma função de calibração automática para atualizar o limiar de medição(no nosso caso, usamos o valor 10 observado experimentalmente por simplicidade);
  • Trocar o fototransistor ou LED infravermelho por outros componentes de maior sensibilidade. A maior parte da luz emitida pelo led infravermelho é absorvida pelo dedo. Assim, um receptor mais sensível ou um transmissor com maior potência podem ajudar a deixar as medições melhores;

Alguns outros projetos interessantes são(o segundo link é ótimo para observar como variações nas condições de iluminação ambiente alteram o comportamento do sensor):

 

Considerações finais

 

Esperamos que o artigo tenha ajudado a ensinar novos conteúdos. Embora o KY-039 não seja muito preciso e não haja exemplos de projetos realmente funcionais com ele, trata-se de um sensor bem didático em relação ao seu funcionamento e também bem simples em relação ao seu circuito.

Recomendamos a leitura das demais referências e projetos que indicamos para saber as dificuldades e soluções que outros desenvolvedores encontraram. Se tiver alguma dica ou exemplo adicional, compartilhe conosco!

Referências:

Faça sua avaliação.
Por favor, aguarde...
Vitor Vidal
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.