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 CUER

Files at this revision

API Documentation at this revision

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

CANParserBMU.cpp Show annotated file Show diff for this revision Revisions of this file
Data_Types_BMU.h Show annotated file Show diff for this revision Revisions of this file
LTC6804.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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()