From bd95cbd7cc97dfc965f6f7d777480c59a1655f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20=C3=96ster?= Date: Thu, 12 Jun 2025 23:26:43 +0300 Subject: [PATCH] Simplify GPIO for secondary battery --- .../comm_contactorcontrol.cpp | 20 ++++--------------- Software/src/devboard/hal/hw_3LB.h | 6 +----- Software/src/devboard/hal/hw_devkit.h | 2 +- Software/src/devboard/hal/hw_lilygo.h | 3 ++- Software/src/devboard/hal/hw_stark.h | 1 + Software/src/devboard/webserver/webserver.cpp | 13 +++--------- 6 files changed, 12 insertions(+), 33 deletions(-) diff --git a/Software/src/communication/contactorcontrol/comm_contactorcontrol.cpp b/Software/src/communication/contactorcontrol/comm_contactorcontrol.cpp index b509a223..5180f884 100644 --- a/Software/src/communication/contactorcontrol/comm_contactorcontrol.cpp +++ b/Software/src/communication/contactorcontrol/comm_contactorcontrol.cpp @@ -82,27 +82,17 @@ void init_contactors() { set(PRECHARGE_PIN, OFF); #endif // CONTACTOR_CONTROL #ifdef CONTACTOR_CONTROL_DOUBLE_BATTERY - pinMode(SECOND_POSITIVE_CONTACTOR_PIN, OUTPUT); - set(SECOND_POSITIVE_CONTACTOR_PIN, OFF); - pinMode(SECOND_NEGATIVE_CONTACTOR_PIN, OUTPUT); - set(SECOND_NEGATIVE_CONTACTOR_PIN, OFF); + pinMode(SECOND_BATTERY_CONTACTORS_PIN, OUTPUT); + set(SECOND_BATTERY_CONTACTORS_PIN, OFF); #endif // CONTACTOR_CONTROL_DOUBLE_BATTERY // Init BMS contactor #if defined HW_STARK || defined HW_3LB // This hardware has dedicated pin, always enable on start pinMode(BMS_POWER, OUTPUT); //LilyGo is omitted from this, only enabled if user selects PERIODIC_BMS_RESET digitalWrite(BMS_POWER, HIGH); -#ifdef BMS_2_POWER //Hardware supports 2x BMS - pinMode(BMS_2_POWER, OUTPUT); - digitalWrite(BMS_2_POWER, HIGH); -#endif //BMS_2_POWER #endif // HW with dedicated BMS pins #if defined(PERIODIC_BMS_RESET) || defined(REMOTE_BMS_RESET) // User has enabled BMS reset, turn on output on start pinMode(BMS_POWER, OUTPUT); digitalWrite(BMS_POWER, HIGH); -#ifdef BMS_2_POWER //Hardware supports 2x BMS - pinMode(BMS_2_POWER, OUTPUT); - digitalWrite(BMS_2_POWER, HIGH); -#endif //BMS_2_POWER #endif //PERIODIC_BMS_RESET } @@ -226,12 +216,10 @@ void handle_contactors() { #ifdef CONTACTOR_CONTROL_DOUBLE_BATTERY void handle_contactors_battery2() { if ((contactorStatus == COMPLETED) && datalayer.system.status.battery2_allowed_contactor_closing) { - set(SECOND_NEGATIVE_CONTACTOR_PIN, ON); - set(SECOND_POSITIVE_CONTACTOR_PIN, ON); + set(SECOND_BATTERY_CONTACTORS_PIN, ON); datalayer.system.status.contactors_battery2_engaged = true; } else { // Closing contactors on secondary battery not allowed - set(SECOND_NEGATIVE_CONTACTOR_PIN, OFF); - set(SECOND_POSITIVE_CONTACTOR_PIN, OFF); + set(SECOND_BATTERY_CONTACTORS_PIN, OFF); datalayer.system.status.contactors_battery2_engaged = false; } } diff --git a/Software/src/devboard/hal/hw_3LB.h b/Software/src/devboard/hal/hw_3LB.h index 7d070726..8a808b9e 100644 --- a/Software/src/devboard/hal/hw_3LB.h +++ b/Software/src/devboard/hal/hw_3LB.h @@ -52,11 +52,7 @@ #define NEGATIVE_CONTACTOR_PIN 33 #define PRECHARGE_PIN 25 #define BMS_POWER 2 - -#define SECOND_POSITIVE_CONTACTOR_PIN 13 -#define SECOND_NEGATIVE_CONTACTOR_PIN 16 -#define SECOND_PRECHARGE_PIN 18 -#define BMS_2_POWER 12 +#define SECOND_BATTERY_CONTACTORS_PIN 13 // SMA CAN contactor pins #define INVERTER_CONTACTOR_ENABLE_PIN 36 diff --git a/Software/src/devboard/hal/hw_devkit.h b/Software/src/devboard/hal/hw_devkit.h index f028bbbc..107780ae 100644 --- a/Software/src/devboard/hal/hw_devkit.h +++ b/Software/src/devboard/hal/hw_devkit.h @@ -50,7 +50,7 @@ The pin layout below supports the following: #define POSITIVE_CONTACTOR_PIN GPIO_NUM_5 #define NEGATIVE_CONTACTOR_PIN GPIO_NUM_16 #define PRECHARGE_PIN GPIO_NUM_17 - +#define SECOND_BATTERY_CONTACTORS_PIN GPIO_NUM_32 // SMA CAN contactor pins #define INVERTER_CONTACTOR_ENABLE_PIN GPIO_NUM_14 diff --git a/Software/src/devboard/hal/hw_lilygo.h b/Software/src/devboard/hal/hw_lilygo.h index f560019d..6b2463e1 100644 --- a/Software/src/devboard/hal/hw_lilygo.h +++ b/Software/src/devboard/hal/hw_lilygo.h @@ -51,7 +51,8 @@ #define POSITIVE_CONTACTOR_PIN 32 #define NEGATIVE_CONTACTOR_PIN 33 #define PRECHARGE_PIN 25 -#define BMS_POWER 18 // Note, this pin collides with CAN add-ons and Chademo +#define BMS_POWER 18 // Note, this pin collides with CAN add-ons and Chademo +#define SECOND_BATTERY_CONTACTORS_PIN 15 //Note, this pin collides with SD card pins // Automatic precharging #define HIA4V1_PIN 25 diff --git a/Software/src/devboard/hal/hw_stark.h b/Software/src/devboard/hal/hw_stark.h index 9d098b62..4c91dbe0 100644 --- a/Software/src/devboard/hal/hw_stark.h +++ b/Software/src/devboard/hal/hw_stark.h @@ -50,6 +50,7 @@ GPIOs on extra header #define NEGATIVE_CONTACTOR_PIN 33 #define PRECHARGE_PIN 25 #define BMS_POWER 23 +#define SECOND_BATTERY_CONTACTORS_PIN 19 //Available as extra GPIO via pin header // Automatic precharging #define HIA4V1_PIN 19 //Available as extra GPIO via pin header diff --git a/Software/src/devboard/webserver/webserver.cpp b/Software/src/devboard/webserver/webserver.cpp index 6c55a316..49f2ae54 100644 --- a/Software/src/devboard/webserver/webserver.cpp +++ b/Software/src/devboard/webserver/webserver.cpp @@ -1338,8 +1338,8 @@ String processor(const String& var) { } content += ""; #ifdef CONTACTOR_CONTROL_DOUBLE_BATTERY - content += "

Cont. Neg.: "; #ifdef PWM_CONTACTOR_CONTROL + content += "

Cont. Neg.: "; if (datalayer.system.status.contactors_battery2_engaged) { content += "Economized"; content += " Cont. Pos.: "; @@ -1349,16 +1349,9 @@ String processor(const String& var) { content += " Cont. Pos.: "; content += ""; } - #else // No PWM_CONTACTOR_CONTROL , we can read the pin and see feedback. Helpful if channel overloaded - if (digitalRead(SECOND_NEGATIVE_CONTACTOR_PIN) == HIGH) { - content += ""; - } else { - content += ""; - } - - content += " Cont. Pos.: "; - if (digitalRead(SECOND_POSITIVE_CONTACTOR_PIN) == HIGH) { + content += "

Cont. Neg.: "; + if (digitalRead(SECOND_BATTERY_CONTACTORS_PIN) == HIGH) { content += ""; } else { content += "";