Fix charge power calculation and add pf measurements
This commit is contained in:
parent
63dd1e92c8
commit
304d2219fe
|
@ -178,23 +178,45 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
|
|||
}
|
||||
case 0x300D: { // AC input current
|
||||
StandardMetrics.ms_v_charge_current->SetValue((float) (CAN_UINT(0) * 0.1), Amps);
|
||||
//Power factor measured with simple power meter, using later a Janitza UMG512 Class A power analyser to get more precision
|
||||
if (StandardMetrics.ms_v_charge_current->AsFloat() > 30.0f) {
|
||||
ACInputPowerFactor = 0.9;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 25.0f) {
|
||||
ACInputPowerFactor = 0.8;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 20.0f) {
|
||||
ACInputPowerFactor = 0.7;
|
||||
//Power factor measured with a Janitza UMG512 Class A power analyser to get more precision
|
||||
//Only three phases measurement at the moment
|
||||
if (StandardMetrics.ms_v_charge_current->AsFloat() > 19.0f) {
|
||||
ACInputPowerFactor = 1.0;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 18.0f) {
|
||||
ACInputPowerFactor = 0.997;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 17.0f) {
|
||||
ACInputPowerFactor = 0.99;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 16.0f) {
|
||||
ACInputPowerFactor = 0.978;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 15.0f) {
|
||||
ACInputPowerFactor = 0.948;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 14.0f) {
|
||||
ACInputPowerFactor = 0.931;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 13.0f) {
|
||||
ACInputPowerFactor = 0.916;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 12.0f) {
|
||||
ACInputPowerFactor = 0.902;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 11.0f) {
|
||||
ACInputPowerFactor = 0.888;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 10.0f) {
|
||||
ACInputPowerFactor = 0.6;
|
||||
ACInputPowerFactor = 0.905;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 9.0f) {
|
||||
ACInputPowerFactor = 0.929;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 8.0f) {
|
||||
ACInputPowerFactor = 0.5;
|
||||
ACInputPowerFactor = 0.901;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() > 7.0f) {
|
||||
ACInputPowerFactor = 0.1;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() < 6.0f) {
|
||||
ACInputPowerFactor = 0.775;
|
||||
} else if (StandardMetrics.ms_v_charge_current->AsFloat() < 6.0f && StandardMetrics.ms_v_charge_inprogress->AsBool(false)) {
|
||||
ACInputPowerFactor = 0.05;
|
||||
ESP_LOGE(TAG, "Warning charge current too low, charging not possible");
|
||||
}
|
||||
if (mt_main_phases_num->AsFloat() == 3 && StandardMetrics.ms_v_charge_inprogress->AsBool(false)) {
|
||||
StandardMetrics.ms_v_charge_power->SetValue((StandardMetrics.ms_v_charge_current->AsFloat() * StandardMetrics.ms_v_charge_voltage->AsFloat() * ACInputPowerFactor * 1.732f) * 0.001, kW);
|
||||
} else if (mt_main_phases_num->AsFloat() == 2 || mt_main_phases_num->AsFloat() == 1) {
|
||||
StandardMetrics.ms_v_charge_power->SetValue((StandardMetrics.ms_v_charge_current->AsFloat() * StandardMetrics.ms_v_charge_voltage->AsFloat() * ACInputPowerFactor) * 0.001, kW);
|
||||
} else {
|
||||
StandardMetrics.ms_v_charge_power->SetValue(0);
|
||||
}
|
||||
StandardMetrics.ms_v_charge_power->SetValue((float) (StandardMetrics.ms_v_charge_current->AsFloat() * StandardMetrics.ms_v_charge_voltage->AsFloat() * mt_main_phases_num->AsFloat() * ACInputPowerFactor), kW);
|
||||
//ESP_LOGD(TAG, "300D EVC mt_main_current: %f", (CAN_UINT(0) * 0.1));
|
||||
break;
|
||||
}
|
||||
|
@ -220,7 +242,6 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
|
|||
}
|
||||
case 0x2B8A: { // AC mains voltage
|
||||
StandardMetrics.ms_v_charge_voltage->SetValue((float) (CAN_UINT(0) * 0.5), Volts);
|
||||
StandardMetrics.ms_v_charge_power->SetValue((float) (StandardMetrics.ms_v_charge_current->AsFloat() * StandardMetrics.ms_v_charge_voltage->AsFloat() * mt_main_phases_num->AsFloat() * ACInputPowerFactor), kW);
|
||||
//ESP_LOGD(TAG, "2B8A EVC ms_v_charge_voltage: %f", (CAN_UINT(0) * 0.5));
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue