Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Detecção de freqüência cardíaca com um fotorresistor

Componentes e suprimentos

Digilent OpenScope MZ
× 1
Arduino UNO
× 1
Texas Instruments para uso geral Quad Op-Amp
× 1
Comparador único de alta velocidade da Texas Instruments
× 1
Potenciômetro de precisão multivoltas - 10k ohms (25 voltas)
× 2
Potenciômetro de volta única - 100k ohms
Se você puder obter um potenciômetro multivoltas, será mais fácil ajustar.
× 1
Potenciômetro de volta única - 10k ohms
× 1
Capacitor 100 µF
× 1
Capacitor 100 nF
× 1
Resistor 10k ohm
Ou um único 20k
× 2
Resistor 4,75 k ohm
× 1
Resistor 82k ohm
Você também pode obter dois dos potenciômetros de 100k e definir um para 82k.
× 1

Aplicativos e serviços online

Arduino IDE
Digilent WaveForms Live

Sobre este projeto





Introdução


Este projeto foi inspirado por um vídeo do YouTube postado por CapitanoRed , onde o autor fez um monitor de freqüência cardíaca baseado em fotoresistor para exibir em um osciloscópio. Depois de ver o vídeo, quis replicar o projeto e adicionar um Arduino para calcular e exibir a frequência cardíaca. Dessa forma, você pode observar a forma de onda em um osciloscópio enquanto obtém uma leitura de sua frequência cardíaca.

Quando o coração se contrai e empurra o sangue pelo corpo, as flutuações momentâneas da pressão arterial são detectáveis. Esta é a razão pela qual podemos sentir nosso pulso. Em áreas do corpo onde a pele e a carne são finas o suficiente, esses pulsos podem ser detectados nas pequenas variações de luz que passam. Embora nossos olhos não sejam sensíveis o suficiente para ver a luz passando pelo nosso corpo, sem falar nas flutuações, os fotorresistores têm esse nível de sensibilidade.

Um fotorresistor varia sua resistência com a intensidade da luz que incide sobre ele. Embora a variação na resistência possa ser bem pequena para mudanças sutis na intensidade da iluminação, elas podem ser amplificadas usando alguns CIs amplificadores operacionais.





Princípios de operação


Os diagramas abaixo mostram o esquema do circuito, bem como a placa de ensaio usada neste projeto.

O fotorresistor está em um divisor de tensão com o resistor de 20kΩ, o que significa que conforme a quantidade de luz no resistor aumenta, a tensão no divisor também aumenta. O primeiro amplificador operacional ("Amp1" na imagem acima) serve como um filtro para o divisor de tensão, removendo o ruído de alta frequência do sinal. O segundo amplificador operacional ("Amp2") serve como um amplificador inversor, definido para maximizar o sinal que chega através do filtro. O terceiro amplificador operacional ("Amp3") define o aterramento virtual, que centraliza o sinal em 2,5 V. Isso garante que os amplificadores operacionais sejam capazes de fornecer oscilação máxima do sinal de 0 V a 5 V. Depois de ser filtrado e amplificado, o sinal fica mais ou menos assim.

Para permitir que o Arduino meça sua freqüência cardíaca, o sinal precisa passar por um comparador ("Cmp" no esquema). Um comparador é um amplificador operacional especializado projetado para emitir um sinal alto ou baixo. Quando a tensão na entrada positiva é maior do que a entrada negativa, o comparador produz alta, e quando a tensão na entrada positiva é menor do que a entrada negativa, o comparador produz baixa. Em sua configuração mais básica, um comparador serve como um detector de limite, sinalizando quando a tensão medida está acima ou abaixo desse limite. Como um comparador tem saída alta (5 V) ou baixa (0 V), ele é perfeito para fazer a interface com os pinos digitais de um Arduino.

