...
Description | BMS Carrier Firmware | |
---|---|---|
Target release | MSXIV | |
Epic | ||
Document owner | Arshan Khanifaress Muir | |
Project leads | ||
Team members | Arshan Khanifar |
Goals / Background / Strategic Fit / Requirements
...
- Kill Switch flipped (?)
- AFE Under/Over volt
- Disconnect relay
Block Diagram
...
Revised Block Diagram
Design Notes
- Main initializes killswitch, current_sense, battery_heartbeat, cell_sense, and fan_control.
- Killswitch, current_sense, and cell_sense need direct access to battery_heartbeat in order to quickly raise or clear faults.
Detailed Design / Modules
Main
- Initializes other modules, initializes CAN and other modules
- Stores most updated measurements
- Current
- Cell voltages
- Cell temps
- Relay state
- Fan speed
Killswitch
- Initializes a debounced GPIO pin to handle killswitch presses
- Exposes init
- Battery_heartbeat
- Periodically transmits battery status and receives acks
- Exposes ability to raise and clear faults based on a bitset, and init
- Opens relays in case of fault and updates relay state
- Relay_control
- Statically sets relay state, updates stored state, and returns whether the relay state set was successful.
- Exposes set_relay_state
- Current_sense
- Registers an interrupt to update the stored current value based on ADC reading
- If the updated current value is above a threshold, raise overcurrent fault
- If the overcurrent fault bit is set and the updated current value is below the threshold, drop the fault bit
- Exposes init
- Ads_1259
- Driver for the ADS1259 24 bit ADC
- Exposes ltc_adc_register_callback
- Cell_sense
- To be ported from MSXII firmware.
- Raises / lowers faults similar to current_sense, including overcharge, over temperature, over current, under charge
- Fan_control
- Periodically updates the fan speed based on the temperature
- Uses an offset linear fan control curve based on the desired operating temperature of the battery (refer to datasheet)
- Exposes init
Meeting Notes
- logs all
- Voltage,
- Temp,
- Current
- Relay States
- Controls
- Relays
...
LTC6811 (Battery Monitor) Datasheet - https://www.analog.com/media/en/technical-documentation/data-sheets/68111fb.pdf
Old Block Diagram
This block diagram is highly inspired by MSXII's Plutus. Some minor adjustments were made to make it slightly more easy to understand.
Reasons to revise:
- Relay_control doesn’t need to be under fault_handler since it’ll also receive messages from center console
- Event driven architecture
- System_init is not necessary since startup logic is handled by center console
- Fault handling is also moved to center console
View file | ||||
---|---|---|---|---|
|