Monitor de batimentos cardíacos baseado em Arduino com exibição gráfica de batimentos cardíacos

Monitor de batimentos cardíacos baseado em Arduino com exibição gráfica de batimentos cardíacos

A medição da pulsação ou batimento cardíaco é um procedimento médico muito comum. Muitas vezes, o paciente mantido sob observação é essencialmente monitorado através de sua pulsação/batimento cardíaco.

A taxa de pulso varia de pessoa para pessoa. O pulso é mais baixo quando estamos descansando porque, nesse momento, o corpo não precisa de muito oxigênio e o coração pode bombear o sangue em uma taxa mais baixa para suprir o oxigênio exigido pelo corpo. O pulso aumenta quando fazemos exercícios ou estamos sob estresse. Isso ocorre porque o corpo necessita de mais oxigênio durante esses períodos e, portanto, requer mais sangue para bombear através dele para atender às necessidades de oxigênio. A pulsação normal para crianças varia de 70 a ~100 batimentos por minuto. A pulsação normal para adultos é de 60 a ~100 batimentos por minuto. Para estimar sua frequência cardíaca máxima relacionada à idade, subtraia sua idade de 220.

Pacientes gravemente enfermos são monitorados continuamente quanto à frequência cardíaca, pressão arterial, etc. É comum monitorar a frequência cardíaca graficamente em Unidades de Terapia Intensiva (UTI) e Unidades de Alta Dependência (UDH) em hospitais.

Neste projeto, projetamos dois modelos de monitor de frequência de pulso. Um modelo exibe apenas os batimentos cardíacos por minuto. O segundo modelo também exibe graficamente os batimentos cardíacos.

Ambos os modelos são projetados no Arduino UNO. A unidade de exibição é uma tela OLED SSD1306. O sensor de pulso utilizado para concepção do projeto é o sensor XD-58C.

O XD-58C é um sensor de batimento cardíaco analógico plug-and-play de baixo consumo de energia, facilmente conectado a qualquer microcontrolador ou computador de placa única que permita entrada analógica. Este sensor é muito compacto – do tamanho de um botão e extremamente prático.

Sensor de pulso XD58C
O XD58C é um sensor óptico de frequência cardíaca de baixo custo projetado e fabricado pela World Famous Electronics. Este é um projeto de hardware de código aberto de Joel Murphy e Yury Gitman. Você pode aprender mais sobre este projeto de hardware de código aberto em pulsesensor.com.

O sensor é feito de um sensor de luz ambiente APDS-9008 da Avago e um LED verde AM2520ZGC09 de montagem reversa da Kingbright. A frente do sensor é indicada por uma figura em forma de coração, onde você pode colocar o dedo no LED verde montado reversamente da Kingbright. No verso do sensor está o amplificador operacional MCP6001 da Microchip com o resto do circuito que forma uma rede de filtros RC. A nova versão do sensor de pulso possui proteção de diodo na linha de alimentação, portanto, se os cabos de alimentação forem invertidos por engano, o sensor não será danificado.

A tensão operacional do sensor de pulso XD85C é de 3V a 5,5V DC e a corrente necessária é de 3~4 mA. A faixa de temperatura operacional do sensor é de -40˚C a 85˚C. O sensor possui três terminais – GND, VCC e Sinal.

Como funcionam os sensores ópticos de frequência cardíaca
Um sensor de pulso óptico ilumina uma luz verde (~550 nm) e mede a quantidade de luz refletida de volta usando um fotossensor. O XD85C possui saída de LED de 565 nm e seu fotosensor possui entrada de 525 nm. A hemoglobina oxigenada no sangue arterial tende a absorver a luz verde. Maior é a hemoglobina no sangue; mais luz verde é absorvida. Durante cada batimento cardíaco, o sangue é bombeado através do dedo/lóbulo da orelha. Como resultado, a quantidade de luz refletida muda com o fluxo do sangue. Isso produz uma forma de onda variável no fotossensor. À medida que são feitas várias leituras do fotossensor, é obtida uma frequência de batimentos cardíacos. Este método de detecção da frequência cardíaca usando luz verde é denominado fotopletismograma.

A saída do fotossensor é filtrada através de uma rede RC e amplificada a um nível suficiente para remover o ruído e obter um sinal mais claro. A exibição gráfica do batimento cardíaco é apenas a representação gráfica da variação do fluxo sanguíneo através do dedo ou do lóbulo da orelha.

Interface do sensor de pulso XD85C com Arduino

O XD85C pode ser conectado diretamente ao Arduino e outros microcontroladores. O sensor de pulso possui três terminais – VCC, GND e Sinal. Conecte os pinos VCC e GND à saída de 5 V e ao aterramento do Arduino, respectivamente. Conecte o cabo de sinal a qualquer uma das entradas analógicas do controlador.

Biblioteca de sensores de pulso
O sensor de pulso XD85C da World Famous Electronics LLC possui uma biblioteca Arduino bem documentada. A biblioteca é chamada de “PulseSensor Playground”. Ele pode ser incluído navegando até Sketch->Incluir Biblioteca -> Gerenciar Bibliotecas e procurar por “pulsesensor”. A biblioteca vem com muitos esboços de exemplo que podem ser testados para testar o sensor. Depois que a biblioteca estiver instalada, esses esboços de exemplo podem ser explorados navegando até Arquivo -> Exemplos -> PulseSensor Playground assim que a biblioteca estiver instalada. Essas bibliotecas de exemplo são úteis para detectar a taxa de pulso no Serial Monitor do Arduino e visualizar a pulsação no Serial Plotter e Processing Visualizer do Arduino.

