如果我有功率、电流、电压值,我如何计算准确的能量
这是能量计算的代码,结果是错误的,所以我如何修复
我想测量表观能量,我对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或任何微控制器进行功率计算的一些提示,开源代码或项目,解决我的问题的指导方针
请注意,能量(W x t(是功率随时间变化的度量,而功率是功的度量,这意味着你不能简单地将功率除以3600(这将是从秒转换为小时的因子(来获得能量值。功率(W(是对设备当前工作量的测量。如果你想计算设备消耗的能量,你必须连续测量功率,例如以1s为间隔,并将其添加到计数器中。然后你有一个值,它代表W-瓦特秒。然后,您可以根据该值计算消耗的Wh。
示例:您的设备耗电300W。你让这个设备运行整整3个小时。如果按说明测量每秒的功耗,则测量值为3240000瓦。3240000瓦/3600=900Wh/1000=0.9千瓦时。当然,您可以更改测量间隔,以满足您在准确性方面的需求。
伪码:
if ( millis() >= lastmillis + 1000 )
{
lastmillis = millis();
wattseconds = wattseconds + power; #increment energy counter by current power
kilowatthours = wattseconds / 3600000;
print(kilowatthours)
}
当然,您可以使用带有外部RTC的1秒中断来获得更准确的计时。