Fix charge power calculation and add pf measurements

This commit is contained in:
Carsten Schmiemann 2022-04-21 19:45:39 +02:00
parent 63dd1e92c8
commit 304d2219fe
1 changed files with 34 additions and 13 deletions

View File

@ -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;
}