Olhando mais de perto a imagem do sinal vindo do amplificador operacional, fica claro que há um pulso secundário antes que a tensão diminua (isso é chamado de entalhe dicrótico). Além disso, há uma quantidade significativa de ruído no sinal. Esses dois fatos significam que a configuração básica do comparador não será capaz de detectar pulsos corretamente. Em vez de um único pulso quadrado para cada batimento cardíaco, o comparador irá gerar vários pulsos. Isso ocorrerá porque o ruído fará com que o sinal cruze o limite várias vezes na oscilação ascendente e descendente e, dependendo de onde os limites são definidos, possivelmente durante o entalhe dicrótico. Isso fará com que o Arduino conte muito mais pulsos do que os realmente presentes.

Um sinal ruidoso pode ser tratado usando histerese. Este documento by Texas Instruments apresenta uma excelente discussão sobre o tópico de condicionamento de sinal com histerese, mostra como o ruído do sinal afeta o desempenho do comparador e como lidar com esses problemas. Usei seus esquemas e equações derivadas (páginas 5 e 7, respectivamente, do documento) para projetar o comparador assimétrico para este projeto. A ideia geral é que um loop de feedback da saída mudará a tensão na entrada positiva, o que significa que o limite para ir de baixo para alto será diferente do limite para ir de alto para baixo. O que isso significa, no contexto dos pulsos cardíacos, é que o comparador pode ser configurado para disparar em um ponto na ascensão e, em seguida, em um ponto diferente na desaceleração, de preferência após o entalhe dicrótico. Dessa forma, o Arduino verá um único pulso quadrado para cada batimento cardíaco, conforme mostrado abaixo.





Preparação do fotorresistor


Eu recomendo fortemente o uso de algum tipo de cobertura transparente no fotorresistor, como termorretrátil transparente. No mínimo, certifique-se de que os cabos estejam completamente cobertos para evitar tocá-los na pele. As tensões geradas por seu corpo estão dentro da faixa que o fotorresistor está criando quando detecta seu pulso, então o contato com sua pele pode distorcer os resultados.





Ajustando o monitor de freqüência cardíaca


Para o potenciômetro no esquema (R7), use um potenciômetro de uma volta e ajuste-o para maximizar o ganho do amplificador operacional sem entrar em saturação. Comece ajustando um lado do potenciômetro para aproximadamente 375Ω e conectando o filtro ("Amp1") a este lado. Essa quantidade de ganho deve gerar pulso suficiente para que você consiga vê-lo no WaveForms Live. Depois de seguir as etapas na próxima seção ("Visualizando pulsos em WaveForms ao vivo") e visualizar com sucesso seu pulso, você pode alterar o ganho, se necessário. Aumente a amplitude do pulso girando o potenciômetro para diminuir a resistência do lado do filtro. Se a amplitude já for muito grande e causar corte, aumente a resistência do lado do filtro. Leia as legendas nas imagens a seguir para determinar a aparência de um sinal desejável.

Recomendo o uso de potenciômetros multivoltas para os resistores R3 e R4 a fim de definir com precisão os limites do comparador. O resistor R5 pode ser qualquer resistor na faixa de 10-100kΩ, desde que seja medido com precisão. Você pode usar a planilha na seção de anexos para determinar quais valores definir R3 e R4 com base no valor medido de R5 e as tensões limite. Os limites "Vl" e "Vh" precisarão ser alterados com base no pulso que você verá no osciloscópio (consulte a seção "Definindo os limites do comparador").

Os resistores R8 e R9 podem ser substituídos por um potenciômetro, com o pino do meio conectado à entrada positiva do amplificador operacional. Desta forma, o aterramento virtual pode ser facilmente ajustado sem a necessidade de encontrar resistores correspondentes. Use um voltímetro ou o OpenScope enquanto ajusta a saída para 2,5V.





Visualizando pulsos em WaveForms Live


