Cell voltages fork (SoC)
Dependencies: CUER_CAN CUER_DS1820 LTC2943 LTC6804 mbed PowerControl
Diff: main.cpp
- Revision:
- 49:419985e0b2b1
- Parent:
- 47:62ba8c071a0f
- Child:
- 50:89f54b7a4c1b
--- a/main.cpp Sun Jul 23 10:33:53 2017 +0000 +++ b/main.cpp Mon Jul 24 19:00:57 2017 +0000 @@ -11,7 +11,7 @@ #include "PowerControl/PowerControl.h" #include "PowerControl/EthernetPowerControl.h" -#define DEBUG 0 +#define DEBUG 1 #define ACTIVE 0 #define INACTIVE 1 #define TRANSMIT_MODE 1 //Useful to allow testing CAN read on BCU. Leave as 1 for BMS (and CAN write) 0 for BCU read-mode @@ -133,13 +133,16 @@ //This is a slightly modified version of the Tritium BMS datasheet, to add an extra voltage reading set. msg = createVoltageTelemetry(repeating_unit_length*i+2, measurements.cell_voltages[i].voltages); can.write(msg); + wait(0.01); if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id); //+4 - 4 cell voltages sent per measurement, simple pointer arithmetic msg = createVoltageTelemetry(repeating_unit_length*i+3, measurements.cell_voltages[i].voltages + 4); can.write(msg); + wait(0.01); if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id); msg = createVoltageTelemetry(repeating_unit_length*i+4, measurements.cell_voltages[i].voltages + 8); can.write(msg); + wait(0.01); if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id); } @@ -148,6 +151,7 @@ if (temperature_counter == TEMPERATURE_MEASUREMENT_FREQ) { for(uint8_t i = 0; i < devices_found; i++) { + wait(0.01); individual_temperature tempreading = measurements.temperature_measurements[i]; msg = createTemperatureTelemetry(i, &tempreading.ROMID[0], tempreading.measurement); individual_temperature testOut = decodeTemperatureTelemetry(msg); @@ -161,34 +165,39 @@ // Create SOC CAN message msg = createPackSOC(measurements.SOC, measurements.percentage_SOC); can.write(msg); + wait(0.01); if (DEBUG) printf("SOC is %f and percentage SOC is %f and id is %d \r\n", measurements.SOC, measurements.percentage_SOC, msg.id); // Min/max cell voltages msg = createCellVoltageMAXMIN(measurements.max_cell_voltage, measurements.min_cell_voltage); can.write(msg); + wait(0.01); // Min/Max cell temperatures msg = createCellTemperatureMAXMIN(measurements.min_cell_temp, true); can.write(msg); + wait(0.01); msg = createCellTemperatureMAXMIN(measurements.max_cell_temp, false); can.write(msg); - wait(0.1); //WAITS ABSOLUTELY NECESSARY! values may be changed. Limit to how fast msg can be sent + wait(0.01); //WAITS ABSOLUTELY NECESSARY! values may be changed. Limit to how fast msg can be sent // Battery voltage and current msg = createBatteryVI(measurements.battery_voltage,measurements.battery_current); can.write(msg); + wait(0.01); if (DEBUG) printf("Sent Battery voltage %d and current %f with id %d \r\n",decodeBatteryVoltage(msg),decodeBatteryCurrent(msg),msg.id); //Extended battery pack status msg = createExtendedBatteryPackStatus(status); can.write(msg); - + wait(0.01); if (DEBUG) printf("Sent battery pack status with value %d \r\n", status); msg = createBMSHeartbeat(0, 0); can.write(msg); - + wait(0.01); msg = createIVTACurrent(measurements.ivta_current); can.write(msg); + wait(0.01); }