...
- Kill Switch flipped (?)
- AFE Under/Over volt
- Disconnect relay
Overview of firmware responsibilities for BMS Carrier
- Relay control: to close relays, pull the pin high. There are two relays to control.
- Killswitch: monitors killswitch status, if pressed, fault BPS
- Current sense: talk to the ADS1259 through SPI, periodically read current, and fault BPS if overcurrent
- Voltage sense: talk to daisy chained LTC6811s through SPI, trigger ADC conversions, read back the results, fault BPS if overvoltage or undervoltage
- Temperature sense: cycle through 20 thermistors through the ADG731 MUX, trigger conversions, read back the results, fault BPS if overtemp
- BPS heartbeat: periodically send a heartbeat to rest of car, ensure it’s acknowledged
- Fan control: control 4 fans, notify if they’re stuck
- Logging: log all temperature, voltage, current, fan state, and relay state data over CAN. Eventually over UART to a raspi for SOC, but not for MVP.
- Passive balancing: tell the AFEs to bleed the highest charge cell until all cells are within 25mV.
Revised Block Diagram
Design Notes
...
- 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
Other questions:
- What’s passive balancing?
- Balancing is making sure cells are all at the same voltage so one module doesn’t limit the charging current
- Passive balancing is using up charge from high voltage packs through a resistor
- Toggle balance control on the highest voltage cell
- Look at AFE data sheet for how this works
- “We tried” in MSXII, probably not implemented
- The difference between the highest and lowest voltage cell should be < 25 mV
- How do you tell if the battery is charging? Re: directional temperature faults
- Current sense gives positive vs negative current
- Ask Liam if positive is in or out / if negative or in and out
- What timing is needed for the relays?
- Part number EV200HAANA, datasheet has specs of current in it
- 100 ms 4A, afterwards 130mA
- We don’t want to draw 4A from more than one relay at once, so wait at least 200 ms
- Relays have a sanity check in an aux coil: aux coil will mimic the main coil.
- Relay control: always check after toggling state, if it didn’t toggle, either retry or fault. Waiting 100 ms between closing it and checking the state is good.
- Does order matter for relays / what order?
- Always close HV_GND first.
- Note: there’s a relay for MCI and for Charger interface
- What’s considered fast for current sense measurements?
- Theoretically should do 14 khz
- 100 hz is good, below 20 is bad
- Based on coulomb counting, current always has sinusoidal components (from motor controllers, since we drive motors with sinusoidal phases), so higher frequency means better SOC accuracy, also MPPTs don’t have perfect DC output
- What’s / Why UART?
- We have a library so we’re good
- Do we have to receive anything from the pi?
- Right now no. Eventually, yes. No sending over UART either for MVP elec.
- What’s needed for the RPI software?
- Nothing right now.
Meeting Notes
- logs all
- Voltage,
- Temp,
- Current
- Relay States
- Controls
- Relays
...