Para visualizar sua pulsação por meio do WaveForms Live, você precisará alterar algumas configurações no menu. Por padrão, a saída será esticada e difícil de interpretar ou a velocidade de atualização será muito lenta e será difícil ajustar seu controle sobre o fotorresistor para gerar pulsos claros.

Conecte o canal 2 do osciloscópio OpenScope (fio azul) à saída do "Amp2" e certifique-se de que o fio terra esteja conectado ao terra na placa de ensaio. Em WaveForms Live, altere Hora para "1s" e no Gatilho menu pressione DESLIGAR botão. Para ambos Osc Ch 1 e Osc Ch2 menus configurados Offset para 2,5 V e próximo a Amostras clique no ícone de cadeado e digite "1000" no campo que se torna disponível. Isso fará com que o sinal apareça em uma escala de tempo fácil de interpretar, mas fará com que as atualizações ocorram com mais frequência do que fariam por padrão. A tela deve ser atualizada a cada 4 segundos ou mais. Se ainda estiver muito lento, você pode aumentar as Amostras valor, mas às custas de um trecho mais curto do sinal ("2000" irá capturar cerca de uma pulsação de cada vez).

Pressione o botão EXECUTAR e meça o pulso com o dedo no fotorresistor. Você precisará descobrir a melhor maneira de obter resultados consistentes. O sistema é muito sensível a mudanças de pressão, portanto, você precisa encontrar uma maneira de manter o dedo bem imóvel. Descobri que o melhor lugar para tomar meu pulso é na primeira articulação do dedo indicador. Leva um pouco de tempo para treinar, mas eventualmente você encontrará o melhor método. Se seus pulsos estiverem parecendo muito pequenos, ajuste o potenciômetro conforme as instruções no primeiro parágrafo da seção anterior ("Ajustando o Monitor de Freqüência Cardíaca").





Definindo os limites do comparador


Assim que o sinal estiver visível no osciloscópio, você precisará definir os limites nos quais o comparador irá acionar e sinalizar o Arduino. Obtenha uma forma de onda representativa e pare a captura para manter a forma de onda na tela. Na parte inferior da tela, pressione CURSORES botão. Em Tipo selecione "Voltage" e defina ambos CursorChannels para "Osc 2". Duas linhas horizontais tracejadas aparecerão no visor. Arraste os triângulos do lado esquerdo para movê-los. Defina uma das linhas em um ponto próximo ao pico do pulso e a outra em um ponto abaixo da marca dicrótica. Olhe para a parte inferior da tela e registre as duas tensões mostradas entre parênteses. Insira esses valores como as tensões limite "Vl" e "Vh" na planilha anexada no final. O menor valor será "Vl" e o maior será "Vh". Com base nesses valores e no valor do resistor R5 que você escolheu, defina os valores de R3 e R4 do potenciômetro que a planilha calcula.

Depois de definir o comparador, ele deve começar a emitir um sinal semelhante ao anterior à seção "Preparação do fotorresistor".





Código Arduino


O código do Arduino consiste em um contador de frequência e um método para calcular a frequência cardíaca em batimentos por minuto. O contador de frequência leva em consideração a largura do pulso proveniente do comparador e rejeita qualquer coisa menor que 200 milissegundos ou maior que 800 milissegundos. Isso impedirá que ele exiba dados falsos quando o fotorresistor não estiver sendo usado para medições e o comparador estiver alto, baixo ou alternando rapidamente entre os dois estados. O código mantém uma média contínua da frequência cardíaca durante os 15 segundos anteriores para filtrar os pulsos perdidos devido ao ruído do sinal causado por movimentos acidentais.





Melhorias futuras


A principal desvantagem deste projeto é que é difícil segurar o fotorresistor de forma que os pulsos tenham a mesma amplitude entre os usos. Uma vez que o sensor depende da luz ambiente para detecção de pulso, alterar os níveis de luz ao longo do dia pode causar resultados diferentes. Percebi que em dias nublados meus limites de comparação eram muito amplos e em dias muito iluminados o entalhe dicrótico era muito pronunciado e poderia causar detecção de pulso falso. Além disso, mesmo as mudanças sutis de luz causadas pelo movimento na sala são detectáveis ​​pelo fotorresistor. A questão da consistência pode ser tratada de algumas maneiras diferentes.

