![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
Diff: main.cpp
- Revision:
- 2:94716229ecc3
- Parent:
- 1:51477fe4851b
- Child:
- 4:9050c5d6925e
--- a/main.cpp Fri Dec 30 16:01:59 2016 +0000 +++ b/main.cpp Fri Dec 30 16:04:10 2016 +0000 @@ -25,8 +25,9 @@ Timeout loop_delay; bool delay_finished = false; - -void loop_delay_callback(void) { + +void loop_delay_callback(void) +{ delay_finished = true; } @@ -40,7 +41,7 @@ current_EEPROM_address = read_EEPROM_startup(measurements); // Read from the eeprom at startup to fill in the values while (true) { - + // Take measurements from the sensors take_measurements(measurements); // Dont want to read the temperature sensors during each iteration of the loop @@ -64,7 +65,7 @@ transmit_data(measurements,status); // Conserve power - enter a low powered mode - delay_finished = false; + delay_finished = false; loop_delay.attach(loop_delay_callback, LOOP_DELAY_S); while (!delay_finished) sleep(); } @@ -86,17 +87,17 @@ // Min/max cell voltages createCellVoltageMAXMIN(measurements.max_cell_voltage, measurements.min_cell_voltage); - + // Min/Max cell temperature createCellTemperatureMAXMIN(measurements.min_cell_temp,measurements.max_cell_temp); - - // Battery voltage and current - // @TODO make add the voltage and current + + // Battery voltage and current + // @TODO make add the voltage and current createBatteryVI(measurements.battery_voltage,measurements.battery_current); - + //Extended battery pack status createExtendedBatteryPackStatus(status); - + } uint16_t read_EEPROM_startup(BMU_data &measurements) @@ -165,14 +166,13 @@ min_temperature = probe[0]->temperature('C'); max_temperature = min_temperature; // Initially set the max and min temperature equal for (int i=1; i<devices_found; i++) { - + measurements.temperature_measurements[i].ID = i; measurements.temperature_measurements[i].measurement = probe[i] ->temperature('C'); - + if(measurements.temperature_measurements[i].measurement > max_temperature) { max_temperature = measurements.temperature_measurements[i].measurement; - } - else if (measurements.temperature_measurements[i].measurement < min_temperature) { + } else if (measurements.temperature_measurements[i].measurement < min_temperature) { min_temperature = measurements.temperature_measurements[i].measurement; } } @@ -189,20 +189,15 @@ uint32_t check_measurements(BMU_data &measurements) { uint32_t status; - - if(measurements.max_cell_voltage.voltage > MAX_CELL_VOLTAGE) - { - status = status | CELL_OVER_VOLTAGE; - } - else if (measurements.min_cell_voltage.voltage < MIN_CELL_VOLTAGE) - { + + if(measurements.max_cell_voltage.voltage > MAX_CELL_VOLTAGE) { + status = status | CELL_OVER_VOLTAGE; + } else if (measurements.min_cell_voltage.voltage < MIN_CELL_VOLTAGE) { status = status | CELL_UNDER_VOLTAGE; - } - else if (measurements.max_cell_temp.temperature > MAX_CELL_TEMPERATURE) - { + } else if (measurements.max_cell_temp.temperature > MAX_CELL_TEMPERATURE) { status = status | CELL_OVER_TEMPERATURE; } - + /* @TODO also include errors for: *untrusted measurement @@ -214,7 +209,7 @@ void take_measurements(BMU_data &measurements) { - // Here collect all measured data from the sensors + // Here collect all measured data from the sensors /* TODO SOC and cell voltages */