如果我有功率,电流,电压值,我如何计算精确的能量
这是能量计算的代码,结果是错误的,所以我如何修正
我要测量表观能量,我在V,I,P值上没有问题
if(millis() >= energyLastSample + 1)
{
energySampleCount = energySampleCount + 1;
energyLastSample = millis();
}
if(energySampleCount >= 1000)
{
apparent_energy_l1 = apparent_power_l1/3600.0;
finalEnergyValue_l1 = finalEnergyValue_l1 + apparent_energy_l1;
apparent_energy_l2 = apparent_power_l2/3600.0;
finalEnergyValue_l2 = finalEnergyValue_l2 + apparent_energy_l2;
apparent_energy_l3 = apparent_power_l3/3600.0;
finalEnergyValue_l3 = finalEnergyValue_l3 + apparent_energy_l3;
// Serial.print(finalEnergyValue,2);
// Serial.println("test");
energySampleCount = 0 ;
}
energy_total= finalEnergyValue_l1+finalEnergyValue_l2+finalEnergyValue_l3;
}关于使用Arduino或任何微控制器、开源代码或项目的功率计算的一些技巧,解决我的问题的指南。
发布于 2022-03-27 08:32:32
请注意,能量( get )是一种随时间变化的功率度量,而功率是一种功的度量,这意味着您不能简单地将功率除以3600 (这将是从秒到小时转换的因子)来获得能量值。功率(W)是衡量一个设备目前正在做多少工作的指标。如果您想要计算设备消耗的能量,您将不得不连续测量电源,例如,在1s间隔内,并将其添加到计数器中。那么你就有了一个值,它代表Watt秒。然后,您可以从该值计算消耗的Wh。
示例:您有一个消耗300 W电源的设备。你让那个装置运行了整整三个小时。如果你像描述的那样,每秒钟测量一次电能消耗,你就会测量出3240000瓦秒。3240000 Ws / 3600 =900 kWh / 1000 = 0,9 kWh。当然,您可以更改您的测量间隔,以满足您在准确性方面的需要。
伪码:
if ( millis() >= lastmillis + 1000 )
{
lastmillis = millis();
wattseconds = wattseconds + power; #increment energy counter by current power
kilowatthours = wattseconds / 3600000;
print(kilowatthours)
}当然,您可以使用带有外部RTC的one second interrupt来获得更准确的计时。
https://stackoverflow.com/questions/71634437
复制相似问题