Arduino UNO 传感器数据输出突然跳转
Abrupt jumps in the Arduino UNO sensor data output
我正在使用Arduino UNO记录CNY70的传感器数据。我使用的代码如下所示。此代码写入记录值 10 秒,然后停止。
#include <EEPROM.h>
const int chipSelect = 2;
unsigned int y1 = 0;
unsigned long y = 0;
String data = "";
void setup()
{
Serial.begin(230400);
delay(10);
}
void loop()
{
while (y < 10000000)
{
if (y1 > 372) //start recording only after 372 microseconds
{
y = micros();
data += y;
data += ",";
data += analogRead(A0);
Serial.println(data);
data = " "; //clear data after printing the value
}
y1 = micros() - y;
}
}
这些值是从串行监视器复制的。一些记录显示一个或两个记录值突然跳跃,因此,数据图表看起来已经 'struck' 了。这些数字是:
Jump in value of the sensor data
Zoomed image of the sensor data
这些突然的值不会在每次代码为 运行 时出现,但它们确实每 7-12 运行 秒出现一次。这些突然跳跃的原因是什么?实验条件没有突然变化。如何防止 Arduino 记录和存储这种突然的值?
您的值不会突然上升,它们会下降到 0。
通常,如果对地短路,则只能测量 0。因此,也许您的电缆因振动而损坏....我不知道您的测试设置。
测试 1) 测量恒定电压
测试 2) 尝试另一个输入引脚
如果无法修复,请检查读取值。如果它们没有意义,请跳过它们或通过外推法替换它们。
我正在使用Arduino UNO记录CNY70的传感器数据。我使用的代码如下所示。此代码写入记录值 10 秒,然后停止。
#include <EEPROM.h>
const int chipSelect = 2;
unsigned int y1 = 0;
unsigned long y = 0;
String data = "";
void setup()
{
Serial.begin(230400);
delay(10);
}
void loop()
{
while (y < 10000000)
{
if (y1 > 372) //start recording only after 372 microseconds
{
y = micros();
data += y;
data += ",";
data += analogRead(A0);
Serial.println(data);
data = " "; //clear data after printing the value
}
y1 = micros() - y;
}
}
这些值是从串行监视器复制的。一些记录显示一个或两个记录值突然跳跃,因此,数据图表看起来已经 'struck' 了。这些数字是: Jump in value of the sensor data Zoomed image of the sensor data
这些突然的值不会在每次代码为 运行 时出现,但它们确实每 7-12 运行 秒出现一次。这些突然跳跃的原因是什么?实验条件没有突然变化。如何防止 Arduino 记录和存储这种突然的值?
您的值不会突然上升,它们会下降到 0。 通常,如果对地短路,则只能测量 0。因此,也许您的电缆因振动而损坏....我不知道您的测试设置。
测试 1) 测量恒定电压
测试 2) 尝试另一个输入引脚
如果无法修复,请检查读取值。如果它们没有意义,请跳过它们或通过外推法替换它们。