mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-04 18:29:48 +02:00
Merge pull request #849 from dalathegreat/feature/byd-atto3-temperature-datalayer
BYD Atto3: Add 10 temperature sensors to datalayer
This commit is contained in:
commit
4a060b7109
4 changed files with 54 additions and 2 deletions
|
@ -135,9 +135,35 @@ void update_values_battery() { //This function maps all the values fetched via
|
|||
|
||||
datalayer.battery.status.cell_min_voltage_mV = BMS_lowest_cell_voltage_mV;
|
||||
|
||||
datalayer.battery.status.temperature_min_dC = BMS_lowest_cell_temperature * 10; // Add decimals
|
||||
#ifdef SKIP_TEMPERATURE_SENSOR_NUMBER
|
||||
// Initialize min and max variables for temperature calculation
|
||||
battery_calc_min_temperature = battery_daughterboard_temperatures[0];
|
||||
battery_calc_max_temperature = battery_daughterboard_temperatures[0];
|
||||
|
||||
// Loop through the array of 10x daughterboard temps to find the smallest and largest values
|
||||
// Note, it is possible for user to skip using a faulty sensor in the .h file
|
||||
if (SKIP_TEMPERATURE_SENSOR_NUMBER == 1) { //If sensor 1 is skipped, init minmax to sensor 2
|
||||
battery_calc_min_temperature = battery_daughterboard_temperatures[1];
|
||||
battery_calc_max_temperature = battery_daughterboard_temperatures[1];
|
||||
}
|
||||
for (int i = 1; i < 10; i++) {
|
||||
if (i == (SKIP_TEMPERATURE_SENSOR_NUMBER - 1)) {
|
||||
i++;
|
||||
}
|
||||
if (battery_daughterboard_temperatures[i] < battery_calc_min_temperature) {
|
||||
battery_calc_min_temperature = battery_daughterboard_temperatures[i];
|
||||
}
|
||||
if (battery_daughterboard_temperatures[i] > battery_calc_max_temperature) {
|
||||
battery_calc_max_temperature = battery_daughterboard_temperatures[i];
|
||||
}
|
||||
}
|
||||
//Write the result to datalayer
|
||||
datalayer.battery.status.temperature_min_dC = battery_calc_min_temperature * 10;
|
||||
datalayer.battery.status.temperature_max_dC = battery_calc_max_temperature * 10;
|
||||
#else //User does not need filtering out a broken sensor, just use the min-max the BMS sends
|
||||
datalayer.battery.status.temperature_min_dC = BMS_lowest_cell_temperature * 10;
|
||||
datalayer.battery.status.temperature_max_dC = BMS_highest_cell_temperature * 10;
|
||||
#endif //!SKIP_TEMPERATURE_SENSOR_NUMBER
|
||||
|
||||
// Update webserver datalayer
|
||||
datalayer_extended.bydAtto3.SOC_method = SOC_method;
|
||||
|
@ -147,6 +173,16 @@ void update_values_battery() { //This function maps all the values fetched via
|
|||
datalayer_extended.bydAtto3.SOC_polled = BMS_SOC;
|
||||
datalayer_extended.bydAtto3.voltage_periodic = battery_voltage;
|
||||
datalayer_extended.bydAtto3.voltage_polled = BMS_voltage;
|
||||
datalayer_extended.bydAtto3.battery_temperatures[0] = battery_daughterboard_temperatures[0];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[1] = battery_daughterboard_temperatures[1];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[2] = battery_daughterboard_temperatures[2];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[3] = battery_daughterboard_temperatures[3];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[4] = battery_daughterboard_temperatures[4];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[5] = battery_daughterboard_temperatures[5];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[6] = battery_daughterboard_temperatures[6];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[7] = battery_daughterboard_temperatures[7];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[8] = battery_daughterboard_temperatures[8];
|
||||
datalayer_extended.bydAtto3.battery_temperatures[9] = battery_daughterboard_temperatures[9];
|
||||
}
|
||||
|
||||
void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
#define MAXPOWER_CHARGE_W 10000
|
||||
#define MAXPOWER_DISCHARGE_W 10000
|
||||
|
||||
//Uncomment and configure this line, if you want to filter out a broken temperature sensor (1-10)
|
||||
//Make sure you understand risks associated with disabling. Values can be read via "More Battery info"
|
||||
//#define SKIP_TEMPERATURE_SENSOR_NUMBER 1
|
||||
|
||||
/* Do not modify the rows below */
|
||||
#define BATTERY_SELECTED
|
||||
#define MAX_PACK_VOLTAGE_DV 4410 //5000 = 500.0V
|
||||
|
|
|
@ -181,7 +181,9 @@ typedef struct {
|
|||
/** uint16_t */
|
||||
/** Voltage polled OBD2*/
|
||||
uint16_t voltage_polled = 0;
|
||||
|
||||
/** int16_t */
|
||||
/** All the temperature sensors inside the battery pack*/
|
||||
int16_t battery_temperatures[10];
|
||||
} DATALAYER_INFO_BYDATTO3;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -469,6 +469,16 @@ String advanced_battery_processor(const String& var) {
|
|||
content += "<h4>SOC OBD2: " + String(datalayer_extended.bydAtto3.SOC_polled) + "</h4>";
|
||||
content += "<h4>Voltage periodic: " + String(datalayer_extended.bydAtto3.voltage_periodic) + "</h4>";
|
||||
content += "<h4>Voltage OBD2: " + String(datalayer_extended.bydAtto3.voltage_polled) + "</h4>";
|
||||
content += "<h4>Temperature sensor 1: " + String(datalayer_extended.bydAtto3.battery_temperatures[0]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 2: " + String(datalayer_extended.bydAtto3.battery_temperatures[1]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 3: " + String(datalayer_extended.bydAtto3.battery_temperatures[2]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 4: " + String(datalayer_extended.bydAtto3.battery_temperatures[3]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 5: " + String(datalayer_extended.bydAtto3.battery_temperatures[4]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 6: " + String(datalayer_extended.bydAtto3.battery_temperatures[5]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 7: " + String(datalayer_extended.bydAtto3.battery_temperatures[6]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 8: " + String(datalayer_extended.bydAtto3.battery_temperatures[7]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 9: " + String(datalayer_extended.bydAtto3.battery_temperatures[8]) + "</h4>";
|
||||
content += "<h4>Temperature sensor 10: " + String(datalayer_extended.bydAtto3.battery_temperatures[9]) + "</h4>";
|
||||
#endif //BYD_ATTO_3_BATTERY
|
||||
|
||||
#ifdef TESLA_BATTERY
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue