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

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.