Has base BMU code but sends dummy temperature and voltage readings to test CAN
Dependencies: CUER_CAN DS1820 LTC2943 LTC6804 mbed
Fork of BMS_BMUCore_Max by
Revision 9:82ba050a7e13, committed 2017-02-11
- Comitter:
- msharma97
- Date:
- Sat Feb 11 16:09:20 2017 +0000
- Parent:
- 8:51f0a0f8c975
- Child:
- 10:1079f8e52d65
- Commit message:
- nah mate
Changed in this revision
--- a/CANParserBMU.cpp Sat Feb 11 14:58:28 2017 +0000 +++ b/CANParserBMU.cpp Sat Feb 11 16:09:20 2017 +0000 @@ -23,11 +23,11 @@ return msg; } -CANMessage createVoltageTelemetry(int ID, uint16_t voltage[]) +CANMessage createVoltageTelemetry(int offset_id, uint16_t voltage[]) { CANMessage msg; msg.len = 8; - msg.id = BMS_BASE_ID + ID; // for voltage 0x601 - 0x6EF @TODO + msg.id = BMS_BASE_ID + offset_id; // for voltage 0x601 - 0x6EF @TODO CAN_Data data; data.set_u16(0, voltage[0]);
--- a/Data_Types_BMU.h Sat Feb 11 14:58:28 2017 +0000 +++ b/Data_Types_BMU.h Sat Feb 11 16:09:20 2017 +0000 @@ -6,6 +6,7 @@ #include "mbed.h" #define NO_CMUS 1 +#define NO_READINGS_PER_CMU 12 #define NO_TEMPERATURE_SENSORS 50 // CAN pins @@ -50,8 +51,13 @@ // Structure that contains voltage information suitable for CAN bus uint8_t ID; // CMU serial number uint8_t CMU_number; // Number CMU's from 0-(N-1) (N is number of CMU's) it will aid CAN communications the ID and CMU number may be the same not sure yet + + //to be removed uint16_t first_cell_voltages[4]; // Split the cell voltages up easier to send over CAN - uint16_t last_cell_voltages[4]; + uint16_t last_cell_voltages[4]; + + //this now + int voltages[NO_READINGS_PER_CMU]; }; struct pack_voltage_extremes{
--- a/LTC6804.lib Sat Feb 11 14:58:28 2017 +0000 +++ b/LTC6804.lib Sat Feb 11 16:09:20 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/maxv008/code/LTC6804/#5163dda740af +http://developer.mbed.org/teams/CUER/code/LTC6804/#5163dda740af
--- a/main.cpp Sat Feb 11 14:58:28 2017 +0000 +++ b/main.cpp Sat Feb 11 16:09:20 2017 +0000 @@ -9,6 +9,8 @@ #include "State_Of_Charge.h" #include "SPI_I2C_Parser.h" + + using namespace CAN_IDs; // Function definitions @@ -75,13 +77,27 @@ void transmit_data(BMU_data measurements, uint32_t status) { + CANMessage msg; /* Place all of the collected data onto the CAN bus */ // Send cell voltages + //voltages sent in sets of 4 + one cmy data set + int repeating_unit_length = NO_READINGS_PER_CMU /4 + 1; for(int i= 0; i < NO_CMUS; i++) { - createVoltageTelemetry(i + 2 , measurements.cell_voltages[i].first_cell_voltages); - createVoltageTelemetry(i + 3, measurements.cell_voltages[i].last_cell_voltages); + //createVoltageTelemetry(i + 2 , measurements.cell_voltages[i].first_cell_voltages); + //createVoltageTelemetry(i + 3, measurements.cell_voltages[i].last_cell_voltages); + //input id is offset, data structure is info, voltage, voltage, ...... + // + msg = createVoltageTelemetry(repeating_unit_length*i+2, measures.cell_voltages[i].voltages); + can.write(msg); + //+4 - 4 cell voltages sent per measurement + msg = createVoltageTelemetry(repeating_unit_length*i+3, measures.cell_voltages[i].voltages + 4); + can.write(msg); + msg = createVoltageTelemetry(repeating_unit_length*i+4, measures.cell_voltages[i].voltages + 8); + can.write(msg); + + } // Create SOC CAN message @@ -231,6 +247,13 @@ measurements.percentage_SOC = ltc2943.accumulatedCharge(); measurements.SOC = (measurements.percentage_SOC /100) * BATTERY_CAPACITY; + for(int i=0; i<NO_CMUS; i++){ + for(int j=0; j<12; j++){ + measurements.cell_voltages[i][j] = cellvoltages[i][j] / 10; + } + } + + } void init()