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.
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
Especificações:
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.
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.
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.
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.
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 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. Créditos: uttereducation.com
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:
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):
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!
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.