我们在模拟烤箱。电位器设置所需的温度,传感器读取一个小铜板的当前温度,即“烤箱”。
两个温度传感器都连接到我的arduino uno上自己的模拟输入引脚上。单独地,我已经得到了电位器和温度传感器的数值,这是有意义的(我正在监视串行窗口上的值)。然而,当我调整电位器时,它会显著改变传感器的读数。
例如:
如有任何建议,将不胜感激。谢谢!
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A3);
float tsens = map(sensorValue, 0, 1023, 0, 500);
int sensorValue2 = analogRead(A1);
float tset = map(sensorValue2, 0, 1023, 0, 70);
Serial.println(tsens);
Serial.println(tset);
}
发布于 2015-08-26 06:21:51
我最近遇到了一个类似的问题,我的搜索结果表明,在读取之间插入一个延迟可能会有帮助。在这个问题上,我发现这个答案和这个答案特别有用。
这样做的想法是,你需要在读了一段时间后再读一遍,然后在模数转换器稳定之后再读一次。下面是我一直使用的一个函数:
int safeAnalogRead(int pin)
{
int x = analogRead(pin); // make an initial reading to set up the ADC
delay(10); // let the ADC stabilize
x = analogRead(pin); // toss the first reading and take one we will keep
delay(10); // delay again to be friendly to future readings
return x;
}
我仍然有困难获得几个电位器的准确读数连接到模拟引脚配置为vcc和地面之间的分压器,但至少现在的数值是稳定的。
顺便说一下,由于你在第一次阅读之后有一个延迟,所以没有必要有第二个延迟。如果您在两个不同的引脚上快速地连续调用safeAnalogRead()
两次,这可能很重要。
发布于 2013-12-17 00:46:52
你很可能在你的温度传感器上有一个不接地或不接地。在Arduino中,模拟引脚上的引脚配置非常接近于彼此,因此当附近的引脚有外加电压时,浮动电压将向上或向下移动。如果你的地面连接(或者电源,如果一开始是正确的,很可能是接地的),传感器被断开或固定在高阻抗线上,模拟电压就会像其他通常极小的电压源一样在整个地方移动。如果你把你的手指靠近A3
引脚,它可能会有很大的波动。
发布于 2016-05-03 21:32:53
它是噪音还是不好的价值?我做了一个小测试例程,看看一个引脚,并检查它与以前的最大值和最小值。每当出现新的边值时,我就把它打印到串行监视器上。如果错误的值是稳定的,检查电路。如果它的噪音围绕一个有效值,一个数字低通滤波器工作相当好。以34个读数为例。找到最高值和最低值,并丢弃这些值。然后取其余32个读数的平均值。我在我的设置中看到了90%的改进(40次计数错误下降到3)。36的读数,2次高,2次低丢弃,很可能会进一步改善情况。如果你有时间,你可以做一个双通滤波器。做同样的过程34次,然后扔掉高和低,并再次平均它。总之,这是34x34读数,所以噪音应该消失,但你需要很长时间才能得到一个样本,而一个罐子的变化将需要一段时间才能被检测到。为了节省时间,我每次通过主循环读取罐子,并将每个值保存在一个循环缓冲区中。当我需要阅读一个罐子的时候,我会看看历史上的33种读数,还有第34种新的。
https://stackoverflow.com/questions/20623648
复制相似问题