Bom dia pessoal, possuo um sinal de entrada analógico no Arduíno como o da imagem a baixo:
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?
Tags:
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
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 :
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por