Neste projeto, traçaremos os batimentos cardíacos e indicaremos a medição dos batimentos cardíacos em uma unidade de display, que é a tela OLED SSD1306. A biblioteca do sensor de pulso não fornece funções ou exemplos que permitam utilizar dados brutos para traçar os batimentos cardíacos. Vamos começar a construir nosso monitor de batimentos cardíacos. Existem dois modelos projetados aqui. O modelo 1 exibe apenas a frequência cardíaca na tela OLED. O modelo 2 também exibe um gráfico dos batimentos cardíacos.

Monitor de batimentos cardíacos modelo 1
Neste modelo, detectaremos apenas a frequência de pulso e a exibiremos em uma tela OLED.

Componentes necessários

  1. Arduino UNO/qualquer placa Arduino x1
  2. Sensor de pulso XD85C x1
  3. SSD1306 128×64 OLEDx1
  4. Fios de ligação/fios de conexão

Conexões de circuito

Para conectar o sensor de pulso ao Arduino UNO, conecte o VCC e o GND à saída de 3,3 V e aterre o Arduino, respectivamente. Conecte o cabo de sinal ao pino de entrada analógica A0 do Arduino UNO. Neste projeto, um módulo OLED SSD1306 de 7 pinos é conectado ao Arduino UNO. O módulo está conectado ao Arduino, conforme mostrado na tabela a seguir.

Esboço do Arduino

Como funciona o circuito

Este modelo utiliza a biblioteca oficial do sensor de pulso. Ele usa interrupções do Arduino para medir a taxa de pulso. As interrupções são usadas para determinar o intervalo de tempo entre cada batida, e o número de batidas por minuto é avaliado de acordo. A batida é detectada comparando o valor do sinal analógico com um valor limite. Se o valor do sinal exceder o limite, uma batida será contada. A interrupção é gerada toda vez que uma batida é detectada.

O código
O esboço começa indicando o Arduino para usar a interrupção e depois importando a biblioteca Pulsesensor Playground. As bibliotecas SPI e Adafruit para SSD1306 OLED são importadas. As constantes para exibição OLED são declaradas. Da mesma forma, são definidas constantes para sensores de pulso. O display OLED é inicializado e o bitmap que armazena o ícone para “EEWORLDONLINE” é definido para PROGMEM. O bitmap é convertido em uma matriz. Um objeto da classe do sensor de pulso é declarado.

Na função setup , a taxa de transmissão para transmissão de dados serial é definida como 9600. O sinal analógico do sensor de pulso é lido usando o método analogInput . O LED indicador de pulso, ou seja, o LED do Arduino pisca usando o método blinkOnPulse , e o limite é definido como 555 usando o método setThreshold . O sensor de pulso é inicializado usando o método Begin . O display OLED é inicializado e o logotipo “EEWORLDONLINE” é exibido na tela.

Na função loop , a fonte e a cor do texto são definidas usando os métodos setTextSize e setTextColor . A taxa de pulso é lida usando o método getBeatsPerMinute e exibida na tela OLED no formato apropriado.

Resultados

Monitor de batimentos cardíacos modelo 1
Neste modelo, não apenas a taxa de pulso. O gráfico dos batimentos cardíacos também é exibido na tela OLED.

Componentes necessários

  1. Arduino UNO/qualquer placa Arduino x1
  2. Sensor de pulso XD85C x1
  3. SSD1306 128×64 OLEDx1
  4. Fios de ligação/fios de ligação

Conexões de circuito

Igual ao modelo 1.

Esboço do Arduino

Como funciona o circuito
Este modelo não usa a biblioteca oficial de sensores de pulso. Em vez disso, utiliza os valores analógicos brutos obtidos do sensor de pulso. Os valores brutos do sensor são comparados a um limite superior e inferior para detectar o início e o fim de cada batimento cardíaco. O número de batimentos cardíacos é amostrado durante um período de 1 minuto usando o método millis do Arduino. As leituras analógicas do sensor são mapeadas para o tamanho do SSD1306 OLED e um gráfico dos batimentos cardíacos é traçado na parte superior da tela. Após cada minuto, os batimentos por segundo são calculados e exibidos como texto na parte inferior da tela OLED.

O código
O esboço começa com a importação das bibliotecas SPI e Adafruit para o display OLED SSD1306 e sua declaração de constantes. As constantes para o sensor de pulso são definidas. O display OLED é inicializado e o bitmap que armazena o ícone para “EEWORLDONLINE” é definido como PROGMEM. O bitmap é convertido em uma matriz. As variáveis ​​para mapear a forma de onda do pulso são declaradas a seguir.

Isto inclui a declaração do limite superior e inferior. Na função setup , o LED indicador de pulso na placa Arduino é definido como saída. O display OLED é inicializado e o logotipo “EEWORLDONLINE” pisca nele. A tela é limpa e o tamanho da fonte é definido como 2.

Na função loop , primeiro testamos se o valor de x para a reta numérica vertical do gráfico não excede 127, pois o display OLED tem 128 pixels de largura. O tempo atual decorrido é armazenado na variável “ThisTime” e a leitura analógica é obtida do pino A0. O valor do sinal é armazenado como uma variável mapeando o valor do sinal para a altura do display OLED. Observe que o intervalo do valor analógico, ou seja, 1024, é dividido por 64 para obter 16. O valor do sinal é dividido por 16 para dimensioná-lo para a resolução do display OLED. O valor do sinal é comparado ao limite superior para determinar se o batimento foi detectado. O valor do sinal é comparado ao limite inferior para determinar a conclusão da batida. O BPM é detectado a cada 1 minuto e exibido como texto na parte inferior do display OLED.

Resultado

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.