【问题标题】:Calculating wind speed with pitot tube using arduino使用arduino用皮托管计算风速
【发布时间】:2017-05-16 16:41:07
【问题描述】:

尝试使用皮托管 MPXV7002DP 计算风速。
我们从传感器获取动态压力,然后应用伯努利方程:

pd = dynamic pressure
air density = 1.225kg/m^3
windspeed = sqrt(2*Pd/air density)

我们使用的是 Arduino UNO。

我们认为从传感器读取压力存在问题。

我们不知道如何获得正确的值。

#include <SoftwareSerial.h>

float Output=0;
void setup() {
  Serial.begin(9600);
}
void loop() {  
   float sensorValue = analogRead(A0); 
   output=sqrt((2*sensorValue)/1.225);
   Serial.println(output);
   Serial.print("m/s");
   delay(100);
}

【问题讨论】:

  • analogRead 返回一个介于 0 和 1023 之间的值。它不返回精确的动态压力。
  • 是的,我认为这是问题所在,但我如何从模拟读数计算动态压力。谢谢

标签: arduino arduino-uno pressure


【解决方案1】:

正如一位评论者指出的,analogRead 的返回值是 0-1023 之间的整数。这是引脚 A0 上电压的缩放比例,从 0 到比较电压。 (如果您使用的是 5V Arduino,则 1023 为 5V。3V Arduino,1023 为 3V。看起来您正在做任何复杂的事情来改变您用作比较电压的电压,所以这应该是准确的.)

我将假设您使用 5V,因为这是您的传感器使用的。

您需要做的是查看您设备的data sheet,以确定压力和电压之间的关系。看看这张表,你在这里有一个复杂的错误,但从第 5 页的图表中,看起来你可以假设 0.5V(大约 102 的模拟读数)是 -2kPa 的压力和 4.5V(大约 921 的模拟读数) ) 是 2kPa 的压力。你很幸运,缩放是线性的。

我说“周围”是因为很明显该设备的响应有相当多的偏差 - 至少正负 0.5V 或 0.2kPa! (换句话说,0kPa 可以读取 462 到 562 之间的任何值。)

您应该将模拟读取值从 0-102 映射到 -2kPa,从 921-1023 映射到 2kPa,并且介于两者之间的所有值都应该是 -2 到 2 之间的 lerp。我面前没有 arduino,所以我无法尝试,但应该是这样的:

result = analogRead(A0);
if (result < 102) {
  kPa = -2.0;
} else {
  if (result > 921) {
    kPa = 2.0;
  } else { 
    kPa = map(result, 102, 921, -2000, 2000)/1000.0;
  }
}

如果我在 cmets 中搞砸了,请告诉我,我会考虑修复它。这一切都没有能够实际编译/测试的好处。 =]

【讨论】:

  • 非常感谢。我将尝试使用它来获取压力,然后将其与风速公式结合起来。一旦我开始工作,我会告诉你反馈
  • 我们已经使用了您告诉我们的内容来获取传感器的压力。但是当我们应用伯努利方程时,为了得到风速,我们得到的速度值约为 14.5m/s。按照您所说的阅读kPa后。我们正在这样做 *** float Pa = kPa*1000;输出=sqrt((2*Pa)/1.225);串行打印(输出-14.0); Serial.println("m/s"); *** 我们正在检查传感器的数据表,但我们不知道此传递函数的用途。我认为我们需要考虑传感器读取的错误。
  • 向后计算,得出 0.128kPa,这肯定在传感器的误差范围内。我没有仔细阅读数据表的详细信息,但如果其中有关于如何补偿温度(传感器误差的最常见来源)以获得更准确读数的详细信息,我不会感到惊讶。
【解决方案2】:

当您在伯努利方程中提到动态压力 pd 时,我想您是指总压力和静态压力之间的差,因为空速 V 等于:V = sqrt(2 * (p_total - p_static) / airdensity) ,所以你的 pd 应该是 (p_dynamic - p_static)。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2017-05-31
    • 2012-03-18
    相关资源
    最近更新 更多