Embedded 从模拟数据获取燃油百分比

Embedded 从模拟数据获取燃油百分比,embedded,adc,Embedded,Adc,我从燃油表中获取模拟电压数据,单位为mV。如下所述,燃油表每改变10%就读取校准读数: 0% - 2000mV 10% - 2100mV 20% - 3200mV 30% - 3645mV 40% - 3755mV 50% - 3922mV 60% - 4300mV 70% - 4500mv 80% - 5210mV 90% - 5400mV 100% - 5800mV 油箱容量为45升 校准后,我从adc获取读数,比如说,3000mV。如何计算油箱中剩余燃油的准确百分比 如果绘制ADC读数的

我从燃油表中获取模拟电压数据,单位为mV。如下所述,燃油表每改变10%就读取校准读数:

0% - 2000mV
10% - 2100mV
20% - 3200mV
30% - 3645mV
40% - 3755mV
50% - 3922mV
60% - 4300mV
70% - 4500mv
80% - 5210mV
90% - 5400mV
100% - 5800mV
油箱容量为45升


校准后,我从
adc
获取读数,比如说,3000mV。如何计算油箱中剩余燃油的准确百分比

如果绘制ADC读数的传递函数与储罐内容物的百分比相对应,则会得到如下图形

在传感器和测量量之间的关系中似乎存在相当程度的非线性。这可能是由于执行校准时产生的测量误差,也可能是传感器读数和储罐内容物之间的真正非线性关系。由于传递函数的非线性,使用这些结果将给出相当不准确的储罐内容物估计

如果该关系是线性的或可以由另一个数学关系描述,则可以使用该数学关系在已知点之间执行插值

如果关系不是线性的,则校准数据中需要更多的已知点,以便将点之间插值产生的误差降至最低

与ADC读数相对应的百分比值可通过在已读取读数的上方和下方找到校准中的条目来近似-对于问题中的ADC读数示例,这些将是10%和20%的值

Interpolation_Proportion = (ADC - ADC_Below) / (ADC_Above - ADC_Below) ;    
Percent = Percent_Below + (Interpolation_Proportion * (Percent_Above - Percent_Below)) ;


如果将ADC读数的传递函数绘制为储罐内容物的百分比,则会得到如下图形

在传感器和测量量之间的关系中似乎存在相当程度的非线性。这可能是由于执行校准时产生的测量误差,也可能是传感器读数和储罐内容物之间的真正非线性关系。由于传递函数的非线性,使用这些结果将给出相当不准确的储罐内容物估计

如果该关系是线性的或可以由另一个数学关系描述,则可以使用该数学关系在已知点之间执行插值

如果关系不是线性的,则校准数据中需要更多的已知点,以便将点之间插值产生的误差降至最低

与ADC读数相对应的百分比值可通过在已读取读数的上方和下方找到校准中的条目来近似-对于问题中的ADC读数示例,这些将是10%和20%的值

Interpolation_Proportion = (ADC - ADC_Below) / (ADC_Above - ADC_Below) ;    
Percent = Percent_Below + (Interpolation_Proportion * (Percent_Above - Percent_Below)) ;


绘制时,数据id似乎大致呈线性,带有一些异常值。这很可能是实验误差,或者可能受到混杂因素的影响,例如电噪声或温度变化,甚至仅仅是液体在周围倾斜!如果没有关于数据收集方式和仔细程度的细节,就无法确定,但我想问的是,每次测量采集了多少样本,这些样本是平均的还是瞬时的,结果是否可以在多个实验中准确重复

假设结果仅为“指示性”结果,那么从数据来看,最明智的做法可能是假设传递函数是线性的,并从测试数据的散点图执行线性回归。使用任何电子表格图表“趋势线”功能都可以轻松完成:

从您的日期起,传递函数为:

Fuel% = (0.0262 x SensormV) - 54.5
以3000mV为例,
Fuel%=(0.0262 x 3000)-54.5
=24.1%


对于您的45L油箱,相当于约10.8升

绘制时,数据id似乎大致呈线性,带有一些异常值。这很可能是实验误差,或者可能受到混杂因素的影响,例如电噪声或温度变化,甚至仅仅是液体在周围倾斜!如果没有关于数据收集方式和仔细程度的细节,就无法确定,但我想问的是,每次测量采集了多少样本,这些样本是平均的还是瞬时的,结果是否可以在多个实验中准确重复

假设结果仅为“指示性”结果,那么从数据来看,最明智的做法可能是假设传递函数是线性的,并从测试数据的散点图执行线性回归。使用任何电子表格图表“趋势线”功能都可以轻松完成:

从您的日期起,传递函数为:

Fuel% = (0.0262 x SensormV) - 54.5
以3000mV为例,
Fuel%=(0.0262 x 3000)-54.5
=24.1%


对于您的45L油箱,相当于约10.8升

哇!感谢您以如此清晰的方式解释这一点。我还不够感激。让我试试。哇!感谢您以如此清晰的方式解释这一点。我还不够感激。让我试试。这是一个统计问题,而不是编程问题。为了使其成为编程的一部分,您可以(用一些代码)指示您是如何读取ADC的-单个瞬时值可能不够-可能需要某种样本平均或信号调节。此外,如果您想要的结果以%为单位,那么首先将ADC读数转换为mV是没有意义的-绘图ADC与燃油油位-电压无关,转换只会引入不必要且可避免的舍入误差。这是一个统计问题,而不是编程问题。为了使其成为编程的一部分,您可以(用一些代码)指示您是如何读取ADC的-单个瞬时值可能不够-可能需要某种样本平均或信号调节。此外,如果您想要的结果以%为单位,那么第一次翻译就没有意义了