Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用arduino计算皮托管风速_Arduino_Arduino Uno_Pressure - Fatal编程技术网

用arduino计算皮托管风速

用arduino计算皮托管风速,arduino,arduino-uno,pressure,Arduino,Arduino Uno,Pressure,尝试使用皮托管MPXV7002DP计算风速。 我们从传感器获得动态压力,然后应用伯努利方程: pd = dynamic pressure air density = 1.225kg/m^3 windspeed = sqrt(2*Pd/air density) 我们使用的是Arduino UNO 我们认为从传感器读取压力存在问题 我们不知道如何得到正确的值 #包括 浮点输出=0; 无效设置(){ Serial.begin(9600); } void loop(){ 浮子传感器值=模拟读数(A0)

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

pd = dynamic pressure
air density = 1.225kg/m^3
windspeed = sqrt(2*Pd/air density)
我们使用的是Arduino UNO

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

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

#包括
浮点输出=0;
无效设置(){
Serial.begin(9600);
}
void loop(){
浮子传感器值=模拟读数(A0);
输出=sqrt((2*传感器值)/1.225);
Serial.println(输出);
连续打印(“m/s”);
延迟(100);
}

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

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

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

我之所以说“周围”,是因为很明显,该设备的响应有相当大的斜率——至少正负.5V或.2kPa!(换句话说,0kPa可以读取462到562之间的任何位置。)

您应该将analogRead值从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;
  }
}
result=analogRead(A0);
如果(结果<102){
kPa=-2.0;
}否则{
如果(结果>921){
kPa=2.0;
}否则{
kPa=map(结果102921,-20002000)/1000.0;
}
}

请在评论中告诉我,如果我把事情搞砸了,我会设法解决它。这完全没有能够实际编译/测试的好处

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

analogRead
返回一个介于0和1023之间的值。它不会返回精确的动态压力。是的,我认为这就是问题所在,但是我如何从模拟读数计算动态压力呢。谢谢你,谢谢。我会尝试用它来获得压强,然后把它和风速公式结合起来。一旦我开始工作,我会让你知道我们已经使用了你告诉我们的反馈,从传感器获取压力。但当我们应用伯努利方程时,为了得到风速,我们得到的速度值约为14.5m/s。读了你说的kPa之后。我们正在这样做***浮动Pa=kPa*1000;输出=sqrt((2*Pa)/1.225);串行打印(输出-14.0);序列号。打印号(“m/s”);***我们正在检查传感器的数据表,但我们没有;我不知道这个传递函数的用途是什么。我认为我们需要考虑传感器读取的误差。反向计算,结果是.128kPa,这当然在传感器的误差范围内。我没有仔细阅读数据表的细节,但如果有关于如何补偿温度(传感器误差的最常见来源)以获得更准确读数的细节,我也不会感到惊讶。