O sistema do sensor pode incluir um LED para fornecer luz consistente. Isso se pareceria com os clipes de monitoramento cardíaco usados ​​em consultórios médicos ou os monitores de frequência cardíaca vistos em telefones celulares. Tentei segurar um LED vermelho contra o topo do meu dedo com o fotorresistor do outro lado. Os resultados foram encorajadores, então esta é provavelmente uma opção viável se um bom cercamento pudesse ser feito.

No lado do software, uma solução potencial seria usar um algoritmo de escala automática no Arduino. Ele detectaria os pulsos e encontraria seus picos e depressões. No entanto, isso não seria suficiente para realizar uma medição de freqüência cardíaca. Um contador de frequência adequado requer interrupções. Sem interrupções, o processador do Arduino pode estar fazendo outra coisa além de verificar os pinos de entrada e perder um pulso. Como as interrupções estão disponíveis apenas em pinos digitais, a melhor maneira de implementar a faixa automática seria por meio do uso de potenciômetros digitais. O Arduino usaria o pino analógico para encontrar a faixa em que o pulso está aparecendo, determinar quais deveriam ser os limites do comparador, aplicá-los por meio dos potenciômetros digitais e, em seguida, usar o sinal digital do comparador para realizar a contagem de frequência.

Código

  • comparador calcs.xlsx
  • Contador de frequência cardíaca Arduino
comparador calcs.xlsx Arduino
Esta planilha do Excel calculará os valores de R3 e R4 para definir limites assimétricos para o comparador. Você pode alterar a coluna R5 para um valor de resistor medido. Vl e Vh precisam ser alterados para quaisquer limites necessários para obter um pulso limpo a partir da frequência cardíaca.
 Sem visualização (somente download). 
Contador de frequência cardíaca do Arduino Arduino
Este código irá calcular sua freqüência cardíaca com base nos pulsos enviados a ele pelo comparador.
 #define INT0 3frequência de flutuação; contagem de tempo longa; contador interno; início de pulso longo; int inputPin =3; boolean low; float freqAvg; float total; void setup () {attachInterrupt (digitalPinToInterrupt (INT0), intrrupção, CHANGE); contador =0; timeCount =0; frequência =0; baixo =falso; Serial.begin (9600); total =15;} loop vazio () {timeCount =millis (); while (millis () - timeCount <5000) {freqüência =contador; } se (frequência> 3) {total + =frequência; total - =freqAvg; freqAvg =total / 3; } showHR (); contador =0;} interrupção vazia () {if (digitalRead (3) ==0) {fallDetect (); baixo =verdadeiro; } else if (digitalRead (3) ==1) {widthCheck (); }} void fallDetect () {pulseStart =millis ();} void widthCheck () {long pulseEnd =millis (); if ((pulseEnd - pulseStart> 200) &&(pulseEnd - pulseStart <800) &&low) {contador ++; baixo =falso; }} void showHR () {Serial.print ("Frequência cardíaca ="); Serial.println (freqAvg * 12); } 

Esquemas

hr_monitor_tnffXlVQQV.fzz

Processo de manufatura

  1. Desfibrilador externo
  2. Coração Artificial
  3. Válvula cardíaca artificial
  4. Máquina EKG
  5. Detecção de relâmpagos com um Raspberry Pi
  6. Windows 10 IoT Core - Leitura dos pulsos de frequência cardíaca
  7. Monitor de frequência cardíaca remoto
  8. Detectando o magnetismo do núcleo de um átomo único
  9. Sensores integrados em roupas monitoram a frequência cardíaca
  10. A saúde do coração começa com ar comprimido isento de óleo