场景:
我正在用Arduino试验热电偶放大器(SN-6675)。在我加入MAX6675库后,Arduino可以测量室温。然而,arduino测量的温度有两个问题,
( 1)偏移量与“福氏温度计”的比较
2)有吨的噪声,并保持波动后,采取平均每5个温度样本。
在室温下测到了28.9C,arduino得到了19.75~45.75C。
问题:有什么方法/滤波器来降低被测噪声,并给出稳定的输出?

代码附后,以供参考。
#include <MAX6675.h>
//TCamp Int
int CS = 7; // CS pin on MAX6675
int SO = 8; // SO pin of MAX6675
int SCKpin = 6; // SCK pin of MAX6675
int units = 1; // Units to readout temp (0 = ˚F, 1 = ˚C)
float error = 0.0; // Temperature compensation error
float tmp = 0.0; // Temperature output variable
//checking
int no = 0;
MAX6675 temp0(CS,SO,SCKpin,units,error); // Initialize the MAX6675 Library for our chip
void setup() {
Serial.begin(9600); // initialize serial communications at 9600 bps:
}
void loop() {
no= no + 1;
tmp = temp0.read_temp(5); // Read the temp 5 times and return the average value to the var
Serial.print(tmp);
Serial.print("\t");
Serial.println(no);
delay(1000);
}发布于 2014-12-27 07:16:43
有哪种方法/滤波器可以降低被测噪声,并给出稳定的输出?
卡尔曼滤波几乎是这方面的标准方法:
卡尔曼滤波,又称线性二次估计(LQE),是一种利用随时间变化观测到的一系列测量值,包括噪声(随机变化)和其他不精确性的算法,它对未知变量的估计往往比单次测量更精确。
如果你的背景不是数学,不要被你遇到的公式所拖延。在像您这样的单变量情况下,过滤器非常容易实现,我相信googling会找到一些实现。
过滤器会给出温度的估计值和温度变化的估计值(后者给出了滤波器对当前估计值的信心程度)。
发布于 2015-01-16 01:05:18
您可能希望使用一个更简单的平均值算法。这不像低通算法那样优雅,但可能适合您的情况。这些算法在网络上非常丰富。
您可以随意使用所取样本的数量来平衡延迟和稳定性之间的折衷。你可能想从10个样本开始,然后从那里开始工作。
https://stackoverflow.com/questions/27665150
复制相似问题