-
Notifications
You must be signed in to change notification settings - Fork 161
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8bab9c5
commit 7767d39
Showing
5 changed files
with
143 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
#include "TEST-FAKE-BATTERY.h" | ||
#include "../lib/miwagner-ESP32-Arduino-CAN/CAN_config.h" | ||
#include "../lib/miwagner-ESP32-Arduino-CAN/ESP32CAN.h" | ||
|
||
/* Do not change code below unless you are sure what you are doing */ | ||
static unsigned long previousMillis10 = 0; // will store last time a 10ms CAN Message was send | ||
static unsigned long previousMillis100 = 0; // will store last time a 100ms CAN Message was send | ||
static unsigned long previousMillis10s = 0; // will store last time a 1s CAN Message was send | ||
static const int interval10 = 10; // interval (ms) at which send CAN Messages | ||
static const int interval100 = 100; // interval (ms) at which send CAN Messages | ||
static const int interval10s = 10000; // interval (ms) at which send CAN Messages | ||
|
||
void print_units(char* header, int value, char* units) { | ||
Serial.print(header); | ||
Serial.print(value); | ||
Serial.print(units); | ||
} | ||
|
||
void update_values_test_battery() { /* This function puts fake values onto the parameters sent towards the inverter */ | ||
bms_status = ACTIVE; //Always be in Active mode | ||
|
||
LEDcolor = GREEN; | ||
|
||
SOC = 5000; // 50.00% | ||
|
||
StateOfHealth = 9900; // 99.00% | ||
|
||
battery_voltage = 3700; // 370.0V | ||
|
||
battery_current = 0; // 0 A | ||
|
||
capacity_Wh = 30000; // 30kWh | ||
|
||
remaining_capacity_Wh = 15000; // 15kWh | ||
|
||
cell_max_voltage = 3750; | ||
|
||
cell_min_voltage = 3730; | ||
|
||
stat_batt_power = 0; // 0W | ||
|
||
temperature_min = 50; // 5.0*C | ||
|
||
temperature_max = 60; // 6.0*C | ||
|
||
max_target_discharge_power = 5000; // 5kW | ||
|
||
max_target_charge_power = 5000; // 5kW | ||
|
||
/*Finally print out values to serial if configured to do so*/ | ||
#ifdef DEBUG_VIA_USB | ||
Serial.println("FAKE Values going to inverter"); | ||
print_units("SOH%: ", (StateOfHealth * 0.01), "% "); | ||
print_units(", SOC%: ", (SOC * 0.01), "% "); | ||
print_units(", Voltage: ", (battery_voltage * 0.1), "V "); | ||
print_units(", Max discharge power: ", max_target_discharge_power, "W "); | ||
print_units(", Max charge power: ", max_target_charge_power, "W "); | ||
print_units(", Max temp: ", (temperature_max * 0.1), "°C "); | ||
print_units(", Min temp: ", (temperature_min * 0.1), "°C "); | ||
print_units(", Max cell voltage: ", cell_max_voltage, "mV "); | ||
print_units(", Min cell voltage: ", cell_min_voltage, "mV "); | ||
Serial.println(""); | ||
#endif | ||
} | ||
|
||
void receive_can_test_battery(CAN_frame_t rx_frame) { | ||
switch (rx_frame.MsgID) { | ||
case 0xABC: | ||
break; | ||
default: | ||
break; | ||
} | ||
} | ||
void send_can_test_battery() { | ||
unsigned long currentMillis = millis(); | ||
// Send 100ms CAN Message | ||
if (currentMillis - previousMillis100 >= interval100) { | ||
previousMillis100 = currentMillis; | ||
// Put fake messages here incase you want to test sending CAN | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#ifndef TEST_FAKE_BATTERY_H | ||
#define TEST_FAKE_BATTERY_H | ||
#include <Arduino.h> | ||
#include "../../USER_SETTINGS.h" | ||
#include "../lib/miwagner-ESP32-Arduino-CAN/ESP32CAN.h" | ||
|
||
#define ABSOLUTE_MAX_VOLTAGE \ | ||
4040 // 404.4V,if battery voltage goes over this, charging is not possible (goes into forced discharge) | ||
#define ABSOLUTE_MIN_VOLTAGE 3100 // 310.0V if battery voltage goes under this, discharging further is disabled | ||
|
||
// These parameters need to be mapped for the inverter | ||
extern uint16_t SOC; //SOC%, 0-100.00 (0-10000) | ||
extern uint16_t StateOfHealth; //SOH%, 0-100.00 (0-10000) | ||
extern uint16_t battery_voltage; //V+1, 0-500.0 (0-5000) | ||
extern uint16_t battery_current; //A+1, Goes thru convert2unsignedint16 function (5.0A = 50, -5.0A = 65485) | ||
extern uint16_t capacity_Wh; //Wh, 0-60000 | ||
extern uint16_t remaining_capacity_Wh; //Wh, 0-60000 | ||
extern uint16_t max_target_discharge_power; //W, 0-60000 | ||
extern uint16_t max_target_charge_power; //W, 0-60000 | ||
extern uint16_t bms_status; //Enum, 0-5 | ||
extern uint16_t bms_char_dis_status; //Enum, 0-2 | ||
extern uint16_t stat_batt_power; //W, Goes thru convert2unsignedint16 function (5W = 5, -5W = 65530) | ||
extern uint16_t temperature_min; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) | ||
extern uint16_t temperature_max; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) | ||
extern uint16_t cell_max_voltage; //mV, 0-4350 | ||
extern uint16_t cell_min_voltage; //mV, 0-4350 | ||
extern uint8_t batteryAllowsContactorClosing; //Bool, 1=true, 0=false | ||
extern uint8_t LEDcolor; //Enum, 0-2 | ||
// Definitions for bms_status | ||
#define STANDBY 0 | ||
#define INACTIVE 1 | ||
#define DARKSTART 2 | ||
#define ACTIVE 3 | ||
#define FAULT 4 | ||
#define UPDATING 5 | ||
// LED colors | ||
#define GREEN 0 | ||
#define YELLOW 1 | ||
#define RED 2 | ||
#define BLUE 3 | ||
|
||
void update_values_test_battery(); | ||
void receive_can_test_battery(CAN_frame_t rx_frame); | ||
void send_can_test_battery(); | ||
|
||
#endif |