Hello StackExchange社区,
我的ECG / EKG设计遇到了问题。我正在尝试使用Arduino作为微控制器来创建ECG,以通过蓝牙(JY-MCU)发送/检索心率测量。我知道我的电路正常工作,因为当我在运放输出端放置一个LED及其接地时,如果我轻轻地将手放在引线上,我会轻微调光。我知道问题出在我的代码上。我已经在这个项目上工作了一段时间,但仍然无法找到解决方案。这是我的原理图。
1 http://i57.tinypic.com/10p68ef.jpg
抱歉,您可能需要翻转屏幕才能看到图片!这是我认为不正确的代码。代码只是最低限度。
// External variables
const int signal = 8; // Pin connected to the filtered signal from the circuit
unsigned long time;
unsigned long frequency;
char freq[3];
// Internal variables
double period = 2000;
double starttime = 2000;
double input = 0;
double lastinput = 0;
unsigned long death = 0;
// initialize the library with the numbers of the interface pins
void setup() {
pinMode(signal, INPUT);
Serial.begin(9600);
}
void loop() {
delay(500);
time = millis();
input = digitalRead(signal);
period = time - starttime; // Compute the time between the previous beat and the one that has just been detected
starttime = time; // Define the new time reference for the next period computing
death = time;
frequency = 60000/period;
freq[0] = frequency/100+48; // Sort the hundreds character and convert it in ASCII
freq[1] = (frequency/10)%10+48; // Sort the thents character and convert it in ASCII
freq[2] = frequency%10+48; // Sort the units character and convert it in ASCII
Serial.println(freq);
}
我得到的只是120或119作为我的价值。它在这两者之间波动。我尝试更换电阻器,但没有做任何事情。我也把针8和面包板之间的电线完全取出,它仍然在119到120之间波动。我不知道这里发生了什么!如果有人能帮助我,我将不胜感激。谢谢!
答案 0 :(得分:0)
您的代码没有做任何远程有用的事情。它肯定不会测量输入频率 - 实际上它甚至不关心输入信号的值是什么,并且无论外部发生什么,它都会表现相同。它所做的只是测量调用loop()
和将此时间转换为每分钟周期的频率之间的时间。由于loop()
的延迟时间为500毫秒,因此频率为2 Hz = 120周/分钟,这与您看到的数字一致。
粗暴地说,我怀疑你的电路将能够测量心电信号,即使你确实得到了正确的代码 - 它太粗糙了 - 但是你至少可以测量的东西< / em>与频率相关的您可能想尝试在loop()
中实现以下代码:
input = digitalRead(signal);
while (input == digitalRead(signal))
; // wait for input signal to change state (sync)
start = millis();
while (input != digitalRead(signal))
; // wait for input signal to change state (first part of period)
while (input == digitalRead(signal))
; // wait for input signal to change state (one complete period)
end = millis();
period = end - start;
freq = 60000 / period;
请注意,如果您的输入信号没有定期更改状态,这将挂起。
另请注意,如果您有一个完全干净的输入信号,即仅在感兴趣的频率下改变状态且没有噪声转换的信号,这将仅提供有用的频率测量。在实践中,您可能最终只能测量电源嗡嗡声或其他背景噪音的频率。