Calculo de tempo entre picos de sinal analógico

Bom dia pessoal, possuo um sinal de entrada analógico no Arduíno como o da imagem a baixo:

Resultado de imagem para sinal ecg

e em suma, preciso calcular o tempo em milissegundos entre os maiores picos ("R") consecutivos, ou seja, entre R1 e R2, entre R2 e R3... 

Já fiz isso em outros aparelhos mas agora estou tentando fazer programando pela Arduíno IDE, e das outras vezes fiz da seguinte forma:

encontrava a subida da primeira onda, e marcava o tempo em que ela começava a descer e marcava o primeiro tempo, fazia o mesmo para a segunda onda e subtraia tempo 1 de tempo 2.

ou

como o sinal chega para o Arduíno com muita interferência, fica dificil encontrar esse pico maximo de fato:

Definiria um sinal de corte, e contaria a partir do momento que o sinal passa deste corte, até o momento em que o sinal passa novamente por este corte, e subtrai o tempo1 do tempo2.

já fiz isto em outras linguagens, a segunda opção diminui a precisão da leitura, mas funciona, há alguma forma de fazer da primeira forma no Arduíno? se não há como fazer da segunda forma?

Exibições: 97

Responder esta

Respostas a este tópico

Qual a frequencia?

Lembre-se que o Arduino funciona com clock de 16 MHz e portanto, não é bastante rápido.

Quanto ao sinal, elimine o ruído. Sugiro um optoacoplador que poderá transformar esta onda em pulsos fáceis de serem detectados.

Usar interrupção aumentará sua precisão.

Boa sorte,

  'Eiju

estou usando o esp32, em todo caso em geral estes picos tem distancias que variam entre 200 a 2000 milisegundos, é facil para o arduino e para o esp, já sobre o ruido, este já foi tratado com filtros, agora, como uso interrupção neste caso?

Boa noite S,

Quais  os níveis de voltagem desta saída ? Nível de repouso e de pico.

Você conhece o circuito separador de sincronismo usado em TV.

Talvez seja uma solução pra seu caso.

RV

Bom dia Saulo, 

Seria mais fácil se você informasse para todos, que esse sinal é de um cardiógrafo ( forma de onda QRS do coração) !

https://en.wikipedia.org/wiki/QRS_complex

Algorithms[edit]

A common algorithm used for QRS complex detection is the Pan-Tompkins[14] algorithm (or method); another is based on the Hilbert transform.[15][16][17][18] Numerous other algorithms have been proposed and investigated.[19]

É mesmo esqueci de dizer Murta, trabalho com sinais bioelétricos e biofeedback, estes são apenas alguns experimentos para estudar a viabilidade de implementar uma nova interface (Web) e uma nva forma de envio dos dados dos meus equipamentos. muito obrigado por esclarecer.

Primeiro passo é detectar os picos de tensão . Já conseguiu com algum circuito ?

Depois é só usar um programa que seja um frequencímetro. 

Os timers do Arduino são diferentes do ESP32. Portanto terá que usar um código já adaptado para o ESP32. 

(nesses casos abaixo, a IDE Arduino não pode ser usada) 

https://github.com/DavidAntliff/esp32-freqcount

https://esp-idf.readthedocs.io/en/v1.0/api/pcnt.html

http://bbs.esp32.com/viewtopic.php?f=2&t=2935

https://esp32.com/viewtopic.php?t=713

Não achei nada de medição de tempo na ESP32 - Arduino IDE :

https://github.com/espressif/arduino-esp32

Já consegui sim Murta, de duas maneiras, uma por eletrodos de superficie (ECG), mas que não é meu foco agora, e outra por photoplestimografia, desta forma não temos o complexo QRS bem definido, mas consigo observar o pico maior (batida do coração) e o grafico se assemelha ao que mostrei a cima, vou dar uma olhada nos links e ver o que pode ser feito, não faço questão de ser na arduino IDE

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço