我一直在做一个有关读取多普勒速度和创建速度数据的项目。我没有电气工程/信号处理方面的扎实背景,但是到目前为止,我已经进行了很多研究。如果我的解释有误,请忍受。
我目前正在使用HB100和CDM324分组讨论模型。该项目的目的是从模块中获取电压读数,并通过MATLAB中的FFT创建频谱图。我从BlackCatScience获得了一个样本数据,手快速移向传感器。其图如下所示:
Hand Speed Using Doppler Radar
我已经组装了我的arduino套件,如下图:
连接为:
VCC-> 5V GND-> GND FOUT->引脚8 VOUT->引脚A5
到目前为止,我发现HB100支持脉冲/连续波用法,并使用下面的代码使用HB100测量频率。
#include <MsTimer2.h>
#include <FreqMeasure.h>
//--------------GlOBAL VARIALBES---------------------
double raw_data = FreqMeasure.read();
double sum = 0;
int count = 0;
double raw_data_array[10];
unsigned long timeStamp = 0;
//---------------------------------------------------
void setup() {
Serial.begin(115200);
FreqMeasure.begin();
Serial.print("Time (ms)");
Serial.print("\t");
Serial.println("Hz");
}
void loop() {
timer();
freq_measure();
}
void timer() {
timeStamp+=1;
}
void freq_measure() {
while (timeStamp < 101) {
if(FreqMeasure.available()) {
//average readings
sum += FreqMeasure.read();
count ++;
if (count > 2) {
float frequency = FreqMeasure.countToFrequency(sum/count);
// Serial.print(timeStamp);
// Serial.print("\t");
Serial.println(frequency);
timeStamp++;
sum = 0;
count = 0;
}
}
}
}
此代码的问题是,我想测量每1毫秒的电压读数。但是,此代码类似于使用pulseIn函数,并且数据输出的速率取决于我是否将手移入/移出传感器而异。当我不移动时,数据输出变慢,而当我移动时,数据输出速率变快。
因此,我决定使用其他代码并使用如下的AnalogRead函数:
//-----------------------------------------------------------------
#define RADAR A5 //pin number for VOUT
//--------------------GLOBAL VARIABLES-----------------------------
unsigned long timeStamp;
//-----------------------------------------------------------------
void setup() {
Serial.begin(115200);
pinMode(RADAR, INPUT);
Serial.println(F("Settings Complete" ));
}
void loop() {
// 1 millisec == 0.001 second --> 1000 millisec == 1 second
// we want about 5 seconds of data, hence the loop runs for 5000 millisec
while (timeStamp < 5000){
showReading();
}
}
void showReading() {
// timeStamp = millis();
// Serial.print(timeStamp);
// Serial.print("\t");
//Read input on analog pin 5:
int sensorData = analogRead(RADAR);
// float voltage = sensorData * (5.0 / 1023.0);
Serial.println(sensorData);
}
这一次,串行监视器为我提供了一个介于0到1023之间的值,这很好,但是即使我将手移到传感器的前面,该值也会变化很小。我该怎么做才能更正此问题并获得类似于上图的图表?
感谢您阅读这么长的问题。祝你有美好的一天!