为什么arduino代码中的数据出来很奇怪?

问题描述 投票:0回答:1

我想从传感器上获取数据(我使用的是 velostat)。这是我的代码。

Arduino代码

#define numRows 1
#define numCols 1

int rows_out = 13;
int cols_in = 12;
int Values = 0;

void setup() {
  // set all rows and columns to INPUT (high impedance):
  pinMode(rows_out, INPUT_PULLUP);
  pinMode(cols_in, INPUT);
  Serial.begin(9600);
}

void loop() {

  pinMode(cols_in, OUTPUT); // set as OUTPUT
  digitalWrite(cols_in, LOW); // set LOW

  Values = analogRead(rows_out); // read INPUT
  pinMode(cols_in, INPUT); // set back to INPUT!

  // Print the incoming values of the grid:
  Serial.println(Values);
  delay(1000);

}

我做了一个传感器与velostat。它有两根电缆,我把其中一根连接到arduino板的模拟引脚上,另一根连接到GND和其他模拟引脚上。另一根接GND和其他模拟引脚。

定速器电缆1-模拟针脚12

节流阀电缆2 - 模拟针脚13 - GND

但是当我上传这个程序时,串行显示器上出现了奇怪的数据。

串行显示器上显示的数据

4095
4095
4075
3283
3082
3056
2973
2941
2865
2685
2308
1859
1365

如果有人知道原因,请帮帮我。我猜是电缆的连接有问题,或者我接错了针,但我不确定。

arduino sensor
1个回答
0
投票

数据可能没有问题,你很可能跳过了校准步骤。

定速器测量压力,但根据用于制造传感器的材料,它的PressureIn-VoltageOut特性可能有很大差异。此外,即使是相同结构的传感器也会存在差异,因此,在需要精度的应用中,校准的必要性至关重要。

为了简单起见,我建议你假设一个线性特性,并进行以下3步校准。

  1. 当传感器上没有任何压力时,取10个值的平均值。这将是你的零点参考。我们将其参考为 X1.
  2. 用平均预期的压力压在速测器上,再平均测量10次。这将是你的 "开 "的参考,我们将它作为参考。X2. 这个ON值需要一个任意的数字等值。我选择了15。

在数学上,它看起来像:aX1 + b = 0 aX2 + b = 15。

  1. 一旦你解决了 ab,你的 真正 值将用:a*[measuerement]+b表示。

P.S.: 对不起,数学格式太可怕了,还不熟悉如何在markdown中很好地整合数学。

后来的编辑:可以通过在更多的测量值上取平均,并为第二个等式选取一个更大的任意值(以获得更多的粒度)来实现更高的精度。

© www.soinside.com 2019 - 2024. All rights reserved.